diff --git a/.dockerignore b/.dockerignore
index 47e82a105..00ee58159 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -33,7 +33,7 @@ tsconfig.json
/ecosystem.config.js
/extra/healthcheck.exe
/extra/healthcheck
-
+extra/exe-builder
### .gitignore content (commented rules are duplicated)
@@ -48,6 +48,4 @@ dist-ssr
#!/data/.gitkeep
#.vscode
-
-
### End of .gitignore content
diff --git a/.github/ISSUE_TEMPLATE/ask-for-help.yaml b/.github/ISSUE_TEMPLATE/ask-for-help.yaml
index 3442e8b73..9c30b2dc8 100644
--- a/.github/ISSUE_TEMPLATE/ask-for-help.yaml
+++ b/.github/ISSUE_TEMPLATE/ask-for-help.yaml
@@ -26,6 +26,12 @@ body:
label: "📝 Describe your problem"
description: "Please walk us through it step by step."
placeholder: "Describe what are you asking for..."
+ - type: textarea
+ id: error-msg
+ validations:
+ required: false
+ attributes:
+ label: "📝 Error Message(s) or Log"
- type: input
id: uptime-kuma-version
attributes:
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml
index 2dca1556a..072444205 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yaml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yaml
@@ -61,8 +61,8 @@ body:
id: operating-system
attributes:
label: "💻 Operating System and Arch"
- description: "Which OS is your server/device running on?"
- placeholder: "Ex. Ubuntu 20.04 x86"
+ description: "Which OS is your server/device running on? (For Replit, please do not report this bug)"
+ placeholder: "Ex. Ubuntu 20.04 x64 "
validations:
required: true
- type: input
diff --git a/.github/ISSUE_TEMPLATE/security.md b/.github/ISSUE_TEMPLATE/security.md
new file mode 100644
index 000000000..26450ed3a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/security.md
@@ -0,0 +1,19 @@
+---
+
+name: "Security Issue"
+about: "Just for alerting @louislam, do not provide any details here"
+title: "Security Issue"
+ref: "main"
+labels:
+
+- security
+
+---
+
+DO NOT PROVIDE ANY DETAILS HERE. Please privately report to https://github.com/louislam/uptime-kuma/security/advisories/new.
+
+
+Why need this issue? It is because GitHub Advisory do not send a notification to @louislam, it is a workaround to do so.
+
+Your GitHub Advisory URL:
+
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 4d2105d49..87e7f5ff7 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -16,7 +16,6 @@ Please delete any options that are not relevant.
- User interface (UI)
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
-- Translation update
- Other
- This change requires a documentation update
diff --git a/.github/config/exclude.txt b/.github/config/exclude.txt
new file mode 100644
index 000000000..253258856
--- /dev/null
+++ b/.github/config/exclude.txt
@@ -0,0 +1 @@
+# This is a .gitignore style file for 'GrantBirki/json-yaml-validate' Action workflow
diff --git a/.github/workflows/auto-test.yml b/.github/workflows/auto-test.yml
index b49a253c3..e1e43ccfb 100644
--- a/.github/workflows/auto-test.yml
+++ b/.github/workflows/auto-test.yml
@@ -1,4 +1,4 @@
-# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
+# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Auto Test
@@ -6,8 +6,12 @@ name: Auto Test
on:
push:
branches: [ master ]
+ paths-ignore:
+ - '*.md'
pull_request:
branches: [ master ]
+ paths-ignore:
+ - '*.md'
jobs:
auto-test:
@@ -17,8 +21,8 @@ jobs:
strategy:
matrix:
- os: [macos-latest, ubuntu-latest, windows-latest]
- node: [ 14, 16, 17, 18 ]
+ os: [macos-latest, ubuntu-latest, windows-latest, ARM64]
+ node: [ 14, 18 ]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
@@ -29,13 +33,37 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- cache: 'npm'
+ - run: npm install npm@latest -g
- run: npm install
- run: npm run build
- run: npm test
env:
HEADLESS_TEST: 1
JUST_FOR_TEST: ${{ secrets.JUST_FOR_TEST }}
+
+ # As a lot of dev dependencies are not supported on ARMv7, we have to test it separately and just test if `npm ci --production` works
+ armv7-simple-test:
+ needs: [ check-linters ]
+ runs-on: ${{ matrix.os }}
+ timeout-minutes: 15
+
+ strategy:
+ matrix:
+ os: [ ARMv7 ]
+ node: [ 14.21.3, 18.16.1 ]
+ # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
+
+ steps:
+ - run: git config --global core.autocrlf false # Mainly for Windows
+ - uses: actions/checkout@v3
+
+ - name: Use Node.js ${{ matrix.node }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node }}
+ - run: npm install npm@latest -g
+ - run: npm ci --production
+
check-linters:
runs-on: ubuntu-latest
@@ -47,7 +75,6 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: 14
- cache: 'npm'
- run: npm install
- run: npm run lint
@@ -62,7 +89,21 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: 14
- cache: 'npm'
- run: npm install
- run: npm run build
- run: npm run cy:test
+
+ frontend-unit-tests:
+ needs: [ check-linters ]
+ runs-on: ubuntu-latest
+ steps:
+ - run: git config --global core.autocrlf false # Mainly for Windows
+ - uses: actions/checkout@v3
+
+ - name: Use Node.js 14
+ uses: actions/setup-node@v3
+ with:
+ node-version: 14
+ - run: npm install
+ - run: npm run build
+ - run: npm run cy:run:unit
diff --git a/.github/workflows/close-incorrect-issue.yml b/.github/workflows/close-incorrect-issue.yml
index 026022dfa..762bc9688 100644
--- a/.github/workflows/close-incorrect-issue.yml
+++ b/.github/workflows/close-incorrect-issue.yml
@@ -1,4 +1,3 @@
-
name: Close Incorrect Issue
on:
@@ -12,13 +11,13 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest]
- node-version: [16.x]
+ node-version: [16]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
diff --git a/.github/workflows/json-yaml-validate.yml b/.github/workflows/json-yaml-validate.yml
new file mode 100644
index 000000000..b8249818d
--- /dev/null
+++ b/.github/workflows/json-yaml-validate.yml
@@ -0,0 +1,26 @@
+name: json-yaml-validate
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ branches:
+ - master
+ workflow_dispatch:
+
+permissions:
+ contents: read
+ pull-requests: write # enable write permissions for pull request comments
+
+jobs:
+ json-yaml-validate:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: json-yaml-validate
+ id: json-yaml-validate
+ uses: GrantBirki/json-yaml-validate@v1.3.0
+ with:
+ comment: "true" # enable comment mode
+ exclude_file: ".github/config/exclude.txt" # gitignore style file for exclusions
diff --git a/.github/workflows/stale-bot.yml b/.github/workflows/stale-bot.yml
index 5b4568e1d..b39f68fc1 100644
--- a/.github/workflows/stale-bot.yml
+++ b/.github/workflows/stale-bot.yml
@@ -3,13 +3,13 @@ on:
workflow_dispatch:
schedule:
- cron: '0 */6 * * *'
-#Run every 6 hours
+#Run every 6 hours
jobs:
stale:
runs-on: ubuntu-latest
steps:
- - uses: actions/stale@v5
+ - uses: actions/stale@v7
with:
stale-issue-message: 'We are clearing up our old issues and your ticket has been open for 3 months with no activity. Remove stale label or comment or this will be closed in 2 days.'
close-issue-message: 'This issue was closed because it has been stalled for 2 days with no activity.'
diff --git a/.gitignore b/.gitignore
index cf056abeb..009b15f10 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,4 +21,8 @@ cypress/screenshots
/extra/healthcheck
/extra/healthcheck-armv7
-yarn.lock
\ No newline at end of file
+extra/exe-builder/bin
+extra/exe-builder/obj
+
+.vs
+.vscode
diff --git a/.stylelintrc b/.stylelintrc
index e590c98ca..00ddcaaef 100644
--- a/.stylelintrc
+++ b/.stylelintrc
@@ -10,5 +10,6 @@
"color-function-notation": "legacy",
"shorthand-property-no-redundant-values": null,
"color-hex-length": null,
+ "declaration-block-no-redundant-longhand-properties": null
}
}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5cfa93e28..a933a4508 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -17,8 +17,11 @@ The frontend code build into "dist" directory. The server (express.js) exposes t
## Directories
+- config (dev config files)
- data (App data)
+- db (Base database and migration scripts)
- dist (Frontend build)
+- docker (Dockerfiles)
- extra (Extra useful scripts)
- public (Frontend resources for dev only)
- server (Server source code)
@@ -32,26 +35,29 @@ Yes or no, it depends on what you will try to do. Since I don't want to waste yo
Here are some references:
✅ Usually Accept:
-- Bug/Security fix
-- Translations
+- Bug fix
+- Security fix
- Adding notification providers
+- Adding new language files (You should go to https://weblate.kuma.pet for existing languages)
+- Adding new language keys: `$t("...")`
⚠️ Discussion First
- Large pull requests
- New features
❌ Won't Merge
-- Do not pass auto test
+- A dedicated pr for translating existing languages (You can now translate on https://weblate.kuma.pet)
+- Do not pass the auto test
- Any breaking changes
-- Duplicated pull request
+- Duplicated pull requests
- Buggy
- UI/UX is not close to Uptime Kuma
-- Existing logic is completely modified or deleted for no reason
-- A function that is completely out of scope
-- Convert existing code into other programming languages
-- Unnecessary large code changes (Hard to review, causes code conflicts to other pull requests)
+- Modifications or deletions of existing logic without a valid reason.
+- Adding functions that is completely out of scope
+- Converting existing code into other programming languages
+- Unnecessarily large code changes that are hard to review and cause conflicts with other PRs.
-The above cases cannot cover all situations.
+The above cases may not cover all possible situations.
I (@louislam) have the final say. If your pull request does not meet my expectations, I will reject it, no matter how much time you spend on it. Therefore, it is essential to have a discussion beforehand.
@@ -77,13 +83,13 @@ Before deep into coding, discussion first is preferred. Creating an empty pull r
## Project Styles
-I personally do not like it when something requires so much learning and configuration before you can finally start the app.
+I personally do not like something that requires so many configurations before you can finally start the app. I hope Uptime Kuma installation could be as easy as like installing a mobile app.
-- Easy to install for non-Docker users, no native build dependency is needed (at least for x86_64), no extra config, no extra effort required to get it running
+- Easy to install for non-Docker users, no native build dependency is needed (for x86_64/armv7/arm64), no extra config, no extra effort required to get it running
- Single container for Docker users, no very complex docker-compose file. Just map the volume and expose the port, then good to go
-- Settings should be configurable in the frontend. Environment variable is not encouraged, unless it is related to startup such as `DATA_DIR`.
+- Settings should be configurable in the frontend. Environment variable is not encouraged, unless it is related to startup such as `DATA_DIR`
- Easy to use
-- The web UI styling should be consistent and nice.
+- The web UI styling should be consistent and nice
## Coding Styles
@@ -92,7 +98,7 @@ I personally do not like it when something requires so much learning and configu
- Follow ESLint
- Methods and functions should be documented with JSDoc
-## Name convention
+## Name Conventions
- Javascript/Typescript: camelCaseType
- SQLite: snake_case (Underscore)
@@ -106,7 +112,7 @@ I personally do not like it when something requires so much learning and configu
- IDE that supports ESLint and EditorConfig (I am using IntelliJ IDEA)
- A SQLite GUI tool (SQLite Expert Personal is suggested)
-## Install dependencies
+## Install Dependencies for Development
```bash
npm ci
@@ -124,6 +130,12 @@ Port `3000` and port `3001` will be used.
npm run dev
```
+But sometimes, you would like to keep restart the server, but not the frontend, you can run these command in two terminals:
+```
+npm run start-frontend-dev
+npm run start-server-dev
+```
+
## Backend Server
It binds to `0.0.0.0:3001` by default.
@@ -139,12 +151,15 @@ express.js is used for:
### Structure in /server/
+- jobs/ (Jobs that are running in another process)
- model/ (Object model, auto mapping to the database table name)
- modules/ (Modified 3rd-party modules)
+- monitor_types (Monitor Types)
- notification-providers/ (individual notification logic)
- routers/ (Express Routers)
- socket-handler (Socket.io Handlers)
-- server.js (Server entry point and main logic)
+- server.js (Server entry point)
+- uptime-kuma-server.js (UptimeKumaServer class, main logic should be here, but some still in `server.js`)
## Frontend Dev Server
@@ -195,18 +210,12 @@ Both frontend and backend share the same package.json. However, the frontend dep
### Update Dependencies
-Install `ncu`
-https://github.com/raineorshine/npm-check-updates
-
-```bash
-ncu -u -t patch
-npm install
-```
-
Since previously updating Vite 2.5.10 to 2.6.0 broke the application completely, from now on, it should update patch release version only.
Patch release = the third digit ([Semantic Versioning](https://semver.org/))
+If for maybe security reasons, a library must be updated. Then you must need to check if there are any breaking changes.
+
## Translations
Please read: https://github.com/louislam/uptime-kuma/tree/master/src/languages
@@ -226,12 +235,13 @@ https://github.com/louislam/uptime-kuma/issues?q=sort%3Aupdated-desc
1. Draft a release note
2. Make sure the repo is cleared
+3. If the healthcheck is updated, remember to re-compile it: `npm run build-docker-builder-go`
3. `npm run release-final with env vars: `VERSION` and `GITHUB_TOKEN`
4. Wait until the `Press any key to continue`
5. `git push`
6. Publish the release note as 1.X.X
7. Press any key to continue
-8. SSH to demo site server and update to 1.X.X
+8. Deploy to the demo server: `npm run deploy-demo-server`
Checking:
diff --git a/README.md b/README.md
index 1f26da8bf..3f8a05403 100644
--- a/README.md
+++ b/README.md
@@ -1,22 +1,23 @@
# Uptime Kuma
-[![GitHub Sponsors](https://img.shields.io/github/sponsors/louislam?label=GitHub%20Sponsors)](https://github.com/sponsors/louislam)
+[![GitHub Sponsors](https://img.shields.io/github/sponsors/louislam?label=GitHub%20Sponsors)](https://github.com/sponsors/louislam)
+
+
-It is a self-hosted monitoring tool like "Uptime Robot".
+Uptime Kuma is an easy-to-use self-hosted monitoring tool.
-
+
## 🥔 Live Demo
Try it!
- Tokyo Demo Server: https://demo.uptime.kuma.pet (Sponsored by [Uptime Kuma Sponsors](https://github.com/louislam/uptime-kuma#%EF%B8%8F-sponsors))
-- Europe Demo Server: https://demo.uptime-kuma.karimi.dev:27000 (Provided by [@mhkarimi1383](https://github.com/mhkarimi1383))
It is a temporary live demo, all data will be deleted after 10 minutes. Use the one that is closer to you, but I suggest that you should install and try it out for the best demo experience.
@@ -26,7 +27,7 @@ It is a temporary live demo, all data will be deleted after 10 minutes. Use the
* Fancy, Reactive, Fast UI/UX
* Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [90+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications)
* 20 second intervals
-* [Multi Languages](https://github.com/louislam/uptime-kuma/tree/master/src/languages)
+* [Multi Languages](https://github.com/louislam/uptime-kuma/tree/master/src/lang)
* Multiple status pages
* Map status pages to specific domains
* Ping chart
@@ -48,8 +49,13 @@ Uptime Kuma is now running on http://localhost:3001
### 💪🏻 Non-Docker
-Required Tools:
-- [Node.js](https://nodejs.org/en/download/) >= 14
+Requirements:
+- Platform
+ - ✅ Major Linux distros such as Debian, Ubuntu, CentOS, Fedora and ArchLinux etc.
+ - ✅ Windows 10 (x64), Windows Server 2012 R2 (x64) or higher
+ - ❌ Replit / Heroku
+- [Node.js](https://nodejs.org/en/download/) 14 / 16 / 18 (20 is not supported)
+- [npm](https://docs.npmjs.com/cli/) >= 7
- [Git](https://git-scm.com/downloads)
- [pm2](https://pm2.keymetrics.io/) - For running Uptime Kuma in the background
@@ -85,6 +91,10 @@ pm2 monit
pm2 save && pm2 startup
```
+### Windows Portable (x64)
+
+https://github.com/louislam/uptime-kuma/files/11886108/uptime-kuma-win64-portable-1.0.1.zip
+
### Advanced Installation
If you need more options or need to browse via a reverse proxy, please read:
@@ -142,17 +152,18 @@ Telegram Notification Sample:
If you love this project, please consider giving me a ⭐.
-## 🗣️ Discussion
+## 🗣️ Discussion / Ask for Help
-### Issues Page
+⚠️ For any general or technical questions, please don't send me an email, as I am unable to provide support in that manner. I will not response if you asked such questions.
-You can discuss or ask for help in [issues](https://github.com/louislam/uptime-kuma/issues).
+I recommend using Google, GitHub Issues, or Uptime Kuma's Subreddit for finding answers to your question. If you cannot find the information you need, feel free to ask:
-### Subreddit
+- [GitHub Issues](https://github.com/louislam/uptime-kuma/issues)
+- [Subreddit r/Uptime kuma](https://www.reddit.com/r/UptimeKuma/)
My Reddit account: [u/louislamlam](https://reddit.com/u/louislamlam).
You can mention me if you ask a question on Reddit.
-[r/Uptime kuma](https://www.reddit.com/r/UptimeKuma/)
+
## Contribute
@@ -171,7 +182,7 @@ Check out the latest beta release here: https://github.com/louislam/uptime-kuma/
If you want to report a bug or request a new feature, feel free to open a [new issue](https://github.com/louislam/uptime-kuma/issues).
### Translations
-If you want to translate Uptime Kuma into your language, please read: https://github.com/louislam/uptime-kuma/tree/master/src/languages
+If you want to translate Uptime Kuma into your language, please visit [Weblate Readme](https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md).
Feel free to correct my grammar in this README, source code, or wiki, as my mother language is not English and my grammar is not that great.
diff --git a/SECURITY.md b/SECURITY.md
index 657aa3eba..43dc7654b 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -2,10 +2,15 @@
## Reporting a Vulnerability
-Please report security issues to https://github.com/louislam/uptime-kuma/security/advisories/new.
+1. Please report security issues to https://github.com/louislam/uptime-kuma/security/advisories/new.
+1. Please also create a empty security issues for alerting me, as GitHub Advisory do not send a notification, I probably will miss without this. https://github.com/louislam/uptime-kuma/issues/new?assignees=&labels=help&template=security.md
Do not use the public issue tracker or discuss it in the public as it will cause more damage.
+## Do you accept other 3rd-party bug bounty platforms?
+
+At this moment, I DO NOT accept other bug bounty platforms, because I am not familiar with these platforms and someone have tried to send a phishing link to me by this already. To minimize my own risk, please report through GitHub Advisories only. I will ignore all 3rd-party bug bounty platforms emails.
+
## Supported Versions
### Uptime Kuma Versions
diff --git a/config/cypress.frontend.config.js b/config/cypress.frontend.config.js
new file mode 100644
index 000000000..eecdcb8dd
--- /dev/null
+++ b/config/cypress.frontend.config.js
@@ -0,0 +1,10 @@
+const { defineConfig } = require("cypress");
+
+module.exports = defineConfig({
+ e2e: {
+ supportFile: false,
+ specPattern: [
+ "test/cypress/unit/**/*.js"
+ ],
+ }
+});
diff --git a/data/.gitkeep b/data/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/db/patch-add-description-monitor.sql b/db/patch-add-description-monitor.sql
new file mode 100644
index 000000000..da1aa55bc
--- /dev/null
+++ b/db/patch-add-description-monitor.sql
@@ -0,0 +1,7 @@
+-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
+BEGIN TRANSACTION;
+
+ALTER TABLE monitor
+ ADD description TEXT default null;
+
+COMMIT;
diff --git a/db/patch-add-gamedig-monitor.sql b/db/patch-add-gamedig-monitor.sql
new file mode 100644
index 000000000..061bed302
--- /dev/null
+++ b/db/patch-add-gamedig-monitor.sql
@@ -0,0 +1,5 @@
+BEGIN TRANSACTION;
+
+ ALTER TABLE monitor
+ ADD game VARCHAR(255);
+ COMMIT
diff --git a/db/patch-add-google-analytics-status-page-tag.sql b/db/patch-add-google-analytics-status-page-tag.sql
new file mode 100644
index 000000000..5de6ff37b
--- /dev/null
+++ b/db/patch-add-google-analytics-status-page-tag.sql
@@ -0,0 +1,4 @@
+-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
+BEGIN TRANSACTION;
+ALTER TABLE status_page ADD google_analytics_tag_id VARCHAR;
+COMMIT;
diff --git a/db/patch-add-invert-keyword.sql b/db/patch-add-invert-keyword.sql
new file mode 100644
index 000000000..8ca199eed
--- /dev/null
+++ b/db/patch-add-invert-keyword.sql
@@ -0,0 +1,7 @@
+-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
+BEGIN TRANSACTION;
+
+ALTER TABLE monitor
+ ADD invert_keyword BOOLEAN default 0 not null;
+
+COMMIT;
diff --git a/db/patch-add-parent-monitor.sql b/db/patch-add-parent-monitor.sql
new file mode 100644
index 000000000..756ac5be2
--- /dev/null
+++ b/db/patch-add-parent-monitor.sql
@@ -0,0 +1,6 @@
+BEGIN TRANSACTION;
+
+ALTER TABLE monitor
+ ADD parent INTEGER REFERENCES [monitor] ([id]) ON DELETE SET NULL ON UPDATE CASCADE;
+
+COMMIT
diff --git a/db/patch-api-key-table.sql b/db/patch-api-key-table.sql
new file mode 100644
index 000000000..fc3a405bf
--- /dev/null
+++ b/db/patch-api-key-table.sql
@@ -0,0 +1,13 @@
+-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
+BEGIN TRANSACTION;
+CREATE TABLE [api_key] (
+ [id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
+ [key] VARCHAR(255) NOT NULL,
+ [name] VARCHAR(255) NOT NULL,
+ [user_id] INTEGER NOT NULL,
+ [created_date] DATETIME DEFAULT (DATETIME('now')) NOT NULL,
+ [active] BOOLEAN DEFAULT 1 NOT NULL,
+ [expires] DATETIME DEFAULT NULL,
+ CONSTRAINT FK_user FOREIGN KEY ([user_id]) REFERENCES [user]([id]) ON DELETE CASCADE ON UPDATE CASCADE
+);
+COMMIT;
diff --git a/db/patch-http-body-encoding.sql b/db/patch-http-body-encoding.sql
new file mode 100644
index 000000000..322c8b893
--- /dev/null
+++ b/db/patch-http-body-encoding.sql
@@ -0,0 +1,12 @@
+-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
+BEGIN TRANSACTION;
+
+ALTER TABLE monitor ADD http_body_encoding VARCHAR(25);
+
+COMMIT;
+
+BEGIN TRANSACTION;
+
+UPDATE monitor SET http_body_encoding = 'json' WHERE (type = 'http' or type = 'keyword') AND http_body_encoding IS NULL;
+
+COMMIT;
diff --git a/db/patch-maintenance-cron.sql b/db/patch-maintenance-cron.sql
new file mode 100644
index 000000000..bc51b881b
--- /dev/null
+++ b/db/patch-maintenance-cron.sql
@@ -0,0 +1,11 @@
+-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
+BEGIN TRANSACTION;
+
+DROP TABLE maintenance_timeslot;
+
+-- 999 characters. https://stackoverflow.com/questions/46134830/maximum-length-for-cron-job
+ALTER TABLE maintenance ADD cron TEXT;
+ALTER TABLE maintenance ADD timezone VARCHAR(255);
+ALTER TABLE maintenance ADD duration INTEGER;
+
+COMMIT;
diff --git a/db/patch-monitor-tls.sql b/db/patch-monitor-tls.sql
new file mode 100644
index 000000000..ac4edb798
--- /dev/null
+++ b/db/patch-monitor-tls.sql
@@ -0,0 +1,13 @@
+-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
+BEGIN TRANSACTION;
+
+ALTER TABLE monitor
+ ADD tls_ca TEXT default null;
+
+ALTER TABLE monitor
+ ADD tls_cert TEXT default null;
+
+ALTER TABLE monitor
+ ADD tls_key TEXT default null;
+
+COMMIT;
diff --git a/db/patch-ping-packet-size.sql b/db/patch-ping-packet-size.sql
new file mode 100644
index 000000000..d65ec8ed8
--- /dev/null
+++ b/db/patch-ping-packet-size.sql
@@ -0,0 +1,5 @@
+-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
+BEGIN TRANSACTION;
+ALTER TABLE monitor
+ ADD packet_size INTEGER DEFAULT 56 NOT NULL;
+COMMIT;
diff --git a/docker/alpine-base.dockerfile b/docker/alpine-base.dockerfile
index 82bc7bb05..ee2090257 100644
--- a/docker/alpine-base.dockerfile
+++ b/docker/alpine-base.dockerfile
@@ -3,6 +3,6 @@ FROM node:16-alpine3.12
WORKDIR /app
# Install apprise, iputils for non-root ping, setpriv
-RUN apk add --no-cache iputils setpriv dumb-init python3 py3-cryptography py3-pip py3-six py3-yaml py3-click py3-markdown py3-requests py3-requests-oauthlib && \
- pip3 --no-cache-dir install apprise==1.2.1 && \
+RUN apk add --no-cache iputils setpriv dumb-init python3 py3-cryptography py3-pip py3-six py3-yaml py3-click py3-markdown py3-requests py3-requests-oauthlib git && \
+ pip3 --no-cache-dir install apprise==1.4.0 && \
rm -rf /root/.cache
diff --git a/docker/builder-go.dockerfile b/docker/builder-go.dockerfile
index 5d38cf4ec..1d25843bc 100644
--- a/docker/builder-go.dockerfile
+++ b/docker/builder-go.dockerfile
@@ -2,15 +2,15 @@
# Build in Golang
# Run npm run build-healthcheck-armv7 in the host first, another it will be super slow where it is building the armv7 healthcheck
############################################
-FROM golang:1.19.4-buster
+FROM golang:1.19-buster
WORKDIR /app
ARG TARGETPLATFORM
COPY ./extra/ ./extra/
# Compile healthcheck.go
-RUN apt update
-RUN apt --yes --no-install-recommends install curl
-RUN curl -sL https://deb.nodesource.com/setup_18.x | bash
-RUN apt --yes --no-install-recommends install nodejs
-RUN node -v
-RUN node ./extra/build-healthcheck.js $TARGETPLATFORM
+RUN apt update && \
+ apt --yes --no-install-recommends install curl && \
+ curl -sL https://deb.nodesource.com/setup_18.x | bash && \
+ apt --yes --no-install-recommends install nodejs && \
+ node ./extra/build-healthcheck.js $TARGETPLATFORM && \
+ apt --yes remove nodejs
diff --git a/docker/debian-base.dockerfile b/docker/debian-base.dockerfile
index d94b4c7fe..fd57cf91a 100644
--- a/docker/debian-base.dockerfile
+++ b/docker/debian-base.dockerfile
@@ -8,21 +8,21 @@ WORKDIR /app
# Install Curl
# Install Apprise, add sqlite3 cli for debugging in the future, iputils-ping for ping, util-linux for setpriv
# Stupid python3 and python3-pip actually install a lot of useless things into Debian, specify --no-install-recommends to skip them, make the base even smaller than alpine!
-RUN apt update && \
- apt --yes --no-install-recommends install python3 python3-pip python3-cryptography python3-six python3-yaml python3-click python3-markdown python3-requests python3-requests-oauthlib \
- sqlite3 iputils-ping util-linux dumb-init && \
- pip3 --no-cache-dir install apprise==1.2.1 && \
+RUN apt-get update && \
+ apt-get --yes --no-install-recommends install python3 python3-pip python3-cryptography python3-six python3-yaml python3-click python3-markdown python3-requests python3-requests-oauthlib \
+ sqlite3 iputils-ping util-linux dumb-init git curl ca-certificates && \
+ pip3 --no-cache-dir install apprise==1.4.0 && \
rm -rf /var/lib/apt/lists/* && \
apt --yes autoremove
# Install cloudflared
-# dpkg --add-architecture arm: cloudflared do not provide armhf, this is workaround. Read more: https://github.com/cloudflare/cloudflared/issues/583
-COPY extra/download-cloudflared.js ./extra/download-cloudflared.js
-RUN node ./extra/download-cloudflared.js $TARGETPLATFORM && \
- dpkg --add-architecture arm && \
- apt update && \
- apt --yes --no-install-recommends install ./cloudflared.deb && \
+RUN set -eux && \
+ mkdir -p --mode=0755 /usr/share/keyrings && \
+ curl --fail --show-error --silent --location --insecure https://pkg.cloudflare.com/cloudflare-main.gpg --output /usr/share/keyrings/cloudflare-main.gpg && \
+ echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared buster main' | tee /etc/apt/sources.list.d/cloudflared.list && \
+ apt-get update && \
+ apt-get install --yes --no-install-recommends cloudflared && \
+ cloudflared version && \
rm -rf /var/lib/apt/lists/* && \
- rm -f cloudflared.deb && \
apt --yes autoremove
diff --git a/docker/dockerfile b/docker/dockerfile
index 26f70dd3b..239a0c95e 100644
--- a/docker/dockerfile
+++ b/docker/dockerfile
@@ -12,10 +12,13 @@ FROM louislam/uptime-kuma:base-debian AS build
WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
+COPY .npmrc .npmrc
+COPY package.json package.json
+COPY package-lock.json package-lock.json
+RUN npm ci --omit=dev
COPY . .
COPY --from=build_healthcheck /app/extra/healthcheck /app/extra/healthcheck
-RUN npm ci --production && \
- chmod +x /app/extra/entrypoint.sh
+RUN chmod +x /app/extra/entrypoint.sh
############################################
# ⭐ Main Image
@@ -23,6 +26,8 @@ RUN npm ci --production && \
FROM louislam/uptime-kuma:base-debian AS release
WORKDIR /app
+ENV UPTIME_KUMA_IS_CONTAINER=1
+
# Copy app files from build layer
COPY --from=build /app /app
@@ -68,7 +73,7 @@ RUN npm ci
EXPOSE 3000 3001
VOLUME ["/app/data"]
-HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD node extra/healthcheck.js
+HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD extra/healthcheck
CMD ["npm", "run", "start-pr-test"]
############################################
diff --git a/docker/dockerfile-alpine b/docker/dockerfile-alpine
index ab9255f95..43f26b8bb 100644
--- a/docker/dockerfile-alpine
+++ b/docker/dockerfile-alpine
@@ -3,10 +3,12 @@ WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
+COPY .npmrc .npmrc
+COPY package.json package.json
+COPY package-lock.json package-lock.json
+RUN npm ci --omit=dev
COPY . .
-RUN npm ci --production && \
- chmod +x /app/extra/entrypoint.sh
-
+RUN chmod +x /app/extra/entrypoint.sh
FROM louislam/uptime-kuma:base-alpine AS release
WORKDIR /app
diff --git a/extra/beta/update-version.js b/extra/beta/update-version.js
index df2cb40a6..3dafbe8d4 100644
--- a/extra/beta/update-version.js
+++ b/extra/beta/update-version.js
@@ -22,7 +22,8 @@ if (! exists) {
fs.writeFileSync("package.json", JSON.stringify(pkg, null, 4) + "\n");
// Also update package-lock.json
- childProcess.spawnSync("npm", [ "install" ]);
+ const npm = /^win/.test(process.platform) ? "npm.cmd" : "npm";
+ childProcess.spawnSync(npm, [ "install" ]);
commit(version);
tag(version);
@@ -32,6 +33,10 @@ if (! exists) {
process.exit(1);
}
+/**
+ * Commit updated files
+ * @param {string} version Version to update to
+ */
function commit(version) {
let msg = "Update to " + version;
@@ -47,6 +52,10 @@ function commit(version) {
console.log(res.stdout.toString().trim());
}
+/**
+ * Create a tag with the specified version
+ * @param {string} version Tag to create
+ */
function tag(version) {
let res = childProcess.spawnSync("git", [ "tag", version ]);
console.log(res.stdout.toString().trim());
@@ -55,6 +64,11 @@ function tag(version) {
console.log(res.stdout.toString().trim());
}
+/**
+ * Check if a tag exists for the specified version
+ * @param {string} version Version to check
+ * @returns {boolean} Does the tag already exist
+ */
function tagExists(version) {
if (! version) {
throw new Error("invalid version");
diff --git a/extra/deploy-demo-server.js b/extra/deploy-demo-server.js
new file mode 100644
index 000000000..2cc196b39
--- /dev/null
+++ b/extra/deploy-demo-server.js
@@ -0,0 +1,60 @@
+require("dotenv").config();
+const { NodeSSH } = require("node-ssh");
+const readline = require("readline");
+const rl = readline.createInterface({ input: process.stdin,
+ output: process.stdout });
+const prompt = (query) => new Promise((resolve) => rl.question(query, resolve));
+
+(async () => {
+ try {
+ console.log("SSH to demo server");
+ const ssh = new NodeSSH();
+ await ssh.connect({
+ host: process.env.UPTIME_KUMA_DEMO_HOST,
+ port: process.env.UPTIME_KUMA_DEMO_PORT,
+ username: process.env.UPTIME_KUMA_DEMO_USERNAME,
+ privateKeyPath: process.env.UPTIME_KUMA_DEMO_PRIVATE_KEY_PATH
+ });
+
+ let cwd = process.env.UPTIME_KUMA_DEMO_CWD;
+ let result;
+
+ const version = await prompt("Enter Version: ");
+
+ result = await ssh.execCommand("git fetch --all", {
+ cwd,
+ });
+ console.log(result.stdout + result.stderr);
+
+ await prompt("Press any key to continue...");
+
+ result = await ssh.execCommand(`git checkout ${version} --force`, {
+ cwd,
+ });
+ console.log(result.stdout + result.stderr);
+
+ result = await ssh.execCommand("npm run download-dist", {
+ cwd,
+ });
+ console.log(result.stdout + result.stderr);
+
+ result = await ssh.execCommand("npm install --production", {
+ cwd,
+ });
+ console.log(result.stdout + result.stderr);
+
+ /*
+ result = await ssh.execCommand("pm2 restart 1", {
+ cwd,
+ });
+ console.log(result.stdout + result.stderr);*/
+
+ } catch (e) {
+ console.log(e);
+ } finally {
+ rl.close();
+ }
+})();
+
+// When done reading prompt, exit program
+rl.on("close", () => process.exit(0));
diff --git a/extra/download-cloudflared.js b/extra/download-cloudflared.js
deleted file mode 100644
index 41519b7ca..000000000
--- a/extra/download-cloudflared.js
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-
-const http = require("https"); // or 'https' for https:// URLs
-const fs = require("fs");
-
-const platform = process.argv[2];
-
-if (!platform) {
- console.error("No platform??");
- process.exit(1);
-}
-
-let arch = null;
-
-if (platform === "linux/amd64") {
- arch = "amd64";
-} else if (platform === "linux/arm64") {
- arch = "arm64";
-} else if (platform === "linux/arm/v7") {
- arch = "arm";
-} else {
- console.error("Invalid platform?? " + platform);
-}
-
-const file = fs.createWriteStream("cloudflared.deb");
-get("https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-" + arch + ".deb");
-
-function get(url) {
- http.get(url, function (res) {
- if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
- console.log("Redirect to " + res.headers.location);
- get(res.headers.location);
- } else if (res.statusCode >= 200 && res.statusCode < 300) {
- res.pipe(file);
-
- res.on("end", function () {
- console.log("Downloaded");
- });
- } else {
- console.error(res.statusCode);
- process.exit(1);
- }
- });
-}
diff --git a/extra/download-dist.js b/extra/download-dist.js
index b04beec7a..a854ca8b2 100644
--- a/extra/download-dist.js
+++ b/extra/download-dist.js
@@ -47,6 +47,7 @@ function download(url) {
});
}
console.log("Done");
+ process.exit(0);
});
tarStream.on("error", () => {
diff --git a/extra/exe-builder/.gitignore b/extra/exe-builder/.gitignore
new file mode 100644
index 000000000..d52874b6c
--- /dev/null
+++ b/extra/exe-builder/.gitignore
@@ -0,0 +1 @@
+packages/
diff --git a/extra/exe-builder/App.config b/extra/exe-builder/App.config
new file mode 100644
index 000000000..97eb34aff
--- /dev/null
+++ b/extra/exe-builder/App.config
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extra/exe-builder/DownloadForm.Designer.cs b/extra/exe-builder/DownloadForm.Designer.cs
new file mode 100644
index 000000000..26a474e9c
--- /dev/null
+++ b/extra/exe-builder/DownloadForm.Designer.cs
@@ -0,0 +1,84 @@
+using System.ComponentModel;
+
+namespace UptimeKuma {
+ partial class DownloadForm {
+ ///
+ /// Required designer variable.
+ ///
+ private IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing) {
+ if (disposing && (components != null)) {
+ components.Dispose();
+ }
+
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent() {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DownloadForm));
+ this.progressBar = new System.Windows.Forms.ProgressBar();
+ this.label = new System.Windows.Forms.Label();
+ this.labelData = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // progressBar
+ //
+ this.progressBar.Location = new System.Drawing.Point(12, 12);
+ this.progressBar.Name = "progressBar";
+ this.progressBar.Size = new System.Drawing.Size(472, 41);
+ this.progressBar.TabIndex = 0;
+ //
+ // label
+ //
+ this.label.Location = new System.Drawing.Point(12, 59);
+ this.label.Name = "label";
+ this.label.Size = new System.Drawing.Size(472, 23);
+ this.label.TabIndex = 1;
+ this.label.Text = "Preparing...";
+ //
+ // labelData
+ //
+ this.labelData.Location = new System.Drawing.Point(12, 82);
+ this.labelData.Name = "labelData";
+ this.labelData.Size = new System.Drawing.Size(472, 23);
+ this.labelData.TabIndex = 2;
+ //
+ // DownloadForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(496, 117);
+ this.Controls.Add(this.labelData);
+ this.Controls.Add(this.label);
+ this.Controls.Add(this.progressBar);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.Name = "DownloadForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Uptime Kuma";
+ this.Load += new System.EventHandler(this.DownloadForm_Load);
+ this.ResumeLayout(false);
+ }
+
+ private System.Windows.Forms.Label labelData;
+
+ private System.Windows.Forms.Label label;
+
+ private System.Windows.Forms.ProgressBar progressBar;
+
+ #endregion
+ }
+}
+
diff --git a/extra/exe-builder/DownloadForm.cs b/extra/exe-builder/DownloadForm.cs
new file mode 100644
index 000000000..28a57c527
--- /dev/null
+++ b/extra/exe-builder/DownloadForm.cs
@@ -0,0 +1,204 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.IO;
+using System.IO.Compression;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Newtonsoft.Json;
+
+namespace UptimeKuma {
+ public partial class DownloadForm : Form {
+ private readonly Queue downloadQueue = new();
+ private readonly WebClient webClient = new();
+ private DownloadItem currentDownloadItem;
+
+ public DownloadForm() {
+ InitializeComponent();
+ }
+
+ private void DownloadForm_Load(object sender, EventArgs e) {
+ webClient.DownloadProgressChanged += DownloadProgressChanged;
+ webClient.DownloadFileCompleted += DownloadFileCompleted;
+
+ label.Text = "Reading latest version...";
+
+ // Read json from https://uptime.kuma.pet/version
+ var versionJson = new WebClient().DownloadString("https://uptime.kuma.pet/version");
+ var versionObj = JsonConvert.DeserializeObject(versionJson);
+
+ var nodeVersion = versionObj.nodejs;
+ var uptimeKumaVersion = versionObj.latest;
+ var hasUpdateFile = File.Exists("update");
+
+ if (!Directory.Exists("node")) {
+ downloadQueue.Enqueue(new DownloadItem {
+ URL = $"https://nodejs.org/dist/v{nodeVersion}/node-v{nodeVersion}-win-x64.zip",
+ Filename = "node.zip",
+ TargetFolder = "node"
+ });
+ }
+
+ if (!Directory.Exists("core") || hasUpdateFile) {
+
+ // It is update, rename the core folder to core.old
+ if (Directory.Exists("core")) {
+ // Remove the old core.old folder
+ if (Directory.Exists("core.old")) {
+ Directory.Delete("core.old", true);
+ }
+
+ Directory.Move("core", "core.old");
+ }
+
+ downloadQueue.Enqueue(new DownloadItem {
+ URL = $"https://github.com/louislam/uptime-kuma/archive/refs/tags/{uptimeKumaVersion}.zip",
+ Filename = "core.zip",
+ TargetFolder = "core"
+ });
+
+ File.WriteAllText("version.json", versionJson);
+
+ // Delete the update file
+ if (hasUpdateFile) {
+ File.Delete("update");
+ }
+ }
+
+ DownloadNextFile();
+ }
+
+ void DownloadNextFile() {
+ if (downloadQueue.Count > 0) {
+ var item = downloadQueue.Dequeue();
+
+ currentDownloadItem = item;
+
+ // Download if the zip file is not existing
+ if (!File.Exists(item.Filename)) {
+ label.Text = item.URL;
+ webClient.DownloadFileAsync(new Uri(item.URL), item.Filename);
+ } else {
+ progressBar.Value = 100;
+ label.Text = "Use local " + item.Filename;
+ DownloadFileCompleted(null, null);
+ }
+ } else {
+ npmSetup();
+ }
+ }
+
+ void npmSetup() {
+ labelData.Text = "";
+
+ var npm = "..\\node\\npm.cmd";
+ var cmd = $"{npm} ci --production & {npm} run download-dist & exit";
+
+ var startInfo = new ProcessStartInfo {
+ FileName = "cmd.exe",
+ Arguments = $"/k \"{cmd}\"",
+ RedirectStandardOutput = false,
+ RedirectStandardError = false,
+ RedirectStandardInput = true,
+ UseShellExecute = false,
+ CreateNoWindow = false,
+ WorkingDirectory = "core"
+ };
+
+ var process = new Process();
+ process.StartInfo = startInfo;
+ process.EnableRaisingEvents = true;
+ process.Exited += (_, e) => {
+ progressBar.Value = 100;
+
+ if (process.ExitCode == 0) {
+ Task.Delay(2000).ContinueWith(_ => {
+ Application.Restart();
+ });
+ label.Text = "Done";
+ } else {
+ label.Text = "Failed, exit code: " + process.ExitCode;
+ }
+
+ };
+ process.Start();
+ label.Text = "Installing dependencies and download dist files";
+ progressBar.Value = 50;
+ process.WaitForExit();
+ }
+
+ void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) {
+ progressBar.Value = e.ProgressPercentage;
+ var total = e.TotalBytesToReceive / 1024;
+ var current = e.BytesReceived / 1024;
+
+ if (total > 0) {
+ labelData.Text = $"{current}KB/{total}KB";
+ }
+ }
+
+ void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) {
+ Extract(currentDownloadItem);
+ DownloadNextFile();
+ }
+
+ void Extract(DownloadItem item) {
+ if (Directory.Exists(item.TargetFolder)) {
+ var dir = new DirectoryInfo(item.TargetFolder);
+ dir.Delete(true);
+ }
+
+ if (Directory.Exists("temp")) {
+ var dir = new DirectoryInfo("temp");
+ dir.Delete(true);
+ }
+
+ labelData.Text = $"Extracting {item.Filename}...";
+
+ ZipFile.ExtractToDirectory(item.Filename, "temp");
+
+ string[] dirList;
+
+ // Move to the correct level
+ dirList = Directory.GetDirectories("temp");
+
+
+
+ if (dirList.Length > 0) {
+ var dir = dirList[0];
+
+ // As sometime ExtractToDirectory is still locking the directory, loop until ok
+ while (true) {
+ try {
+ Directory.Move(dir, item.TargetFolder);
+ break;
+ } catch (Exception exception) {
+ Thread.Sleep(1000);
+ }
+ }
+
+ } else {
+ MessageBox.Show("Unexcepted Error: Cannot move extracted files, folder not found.");
+ }
+
+ labelData.Text = $"Extracted";
+
+ if (Directory.Exists("temp")) {
+ var dir = new DirectoryInfo("temp");
+ dir.Delete(true);
+ }
+
+ File.Delete(item.Filename);
+ }
+ }
+
+ public class DownloadItem {
+ public string URL { get; set; }
+ public string Filename { get; set; }
+ public string TargetFolder { get; set; }
+ }
+}
+
diff --git a/extra/exe-builder/DownloadForm.resx b/extra/exe-builder/DownloadForm.resx
new file mode 100644
index 000000000..e87e0c0d4
--- /dev/null
+++ b/extra/exe-builder/DownloadForm.resx
@@ -0,0 +1,377 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA
+ AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////BPT09Bfu7u4e8fHxJPPz8yv19fUy9fX1M/Pz8yvx8fEk9vb2HPPz8xXMzMwFAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /wHv7+8f7u7uPPPz81Tx8fFs8fHxgPHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGB8fHxcfHx8V3x8fFI9PT0MOvr6w0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADy8vIU8fHxS/Dw8Hbx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fFr9PT0R/Dw8CIAAAABAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA8vLyFPHx8Vnx8fGB8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fFs9fX1Mb+/vwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAICAgALy8vI88fHxfvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvLy8nby8vI8gICAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAzMzMBfHx8Vrx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8vLyYf///wwAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8vLyYPHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8W/z8/MWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADv7+9R8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLw8PB26urqDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPLy8ijx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgu7w7Ifj79ud2u7PtNLrw83P677dzeu85c3r
+ u+rM67rwzOu68c7rverQ68Dj0uvD3NbuyM3b7c+64u7apujv5ZPx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxXgAAAAEAAAAAAAAAAAAAAAAAAAAA4+PjCfDw
+ 8Hfx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLd7tSmzeu92MbqsvvG6bH/xumy/8fq
+ s//H6rP/yOq0/8jqtf/J6rb/yeq2/8rrt//K67j/y+u4/8vruf/M67r/zOu7/83ru//Q7MDx1u7Kz9/t
+ 163s8OuJ8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgu/v7y8AAAAAAAAAAAAA
+ AAAAAAAA7u7uPfHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC5PDdl8jqtuTE6a7/xOmv/8Xp
+ sP/G6bH/xumx/8bpsv/H6rP/x+qz/8jqtP/I6rX/yeq2/8nqtv/K67f/yuu4/8vruP/L67n/zOu6/8zr
+ u//N67v/zey8/87svf/P67742e3Mx+jv5ZLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvDw
+ 8HWAgIACAAAAAAAAAACqqqoD8vLyc/Hx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLf7degxOiu+cPo
+ rf/D6a7/xOmu/8Xpr//F6bD/xumx/8bpsf/G6bL/x+qz/8fqs//I6rT/yOq1/8nqtv/J6rb/yuu3/8rr
+ uP/L67j/y+u5/8zruv/M67v/zeu7/83svP/O7L3/zuy9/87svfzc7tK28fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fEkAAAAAAAAAADz8/Mq8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgunv
+ 5o3D6a/0wuis/8Lorf/D6K3/xOmu/8Tprv/F6a//xemw/8bpsf/G6bH/xumy/8fqs//H6rP/yOq0/8jq
+ tf/J6rb/yeq2/8rrt//K67j/y+u4/8vruf/M67r/zOu7/83ru//N7Lz/zuy9/87svf/O7L3/3e/TtPHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLy8vJNAAAAAAAAAADy8vJM8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgszqutDB6Kv/weir/8LorP/D6K3/w+it/8Tprv/E6a7/xemv/8XpsP/G6bH/xumx/8bp
+ sv/H6rP/x+qz/8jqtP/I6rX/yeq2/8nqtv/K67f/yuu4/8vruP/L67n/zOu6/8zru//N67v/zey8/87s
+ vf/O7L3/zuy++u3w6Yzx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLy8vJ1AAAAAAAAAADx8fFr8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC6O/kjsDoqvzA6Kr/weir/8Loq//C6Kz/w+it/8Porf/E6a7/xOmu/8Xp
+ r//F6bD/xumx/8bpsf/G6bL/x+qz/8fqtP/I6rT/yOq1/8nqtv/J6rb/yuu3/8rruP/L67n/y+u5/8zr
+ uv/M67v/zeu7/83svP/O7L3/zuy9/93u07Xx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC////Bv//
+ /wfx8fGB8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC1ezJsr/nqf/A56n/weiq/8Hoq//C6Kv/wuis/8Po
+ rf/D6K3/xOmu/8Pprv+856T/uOed/7bmmv+05Zf/teWZ/7jnnf+86KP/wOio/8fqs//J6rb/yeq2/8rr
+ t//K67j/y+u5/8vruf/M67r/zOu7/83ru//N7Lz/zuy9/9buyNLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8vLyE/Ly8hPx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCy+q6zr/nqP/A56n/wOep/8Ho
+ qv/B6Kv/wuir/8LorP+u5Y//neF2/5bgav+V4Gr/luBr/5fhbP+Y4W7/meFv/5rhcf+b4nL/nOJ0/53i
+ dv+j5H//reaM/7nnnf/E6q//y+y4/8vruf/L67n/zOu6/8zru//N67v/zey8/9Lsxd/x8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC7+/vIPb29hzx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCx+m03L/n
+ qP+/56j/wOep/8Dnqf/B6Kr/weir/7nmn/+R32T/kt9l/5PfZ/+U4Gj/leBq/5bga/+X4W3/mOFu/5nh
+ b/+a4XH/m+Jy/5zidP+d4nX/nuN3/5/jeP+f4nn/weqq/8rruP/L67n/y+u5/8zruv/M67v/zeu7/9Ls
+ w+Lx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8PDwI/Hx8SXx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGCxeix5L/nqP+/56j/v+eo/8Dnqf/A56n/weiq/7Pllv+Q3mP/kd9k/5LfZf+T32f/lOBo/5Xg
+ av+W4Gv/l+Ft/5jhbv+Z4W//muFx/5vicv+c4nT/neJ1/57jd/+f43j/xOmu/8rrt//K67j/y+u5/8vr
+ uf/M67r/zOu7/9Tsxtfx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC9PT0GO/v7yDx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGCx+m037/nqP+/56j/v+eo/7/nqP/A56n/wOip/7TmmP+P3mH/kN5j/5Hf
+ ZP+S32b/k99n/5TgaP+V4Gr/luBr/5fhbf+Y4W7/meFw/5rhcf+b4nL/nOJ0/53idf+h5Hz/yuu2/8nq
+ t//K67f/yuu4/8vruf/L67n/zOu6/9ftysrx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC7e3tDvT0
+ 9Bfx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCyOq117/nqP+/56j/v+eo/7/nqP+/56j/wOep/7vn
+ of+O3mD/j95h/5DeY/+R32T/kt9m/5PfZ/+U4Gj/leBq/5bga/+X4W3/mOFu/5nhcP+a4nH/m+Jy/5zi
+ dP+r5Yr/yOq1/8nqtv/J6rf/yuu3/8rruP/L67n/y+u5/9zu1LHx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLz8/OA////A+7u7g/x8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCz+q+xb/nqP+/56j/v+eo/7/n
+ qP+/56j/v+eo/8Dnqf+S4Gb/jt5g/4/eYf+Q3mP/kd9k/5LfZv+T32f/lOBo/5Xgav+W4Gv/l+Ft/5jh
+ bv+Z4XD/muJx/5vic/+4553/yOq0/8jqtf/J6rb/yeq3/8rrt//K67j/y+u5/+bw4Zfx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fFrAAAAAP///wHz8/N88fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC1+zMrr/n
+ qP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+f4Xn/jd5f/47eYP+P3mH/kN5j/5HfZP+S32b/k99n/5Tg
+ af+V4Gr/luBr/5fhbf+Y4W7/meFw/5vic//F6rD/x+q0/8jqtP/I6rX/yeq2/8nqt//K67f/zOu88u/x
+ 74Px8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLv7+9QAAAAAAAAAADw8PBm8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC5e7gk7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+u5I//jN1d/43eX/+O3mD/j95h/5De
+ Y/+R32T/kt9m/5PfZ/+U4Gn/leBq/5bga/+X4W3/mOFu/6rliP/G6rL/x+qz/8fqtP/I6rT/yOq1/8nq
+ tv/J6rf/1OzGy/Hx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YL19fUzAAAAAAAAAADy8vJO8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgsPoru2/56j/v+eo/7/nqP+/56j/v+eo/7/nqP++6Kf/j95i/4zd
+ Xf+N3l//jt5g/4/eYv+Q3mP/kd9k/5LfZv+T32f/lOBp/5Xgav+W4Gz/l+Ft/7voov/G6bL/xuqy/8fq
+ s//H6rT/yOq1/8jqtf/J6rb/4e/Zo/Hx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLw8PARAAAAAAAA
+ AADu7u4u8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgszpvMm/56j/v+eo/7/nqP+/56j/v+eo/7/n
+ qP+/56j/q+SL/4vdXP+M3V3/jd5f/47eYP+P3mL/kN9j/5HfZP+S32b/k99n/5Tgaf+V4Gr/qOOH/8Xp
+ sP/G6bH/xumy/8bqsv/H6rP/x+q0/8jqtf/K67jy8PHwhPHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8WoAAAAAAAAAAAAAAADo6OgL8fHxgfHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxguDv2J2/56j/v+eo/7/n
+ qP+/56j/v+eo/7/nqP+/56j/v+eo/6Xjgv+L3Vz/jN1d/43eX/+O3mD/j95i/5DfY/+R32T/kt9m/5Pf
+ Z/+k44D/xOmu/8XpsP/F6bD/xumx/8bpsv/G6rL/x+qz/8fqtP/W7cnB8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvPz80AAAAAAAAAAAAAAAAAAAAAA8PDwZ/Hx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLD6K/rv+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+u5I//kt5n/4zdXf+N3l//jt5g/4/e
+ Yv+Q32P/luFs/67kj//D6K3/xOmu/8Tpr//F6bD/xemw/8bpsf/G6bL/xuqy/8fqtP7o7+WR8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvPz8xYAAAAAAAAAAAAAAAAAAAAA8vLyPPHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLV7ci0v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/wOio/7Xl
+ mv+u5I7/rOSM/67kj/+35pz/wumr/8Lorf/D6K3/w+it/8Tprv/E6a//xemw/8XpsP/G6bH/xumy/9Ds
+ wNPx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8vLyZQAAAAAAAAAAAAAAAAAAAAAAAAAA////DPHx
+ 8YDx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCx+m03L/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/n
+ qP+/56j/v+eo/7/nqP+/56j/wOep/8Doqv/B6Kr/weir/8LorP/C6K3/w+it/8Porv/E6a7/xOmv/8Xp
+ sP/F6bD/yOq18uvw6Yvx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC7+/vMQAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAPHx8Vzx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC6O/ij8LorPG/56j/v+eo/7/n
+ qP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/8Dnqf/A6Kr/weiq/8Hoq//C6Kz/wuit/8Po
+ rf/D6K7/xOmu/8Tpr//F6bH74u/anvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLw8PB6////BQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPPz8yrx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxguHu
+ 2pnB56v2v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP/A56n/wOiq/8Ho
+ q//B6Kv/wuis/8Lorf/D6K3/w+mu/8Tprv3b7dKq8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHy8vJf8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLi7tyXwumt8L/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/n
+ qP+/56j/wOep/8Doqv/B6Kv/weir/8LorP/C6K3/xOiv+d7u1aTx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvLy8nb///8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADv7+8Q8/Pze/Hx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC6/Dpiszqu82/56j/v+eo/7/nqP+/56j/v+eo/7/n
+ qP+/56j/v+eo/7/nqP+/56j/v+eo/8Dnqf/A6Kr/weir/8Hoq//H6bTj5e7elfHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvPz8yoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA9fX1MvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLe7tShx+mz3r/n
+ qP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP/A56n/xumy5drtz6rv8e+D8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8vLyTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHx8Unx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgubv45DU68e2y+q6z8XoseTD6a7uweir9MPpru7F6bHly+q50tLsxLrl796U8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLy8vJh////AwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wHx8fFZ8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8Wzf398IAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8D8/PzVfHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8PDwZujo
+ 6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////AfHx8Ujx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fFa////BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADz8/Mp8vLydvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8/PzfPHx8TcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CvLy8lDz8/N/8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvPz84Hx8fFa8PDwEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADw8PAR8vLyTvHx8X3x8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fF/8/PzVvT09BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wXz8/Mq8/PzU/Hx8XDx8fGB8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLy8vJz8fHxWO/v7y////8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8G7e3tHfLy
+ 8ifu7u4u8PDwNPT09C/y8vIo7+/vH+Pj4wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///////wAA////////AAD///////8AAP//gAf//wAA//gAAD//AAD/wAAAB/8AAP+A
+ AAAB/wAA/gAAAAB/AAD8AAAAAD8AAPgAAAAAHwAA8AAAAAAPAADwAAAAAAcAAOAAAAAABwAA4AAAAAAD
+ AADAAAAAAAMAAMAAAAAAAwAAwAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
+ AAAAAQAAgAAAAAABAACAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAABwAAwAAAAAAH
+ AADgAAAAAAcAAOAAAAAADwAA4AAAAAAPAADwAAAAAB8AAPAAAAAAHwAA+AAAAAA/AAD8AAAAAD8AAPwA
+ AAAAfwAA/gAAAAD/AAD/AAAAAf8AAP+AAAAD/wAA/8AAAAf/AAD/8AAAH/8AAP/8AAA//wAA//8AAf//
+ AAD//+AP//8AAP///////wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAgICAAu/v7xD09PQX7u7uHvDw8CP29vYb8vLyFOrq6gwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICA
+ gALy8vIm7+/vT/Pz82fz8/N98fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvDw8Hrw8PBm7+/vUPT0
+ 9C3o6OgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj
+ 4wnz8/NC8vLydPHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YHy8vJj8/PzKoCAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADx8fEl8vLydfHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxcfHx8SUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA9PT0LfHx8YDx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8/PzgPLy8j0AAAABAAAAAAAA
+ AAAAAAAAAAAAAO3t7Rzx8fGA8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLr8OmM5O7emeTv
+ 3Z7h79mj5fDem+nv45Tu8u6H8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvLy
+ 8joAAAAAAAAAAAAAAAD///8E8fHxbvHx8YLx8fGC8fHxgvHx8YLx8fGC7vDshtns0K7N67zayeq288fq
+ s//I6rT/yOq1/8nqtv/K67f/y+u4/8vruf/P7L7w0+zF29vv0Lrn8OKX8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8/PzfvPz8xUAAAAAAAAAAPX19TLx8fGC8fHxgvHx8YLx8fGC8fHxgt3u1KXF6rHzxOmv/8Xp
+ sP/G6bH/xumy/8fqs//I6rT/yOq1/8nqtv/K67f/y+u4/8vruf/M67v/zey8/87svf/S7MPj4u7Zp/Hx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8/PzVQAAAAAAAAAA8fHxavHx8YLx8fGC8fHxgvHx8YLf7defwuis/cPo
+ rf/E6a7/xOmv/8XpsP/G6bH/xumy/8fqs//I6rT/yOq1/8nqtv/K67f/y+u4/8vruv/M67v/zey8/87s
+ vf/N67z/3e7SufHx8YLx8fGC8fHxgvHx8YLz8/N8////Bf///w3x8fGC8fHxgvHx8YLx8fGC8fHxgsXp
+ sOnB6Kv/wuis/8Porf/E6a7/xOmv/8XpsP/G6bH/xumy/8fqs//I6rT/yOq1/8nqtv/K67f/y+u4/8vr
+ uv/M67v/zey8/87svf/O67z96/Hoj/Hx8YLx8fGC8fHxgvHx8YLy8vIm8/PzK/Hx8YLx8fGC8fHxgvHx
+ 8YLg79icwOep/8Hoqv/B6Kv/wuis/8Porf/E6a7/wuit/73opP+76KL/u+eh/77opv/D6a3/yeu1/8nq
+ tv/K67f/y+u5/8zruv/M67v/zey8/87svf/d7tSz8fHxgvHx8YLx8fGC8fHxgvHx8Tby8vI68fHxgvHx
+ 8YLx8fGC8fHxgtTrxre/56j/wOep/8Hoqv/B6Kv/uOad/53idv+V4Gn/leBq/5fhbP+Y4W//muFx/5vi
+ c/+e4Xb/puWD/7PmlP/D6a3/y+u5/8zruv/M67v/zey8/9rtzsHx8fGC8fHxgvHx8YLx8fGC8/PzQfPz
+ 80Lx8fGC8fHxgvHx8YLx8fGC0OvAwr/nqP+/56j/wOep/8Hoqv+o44b/kd9k/5LfZv+U4Gj/leBq/5fh
+ bf+Y4W//muFx/5vic/+d4nX/n+N3/7fnm//K67j/y+u5/8zruv/M67v/2u3QvPHx8YLx8fGC8fHxgvHx
+ 8YLy8vI98/PzP/Hx8YLx8fGC8fHxgvHx8YLQ6sK/v+eo/7/nqP+/56j/wOep/6jjhv+P3mL/kd9k/5Lf
+ Zv+U4Gj/leBr/5fhbf+Y4W//muFx/5zic/+d4nX/v+mm/8nqt//K67j/y+u5/8zruv/f79au8fHxgvHx
+ 8YLx8fGC8fHxgvX19TLx8fE38fHxgvHx8YLx8fGC8fHxgtTrybO/56j/v+eo/7/nqP+/56j/sOSS/47e
+ YP+P3mL/kd9k/5LfZv+U4Gj/leBr/5fhbf+Z4W//muJx/5/jd//H6bP/yeq2/8nqt//K67j/y+u5/+nv
+ 45Tx8fGC8fHxgvHx8YLx8fGC7+/vIPHx8SXx8fGC8fHxgvHx8YLx8fGC4e/Zm7/nqP+/56j/v+eo/7/n
+ qP+956X/jt5h/47eYP+P3mL/kd9k/5LfZv+U4Gn/luBr/5fhbf+Z4W//q+aK/8fqs//I6rT/yeq2/8nq
+ t//N7Lvw8fHxgvHx8YLx8fGC8fHxgvPz84D///8G6+vrDfHx8YLx8fGC8fHxgvHx8YLv8e+Dweis87/n
+ qP+/56j/v+eo/7/nqP+d4XX/jN1e/47eYP+P3mL/kd9k/5PfZ/+U4Gn/luBr/5fhbf+86KP/xuqy/8fq
+ s//I6rX/yeq2/9Tsx8nx8fGC8fHxgvHx8YLx8fGC8PDwaAAAAAAAAAAA8fHxbPHx8YLx8fGC8fHxgvHx
+ 8YLM6rrMv+eo/7/nqP+/56j/v+eo/7blmv+N3V//jN1e/47eYP+Q3mL/kd9k/5PfZ/+U4Gn/qeSH/8Xp
+ sP/G6bH/xuqy/8fqs//I6rX/5fDem/Hx8YLx8fGC8fHxgvHx8YLz8/M/AAAAAAAAAADz8/NB8fHxgvHx
+ 8YLx8fGC8fHxgt3s06O/56j/v+eo/7/nqP+/56j/v+eo/7Xmmf+U32n/jN1e/47eYP+Q3mL/k99o/6zk
+ i//D6a7/xemv/8XpsP/G6bH/xuqy/8vqu+jx8fGC8fHxgvHx8YLx8fGC8fHxgvPz8xUAAAAAAAAAAPT0
+ 9Bfx8fGC8fHxgvHx8YLx8fGC8fHvg8Tpsee/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+35pz/suWV/7Xm
+ mf/A6Kj/wuit/8Porf/E6a7/xemv/8XpsP/G6bH/3e3UqvHx8YLx8fGC8fHxgvHx8YLw8PBmAAAAAAAA
+ AAAAAAAAAAAAAPHx8W7x8fGC8fHxgvHx8YLx8fGC4u7cmMHnqvm/56j/v+eo/7/nqP+/56j/v+eo/7/n
+ qP+/56j/wOep/8Hoqv/C6Kz/wuit/8Porf/E6a7/xemv/9Hrwszx8fGC8fHxgvHx8YLx8fGC8fHxgvX1
+ 9TEAAAAAAAAAAAAAAAAAAAAA7u7uO/Hx8YLx8fGC8fHxgvHx8YLx8fGC3e7SpMHoqfq/56j/v+eo/7/n
+ qP+/56j/v+eo/7/nqP+/56j/wOip/8Hoq//C6Kz/wuit/8Porf/O67zV8PHwhPHx8YLx8fGC8fHxgvHx
+ 8YLy8vJ2////BQAAAAAAAAAAAAAAAAAAAACqqqoD8PDwafHx8YLx8fGC8fHxgvHx8YLx8fGC4O/YnMTo
+ ruy/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/wOip/8Hoq//C6Kz90uvEwe/x74Px8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvPz8ykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADz8/MW8fHxfPHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8PLuhdXtyLXF6bHlv+eo/7/nqP+/56j/v+eo/7/nqP/B6Kv0zeq8zOXv4JTx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLy8vJNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADy8vIm8fHxgPHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLs8OmJ4e/Zm93u06Pf7def5+/hkvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxXf///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADy8vIo8/PzffHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8VnMzMwFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD29vYb8fHxbvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvPz83/v7+9BgICAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8/PzQPLy8nnx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvPz84Hx8fFc9PT0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////B/X19TLx8fFc8PDwevHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgPHx8Wv09PRE9PT0FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA7+/vEPb29hvw8PAj7+/vH/T09Be/v78EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////8B///wAA//wAAD/wAAAP4AAAB+AA
+ AAfAAAADwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAADwAAAA8AAAAPAAAAH4AAAB+AA
+ AA/wAAAP+AAAH/gAAD/+AAB//wAB///AA///+B////////////8oAAAAEAAAACAAAAABACAAAAAAAAAE
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CfDw8BH///8GAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAAu7u7i7x8fFe8PDwevHx8YLx8fGC8fHxgvDw
+ 8Hvx8fFs7+/vT/Dw8CMAAAABAAAAAAAAAAAAAAAA5ubmCvLy8l/x8fGC8fHxgvHx8YLx8fGC8fHxgvHx
+ 8YLx8fGC8fHxgvHx8YLx8fGC8/PzZu7u7g8AAAAAAAAAAPHx8V3x8fGC8fHxgunv5o7Z7c200+vFytTs
+ xc7W7cnH2+7QueLu2qbu8OyH8fHxgvHx8YLx8fFu////BfHx8STx8fGC8fHxgtrtzq3D6a/8xemw/8bp
+ sv/I6rT/yeq2/8vruP/M67v/z+u++Nzu0bjx8fGC8fHxgu/v7zDx8fFI8fHxguzw6ojC56z3wuis/8Tp
+ rv/E6q3/weiq/8fqsv/J6rb/y+u5/8zru//N67z/6/HpjfHx8YLy8vJN8fHxXPHx8YLg79icv+eo/8Ho
+ qv+k4n//lOBo/5fhbf+a4XH/n+J5/7Pmlv/L67n/zOu7/+Xw353x8fGC8fHxXvHx8Vrx8fGC4O3Zm7/n
+ qP+/56j/nuF3/5HfZP+U4Gj/l+Ft/5ricf+x5pL/yeq3/8vruf/r8emN8fHxgu/v70/x8fFK8fHxguzw
+ 6ojA6Kn8v+eo/6njiP+O3mD/kd9k/5Tgaf+X4W3/vuim/8jqtP/N67zr8fHxgvHx8YLy8vI68/PzK/Hx
+ 8YLx8fGCx+m03L/nqP++6Kb/meBw/47eYP+S32X/q+SL/8XpsP/G6rL/1+zLvvHx8YLz8/OB8PDwEdXV
+ 1Qbx8fF98fHxgt/t1Z/A56j9v+eo/7/nqP+656H/vuim/8Lorf/E6a7/yOq18Ovw6Yvx8fGC8vLyYwAA
+ AAAAAAAA8fHxR/Hx8YLx8fGC2O3NrMDnqfq/56j/v+eo/7/nqP/B6Kv/xumy7OTu3Zfx8fGC8/PzgfLy
+ 8icAAAAAAAAAAP///wPz8/Nm8fHxgvHx8YLo7+SO0+zFuczquszM6bzJ1+zMru7w7Ibx8fGC8fHxgvHx
+ 8UcAAAAAAAAAAAAAAAAAAAAA4+PjCfHx8Vzx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgfPz
+ 80D///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8/PzK/Ly8mDz8/N+8fHxgvHx8YLy8vJ68vLyUezs
+ 7BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAevr6w3j4+MJAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD8fwAA4AcAAMADAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
+ AADAAwAAwAMAAOAHAADwDwAA/n8AAP//AAA=
+
+
+
\ No newline at end of file
diff --git a/extra/exe-builder/FodyWeavers.xml b/extra/exe-builder/FodyWeavers.xml
new file mode 100644
index 000000000..0b37e4ef4
--- /dev/null
+++ b/extra/exe-builder/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/extra/exe-builder/FodyWeavers.xsd b/extra/exe-builder/FodyWeavers.xsd
new file mode 100644
index 000000000..ff119f713
--- /dev/null
+++ b/extra/exe-builder/FodyWeavers.xsd
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ The order of preloaded assemblies, delimited with line breaks.
+
+
+
+
+
+ This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.
+
+
+
+
+ Controls if .pdbs for reference assemblies are also embedded.
+
+
+
+
+ Controls if runtime assemblies are also embedded.
+
+
+
+
+ Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.
+
+
+
+
+ Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.
+
+
+
+
+ As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.
+
+
+
+
+ Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.
+
+
+
+
+ Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with |.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with |.
+
+
+
+
+ The order of preloaded assemblies, delimited with |.
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/extra/exe-builder/Program.cs b/extra/exe-builder/Program.cs
new file mode 100644
index 000000000..6004f6d4b
--- /dev/null
+++ b/extra/exe-builder/Program.cs
@@ -0,0 +1,243 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.Sockets;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Microsoft.Win32;
+using Newtonsoft.Json;
+using UptimeKuma.Properties;
+
+namespace UptimeKuma {
+ static class Program {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main(string[] args) {
+ var cwd = Path.GetDirectoryName(Application.ExecutablePath);
+
+ if (cwd != null) {
+ Environment.CurrentDirectory = cwd;
+ }
+
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new UptimeKumaApplicationContext());
+ }
+ }
+
+ public class UptimeKumaApplicationContext : ApplicationContext
+ {
+ private static Mutex mutex = null;
+
+ const string appName = "Uptime Kuma";
+
+ private NotifyIcon trayIcon;
+ private Process process;
+
+ private MenuItem statusMenuItem;
+ private MenuItem runWhenStarts;
+ private MenuItem openMenuItem;
+
+ private RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
+
+
+ public UptimeKumaApplicationContext() {
+
+ // Single instance only
+ bool createdNew;
+ mutex = new Mutex(true, appName, out createdNew);
+ if (!createdNew) {
+ return;
+ }
+
+ var startingText = "Starting server...";
+ trayIcon = new NotifyIcon();
+ trayIcon.Text = startingText;
+
+ runWhenStarts = new MenuItem("Run when system starts", RunWhenStarts);
+ runWhenStarts.Checked = registryKey.GetValue(appName) != null;
+
+ statusMenuItem = new MenuItem(startingText);
+ statusMenuItem.Enabled = false;
+
+ openMenuItem = new MenuItem("Open", Open);
+ openMenuItem.Enabled = false;
+
+ trayIcon.Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location);
+ trayIcon.ContextMenu = new ContextMenu(new MenuItem[] {
+ statusMenuItem,
+ openMenuItem,
+ //new("Debug Console", DebugConsole),
+ runWhenStarts,
+ new("Check for Update...", CheckForUpdate),
+ new("Visit GitHub...", VisitGitHub),
+ new("About", About),
+ new("Exit", Exit),
+ });
+
+ trayIcon.MouseDoubleClick += new MouseEventHandler(Open);
+ trayIcon.Visible = true;
+
+ var hasUpdateFile = File.Exists("update");
+
+ if (!hasUpdateFile && Directory.Exists("core") && Directory.Exists("node") && Directory.Exists("core/node_modules") && Directory.Exists("core/dist")) {
+ // Go go go
+ StartProcess();
+ } else {
+ DownloadFiles();
+ }
+ }
+
+ void DownloadFiles() {
+ var form = new DownloadForm();
+ form.Closed += Exit;
+ form.Show();
+ }
+
+ private void RunWhenStarts(object sender, EventArgs e) {
+ if (registryKey == null) {
+ MessageBox.Show("Error: Unable to set startup registry key.");
+ return;
+ }
+
+ if (runWhenStarts.Checked) {
+ registryKey.DeleteValue(appName, false);
+ runWhenStarts.Checked = false;
+ } else {
+ registryKey.SetValue(appName, Application.ExecutablePath);
+ runWhenStarts.Checked = true;
+ }
+ }
+
+ void StartProcess() {
+ var startInfo = new ProcessStartInfo {
+ FileName = "node/node.exe",
+ Arguments = "server/server.js --data-dir=\"../data/\"",
+ RedirectStandardOutput = false,
+ RedirectStandardError = false,
+ UseShellExecute = false,
+ CreateNoWindow = true,
+ WorkingDirectory = "core"
+ };
+
+ process = new Process();
+ process.StartInfo = startInfo;
+ process.EnableRaisingEvents = true;
+ process.Exited += ProcessExited;
+
+ try {
+ process.Start();
+ //Open(null, null);
+
+ // Async task to check if the server is ready
+ Task.Run(() => {
+ var runningText = "Server is running";
+ using TcpClient tcpClient = new TcpClient();
+ while (true) {
+ try {
+ tcpClient.Connect("127.0.0.1", 3001);
+ statusMenuItem.Text = runningText;
+ openMenuItem.Enabled = true;
+ trayIcon.Text = runningText;
+ break;
+ } catch (Exception) {
+ System.Threading.Thread.Sleep(2000);
+ }
+ }
+ });
+
+ } catch (Exception e) {
+ MessageBox.Show("Startup failed: " + e.Message, "Uptime Kuma Error");
+ }
+ }
+
+ void StopProcess() {
+ process?.Kill();
+ }
+
+ void Open(object sender, EventArgs e) {
+ Process.Start("http://localhost:3001");
+ }
+
+ void DebugConsole(object sender, EventArgs e) {
+
+ }
+
+ void CheckForUpdate(object sender, EventArgs e) {
+ var needUpdate = false;
+
+ // Check version.json exists
+ if (File.Exists("version.json")) {
+ // Load version.json and compare with the latest version from GitHub
+ var currentVersionObj = JsonConvert.DeserializeObject(File.ReadAllText("version.json"));
+
+ var versionJson = new WebClient().DownloadString("https://uptime.kuma.pet/version");
+ var latestVersionObj = JsonConvert.DeserializeObject(versionJson);
+
+ // Compare version, if the latest version is newer, then update
+ if (new System.Version(latestVersionObj.latest).CompareTo(new System.Version(currentVersionObj.latest)) > 0) {
+ var result = MessageBox.Show("A new version is available. Do you want to update?", "Update", MessageBoxButtons.YesNo);
+ if (result == DialogResult.Yes) {
+ // Create a empty file `update`, so the app will download the core files again at startup
+ File.Create("update").Close();
+
+ trayIcon.Visible = false;
+ process?.Kill();
+
+ // Restart the app, it will download the core files again at startup
+ Application.Restart();
+ }
+ } else {
+ MessageBox.Show("You are using the latest version.");
+ }
+ }
+
+
+ }
+
+ void VisitGitHub(object sender, EventArgs e)
+ {
+ Process.Start("https://github.com/louislam/uptime-kuma");
+ }
+
+ void About(object sender, EventArgs e)
+ {
+ MessageBox.Show("Uptime Kuma Windows Runtime v1.0.0" + Environment.NewLine + "© 2023 Louis Lam", "Info");
+ }
+
+ void Exit(object sender, EventArgs e)
+ {
+ // Hide tray icon, otherwise it will remain shown until user mouses over it
+ trayIcon.Visible = false;
+ process?.Kill();
+ Application.Exit();
+ }
+
+ void ProcessExited(object sender, EventArgs e) {
+
+ if (process.ExitCode != 0) {
+ var line = "";
+ while (!process.StandardOutput.EndOfStream)
+ {
+ line += process.StandardOutput.ReadLine();
+ }
+
+ MessageBox.Show("Uptime Kuma exited unexpectedly. Exit code: " + process.ExitCode + " " + line);
+ }
+
+ trayIcon.Visible = false;
+ Application.Exit();
+ }
+
+ }
+}
+
diff --git a/extra/exe-builder/Properties/AssemblyInfo.cs b/extra/exe-builder/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..7b20d94c1
--- /dev/null
+++ b/extra/exe-builder/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Uptime Kuma")]
+[assembly: AssemblyDescription("A portable executable for running Uptime Kuma")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Uptime Kuma")]
+[assembly: AssemblyProduct("Uptime Kuma")]
+[assembly: AssemblyCopyright("Copyright © 2023 Louis Lam")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("86B40AFB-61FC-433D-8C31-650B0F32EA8F")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.1.0")]
+[assembly: AssemblyFileVersion("1.0.1.0")]
diff --git a/extra/exe-builder/Properties/Resources.Designer.cs b/extra/exe-builder/Properties/Resources.Designer.cs
new file mode 100644
index 000000000..8c8e559c5
--- /dev/null
+++ b/extra/exe-builder/Properties/Resources.Designer.cs
@@ -0,0 +1,62 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace UptimeKuma.Properties {
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder",
+ "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance",
+ "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState
+ .Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if ((resourceMan == null)) {
+ global::System.Resources.ResourceManager temp =
+ new global::System.Resources.ResourceManager("UptimeKuma.Properties.Resources",
+ typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState
+ .Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get { return resourceCulture; }
+ set { resourceCulture = value; }
+ }
+ }
+}
\ No newline at end of file
diff --git a/extra/exe-builder/Properties/Resources.resx b/extra/exe-builder/Properties/Resources.resx
new file mode 100644
index 000000000..ffecec851
--- /dev/null
+++ b/extra/exe-builder/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/extra/exe-builder/Properties/Settings.Designer.cs b/extra/exe-builder/Properties/Settings.Designer.cs
new file mode 100644
index 000000000..6c63b395b
--- /dev/null
+++ b/extra/exe-builder/Properties/Settings.Designer.cs
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace UptimeKuma.Properties {
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute(
+ "Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+ private static Settings defaultInstance =
+ ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get { return defaultInstance; }
+ }
+ }
+}
\ No newline at end of file
diff --git a/extra/exe-builder/Properties/Settings.settings b/extra/exe-builder/Properties/Settings.settings
new file mode 100644
index 000000000..abf36c5d3
--- /dev/null
+++ b/extra/exe-builder/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/extra/exe-builder/UptimeKuma.csproj b/extra/exe-builder/UptimeKuma.csproj
new file mode 100644
index 000000000..ecd6a46b6
--- /dev/null
+++ b/extra/exe-builder/UptimeKuma.csproj
@@ -0,0 +1,212 @@
+
+
+
+
+
+ Debug
+ AnyCPU
+ {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}
+ WinExe
+ UptimeKuma
+ uptime-kuma
+ v4.7.2
+ 512
+ true
+ true
+ ..\..\public\favicon.ico
+ 9
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ app.manifest
+
+
+ COPY "$(SolutionDir)bin\Debug\uptime-kuma.exe" "%UserProfile%\Desktop\uptime-kuma-win64\"
+
+
+
+ packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll
+
+
+ packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll
+
+
+
+ packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll
+
+
+
+ packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll
+
+
+ packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
+
+
+
+ packages\System.Console.4.3.1\lib\net46\System.Console.dll
+
+
+
+ packages\System.Diagnostics.DiagnosticSource.7.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll
+
+
+ packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll
+
+
+ packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll
+
+
+ packages\System.IO.4.3.0\lib\net462\System.IO.dll
+
+
+ packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll
+
+
+
+ packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll
+
+
+ packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll
+
+
+ packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll
+
+
+ packages\System.Linq.4.3.0\lib\net463\System.Linq.dll
+
+
+ packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll
+
+
+ packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
+
+
+ packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll
+
+
+ packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll
+
+
+
+ packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
+
+
+ packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll
+
+
+ packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll
+
+
+ packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
+
+
+ packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll
+
+
+ packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll
+
+
+ packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll
+
+
+ packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net463\System.Security.Cryptography.Algorithms.dll
+
+
+ packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll
+
+
+ packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll
+
+
+ packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll
+
+
+ packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll
+
+
+
+
+
+
+
+
+
+
+ packages\System.Xml.ReaderWriter.4.3.1\lib\net46\System.Xml.ReaderWriter.dll
+
+
+
+
+ Form
+
+
+ DownloadForm.cs
+
+
+
+
+
+ DownloadForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ favicon.ico
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}.
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extra/exe-builder/UptimeKuma.sln b/extra/exe-builder/UptimeKuma.sln
new file mode 100644
index 000000000..201d7e234
--- /dev/null
+++ b/extra/exe-builder/UptimeKuma.sln
@@ -0,0 +1,16 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UptimeKuma", "UptimeKuma.csproj", "{2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/extra/exe-builder/UptimeKuma.sln.DotSettings.user b/extra/exe-builder/UptimeKuma.sln.DotSettings.user
new file mode 100644
index 000000000..b4ca9dadf
--- /dev/null
+++ b/extra/exe-builder/UptimeKuma.sln.DotSettings.user
@@ -0,0 +1,3 @@
+
+ True
+ True
\ No newline at end of file
diff --git a/extra/exe-builder/Version.cs b/extra/exe-builder/Version.cs
new file mode 100644
index 000000000..896c7a244
--- /dev/null
+++ b/extra/exe-builder/Version.cs
@@ -0,0 +1,9 @@
+namespace UptimeKuma {
+ public class Version {
+ public string latest { get; set; }
+ public string slow { get; set; }
+ public string beta { get; set; }
+ public string nodejs { get; set; }
+ public string exe { get; set; }
+ }
+}
diff --git a/extra/exe-builder/app.manifest b/extra/exe-builder/app.manifest
new file mode 100644
index 000000000..4a48528fc
--- /dev/null
+++ b/extra/exe-builder/app.manifest
@@ -0,0 +1,28 @@
+
+
+
+
+ true
+ PerMonitorV2
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extra/exe-builder/packages.config b/extra/exe-builder/packages.config
new file mode 100644
index 000000000..aca26d670
--- /dev/null
+++ b/extra/exe-builder/packages.config
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extra/healthcheck.go b/extra/healthcheck.go
index 302883d84..f79b3e65b 100644
--- a/extra/healthcheck.go
+++ b/extra/healthcheck.go
@@ -11,12 +11,17 @@ import (
"net/http"
"os"
"runtime"
+ "strings"
"time"
)
func main() {
isFreeBSD := runtime.GOOS == "freebsd"
+ // Is K8S + uptime-kuma as the container name
+ // See #2083
+ isK8s := strings.HasPrefix(os.Getenv("UPTIME_KUMA_PORT"), "tcp://")
+
// process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{
InsecureSkipVerify: true,
@@ -44,7 +49,11 @@ func main() {
hostname = "127.0.0.1"
}
- port := os.Getenv("UPTIME_KUMA_PORT")
+ port := ""
+ // UPTIME_KUMA_PORT is override by K8S unexpectedly,
+ if !isK8s {
+ port = os.Getenv("UPTIME_KUMA_PORT")
+ }
if len(port) == 0 {
port = os.Getenv("PORT")
}
diff --git a/extra/healthcheck.js b/extra/healthcheck.js
index 9b95cf26a..5e06c2120 100644
--- a/extra/healthcheck.js
+++ b/extra/healthcheck.js
@@ -1,4 +1,8 @@
/*
+ * ⚠️ ⚠️ ⚠️ ⚠️ Due to the weird issue in Portainer that the healthcheck script is still pointing to this script for unknown reason.
+ * IT CANNOT BE DROPPED, even though it looks like it is not used.
+ * See more: https://github.com/louislam/uptime-kuma/issues/2774#issuecomment-1429092359
+ *
* ⚠️ Deprecated: Changed to healthcheck.go, it will be deleted in the future.
* This script should be run after a period of time (180s), because the server may need some time to prepare.
*/
diff --git a/extra/mark-as-nightly.js b/extra/mark-as-nightly.js
index ebc67da31..ada2aca81 100644
--- a/extra/mark-as-nightly.js
+++ b/extra/mark-as-nightly.js
@@ -1,11 +1,12 @@
const pkg = require("../package.json");
const fs = require("fs");
const util = require("../src/util");
+const dayjs = require("dayjs");
util.polyfill();
const oldVersion = pkg.version;
-const newVersion = oldVersion + "-nightly-" + util.genSecret(8);
+const newVersion = oldVersion + "-nightly-" + dayjs().format("YYYYMMDDHHmmss");
console.log("Old Version: " + oldVersion);
console.log("New Version: " + newVersion);
diff --git a/extra/remove-2fa.js b/extra/remove-2fa.js
index 0f3f63462..f88c43fca 100644
--- a/extra/remove-2fa.js
+++ b/extra/remove-2fa.js
@@ -43,6 +43,11 @@ const main = async () => {
console.log("Finished.");
};
+/**
+ * Ask question of user
+ * @param {string} question Question to ask
+ * @returns {Promise} Users response
+ */
function question(question) {
return new Promise((resolve) => {
rl.question(question, (answer) => {
diff --git a/extra/reset-password.js b/extra/reset-password.js
index 8036a4566..168983312 100644
--- a/extra/reset-password.js
+++ b/extra/reset-password.js
@@ -53,6 +53,11 @@ const main = async () => {
console.log("Finished.");
};
+/**
+ * Ask question of user
+ * @param {string} question Question to ask
+ * @returns {Promise} Users response
+ */
function question(question) {
return new Promise((resolve) => {
rl.question(question, (answer) => {
diff --git a/extra/simple-dns-server.js b/extra/simple-dns-server.js
index 376dbdd04..a6946dcb3 100644
--- a/extra/simple-dns-server.js
+++ b/extra/simple-dns-server.js
@@ -135,6 +135,11 @@ server.listen({
udp: 5300
});
+/**
+ * Get human readable request type from request code
+ * @param {number} code Request code to translate
+ * @returns {string} Human readable request type
+ */
function type(code) {
for (let name in Packet.TYPE) {
if (Packet.TYPE[name] === code) {
diff --git a/extra/simple-mqtt-server.js b/extra/simple-mqtt-server.js
index 238d27726..b970a380e 100644
--- a/extra/simple-mqtt-server.js
+++ b/extra/simple-mqtt-server.js
@@ -11,6 +11,7 @@ class SimpleMqttServer {
this.port = port;
}
+ /** Start the MQTT server */
start() {
this.server.listen(this.port, () => {
console.log("server started and listening on port ", this.port);
diff --git a/extra/sort-contributors.js b/extra/sort-contributors.js
new file mode 100644
index 000000000..b60d191f6
--- /dev/null
+++ b/extra/sort-contributors.js
@@ -0,0 +1,22 @@
+const fs = require("fs");
+
+// Read the file from private/sort-contributors.txt
+const file = fs.readFileSync("private/sort-contributors.txt", "utf8");
+
+// Convert to an array of lines
+let lines = file.split("\n");
+
+// Remove empty lines
+lines = lines.filter((line) => line !== "");
+
+// Remove duplicates
+lines = [ ...new Set(lines) ];
+
+// Remove @weblate and @UptimeKumaBot
+lines = lines.filter((line) => line !== "@weblate" && line !== "@UptimeKumaBot" && line !== "@louislam");
+
+// Sort the lines
+lines = lines.sort();
+
+// Output the lines, concat with " "
+console.log(lines.join(" "));
diff --git a/extra/test-docker.js b/extra/test-docker.js
new file mode 100644
index 000000000..d7926fcca
--- /dev/null
+++ b/extra/test-docker.js
@@ -0,0 +1,9 @@
+// Check if docker is running
+const { exec } = require("child_process");
+
+exec("docker ps", (err, stdout, stderr) => {
+ if (err) {
+ console.error("Docker is not running. Please start docker and try again.");
+ process.exit(1);
+ }
+});
diff --git a/extra/update-version.js b/extra/update-version.js
index d5c2ee5ca..8d78f17db 100644
--- a/extra/update-version.js
+++ b/extra/update-version.js
@@ -26,7 +26,8 @@ if (! exists) {
fs.writeFileSync("package.json", JSON.stringify(pkg, null, 4) + "\n");
// Also update package-lock.json
- childProcess.spawnSync("npm", [ "install" ]);
+ const npm = /^win/.test(process.platform) ? "npm.cmd" : "npm";
+ childProcess.spawnSync(npm, [ "install" ]);
commit(newVersion);
tag(newVersion);
@@ -36,10 +37,8 @@ if (! exists) {
}
/**
- * Updates the version number in package.json and commits it to git.
- * @param {string} version - The new version number
- *
- * Generated by Trelent
+ * Commit updated files
+ * @param {string} version Version to update to
*/
function commit(version) {
let msg = "Update to " + version;
@@ -53,16 +52,19 @@ function commit(version) {
}
}
+/**
+ * Create a tag with the specified version
+ * @param {string} version Tag to create
+ */
function tag(version) {
let res = childProcess.spawnSync("git", [ "tag", version ]);
console.log(res.stdout.toString().trim());
}
/**
- * Checks if a given version is already tagged in the git repository.
- * @param {string} version - The version to check for.
- *
- * Generated by Trelent
+ * Check if a tag exists for the specified version
+ * @param {string} version Version to check
+ * @returns {boolean} Does the tag already exist
*/
function tagExists(version) {
if (! version) {
diff --git a/extra/update-wiki-version.js b/extra/update-wiki-version.js
index 65b7e7b08..f551db41b 100644
--- a/extra/update-wiki-version.js
+++ b/extra/update-wiki-version.js
@@ -10,6 +10,10 @@ if (!newVersion) {
updateWiki(newVersion);
+/**
+ * Update the wiki with new version number
+ * @param {string} newVersion Version to update to
+ */
function updateWiki(newVersion) {
const wikiDir = "./tmp/wiki";
const howToUpdateFilename = "./tmp/wiki/🆙-How-to-Update.md";
@@ -39,6 +43,10 @@ function updateWiki(newVersion) {
safeDelete(wikiDir);
}
+/**
+ * Check if a directory exists and then delete it
+ * @param {string} dir Directory to delete
+ */
function safeDelete(dir) {
if (fs.existsSync(dir)) {
fs.rm(dir, {
diff --git a/index.html b/index.html
index 6a5525fb4..01f68410c 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,7 @@
-
+
diff --git a/package-lock.json b/package-lock.json
index 7e88d1269..cdb20034c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,22 +1,22 @@
{
"name": "uptime-kuma",
- "version": "1.19.3",
- "lockfileVersion": 2,
+ "version": "1.22.1",
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "uptime-kuma",
- "version": "1.19.3",
+ "version": "1.22.1",
"license": "MIT",
"dependencies": {
"@grpc/grpc-js": "~1.7.3",
- "@louislam/sqlite3": "15.1.2",
+ "@louislam/ping": "~0.4.4-mod.0",
+ "@louislam/sqlite3": "15.1.6",
"args-parser": "~1.3.0",
"axios": "~0.27.0",
"axios-ntlm": "1.3.0",
"badge-maker": "~3.3.1",
"bcryptjs": "~2.4.3",
- "bree": "~7.1.5",
"cacheable-lookup": "~6.0.4",
"chardet": "~1.4.0",
"check-password-strength": "^2.0.5",
@@ -25,11 +25,14 @@
"command-exists": "~1.2.9",
"compare-versions": "~3.6.0",
"compression": "~1.7.4",
+ "croner": "~6.0.5",
"dayjs": "~1.11.5",
+ "dotenv": "~16.0.3",
"express": "~4.17.3",
"express-basic-auth": "~1.2.1",
"express-static-gzip": "~2.1.7",
"form-data": "~4.0.0",
+ "gamedig": "~4.0.5",
"http-graceful-shutdown": "~3.1.7",
"http-proxy-agent": "~5.0.0",
"https-proxy-agent": "~5.0.1",
@@ -38,9 +41,11 @@
"jsonwebtoken": "~9.0.0",
"jwt-decode": "~3.1.2",
"limiter": "~2.1.0",
+ "mongodb": "~4.14.0",
"mqtt": "~4.3.7",
"mssql": "~8.1.4",
"mysql2": "~2.3.3",
+ "nanoid": "~3.3.4",
"node-cloudflared-tunnel": "~1.0.9",
"node-radius-client": "~1.0.0",
"nodemailer": "~6.6.5",
@@ -48,13 +53,15 @@
"password-hash": "~1.2.2",
"pg": "~8.8.0",
"pg-connection-string": "~2.5.0",
- "ping": "~0.4.2",
+ "playwright-core": "~1.35.1",
"prom-client": "~13.2.0",
"prometheus-api-metrics": "~3.2.1",
- "protobufjs": "~7.1.1",
- "redbean-node": "0.1.4",
- "socket.io": "~4.5.3",
- "socket.io-client": "~4.5.3",
+ "protobufjs": "~7.2.4",
+ "qs": "~6.10.4",
+ "redbean-node": "~0.3.0",
+ "redis": "~4.5.1",
+ "socket.io": "~4.6.1",
+ "socket.io-client": "~4.6.1",
"socks-proxy-agent": "6.1.1",
"tar": "~6.1.11",
"tcp-ping": "~0.1.1",
@@ -62,7 +69,7 @@
},
"devDependencies": {
"@actions/github": "~5.0.1",
- "@babel/eslint-parser": "~7.17.0",
+ "@babel/eslint-parser": "^7.22.7",
"@babel/preset-env": "^7.15.8",
"@fortawesome/fontawesome-svg-core": "~1.2.36",
"@fortawesome/free-regular-svg-icons": "~5.15.4",
@@ -70,25 +77,29 @@
"@fortawesome/vue-fontawesome": "~3.0.0-5",
"@popperjs/core": "~2.10.2",
"@types/bootstrap": "~5.1.9",
- "@vitejs/plugin-legacy": "~2.1.0",
- "@vitejs/plugin-vue": "~3.1.0",
- "@vue/compiler-sfc": "~3.2.36",
+ "@vitejs/plugin-legacy": "~4.1.0",
+ "@vitejs/plugin-vue": "~4.2.3",
+ "@vue/compiler-sfc": "~3.3.4",
"@vuepic/vue-datepicker": "~3.4.8",
"aedes": "^0.46.3",
"babel-plugin-rewire": "~1.2.0",
"bootstrap": "5.1.3",
- "chart.js": "~3.6.2",
- "chartjs-adapter-dayjs": "~1.0.0",
+ "chart.js": "~4.2.1",
+ "chartjs-adapter-dayjs-4": "~1.0.4",
"concurrently": "^7.1.0",
"core-js": "~3.26.1",
+ "cronstrue": "~2.24.0",
"cross-env": "~7.0.3",
- "cypress": "^10.1.0",
+ "cypress": "^12.17.0",
"delay": "^5.0.0",
"dns2": "~2.0.1",
+ "dompurify": "~2.4.3",
"eslint": "~8.14.0",
"eslint-plugin-vue": "~8.7.1",
"favico.js": "~0.3.10",
- "jest": "~27.2.5",
+ "jest": "~29.6.1",
+ "marked": "~4.2.5",
+ "node-ssh": "~13.1.0",
"postcss-html": "~1.5.0",
"postcss-rtlcss": "~3.7.2",
"postcss-scss": "~4.0.4",
@@ -96,16 +107,16 @@
"qrcode": "~1.5.0",
"rollup-plugin-visualizer": "^5.6.0",
"sass": "~1.42.1",
- "stylelint": "~14.7.1",
+ "stylelint": "^15.10.1",
"stylelint-config-standard": "~25.0.0",
"terser": "~5.15.0",
"timezones-list": "~3.0.1",
"typescript": "~4.4.4",
"v-pagination-3": "~0.1.7",
- "vite": "~3.1.0",
+ "vite": "~4.4.1",
"vite-plugin-compression": "^0.5.1",
- "vue": "next",
- "vue-chart-3": "3.0.9",
+ "vue": "~3.3.4",
+ "vue-chartjs": "~5.2.0",
"vue-confirm-dialog": "~1.0.2",
"vue-contenteditable": "~3.0.4",
"vue-i18n": "~9.2.2",
@@ -116,10 +127,20 @@
"vue-router": "~4.0.14",
"vue-toastification": "~2.0.0-rc.5",
"vuedraggable": "~4.1.0",
- "wait-on": "^6.0.1"
+ "wait-on": "^6.0.1",
+ "whatwg-url": "~12.0.1"
},
"engines": {
- "node": "14.* || >=16.*"
+ "node": "14.* || 16.* || 18.*"
+ }
+ },
+ "node_modules/@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,
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/@actions/github": {
@@ -135,38 +156,651 @@
}
},
"node_modules/@actions/http-client": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
- "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.1.0.tgz",
+ "integrity": "sha512-BonhODnXr3amchh4qkmjPMUO8mFi/zLaaCeCAJZqch8iQqyDnVIkySjB38VHAC8IJ+bnlgfOqlhpyCUZHlQsqw==",
"dev": true,
"dependencies": {
"tunnel": "^0.0.6"
}
},
"node_modules/@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
"dev": true,
"dependencies": {
- "@jridgewell/gen-mapping": "^0.1.0",
+ "@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
},
"engines": {
"node": ">=6.0.0"
}
},
- "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
+ "node_modules/@aws-crypto/crc32": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz",
+ "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==",
+ "optional": true,
"dependencies": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/crc32/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/ie11-detection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz",
+ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/sha256-browser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz",
+ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/ie11-detection": "^3.0.0",
+ "@aws-crypto/sha256-js": "^3.0.0",
+ "@aws-crypto/supports-web-crypto": "^3.0.0",
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/sha256-js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
+ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/supports-web-crypto": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz",
+ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/util": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
+ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/util/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-sdk/client-cognito-identity": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.363.0.tgz",
+ "integrity": "sha512-tsJzgBSCpna85IVsuS7FBIK9wkSl7fs8TJ/QzapIgu8rKss0ySHVO6TeMVAdw2BvaQl7CxU9c3PosjhLWHu6KQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.363.0",
+ "@aws-sdk/credential-provider-node": "3.363.0",
+ "@aws-sdk/middleware-host-header": "3.363.0",
+ "@aws-sdk/middleware-logger": "3.363.0",
+ "@aws-sdk/middleware-recursion-detection": "3.363.0",
+ "@aws-sdk/middleware-signing": "3.363.0",
+ "@aws-sdk/middleware-user-agent": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@aws-sdk/util-endpoints": "3.357.0",
+ "@aws-sdk/util-user-agent-browser": "3.363.0",
+ "@aws-sdk/util-user-agent-node": "3.363.0",
+ "@smithy/config-resolver": "^1.0.1",
+ "@smithy/fetch-http-handler": "^1.0.1",
+ "@smithy/hash-node": "^1.0.1",
+ "@smithy/invalid-dependency": "^1.0.1",
+ "@smithy/middleware-content-length": "^1.0.1",
+ "@smithy/middleware-endpoint": "^1.0.1",
+ "@smithy/middleware-retry": "^1.0.2",
+ "@smithy/middleware-serde": "^1.0.1",
+ "@smithy/middleware-stack": "^1.0.1",
+ "@smithy/node-config-provider": "^1.0.1",
+ "@smithy/node-http-handler": "^1.0.2",
+ "@smithy/protocol-http": "^1.0.1",
+ "@smithy/smithy-client": "^1.0.3",
+ "@smithy/types": "^1.0.0",
+ "@smithy/url-parser": "^1.0.1",
+ "@smithy/util-base64": "^1.0.1",
+ "@smithy/util-body-length-browser": "^1.0.1",
+ "@smithy/util-body-length-node": "^1.0.1",
+ "@smithy/util-defaults-mode-browser": "^1.0.1",
+ "@smithy/util-defaults-mode-node": "^1.0.1",
+ "@smithy/util-retry": "^1.0.2",
+ "@smithy/util-utf8": "^1.0.1",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.363.0.tgz",
+ "integrity": "sha512-PZ+HfKSgS4hlMnJzG+Ev8/mgHd/b/ETlJWPSWjC/f2NwVoBQkBnqHjdyEx7QjF6nksJozcVh5Q+kkYLKc/QwBQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.363.0",
+ "@aws-sdk/middleware-logger": "3.363.0",
+ "@aws-sdk/middleware-recursion-detection": "3.363.0",
+ "@aws-sdk/middleware-user-agent": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@aws-sdk/util-endpoints": "3.357.0",
+ "@aws-sdk/util-user-agent-browser": "3.363.0",
+ "@aws-sdk/util-user-agent-node": "3.363.0",
+ "@smithy/config-resolver": "^1.0.1",
+ "@smithy/fetch-http-handler": "^1.0.1",
+ "@smithy/hash-node": "^1.0.1",
+ "@smithy/invalid-dependency": "^1.0.1",
+ "@smithy/middleware-content-length": "^1.0.1",
+ "@smithy/middleware-endpoint": "^1.0.1",
+ "@smithy/middleware-retry": "^1.0.2",
+ "@smithy/middleware-serde": "^1.0.1",
+ "@smithy/middleware-stack": "^1.0.1",
+ "@smithy/node-config-provider": "^1.0.1",
+ "@smithy/node-http-handler": "^1.0.2",
+ "@smithy/protocol-http": "^1.0.1",
+ "@smithy/smithy-client": "^1.0.3",
+ "@smithy/types": "^1.0.0",
+ "@smithy/url-parser": "^1.0.1",
+ "@smithy/util-base64": "^1.0.1",
+ "@smithy/util-body-length-browser": "^1.0.1",
+ "@smithy/util-body-length-node": "^1.0.1",
+ "@smithy/util-defaults-mode-browser": "^1.0.1",
+ "@smithy/util-defaults-mode-node": "^1.0.1",
+ "@smithy/util-retry": "^1.0.2",
+ "@smithy/util-utf8": "^1.0.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.363.0.tgz",
+ "integrity": "sha512-V3Ebiq/zNtDS/O92HUWGBa7MY59RYSsqWd+E0XrXv6VYTA00RlMTbNcseivNgp2UghOgB9a20Nkz6EqAeIN+RQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.363.0",
+ "@aws-sdk/middleware-logger": "3.363.0",
+ "@aws-sdk/middleware-recursion-detection": "3.363.0",
+ "@aws-sdk/middleware-user-agent": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@aws-sdk/util-endpoints": "3.357.0",
+ "@aws-sdk/util-user-agent-browser": "3.363.0",
+ "@aws-sdk/util-user-agent-node": "3.363.0",
+ "@smithy/config-resolver": "^1.0.1",
+ "@smithy/fetch-http-handler": "^1.0.1",
+ "@smithy/hash-node": "^1.0.1",
+ "@smithy/invalid-dependency": "^1.0.1",
+ "@smithy/middleware-content-length": "^1.0.1",
+ "@smithy/middleware-endpoint": "^1.0.1",
+ "@smithy/middleware-retry": "^1.0.2",
+ "@smithy/middleware-serde": "^1.0.1",
+ "@smithy/middleware-stack": "^1.0.1",
+ "@smithy/node-config-provider": "^1.0.1",
+ "@smithy/node-http-handler": "^1.0.2",
+ "@smithy/protocol-http": "^1.0.1",
+ "@smithy/smithy-client": "^1.0.3",
+ "@smithy/types": "^1.0.0",
+ "@smithy/url-parser": "^1.0.1",
+ "@smithy/util-base64": "^1.0.1",
+ "@smithy/util-body-length-browser": "^1.0.1",
+ "@smithy/util-body-length-node": "^1.0.1",
+ "@smithy/util-defaults-mode-browser": "^1.0.1",
+ "@smithy/util-defaults-mode-node": "^1.0.1",
+ "@smithy/util-retry": "^1.0.2",
+ "@smithy/util-utf8": "^1.0.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sts": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.363.0.tgz",
+ "integrity": "sha512-0jj14WvBPJQ8xr72cL0mhlmQ90tF0O0wqXwSbtog6PsC8+KDE6Yf+WsxsumyI8E5O8u3eYijBL+KdqG07F/y/w==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/credential-provider-node": "3.363.0",
+ "@aws-sdk/middleware-host-header": "3.363.0",
+ "@aws-sdk/middleware-logger": "3.363.0",
+ "@aws-sdk/middleware-recursion-detection": "3.363.0",
+ "@aws-sdk/middleware-sdk-sts": "3.363.0",
+ "@aws-sdk/middleware-signing": "3.363.0",
+ "@aws-sdk/middleware-user-agent": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@aws-sdk/util-endpoints": "3.357.0",
+ "@aws-sdk/util-user-agent-browser": "3.363.0",
+ "@aws-sdk/util-user-agent-node": "3.363.0",
+ "@smithy/config-resolver": "^1.0.1",
+ "@smithy/fetch-http-handler": "^1.0.1",
+ "@smithy/hash-node": "^1.0.1",
+ "@smithy/invalid-dependency": "^1.0.1",
+ "@smithy/middleware-content-length": "^1.0.1",
+ "@smithy/middleware-endpoint": "^1.0.1",
+ "@smithy/middleware-retry": "^1.0.1",
+ "@smithy/middleware-serde": "^1.0.1",
+ "@smithy/middleware-stack": "^1.0.1",
+ "@smithy/node-config-provider": "^1.0.1",
+ "@smithy/node-http-handler": "^1.0.1",
+ "@smithy/protocol-http": "^1.1.0",
+ "@smithy/smithy-client": "^1.0.2",
+ "@smithy/types": "^1.1.0",
+ "@smithy/url-parser": "^1.0.1",
+ "@smithy/util-base64": "^1.0.1",
+ "@smithy/util-body-length-browser": "^1.0.1",
+ "@smithy/util-body-length-node": "^1.0.1",
+ "@smithy/util-defaults-mode-browser": "^1.0.1",
+ "@smithy/util-defaults-mode-node": "^1.0.1",
+ "@smithy/util-retry": "^1.0.1",
+ "@smithy/util-utf8": "^1.0.1",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-cognito-identity": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.363.0.tgz",
+ "integrity": "sha512-5x42JvqEsBUrm6/qdf0WWe4mlmJjPItxamQhRjuOzeQD/BxsA2W5VS/7n0Ws0e27DNhlnUErcIJd+bBy6j1fqA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-cognito-identity": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.363.0.tgz",
+ "integrity": "sha512-VAQ3zITT2Q0acht0HezouYnMFKZ2vIOa20X4zQA3WI0HfaP4D6ga6KaenbDcb/4VFiqfqiRHfdyXHP0ThcDRMA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.363.0.tgz",
+ "integrity": "sha512-ZYN+INoqyX5FVC3rqUxB6O8nOWkr0gHRRBm1suoOlmuFJ/WSlW/uUGthRBY5x1AQQnBF8cpdlxZzGHd41lFVNw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.363.0",
+ "@aws-sdk/credential-provider-process": "3.363.0",
+ "@aws-sdk/credential-provider-sso": "3.363.0",
+ "@aws-sdk/credential-provider-web-identity": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/credential-provider-imds": "^1.0.1",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/shared-ini-file-loader": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.363.0.tgz",
+ "integrity": "sha512-C1qXFIN2yMxD6pGgug0vR1UhScOki6VqdzuBHzXZAGu7MOjvgHNdscEcb3CpWnITHaPL2ztkiw75T1sZ7oIgQg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.363.0",
+ "@aws-sdk/credential-provider-ini": "3.363.0",
+ "@aws-sdk/credential-provider-process": "3.363.0",
+ "@aws-sdk/credential-provider-sso": "3.363.0",
+ "@aws-sdk/credential-provider-web-identity": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/credential-provider-imds": "^1.0.1",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/shared-ini-file-loader": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.363.0.tgz",
+ "integrity": "sha512-fOKAINU7Rtj2T8pP13GdCt+u0Ml3gYynp8ki+1jMZIQ+Ju/MdDOqZpKMFKicMn3Z1ttUOgqr+grUdus6z8ceBQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/shared-ini-file-loader": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.363.0.tgz",
+ "integrity": "sha512-5RUZ5oM0lwZSo3EehT0dXggOjgtxFogpT3cZvoLGtIwrPBvm8jOQPXQUlaqCj10ThF1sYltEyukz/ovtDwYGew==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.363.0",
+ "@aws-sdk/token-providers": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/shared-ini-file-loader": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.363.0.tgz",
+ "integrity": "sha512-Z6w7fjgy79pAax580wdixbStQw10xfyZ+hOYLcPudoYFKjoNx0NQBejg5SwBzCF/HQL23Ksm9kDfbXDX9fkPhA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-providers": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.363.0.tgz",
+ "integrity": "sha512-hVa1DdYasnLud2EKjDAlDHiV/+H/Zq52chHU00c/R8XwPu1s0kZX3NMmlt0D2HhYqC1mUwtdmE58Jra2POviQQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-cognito-identity": "3.363.0",
+ "@aws-sdk/client-sso": "3.363.0",
+ "@aws-sdk/client-sts": "3.363.0",
+ "@aws-sdk/credential-provider-cognito-identity": "3.363.0",
+ "@aws-sdk/credential-provider-env": "3.363.0",
+ "@aws-sdk/credential-provider-ini": "3.363.0",
+ "@aws-sdk/credential-provider-node": "3.363.0",
+ "@aws-sdk/credential-provider-process": "3.363.0",
+ "@aws-sdk/credential-provider-sso": "3.363.0",
+ "@aws-sdk/credential-provider-web-identity": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/credential-provider-imds": "^1.0.1",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.363.0.tgz",
+ "integrity": "sha512-FobpclDCf5Y1ueyJDmb9MqguAdPssNMlnqWQpujhYVABq69KHu73fSCWSauFPUrw7YOpV8kG1uagDF0POSxHzA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/protocol-http": "^1.1.0",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.363.0.tgz",
+ "integrity": "sha512-SSGgthScYnFGTOw8EzbkvquqweFmvn7uJihkpFekbtBNGC/jGOGO+8ziHjTQ8t/iI/YKubEwv+LMi0f77HKSEg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.363.0.tgz",
+ "integrity": "sha512-MWD/57QgI/N7fG8rtzDTUdSqNpYohQfgj9XCFAoVeI/bU4usrkOrew43L4smJG4XrDxlNT8lSJlDtd64tuiUZA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/protocol-http": "^1.1.0",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.363.0.tgz",
+ "integrity": "sha512-1yy2Ac50FO8BrODaw5bPWvVrRhaVLqXTFH6iHB+dJLPUkwtY5zLM3Mp+9Ilm7kME+r7oIB1wuO6ZB1Lf4ZszIw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/middleware-signing": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.363.0.tgz",
+ "integrity": "sha512-/7qia715pt9JKYIPDGu22WmdZxD8cfF/5xB+1kmILg7ZtjO0pPuTaCNJ7xiIuFd7Dn7JXp5lop08anX/GOhNRQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/protocol-http": "^1.1.0",
+ "@smithy/signature-v4": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "@smithy/util-middleware": "^1.0.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.363.0.tgz",
+ "integrity": "sha512-ri8YaQvXP6odteVTMfxPqFR26Q0h9ejtqhUDv47P34FaKXedEM4nC6ix6o+5FEYj6l8syGyktftZ5O70NoEhug==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@aws-sdk/util-endpoints": "3.357.0",
+ "@smithy/protocol-http": "^1.1.0",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/token-providers": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.363.0.tgz",
+ "integrity": "sha512-6+0aJ1zugNgsMmhTtW2LBWxOVSaXCUk2q3xyTchSXkNzallYaRiZMRkieW+pKNntnu0g5H1T0zyfCO0tbXwxEA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-sso-oidc": "3.363.0",
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/property-provider": "^1.0.1",
+ "@smithy/shared-ini-file-loader": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/types": {
+ "version": "3.357.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.357.0.tgz",
+ "integrity": "sha512-/riCRaXg3p71BeWnShrai0y0QTdXcouPSM0Cn1olZbzTf7s71aLEewrc96qFrL70XhY4XvnxMpqQh+r43XIL3g==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.357.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.357.0.tgz",
+ "integrity": "sha512-XHKyS5JClT9su9hDif715jpZiWHQF9gKZXER8tW0gOizU3R9cyWc9EsJ2BRhFNhi7nt/JF/CLUEc5qDx3ETbUw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-locate-window": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz",
+ "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.363.0.tgz",
+ "integrity": "sha512-fk9ymBUIYbxiGm99Cn+kAAXmvMCWTf/cHAcB79oCXV4ELXdPa9lN5xQhZRFNxLUeXG4OAMEuCAUUuZEj8Fnc1Q==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/types": "^1.1.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.363.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.363.0.tgz",
+ "integrity": "sha512-Fli/dvgGA9hdnQUrYb1//wNSFlK2jAfdJcfNXA6SeBYzSeH5pVGYF4kXF0FCdnMA3Fef+Zn1zAP/hw9v8VJHWQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.357.0",
+ "@smithy/node-config-provider": "^1.0.1",
+ "@smithy/types": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/util-utf8-browser": {
+ "version": "3.259.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
+ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
}
},
"node_modules/@azure/abort-controller": {
@@ -193,9 +827,9 @@
}
},
"node_modules/@azure/core-client": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.6.1.tgz",
- "integrity": "sha512-mZ1MSKhZBYoV8GAWceA+PEJFWV2VpdNSpxxcj1wjIAOi00ykRuIQChT99xlQGZWLY3/NApWhSImlFwsmCEs4vA==",
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.7.3.tgz",
+ "integrity": "sha512-kleJ1iUTxcO32Y06dH9Pfi9K4U+Tlb111WXEnbt7R/ne+NLRwppZiTGJuTD5VVoxTMK5NTbEtm5t2vcdNCFe2g==",
"dependencies": {
"@azure/abort-controller": "^1.0.0",
"@azure/core-auth": "^1.4.0",
@@ -206,7 +840,7 @@
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/@azure/core-http-compat": {
@@ -223,22 +857,23 @@
}
},
"node_modules/@azure/core-lro": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.4.0.tgz",
- "integrity": "sha512-F65+rYkll1dpw3RGm8/SSiSj+/QkMeYDanzS/QKlM1dmuneVyXbO46C88V1MRHluLGdMP6qfD3vDRYALn0z0tQ==",
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.5.3.tgz",
+ "integrity": "sha512-ubkOf2YCnVtq7KqEJQqAI8dDD5rH1M6OP5kW0KO/JQyTaxLA0N0pjFWvvaysCj9eHMNBcuuoZXhhl0ypjod2DA==",
"dependencies": {
"@azure/abort-controller": "^1.0.0",
+ "@azure/core-util": "^1.2.0",
"@azure/logger": "^1.0.0",
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/@azure/core-paging": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.4.0.tgz",
- "integrity": "sha512-tabFtZTg8D9XqZKEfNUOGh63SuYeOxmvH4GDcOJN+R1bZWZ1FZskctgY9Pmuwzhn+0Xvq9rmimK9hsvtLkeBsw==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.5.0.tgz",
+ "integrity": "sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==",
"dependencies": {
"tslib": "^2.2.0"
},
@@ -247,20 +882,19 @@
}
},
"node_modules/@azure/core-rest-pipeline": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.0.tgz",
- "integrity": "sha512-m6c4iAalfaf6sytOOQhLKFprEHSkSjQuRgkW7MTMnAN+GENDDL4XZJp7WKFnq9VpKUE+ggq+rp5xX9GI93lumw==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.11.0.tgz",
+ "integrity": "sha512-nB4KXl6qAyJmBVLWA7SakT4tzpYZTCk4pvRBeI+Ye0WYSOrlTqlMhc4MSS/8atD3ufeYWdkN380LLoXlUUzThw==",
"dependencies": {
"@azure/abort-controller": "^1.0.0",
"@azure/core-auth": "^1.4.0",
"@azure/core-tracing": "^1.0.1",
- "@azure/core-util": "^1.0.0",
+ "@azure/core-util": "^1.3.0",
"@azure/logger": "^1.0.0",
"form-data": "^4.0.0",
"http-proxy-agent": "^5.0.0",
"https-proxy-agent": "^5.0.0",
- "tslib": "^2.2.0",
- "uuid": "^8.3.0"
+ "tslib": "^2.2.0"
},
"engines": {
"node": ">=14.0.0"
@@ -278,15 +912,15 @@
}
},
"node_modules/@azure/core-util": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.1.1.tgz",
- "integrity": "sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.3.2.tgz",
+ "integrity": "sha512-2bECOUh88RvL1pMZTcc6OzfobBeWDBf5oBbhjIhT1MV9otMVWCzpOJkkiKtrnO88y5GGBelgY8At73KGAdbkeQ==",
"dependencies": {
"@azure/abort-controller": "^1.0.0",
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/@azure/identity": {
@@ -335,9 +969,9 @@
}
},
"node_modules/@azure/keyvault-keys": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.6.0.tgz",
- "integrity": "sha512-0112LegxeR03L8J4k+q6HwBVvrpd9y+oInG0FG3NaHXN7YUubVBon/eb5jFI6edGrvNigpxSR0XIsprFXdkzCQ==",
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.7.1.tgz",
+ "integrity": "sha512-zfmlZQCw1Yz+aPhgZmWOYBUzaKmfBzR2yceAE4S6hKDl7YZraTguuXmtFbCqjRvpz+pIMKAK25fENay9mFy1hQ==",
"dependencies": {
"@azure/abort-controller": "^1.0.0",
"@azure/core-auth": "^1.3.0",
@@ -352,35 +986,35 @@
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/@azure/logger": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.3.tgz",
- "integrity": "sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz",
+ "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==",
"dependencies": {
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/@azure/msal-browser": {
- "version": "2.32.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.1.tgz",
- "integrity": "sha512-2G3B12ZEIpiimi6/Yqq7KLk4ud1zZWoHvVd2kJ2VthN1HjMsZjdMUxeHkwMWaQ6RzO6mv9rZiuKmRX64xkXW9g==",
+ "version": "2.38.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.38.0.tgz",
+ "integrity": "sha512-gxBh83IumHgEP9uMCm9pJLKLRwICMQTxG9TX3AytdNt3oLUI3tytm/szYD5u5zKJgSkhHvwFSM+NPnM04hYw3w==",
"dependencies": {
- "@azure/msal-common": "^9.0.1"
+ "@azure/msal-common": "13.2.0"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/@azure/msal-browser/node_modules/@azure/msal-common": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.1.tgz",
- "integrity": "sha512-eNNHIW/cwPTZDWs9KtYgb1X6gtQ+cC+FGX2YN+t4AUVsBdUbqlMTnUs6/c/VBxC2AAGIhgLREuNnO3F66AN2zQ==",
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.2.0.tgz",
+ "integrity": "sha512-rnstQ7Zgn3fSTKNQO+/YNV34/QXJs0vni7IA0/3QB1EEyrJg14xyRmTqlw9ta+pdSuT5OJwUP8kI3D/rBwUIBw==",
"engines": {
"node": ">=0.8.0"
}
@@ -394,12 +1028,12 @@
}
},
"node_modules/@azure/msal-node": {
- "version": "1.14.5",
- "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.5.tgz",
- "integrity": "sha512-NcVdMfn8Z3ogN+9RjOSF7uwf2Gki5DEJl0BdDSL83KUAgVAobtkZi5W8EqxbJLrTO/ET0jv5DregrcR5qg2pEA==",
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.18.0.tgz",
+ "integrity": "sha512-N6GX1Twxw524e7gaJvj7hKtrPRmZl9qGY7U4pmUdx4XzoWYRFfYk4H1ZjVhQ7pwb5Ks88NNhbXVCagsuYPTEFg==",
"dependencies": {
- "@azure/msal-common": "^9.0.1",
- "jsonwebtoken": "^8.5.1",
+ "@azure/msal-common": "13.2.0",
+ "jsonwebtoken": "^9.0.0",
"uuid": "^8.3.0"
},
"engines": {
@@ -407,84 +1041,55 @@
}
},
"node_modules/@azure/msal-node/node_modules/@azure/msal-common": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.1.tgz",
- "integrity": "sha512-eNNHIW/cwPTZDWs9KtYgb1X6gtQ+cC+FGX2YN+t4AUVsBdUbqlMTnUs6/c/VBxC2AAGIhgLREuNnO3F66AN2zQ==",
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.2.0.tgz",
+ "integrity": "sha512-rnstQ7Zgn3fSTKNQO+/YNV34/QXJs0vni7IA0/3QB1EEyrJg14xyRmTqlw9ta+pdSuT5OJwUP8kI3D/rBwUIBw==",
"engines": {
"node": ">=0.8.0"
}
},
- "node_modules/@azure/msal-node/node_modules/jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "dependencies": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=4",
- "npm": ">=1.4.28"
- }
- },
- "node_modules/@azure/msal-node/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
+ "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.18.6"
+ "@babel/highlight": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.20.10",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz",
- "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz",
+ "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz",
- "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==",
+ "version": "7.22.8",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.8.tgz",
+ "integrity": "sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==",
"dev": true,
"dependencies": {
- "@ampproject/remapping": "^2.1.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.20.7",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-module-transforms": "^7.20.7",
- "@babel/helpers": "^7.20.7",
- "@babel/parser": "^7.20.7",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.7",
- "@babel/types": "^7.20.7",
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.22.5",
+ "@babel/generator": "^7.22.7",
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helpers": "^7.22.6",
+ "@babel/parser": "^7.22.7",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.8",
+ "@babel/types": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
- "json5": "^2.2.1",
- "semver": "^6.3.0"
+ "json5": "^2.2.2"
},
"engines": {
"node": ">=6.9.0"
@@ -495,14 +1100,14 @@
}
},
"node_modules/@babel/eslint-parser": {
- "version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz",
- "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==",
+ "version": "7.22.7",
+ "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.7.tgz",
+ "integrity": "sha512-LH6HJqjOyu/Qtp7LuSycZXK/CYXQ4ohdkliEaL1QTdtOXVdOVpTBKVxAo/+eeyt+x/2SRzB+zUPduVl+xiEvdg==",
"dev": true,
"dependencies": {
- "eslint-scope": "^5.1.1",
- "eslint-visitor-keys": "^2.1.0",
- "semver": "^6.3.0"
+ "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "eslint-visitor-keys": "^2.1.0"
},
"engines": {
"node": "^10.13.0 || ^12.13.0 || >=14.0.0"
@@ -513,13 +1118,14 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz",
- "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==",
+ "version": "7.22.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.7.tgz",
+ "integrity": "sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.20.7",
+ "@babel/types": "^7.22.5",
"@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
},
"engines": {
@@ -539,41 +1145,40 @@
}
},
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
- "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
- "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz",
+ "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==",
"dev": true,
"dependencies": {
- "@babel/helper-explode-assignable-expression": "^7.18.6",
- "@babel/types": "^7.18.9"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
- "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz",
+ "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.0"
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-validator-option": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1"
},
"engines": {
"node": ">=6.9.0"
@@ -583,18 +1188,20 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz",
- "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.6.tgz",
+ "integrity": "sha512-iwdzgtSiBxF6ni6mzVnZCF3xt5qE6cEA0J7nFt8QOAWZ0zjCFceEgpn3vtb2V7WFR6QzP2jmIFOHMTRo7eNJjQ==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-member-expression-to-functions": "^7.20.7",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-replace-supers": "^7.20.7",
- "@babel/helper-split-export-declaration": "^7.18.6"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-member-expression-to-functions": "^7.22.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3"
},
"engines": {
"node": ">=6.9.0"
@@ -604,13 +1211,14 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz",
- "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.6.tgz",
+ "integrity": "sha512-nBookhLKxAWo/TUCmhnaEJyLz2dekjQvv5SRpE9epWQBcpedWLKt8aZdsuT9XV5ovzR3fENLjRXVT0GsSlGGhA==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "regexpu-core": "^5.2.1"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "regexpu-core": "^5.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -620,142 +1228,129 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
- "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz",
+ "integrity": "sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==",
"dev": true,
"dependencies": {
- "@babel/helper-compilation-targets": "^7.17.7",
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
"debug": "^4.1.1",
"lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
+ "resolve": "^1.14.2"
},
"peerDependencies": {
"@babel/core": "^7.4.0-0"
}
},
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
+ "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-explode-assignable-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
- "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-function-name": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
- "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
+ "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.18.10",
- "@babel/types": "^7.19.0"
+ "@babel/template": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz",
- "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz",
+ "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.20.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
+ "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
- "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
+ "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.19.1",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.10",
- "@babel/types": "^7.20.7"
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
- "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
- "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz",
+ "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-wrap-function": "^7.18.9",
- "@babel/types": "^7.18.9"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-wrap-function": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -765,121 +1360,121 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
- "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz",
+ "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-member-expression-to-functions": "^7.20.7",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.7",
- "@babel/types": "^7.20.7"
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-member-expression-to-functions": "^7.22.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.20.2"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
- "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.20.0"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
+ "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
+ "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
- "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz",
+ "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==",
"dev": true,
"dependencies": {
- "@babel/helper-function-name": "^7.19.0",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.5",
- "@babel/types": "^7.20.5"
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz",
- "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz",
+ "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.7",
- "@babel/types": "^7.20.7"
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
+ "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.22.5",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
},
@@ -888,9 +1483,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
- "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==",
+ "version": "7.22.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz",
+ "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -900,12 +1495,12 @@
}
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
- "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz",
+ "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -915,14 +1510,14 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz",
- "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz",
+ "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/plugin-proposal-optional-chaining": "^7.20.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -931,232 +1526,11 @@
"@babel/core": "^7.13.0"
}
},
- "node_modules/@babel/plugin-proposal-async-generator-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
- "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-class-properties": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
- "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-class-static-block": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz",
- "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.20.7",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.12.0"
- }
- },
- "node_modules/@babel/plugin-proposal-dynamic-import": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
- "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-export-namespace-from": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
- "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-json-strings": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
- "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
- "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
- "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-numeric-separator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
- "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-object-rest-spread": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
- "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.20.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
- "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-optional-chaining": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz",
- "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-private-methods": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
- "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
"node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz",
- "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==",
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
"dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-create-class-features-plugin": "^7.20.5",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- },
"engines": {
"node": ">=6.9.0"
},
@@ -1256,12 +1630,27 @@
}
},
"node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
- "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
+ "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.19.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz",
+ "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1294,6 +1683,21 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
+ "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-syntax-logical-assignment-operators": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
@@ -1397,12 +1801,12 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
- "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
+ "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.19.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1411,13 +1815,47 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz",
- "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==",
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
+ "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.22.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz",
+ "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.5",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
},
"engines": {
"node": ">=6.9.0"
@@ -1427,14 +1865,14 @@
}
},
"node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
- "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
+ "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9"
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1444,12 +1882,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
- "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz",
+ "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1459,12 +1897,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz",
- "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz",
+ "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1473,20 +1911,53 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-classes": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz",
- "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==",
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
+ "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-replace-supers": "^7.20.7",
- "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz",
+ "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz",
+ "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
"globals": "^11.1.0"
},
"engines": {
@@ -1497,13 +1968,13 @@
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz",
- "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
+ "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/template": "^7.20.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/template": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1513,12 +1984,12 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz",
- "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz",
+ "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1528,13 +1999,13 @@
}
},
"node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
- "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz",
+ "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1544,12 +2015,28 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
- "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz",
+ "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz",
+ "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
@@ -1559,13 +2046,29 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
- "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz",
+ "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==",
"dev": true,
"dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz",
+ "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
@@ -1575,12 +2078,12 @@
}
},
"node_modules/@babel/plugin-transform-for-of": {
- "version": "7.18.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz",
- "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz",
+ "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1590,14 +2093,30 @@
}
},
"node_modules/@babel/plugin-transform-function-name": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
- "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
+ "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
"dev": true,
"dependencies": {
- "@babel/helper-compilation-targets": "^7.18.9",
- "@babel/helper-function-name": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.18.9"
+ "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz",
+ "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
@@ -1607,12 +2126,28 @@
}
},
"node_modules/@babel/plugin-transform-literals": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
- "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
+ "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz",
+ "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
},
"engines": {
"node": ">=6.9.0"
@@ -1622,12 +2157,12 @@
}
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
- "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz",
+ "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1637,13 +2172,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
- "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz",
+ "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2"
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1653,14 +2188,14 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz",
- "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz",
+ "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-simple-access": "^7.20.2"
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1670,15 +2205,15 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz",
- "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz",
+ "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==",
"dev": true,
"dependencies": {
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-validator-identifier": "^7.19.1"
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1688,13 +2223,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
- "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz",
+ "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1704,13 +2239,13 @@
}
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz",
- "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+ "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.20.5",
- "@babel/helper-plugin-utils": "^7.20.2"
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1720,12 +2255,63 @@
}
},
"node_modules/@babel/plugin-transform-new-target": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
- "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz",
+ "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz",
+ "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz",
+ "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz",
+ "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1735,13 +2321,46 @@
}
},
"node_modules/@babel/plugin-transform-object-super": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
- "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz",
+ "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/helper-replace-supers": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz",
+ "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz",
+ "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
@@ -1751,12 +2370,46 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz",
- "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
+ "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
+ "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz",
+ "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1766,12 +2419,12 @@
}
},
"node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
- "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz",
+ "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1781,12 +2434,12 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
- "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz",
+ "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-plugin-utils": "^7.22.5",
"regenerator-transform": "^0.15.1"
},
"engines": {
@@ -1797,12 +2450,12 @@
}
},
"node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
- "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz",
+ "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1812,12 +2465,12 @@
}
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
- "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
+ "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1827,13 +2480,13 @@
}
},
"node_modules/@babel/plugin-transform-spread": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
- "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
+ "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1843,12 +2496,12 @@
}
},
"node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
- "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
+ "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1858,12 +2511,12 @@
}
},
"node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
- "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz",
+ "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1873,12 +2526,12 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
- "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz",
+ "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1888,12 +2541,28 @@
}
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
- "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz",
+ "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz",
+ "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1903,13 +2572,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
- "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
+ "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1918,39 +2587,43 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/preset-env": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz",
- "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==",
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz",
+ "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.20.1",
- "@babel/helper-compilation-targets": "^7.20.0",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-validator-option": "^7.18.6",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
- "@babel/plugin-proposal-async-generator-functions": "^7.20.1",
- "@babel/plugin-proposal-class-properties": "^7.18.6",
- "@babel/plugin-proposal-class-static-block": "^7.18.6",
- "@babel/plugin-proposal-dynamic-import": "^7.18.6",
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
- "@babel/plugin-proposal-json-strings": "^7.18.6",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
- "@babel/plugin-proposal-numeric-separator": "^7.18.6",
- "@babel/plugin-proposal-object-rest-spread": "^7.20.2",
- "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
- "@babel/plugin-proposal-optional-chaining": "^7.18.9",
- "@babel/plugin-proposal-private-methods": "^7.18.6",
- "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
- "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.22.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.7.tgz",
+ "integrity": "sha512-1whfDtW+CzhETuzYXfcgZAh8/GFMeEbz0V5dVgya8YeJyCU6Y/P2Gnx4Qb3MylK68Zu9UiwUvbPMPTpFAOJ+sQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.5",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-class-properties": "^7.12.13",
"@babel/plugin-syntax-class-static-block": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.20.0",
+ "@babel/plugin-syntax-import-assertions": "^7.22.5",
+ "@babel/plugin-syntax-import-attributes": "^7.22.5",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
"@babel/plugin-syntax-json-strings": "^7.8.3",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
@@ -1960,45 +2633,62 @@
"@babel/plugin-syntax-optional-chaining": "^7.8.3",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5",
"@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-transform-arrow-functions": "^7.18.6",
- "@babel/plugin-transform-async-to-generator": "^7.18.6",
- "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
- "@babel/plugin-transform-block-scoping": "^7.20.2",
- "@babel/plugin-transform-classes": "^7.20.2",
- "@babel/plugin-transform-computed-properties": "^7.18.9",
- "@babel/plugin-transform-destructuring": "^7.20.2",
- "@babel/plugin-transform-dotall-regex": "^7.18.6",
- "@babel/plugin-transform-duplicate-keys": "^7.18.9",
- "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
- "@babel/plugin-transform-for-of": "^7.18.8",
- "@babel/plugin-transform-function-name": "^7.18.9",
- "@babel/plugin-transform-literals": "^7.18.9",
- "@babel/plugin-transform-member-expression-literals": "^7.18.6",
- "@babel/plugin-transform-modules-amd": "^7.19.6",
- "@babel/plugin-transform-modules-commonjs": "^7.19.6",
- "@babel/plugin-transform-modules-systemjs": "^7.19.6",
- "@babel/plugin-transform-modules-umd": "^7.18.6",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
- "@babel/plugin-transform-new-target": "^7.18.6",
- "@babel/plugin-transform-object-super": "^7.18.6",
- "@babel/plugin-transform-parameters": "^7.20.1",
- "@babel/plugin-transform-property-literals": "^7.18.6",
- "@babel/plugin-transform-regenerator": "^7.18.6",
- "@babel/plugin-transform-reserved-words": "^7.18.6",
- "@babel/plugin-transform-shorthand-properties": "^7.18.6",
- "@babel/plugin-transform-spread": "^7.19.0",
- "@babel/plugin-transform-sticky-regex": "^7.18.6",
- "@babel/plugin-transform-template-literals": "^7.18.9",
- "@babel/plugin-transform-typeof-symbol": "^7.18.9",
- "@babel/plugin-transform-unicode-escapes": "^7.18.10",
- "@babel/plugin-transform-unicode-regex": "^7.18.6",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.22.5",
+ "@babel/plugin-transform-async-generator-functions": "^7.22.7",
+ "@babel/plugin-transform-async-to-generator": "^7.22.5",
+ "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
+ "@babel/plugin-transform-block-scoping": "^7.22.5",
+ "@babel/plugin-transform-class-properties": "^7.22.5",
+ "@babel/plugin-transform-class-static-block": "^7.22.5",
+ "@babel/plugin-transform-classes": "^7.22.6",
+ "@babel/plugin-transform-computed-properties": "^7.22.5",
+ "@babel/plugin-transform-destructuring": "^7.22.5",
+ "@babel/plugin-transform-dotall-regex": "^7.22.5",
+ "@babel/plugin-transform-duplicate-keys": "^7.22.5",
+ "@babel/plugin-transform-dynamic-import": "^7.22.5",
+ "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
+ "@babel/plugin-transform-export-namespace-from": "^7.22.5",
+ "@babel/plugin-transform-for-of": "^7.22.5",
+ "@babel/plugin-transform-function-name": "^7.22.5",
+ "@babel/plugin-transform-json-strings": "^7.22.5",
+ "@babel/plugin-transform-literals": "^7.22.5",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.22.5",
+ "@babel/plugin-transform-member-expression-literals": "^7.22.5",
+ "@babel/plugin-transform-modules-amd": "^7.22.5",
+ "@babel/plugin-transform-modules-commonjs": "^7.22.5",
+ "@babel/plugin-transform-modules-systemjs": "^7.22.5",
+ "@babel/plugin-transform-modules-umd": "^7.22.5",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.22.5",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5",
+ "@babel/plugin-transform-numeric-separator": "^7.22.5",
+ "@babel/plugin-transform-object-rest-spread": "^7.22.5",
+ "@babel/plugin-transform-object-super": "^7.22.5",
+ "@babel/plugin-transform-optional-catch-binding": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.22.6",
+ "@babel/plugin-transform-parameters": "^7.22.5",
+ "@babel/plugin-transform-private-methods": "^7.22.5",
+ "@babel/plugin-transform-private-property-in-object": "^7.22.5",
+ "@babel/plugin-transform-property-literals": "^7.22.5",
+ "@babel/plugin-transform-regenerator": "^7.22.5",
+ "@babel/plugin-transform-reserved-words": "^7.22.5",
+ "@babel/plugin-transform-shorthand-properties": "^7.22.5",
+ "@babel/plugin-transform-spread": "^7.22.5",
+ "@babel/plugin-transform-sticky-regex": "^7.22.5",
+ "@babel/plugin-transform-template-literals": "^7.22.5",
+ "@babel/plugin-transform-typeof-symbol": "^7.22.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.22.5",
+ "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
+ "@babel/plugin-transform-unicode-regex": "^7.22.5",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
"@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.20.2",
- "babel-plugin-polyfill-corejs2": "^0.3.3",
- "babel-plugin-polyfill-corejs3": "^0.6.0",
- "babel-plugin-polyfill-regenerator": "^0.4.1",
- "core-js-compat": "^3.25.1",
- "semver": "^6.3.0"
+ "@babel/types": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "babel-plugin-polyfill-corejs2": "^0.4.4",
+ "babel-plugin-polyfill-corejs3": "^0.8.2",
+ "babel-plugin-polyfill-regenerator": "^0.5.1",
+ "core-js-compat": "^3.31.0"
},
"engines": {
"node": ">=6.9.0"
@@ -2023,10 +2713,17 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+ "dev": true
+ },
"node_modules/@babel/runtime": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz",
- "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz",
+ "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==",
+ "dev": true,
"dependencies": {
"regenerator-runtime": "^0.13.11"
},
@@ -2034,43 +2731,34 @@
"node": ">=6.9.0"
}
},
- "node_modules/@babel/standalone": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.11.tgz",
- "integrity": "sha512-WUPlwwXFk3iViGE7QFVVp423eVtT+eoXu1940Xu4QJgqgHBF6WWtlwO1Ip5rIWQnp7OHrGdwrwKLtLhUVfOZbA==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/template": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
- "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz",
+ "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7"
+ "@babel/code-frame": "^7.22.5",
+ "@babel/parser": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.20.10",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz",
- "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==",
+ "version": "7.22.8",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz",
+ "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.20.7",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
+ "@babel/code-frame": "^7.22.5",
+ "@babel/generator": "^7.22.7",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.22.7",
+ "@babel/types": "^7.22.5",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -2079,13 +2767,13 @@
}
},
"node_modules/@babel/types": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
- "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
+ "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
"dev": true,
"dependencies": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.5",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -2098,14 +2786,6 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
- "node_modules/@breejs/later": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@breejs/later/-/later-4.1.0.tgz",
- "integrity": "sha512-QgGnZ9b7o4k0Ai1ZbTJWwZpZcFK9d+Gb+DyNt4UT9x6IEIs5HVu0iIlmgzGqN+t9MoJSpSPo9S/Mm51UtHr3JA==",
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -2116,10 +2796,90 @@
"node": ">=0.1.90"
}
},
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.0.tgz",
+ "integrity": "sha512-dTKSIHHWc0zPvcS5cqGP+/TPFUJB0ekJ9dGKvMAFoNuBFhDPBt9OMGNZiIA5vTiNdGHHBeScYPXIGBMnVOahsA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^2.1.1"
+ }
+ },
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
+ "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
+ "dev": true,
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ },
+ "node_modules/@csstools/media-query-list-parser": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.2.tgz",
+ "integrity": "sha512-M8cFGGwl866o6++vIY7j1AKuq9v57cf+dGepScwCcbut9ypJNr4Cj+LLTWligYUZ0uyhEoJDKt5lvyBfh2L3ZQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^2.3.0",
+ "@csstools/css-tokenizer": "^2.1.1"
+ }
+ },
+ "node_modules/@csstools/selector-specificity": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz",
+ "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^6.0.13"
+ }
+ },
"node_modules/@cypress/request": {
- "version": "2.88.10",
- "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz",
- "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==",
+ "version": "2.88.11",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz",
+ "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==",
"dev": true,
"dependencies": {
"aws-sign2": "~0.7.0",
@@ -2135,7 +2895,7 @@
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"performance-now": "^2.1.0",
- "qs": "~6.5.2",
+ "qs": "~6.10.3",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
@@ -2179,9 +2939,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
- "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz",
+ "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==",
"cpu": [
"arm"
],
@@ -2194,10 +2954,154 @@
"node": ">=12"
}
},
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz",
+ "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz",
+ "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz",
+ "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz",
+ "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz",
+ "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz",
+ "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz",
+ "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz",
+ "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz",
+ "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@esbuild/linux-loong64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
- "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz",
+ "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==",
"cpu": [
"loong64"
],
@@ -2210,6 +3114,182 @@
"node": ">=12"
}
},
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz",
+ "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz",
+ "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz",
+ "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz",
+ "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz",
+ "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz",
+ "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz",
+ "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz",
+ "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz",
+ "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz",
+ "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz",
+ "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@eslint/eslintrc": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
@@ -2234,9 +3314,9 @@
}
},
"node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.19.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
- "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -2310,15 +3390,21 @@
}
},
"node_modules/@fortawesome/vue-fontawesome": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz",
- "integrity": "sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz",
+ "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==",
"dev": true,
"peerDependencies": {
"@fortawesome/fontawesome-svg-core": "~1 || ~6",
"vue": ">= 3.0.0 < 4"
}
},
+ "node_modules/@gar/promisify": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
+ "optional": true
+ },
"node_modules/@grpc/grpc-js": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz",
@@ -2332,15 +3418,15 @@
}
},
"node_modules/@grpc/proto-loader": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz",
- "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==",
+ "version": "0.7.7",
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz",
+ "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==",
"dependencies": {
"@types/long": "^4.0.1",
"lodash.camelcase": "^4.3.0",
"long": "^4.0.0",
"protobufjs": "^7.0.0",
- "yargs": "^16.2.0"
+ "yargs": "^17.7.2"
},
"bin": {
"proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
@@ -2446,6 +3532,95 @@
"node": ">= 14"
}
},
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -2509,20 +3684,20 @@
}
},
"node_modules/@jest/console": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
- "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.1.tgz",
+ "integrity": "sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
+ "@jest/types": "^29.6.1",
"@types/node": "*",
"chalk": "^4.0.0",
- "jest-message-util": "^27.5.1",
- "jest-util": "^27.5.1",
+ "jest-message-util": "^29.6.1",
+ "jest-util": "^29.6.1",
"slash": "^3.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/console/node_modules/ansi-styles": {
@@ -2596,42 +3771,42 @@
}
},
"node_modules/@jest/core": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
- "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.1.tgz",
+ "integrity": "sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ==",
"dev": true,
"dependencies": {
- "@jest/console": "^27.5.1",
- "@jest/reporters": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/console": "^29.6.1",
+ "@jest/reporters": "^29.6.1",
+ "@jest/test-result": "^29.6.1",
+ "@jest/transform": "^29.6.1",
+ "@jest/types": "^29.6.1",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
- "emittery": "^0.8.1",
+ "ci-info": "^3.2.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
- "jest-changed-files": "^27.5.1",
- "jest-config": "^27.5.1",
- "jest-haste-map": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-resolve-dependencies": "^27.5.1",
- "jest-runner": "^27.5.1",
- "jest-runtime": "^27.5.1",
- "jest-snapshot": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-validate": "^27.5.1",
- "jest-watcher": "^27.5.1",
+ "jest-changed-files": "^29.5.0",
+ "jest-config": "^29.6.1",
+ "jest-haste-map": "^29.6.1",
+ "jest-message-util": "^29.6.1",
+ "jest-regex-util": "^29.4.3",
+ "jest-resolve": "^29.6.1",
+ "jest-resolve-dependencies": "^29.6.1",
+ "jest-runner": "^29.6.1",
+ "jest-runtime": "^29.6.1",
+ "jest-snapshot": "^29.6.1",
+ "jest-util": "^29.6.1",
+ "jest-validate": "^29.6.1",
+ "jest-watcher": "^29.6.1",
"micromatch": "^4.0.4",
- "rimraf": "^3.0.0",
+ "pretty-format": "^29.6.1",
"slash": "^3.0.0",
"strip-ansi": "^6.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
@@ -2713,85 +3888,110 @@
}
},
"node_modules/@jest/environment": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
- "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.1.tgz",
+ "integrity": "sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A==",
"dev": true,
"dependencies": {
- "@jest/fake-timers": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/fake-timers": "^29.6.1",
+ "@jest/types": "^29.6.1",
"@types/node": "*",
- "jest-mock": "^27.5.1"
+ "jest-mock": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect": {
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.1.tgz",
+ "integrity": "sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg==",
+ "dev": true,
+ "dependencies": {
+ "expect": "^29.6.1",
+ "jest-snapshot": "^29.6.1"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect-utils": {
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.1.tgz",
+ "integrity": "sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^29.4.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/fake-timers": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
- "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.1.tgz",
+ "integrity": "sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
- "@sinonjs/fake-timers": "^8.0.1",
+ "@jest/types": "^29.6.1",
+ "@sinonjs/fake-timers": "^10.0.2",
"@types/node": "*",
- "jest-message-util": "^27.5.1",
- "jest-mock": "^27.5.1",
- "jest-util": "^27.5.1"
+ "jest-message-util": "^29.6.1",
+ "jest-mock": "^29.6.1",
+ "jest-util": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/globals": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
- "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.1.tgz",
+ "integrity": "sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A==",
"dev": true,
"dependencies": {
- "@jest/environment": "^27.5.1",
- "@jest/types": "^27.5.1",
- "expect": "^27.5.1"
+ "@jest/environment": "^29.6.1",
+ "@jest/expect": "^29.6.1",
+ "@jest/types": "^29.6.1",
+ "jest-mock": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/reporters": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
- "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.1.tgz",
+ "integrity": "sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA==",
"dev": true,
"dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/console": "^29.6.1",
+ "@jest/test-result": "^29.6.1",
+ "@jest/transform": "^29.6.1",
+ "@jest/types": "^29.6.1",
+ "@jridgewell/trace-mapping": "^0.3.18",
"@types/node": "*",
"chalk": "^4.0.0",
"collect-v8-coverage": "^1.0.0",
"exit": "^0.1.2",
- "glob": "^7.1.2",
+ "glob": "^7.1.3",
"graceful-fs": "^4.2.9",
"istanbul-lib-coverage": "^3.0.0",
"istanbul-lib-instrument": "^5.1.0",
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.0",
"istanbul-reports": "^3.1.3",
- "jest-haste-map": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-worker": "^27.5.1",
+ "jest-message-util": "^29.6.1",
+ "jest-util": "^29.6.1",
+ "jest-worker": "^29.6.1",
"slash": "^3.0.0",
- "source-map": "^0.6.0",
"string-length": "^4.0.1",
- "terminal-link": "^2.0.0",
- "v8-to-istanbul": "^8.1.0"
+ "strip-ansi": "^6.0.0",
+ "v8-to-istanbul": "^9.0.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
@@ -2872,74 +4072,86 @@
"node": ">=8"
}
},
- "node_modules/@jest/source-map": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
- "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
+ "node_modules/@jest/schemas": {
+ "version": "29.6.0",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz",
+ "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==",
"dev": true,
"dependencies": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9",
- "source-map": "^0.6.0"
+ "@sinclair/typebox": "^0.27.8"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "29.6.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz",
+ "integrity": "sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/test-result": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
- "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.1.tgz",
+ "integrity": "sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw==",
"dev": true,
"dependencies": {
- "@jest/console": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/console": "^29.6.1",
+ "@jest/types": "^29.6.1",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/test-sequencer": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
- "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.1.tgz",
+ "integrity": "sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^27.5.1",
+ "@jest/test-result": "^29.6.1",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^27.5.1",
- "jest-runtime": "^27.5.1"
+ "jest-haste-map": "^29.6.1",
+ "slash": "^3.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/transform": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
- "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.1.tgz",
+ "integrity": "sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^27.5.1",
+ "@babel/core": "^7.11.6",
+ "@jest/types": "^29.6.1",
+ "@jridgewell/trace-mapping": "^0.3.18",
"babel-plugin-istanbul": "^6.1.1",
"chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
+ "convert-source-map": "^2.0.0",
+ "fast-json-stable-stringify": "^2.1.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-util": "^27.5.1",
+ "jest-haste-map": "^29.6.1",
+ "jest-regex-util": "^29.4.3",
+ "jest-util": "^29.6.1",
"micromatch": "^4.0.4",
"pirates": "^4.0.4",
"slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
+ "write-file-atomic": "^4.0.2"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/transform/node_modules/ansi-styles": {
@@ -2991,6 +4203,12 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "node_modules/@jest/transform/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
"node_modules/@jest/transform/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -3013,19 +4231,20 @@
}
},
"node_modules/@jest/types": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
- "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz",
+ "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==",
"dev": true,
"dependencies": {
+ "@jest/schemas": "^29.6.0",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
- "@types/yargs": "^16.0.0",
+ "@types/yargs": "^17.0.8",
"chalk": "^4.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/types/node_modules/ansi-styles": {
@@ -3099,9 +4318,9 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
"dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.0.1",
@@ -3131,9 +4350,9 @@
}
},
"node_modules/@jridgewell/source-map": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
- "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+ "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
"dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
@@ -3141,30 +4360,53 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
"dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "3.1.0",
"@jridgewell/sourcemap-codec": "1.4.14"
}
},
+ "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
+ },
"node_modules/@js-joda/core": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.1.tgz",
- "integrity": "sha512-oTFmkyv5MhgkHdZhoe5lwRoKW0t4njPvK3g7ODvK/prkoC5bwylKcyQJMsmjvgHBXoy4u5iLnB5yQ7AljouHAA=="
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.3.tgz",
+ "integrity": "sha512-7dqNYwG8gCt4hfg5PKgM7xLEcgSBcx/UgC92OMnhMmvAnq11QzDFPrxUkNR/u5kn17WWLZ8beZ4A3Qrz4pZcmQ=="
+ },
+ "node_modules/@kurkle/color": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
+ "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==",
+ "dev": true
+ },
+ "node_modules/@louislam/ping": {
+ "version": "0.4.4-mod.0",
+ "resolved": "https://registry.npmjs.org/@louislam/ping/-/ping-0.4.4-mod.0.tgz",
+ "integrity": "sha512-U2ZXcgFRPmZYd/ooA8KILG4aCMBsDrGP9NDWseHriZSsKlu5Y1lf/LbenN6tnqQ9JjAsbJjqwSi3xtAcWqU+1w==",
+ "dependencies": {
+ "command-exists": "~1.2.9"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
},
"node_modules/@louislam/sqlite3": {
- "version": "15.1.2",
- "resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-15.1.2.tgz",
- "integrity": "sha512-VRquWrCKKwfOnzwVh6hOud8lHPvv2R7Jic3gyZCL5kiZpNfmJ71DLCV9SNgLaMDloU+mVWymLev8vehlf7xf5g==",
+ "version": "15.1.6",
+ "resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-15.1.6.tgz",
+ "integrity": "sha512-cVf7hcMrfywYnycatLvorngTFpL3BSWvEy7/NrEfcTyQX8xxj9fdeD553oCTv5fIAk85fluo6mzPq89V3YzrVA==",
"hasInstallScript": true,
"dependencies": {
"@mapbox/node-pre-gyp": "^1.0.0",
@@ -3172,10 +4414,10 @@
"tar": "^6.1.11"
},
"optionalDependencies": {
- "node-gyp": "^7.1.2"
+ "node-gyp": "8.x"
},
"peerDependencies": {
- "node-gyp": "7.x"
+ "node-gyp": "8.x"
},
"peerDependenciesMeta": {
"node-gyp": {
@@ -3202,36 +4444,24 @@
"node-pre-gyp": "bin/node-pre-gyp"
}
},
- "node_modules/@mapbox/node-pre-gyp/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==",
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
+ "version": "5.1.1-v1",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
+ "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
+ "dev": true,
"dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
+ "eslint-scope": "5.1.1"
}
},
- "node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "node_modules/@nicolo-ribaudo/semver-v6": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz",
+ "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==",
+ "dev": true,
"bin": {
"semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
}
},
- "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -3267,6 +4497,30 @@
"node": ">= 8"
}
},
+ "node_modules/@npmcli/fs": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
+ "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
+ "optional": true,
+ "dependencies": {
+ "@gar/promisify": "^1.0.1",
+ "semver": "^7.3.5"
+ }
+ },
+ "node_modules/@npmcli/move-file": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
+ "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+ "deprecated": "This functionality has been moved to @npmcli/fs",
+ "optional": true,
+ "dependencies": {
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@octokit/auth-token": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
@@ -3378,6 +4632,15 @@
"@octokit/openapi-types": "^12.11.0"
}
},
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/@popperjs/core": {
"version": "2.10.2",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz",
@@ -3442,6 +4705,64 @@
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
},
+ "node_modules/@redis/bloom": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.1.0.tgz",
+ "integrity": "sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
+ "node_modules/@redis/client": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.4.2.tgz",
+ "integrity": "sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw==",
+ "dependencies": {
+ "cluster-key-slot": "1.1.1",
+ "generic-pool": "3.9.0",
+ "yallist": "4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@redis/client/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/@redis/graph": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz",
+ "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
+ "node_modules/@redis/json": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz",
+ "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
+ "node_modules/@redis/search": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.0.tgz",
+ "integrity": "sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
+ "node_modules/@redis/time-series": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz",
+ "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
"node_modules/@sideway/address": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -3463,22 +4784,553 @@
"integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
"dev": true
},
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "dev": true
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz",
+ "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
"node_modules/@sinonjs/commons": {
- "version": "1.8.6",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
- "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
+ "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
"dev": true,
"dependencies": {
"type-detect": "4.0.8"
}
},
"node_modules/@sinonjs/fake-timers": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
- "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
"dev": true,
"dependencies": {
- "@sinonjs/commons": "^1.7.0"
+ "@sinonjs/commons": "^3.0.0"
+ }
+ },
+ "node_modules/@smithy/abort-controller": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.0.2.tgz",
+ "integrity": "sha512-tb2h0b+JvMee+eAxTmhnyqyNk51UXIK949HnE14lFeezKsVJTB30maan+CO2IMwnig2wVYQH84B5qk6ylmKCuA==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/config-resolver": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-1.0.2.tgz",
+ "integrity": "sha512-8Bk7CgnVKg1dn5TgnjwPz2ebhxeR7CjGs5yhVYH3S8x0q8yPZZVWwpRIglwXaf5AZBzJlNO1lh+lUhMf2e73zQ==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "@smithy/util-config-provider": "^1.0.2",
+ "@smithy/util-middleware": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/credential-provider-imds": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.2.tgz",
+ "integrity": "sha512-fLjCya+JOu2gPJpCiwSUyoLvT8JdNJmOaTOkKYBZoGf7CzqR6lluSyI+eboZnl/V0xqcfcqBG4tgqCISmWS3/w==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/node-config-provider": "^1.0.2",
+ "@smithy/property-provider": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "@smithy/url-parser": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-codec": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-1.0.2.tgz",
+ "integrity": "sha512-eW/XPiLauR1VAgHKxhVvgvHzLROUgTtqat2lgljztbH8uIYWugv7Nz+SgCavB+hWRazv2iYgqrSy74GvxXq/rg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/crc32": "3.0.0",
+ "@smithy/types": "^1.1.1",
+ "@smithy/util-hex-encoding": "^1.0.2",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/fetch-http-handler": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.2.tgz",
+ "integrity": "sha512-kynyofLf62LvR8yYphPPdyHb8fWG3LepFinM/vWUTG2Q1pVpmPCM530ppagp3+q2p+7Ox0UvSqldbKqV/d1BpA==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/protocol-http": "^1.1.1",
+ "@smithy/querystring-builder": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "@smithy/util-base64": "^1.0.2",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/hash-node": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-1.0.2.tgz",
+ "integrity": "sha512-K6PKhcUNrJXtcesyzhIvNlU7drfIU7u+EMQuGmPw6RQDAg/ufUcfKHz4EcUhFAodUmN+rrejhRG9U6wxjeBOQA==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "@smithy/util-buffer-from": "^1.0.2",
+ "@smithy/util-utf8": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/invalid-dependency": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-1.0.2.tgz",
+ "integrity": "sha512-B1Y3Tsa6dfC+Vvb+BJMhTHOfFieeYzY9jWQSTR1vMwKkxsymD0OIAnEw8rD/RiDj/4E4RPGFdx9Mdgnyd6Bv5Q==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/is-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-pkyBnsBRpe+c/6ASavqIMRBdRtZNJEVJOEzhpxZ9JoAXiZYbkfaSMRA/O1dUxGdJ653GHONunnZ4xMo/LJ7utQ==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-content-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-1.0.2.tgz",
+ "integrity": "sha512-pa1/SgGIrSmnEr2c9Apw7CdU4l/HW0fK3+LKFCPDYJrzM0JdYpqjQzgxi31P00eAkL0EFBccpus/p1n2GF9urw==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/protocol-http": "^1.1.1",
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-endpoint": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.3.tgz",
+ "integrity": "sha512-GsWvTXMFjSgl617PCE2km//kIjjtvMRrR2GAuRDIS9sHiLwmkS46VWaVYy+XE7ubEsEtzZ5yK2e8TKDR6Qr5Lw==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/middleware-serde": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "@smithy/url-parser": "^1.0.2",
+ "@smithy/util-middleware": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-retry": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-1.0.4.tgz",
+ "integrity": "sha512-G7uRXGFL8c3F7APnoIMTtNAHH8vT4F2qVnAWGAZaervjupaUQuRRHYBLYubK0dWzOZz86BtAXKieJ5p+Ni2Xpg==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/protocol-http": "^1.1.1",
+ "@smithy/service-error-classification": "^1.0.3",
+ "@smithy/types": "^1.1.1",
+ "@smithy/util-middleware": "^1.0.2",
+ "@smithy/util-retry": "^1.0.4",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-serde": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-1.0.2.tgz",
+ "integrity": "sha512-T4PcdMZF4xme6koUNfjmSZ1MLi7eoFeYCtodQNQpBNsS77TuJt1A6kt5kP/qxrTvfZHyFlj0AubACoaUqgzPeg==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-stack": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-1.0.2.tgz",
+ "integrity": "sha512-H7/uAQEcmO+eDqweEFMJ5YrIpsBwmrXSP6HIIbtxKJSQpAcMGY7KrR2FZgZBi1FMnSUOh+rQrbOyj5HQmSeUBA==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/node-config-provider": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-1.0.2.tgz",
+ "integrity": "sha512-HU7afWpTToU0wL6KseGDR2zojeyjECQfr8LpjAIeHCYIW7r360ABFf4EaplaJRMVoC3hD9FeltgI3/NtShOqCg==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/property-provider": "^1.0.2",
+ "@smithy/shared-ini-file-loader": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/node-http-handler": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-1.0.3.tgz",
+ "integrity": "sha512-PcPUSzTbIb60VCJCiH0PU0E6bwIekttsIEf5Aoo/M0oTfiqsxHTn0Rcij6QoH6qJy6piGKXzLSegspXg5+Kq6g==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/abort-controller": "^1.0.2",
+ "@smithy/protocol-http": "^1.1.1",
+ "@smithy/querystring-builder": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/property-provider": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-1.0.2.tgz",
+ "integrity": "sha512-pXDPyzKX8opzt38B205kDgaxda6LHcTfPvTYQZnwP6BAPp1o9puiCPjeUtkKck7Z6IbpXCPUmUQnzkUzWTA42Q==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/protocol-http": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.1.1.tgz",
+ "integrity": "sha512-mFLFa2sSvlUxm55U7B4YCIsJJIMkA6lHxwwqOaBkral1qxFz97rGffP/mmd4JDuin1EnygiO5eNJGgudiUgmDQ==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/querystring-builder": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-1.0.2.tgz",
+ "integrity": "sha512-6P/xANWrtJhMzTPUR87AbXwSBuz1SDHIfL44TFd/GT3hj6rA+IEv7rftEpPjayUiWRocaNnrCPLvmP31mobOyA==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "@smithy/util-uri-escape": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/querystring-parser": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-1.0.2.tgz",
+ "integrity": "sha512-IWxwxjn+KHWRRRB+K2Ngl+plTwo2WSgc2w+DvLy0DQZJh9UGOpw40d6q97/63GBlXIt4TEt5NbcFrO30CKlrsA==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/service-error-classification": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-1.0.3.tgz",
+ "integrity": "sha512-2eglIYqrtcUnuI71yweu7rSfCgt6kVvRVf0C72VUqrd0LrV1M0BM0eYN+nitp2CHPSdmMI96pi+dU9U/UqAMSA==",
+ "optional": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/shared-ini-file-loader": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.2.tgz",
+ "integrity": "sha512-bdQj95VN+lCXki+P3EsDyrkpeLn8xDYiOISBGnUG/AGPYJXN8dmp4EhRRR7XOoLoSs8anZHR4UcGEOzFv2jwGw==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/signature-v4": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-1.0.2.tgz",
+ "integrity": "sha512-rpKUhmCuPmpV5dloUkOb9w1oBnJatvKQEjIHGmkjRGZnC3437MTdzWej9TxkagcZ8NRRJavYnEUixzxM1amFig==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/eventstream-codec": "^1.0.2",
+ "@smithy/is-array-buffer": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "@smithy/util-hex-encoding": "^1.0.2",
+ "@smithy/util-middleware": "^1.0.2",
+ "@smithy/util-uri-escape": "^1.0.2",
+ "@smithy/util-utf8": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/smithy-client": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-1.0.4.tgz",
+ "integrity": "sha512-gpo0Xl5Nyp9sgymEfpt7oa9P2q/GlM3VmQIdm+FeH0QEdYOQx3OtvwVmBYAMv2FIPWxkMZlsPYRTnEiBTK5TYg==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/middleware-stack": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "@smithy/util-stream": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/types": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.1.1.tgz",
+ "integrity": "sha512-tMpkreknl2gRrniHeBtdgQwaOlo39df8RxSrwsHVNIGXULy5XP6KqgScUw2m12D15wnJCKWxVhCX+wbrBW/y7g==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/url-parser": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-1.0.2.tgz",
+ "integrity": "sha512-0JRsDMQe53F6EHRWksdcavKDRjyqp8vrjakg8EcCUOa7PaFRRB1SO/xGZdzSlW1RSTWQDEksFMTCEcVEKmAoqA==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/querystring-parser": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/util-base64": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-1.0.2.tgz",
+ "integrity": "sha512-BCm15WILJ3SL93nusoxvJGMVfAMWHZhdeDZPtpAaskozuexd0eF6szdz4kbXaKp38bFCSenA6bkUHqaE3KK0dA==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/util-buffer-from": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-body-length-browser": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.2.tgz",
+ "integrity": "sha512-Xh8L06H2anF5BHjSYTg8hx+Itcbf4SQZnVMl4PIkCOsKtneMJoGjPRLy17lEzfoh/GOaa0QxgCP6lRMQWzNl4w==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/util-body-length-node": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-1.0.2.tgz",
+ "integrity": "sha512-nXHbZsUtvZeyfL4Ceds9nmy2Uh2AhWXohG4vWHyjSdmT8cXZlJdmJgnH6SJKDjyUecbu+BpKeVvSrA4cWPSOPA==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-buffer-from": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-1.0.2.tgz",
+ "integrity": "sha512-lHAYIyrBO9RANrPvccnPjU03MJnWZ66wWuC5GjWWQVfsmPwU6m00aakZkzHdUT6tGCkGacXSgArP5wgTgA+oCw==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/is-array-buffer": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-config-provider": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-1.0.2.tgz",
+ "integrity": "sha512-HOdmDm+3HUbuYPBABLLHtn8ittuRyy+BSjKOA169H+EMc+IozipvXDydf+gKBRAxUa4dtKQkLraypwppzi+PRw==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-defaults-mode-browser": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.2.tgz",
+ "integrity": "sha512-J1u2PO235zxY7dg0+ZqaG96tFg4ehJZ7isGK1pCBEA072qxNPwIpDzUVGnLJkHZvjWEGA8rxIauDtXfB0qxeAg==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/property-provider": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@smithy/util-defaults-mode-node": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.2.tgz",
+ "integrity": "sha512-9/BN63rlIsFStvI+AvljMh873Xw6bbI6b19b+PVYXyycQ2DDQImWcjnzRlHW7eP65CCUNGQ6otDLNdBQCgMXqg==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/config-resolver": "^1.0.2",
+ "@smithy/credential-provider-imds": "^1.0.2",
+ "@smithy/node-config-provider": "^1.0.2",
+ "@smithy/property-provider": "^1.0.2",
+ "@smithy/types": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@smithy/util-hex-encoding": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.2.tgz",
+ "integrity": "sha512-Bxydb5rMJorMV6AuDDMOxro3BMDdIwtbQKHpwvQFASkmr52BnpDsWlxgpJi8Iq7nk1Bt4E40oE1Isy/7ubHGzg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-middleware": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-1.0.2.tgz",
+ "integrity": "sha512-vtXK7GOR2BoseCX8NCGe9SaiZrm9M2lm/RVexFGyPuafTtry9Vyv7hq/vw8ifd/G/pSJ+msByfJVb1642oQHKw==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-retry": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-1.0.4.tgz",
+ "integrity": "sha512-RnZPVFvRoqdj2EbroDo3OsnnQU8eQ4AlnZTOGusbYKybH3269CFdrZfZJloe60AQjX7di3J6t/79PjwCLO5Khw==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/service-error-classification": "^1.0.3",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-stream": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-1.0.2.tgz",
+ "integrity": "sha512-qyN2M9QFMTz4UCHi6GnBfLOGYKxQZD01Ga6nzaXFFC51HP/QmArU72e4kY50Z/EtW8binPxspP2TAsGbwy9l3A==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/fetch-http-handler": "^1.0.2",
+ "@smithy/node-http-handler": "^1.0.3",
+ "@smithy/types": "^1.1.1",
+ "@smithy/util-base64": "^1.0.2",
+ "@smithy/util-buffer-from": "^1.0.2",
+ "@smithy/util-hex-encoding": "^1.0.2",
+ "@smithy/util-utf8": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-uri-escape": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-1.0.2.tgz",
+ "integrity": "sha512-k8C0BFNS9HpBMHSgUDnWb1JlCQcFG+PPlVBq9keP4Nfwv6a9Q0yAfASWqUCtzjuMj1hXeLhn/5ADP6JxnID1Pg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-utf8": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-1.0.2.tgz",
+ "integrity": "sha512-V4cyjKfJlARui0dMBfWJMQAmJzoW77i4N3EjkH/bwnE2Ngbl4tqD2Y0C/xzpzY/J1BdxeCKxAebVFk8aFCaSCw==",
+ "optional": true,
+ "dependencies": {
+ "@smithy/util-buffer-from": "^1.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
}
},
"node_modules/@socket.io/component-emitter": {
@@ -3486,6 +5338,17 @@
"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/@szmarczak/http-timer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
+ "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
+ "dependencies": {
+ "defer-to-connect": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
"node_modules/@tediousjs/connection-string": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.3.0.tgz",
@@ -3508,13 +5371,13 @@
}
},
"node_modules/@types/babel__core": {
- "version": "7.1.20",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz",
- "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==",
+ "version": "7.20.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz",
+ "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==",
"dev": true,
"dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0",
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
"@types/babel__generator": "*",
"@types/babel__template": "*",
"@types/babel__traverse": "*"
@@ -3540,12 +5403,12 @@
}
},
"node_modules/@types/babel__traverse": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz",
- "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==",
+ "version": "7.20.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz",
+ "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.3.0"
+ "@babel/types": "^7.20.7"
}
},
"node_modules/@types/body-parser": {
@@ -3612,30 +5475,31 @@
}
},
"node_modules/@types/express": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz",
- "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==",
+ "version": "4.17.17",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
+ "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
"dependencies": {
"@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.31",
+ "@types/express-serve-static-core": "^4.17.33",
"@types/qs": "*",
"@types/serve-static": "*"
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.17.32",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz",
- "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==",
+ "version": "4.17.35",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz",
+ "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==",
"dependencies": {
"@types/node": "*",
"@types/qs": "*",
- "@types/range-parser": "*"
+ "@types/range-parser": "*",
+ "@types/send": "*"
}
},
"node_modules/@types/graceful-fs": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
- "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
+ "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -3646,6 +5510,11 @@
"resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz",
"integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA=="
},
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
+ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ=="
+ },
"node_modules/@types/http-errors": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz",
@@ -3681,9 +5550,9 @@
"integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
},
"node_modules/@types/koa": {
- "version": "2.13.5",
- "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz",
- "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==",
+ "version": "2.13.6",
+ "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.6.tgz",
+ "integrity": "sha512-diYUfp/GqfWBAiwxHtYJ/FQYIXhlEhlyaU7lB/bWQrx4Il9lCET5UwpFy3StOAohfsxxvEQ11qIJgT1j2tfBvw==",
"dependencies": {
"@types/accepts": "*",
"@types/content-disposition": "*",
@@ -3703,20 +5572,15 @@
"@types/koa": "*"
}
},
- "node_modules/@types/lodash": {
- "version": "4.14.191",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz",
- "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ=="
- },
"node_modules/@types/long": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
"node_modules/@types/mime": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
- "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
+ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
},
"node_modules/@types/minimist": {
"version": "1.2.2",
@@ -3725,9 +5589,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "18.11.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
- "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
+ "version": "20.4.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.1.tgz",
+ "integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg=="
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.1",
@@ -3735,16 +5599,10 @@
"integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
"dev": true
},
- "node_modules/@types/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
- "dev": true
- },
"node_modules/@types/prettier": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
- "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
"dev": true
},
"node_modules/@types/qs": {
@@ -3757,11 +5615,21 @@
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
},
- "node_modules/@types/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
+ "node_modules/@types/send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
"dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz",
+ "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==",
+ "dependencies": {
+ "@types/http-errors": "*",
"@types/mime": "*",
"@types/node": "*"
}
@@ -3778,16 +5646,45 @@
"integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==",
"dev": true
},
+ "node_modules/@types/ssh2": {
+ "version": "1.11.12",
+ "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.12.tgz",
+ "integrity": "sha512-uvrvY6oN+3LiFiQmDCnuP65Qlryqvw5sbpKP7oce5cI/Ib3u3yY/DIkxIegT87MaVpnchUfSkEo2g9HeC7mUng==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "^18.11.18"
+ }
+ },
+ "node_modules/@types/ssh2/node_modules/@types/node": {
+ "version": "18.16.19",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.19.tgz",
+ "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==",
+ "dev": true
+ },
"node_modules/@types/stack-utils": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
"dev": true
},
+ "node_modules/@types/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
+ },
+ "node_modules/@types/whatwg-url": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
+ "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/webidl-conversions": "*"
+ }
+ },
"node_modules/@types/yargs": {
- "version": "16.0.5",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
- "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "version": "17.0.24",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+ "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
"dev": true,
"dependencies": {
"@types/yargs-parser": "*"
@@ -3810,228 +5707,170 @@
}
},
"node_modules/@vitejs/plugin-legacy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-2.1.0.tgz",
- "integrity": "sha512-en3h0L7okBonSYKJx81bU8AVFPjSCiUSz8xUDAW8J0CxskfxSt/VJKbZO6G9yCVgZLywGoO8PNAfOQWVLUWZ2A==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-4.1.0.tgz",
+ "integrity": "sha512-bLPHaKAKtPq40Cx2Hauz/VE39kStx7gUC21RM+0/OvBgiOlqrK3b1mIMUc4Cak1xLOrK99j174/7xczfu4OLHA==",
"dev": true,
"dependencies": {
- "@babel/standalone": "^7.18.13",
- "core-js": "^3.25.0",
- "magic-string": "^0.26.2",
- "regenerator-runtime": "^0.13.9",
- "systemjs": "^6.12.4"
+ "@babel/core": "^7.22.6",
+ "@babel/preset-env": "^7.22.6",
+ "browserslist": "^4.21.9",
+ "core-js": "^3.31.0",
+ "magic-string": "^0.30.1",
+ "regenerator-runtime": "^0.13.11",
+ "systemjs": "^6.14.1"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
"peerDependencies": {
"terser": "^5.4.0",
- "vite": "^3.0.0"
+ "vite": "^4.0.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-legacy/node_modules/core-js": {
+ "version": "3.31.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.1.tgz",
+ "integrity": "sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
}
},
"node_modules/@vitejs/plugin-vue": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.1.2.tgz",
- "integrity": "sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
+ "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==",
"dev": true,
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
"peerDependencies": {
- "vite": "^3.0.0",
+ "vite": "^4.0.0",
"vue": "^3.2.25"
}
},
"node_modules/@vue/compiler-core": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
- "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+ "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
"dev": true,
"dependencies": {
- "@babel/parser": "^7.16.4",
- "@vue/shared": "3.2.45",
+ "@babel/parser": "^7.21.3",
+ "@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
- "source-map": "^0.6.1"
+ "source-map-js": "^1.0.2"
}
},
"node_modules/@vue/compiler-dom": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
- "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+ "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
"dev": true,
"dependencies": {
- "@vue/compiler-core": "3.2.45",
- "@vue/shared": "3.2.45"
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4"
}
},
"node_modules/@vue/compiler-sfc": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
- "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+ "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
"dev": true,
"dependencies": {
- "@babel/parser": "^7.16.4",
- "@vue/compiler-core": "3.2.45",
- "@vue/compiler-dom": "3.2.45",
- "@vue/compiler-ssr": "3.2.45",
- "@vue/reactivity-transform": "3.2.45",
- "@vue/shared": "3.2.45",
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/reactivity-transform": "3.3.4",
+ "@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
- "magic-string": "^0.25.7",
+ "magic-string": "^0.30.0",
"postcss": "^8.1.10",
- "source-map": "^0.6.1"
- }
- },
- "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dev": true,
- "dependencies": {
- "sourcemap-codec": "^1.4.8"
+ "source-map-js": "^1.0.2"
}
},
"node_modules/@vue/compiler-ssr": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
- "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+ "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
"dev": true,
"dependencies": {
- "@vue/compiler-dom": "3.2.45",
- "@vue/shared": "3.2.45"
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/shared": "3.3.4"
}
},
"node_modules/@vue/devtools-api": {
- "version": "6.4.5",
- "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz",
- "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
+ "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==",
"dev": true
},
"node_modules/@vue/reactivity": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.36.tgz",
- "integrity": "sha512-c2qvopo0crh9A4GXi2/2kfGYMxsJW4tVILrqRPydVGZHhq0fnzy6qmclWOhBFckEhmyxmpHpdJtIRYGeKcuhnA==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
+ "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
"dev": true,
"dependencies": {
- "@vue/shared": "3.2.36"
+ "@vue/shared": "3.3.4"
}
},
"node_modules/@vue/reactivity-transform": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
- "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+ "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
"dev": true,
"dependencies": {
- "@babel/parser": "^7.16.4",
- "@vue/compiler-core": "3.2.45",
- "@vue/shared": "3.2.45",
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
- "magic-string": "^0.25.7"
+ "magic-string": "^0.30.0"
}
},
- "node_modules/@vue/reactivity-transform/node_modules/magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dev": true,
- "dependencies": {
- "sourcemap-codec": "^1.4.8"
- }
- },
- "node_modules/@vue/reactivity/node_modules/@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- },
"node_modules/@vue/runtime-core": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.36.tgz",
- "integrity": "sha512-PTWBD+Lub+1U3/KhbCExrfxyS14hstLX+cBboxVHaz+kXoiDLNDEYAovPtxeTutbqtClIXtft+wcGdC+FUQ9qQ==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+ "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
"dev": true,
"dependencies": {
- "@vue/reactivity": "3.2.36",
- "@vue/shared": "3.2.36"
+ "@vue/reactivity": "3.3.4",
+ "@vue/shared": "3.3.4"
}
},
- "node_modules/@vue/runtime-core/node_modules/@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- },
"node_modules/@vue/runtime-dom": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.36.tgz",
- "integrity": "sha512-gYPYblm7QXHVuBohqNRRT7Wez0f2Mx2D40rb4fleehrJU9CnkjG0phhcGEZFfGwCmHZRqBCRgbFWE98bPULqkg==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+ "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
"dev": true,
"dependencies": {
- "@vue/runtime-core": "3.2.36",
- "@vue/shared": "3.2.36",
- "csstype": "^2.6.8"
+ "@vue/runtime-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "csstype": "^3.1.1"
}
},
- "node_modules/@vue/runtime-dom/node_modules/@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- },
"node_modules/@vue/server-renderer": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.36.tgz",
- "integrity": "sha512-uZE0+jfye6yYXWvAQYeHZv+f50sRryvy16uiqzk3jn8hEY8zTjI+rzlmZSGoE915k+W/Ol9XSw6vxOUD8dGkUg==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+ "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
"dev": true,
"dependencies": {
- "@vue/compiler-ssr": "3.2.36",
- "@vue/shared": "3.2.36"
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/shared": "3.3.4"
},
"peerDependencies": {
- "vue": "3.2.36"
+ "vue": "3.3.4"
}
},
- "node_modules/@vue/server-renderer/node_modules/@vue/compiler-core": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.36.tgz",
- "integrity": "sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.16.4",
- "@vue/shared": "3.2.36",
- "estree-walker": "^2.0.2",
- "source-map": "^0.6.1"
- }
- },
- "node_modules/@vue/server-renderer/node_modules/@vue/compiler-dom": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.36.tgz",
- "integrity": "sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA==",
- "dev": true,
- "dependencies": {
- "@vue/compiler-core": "3.2.36",
- "@vue/shared": "3.2.36"
- }
- },
- "node_modules/@vue/server-renderer/node_modules/@vue/compiler-ssr": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.36.tgz",
- "integrity": "sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw==",
- "dev": true,
- "dependencies": {
- "@vue/compiler-dom": "3.2.36",
- "@vue/shared": "3.2.36"
- }
- },
- "node_modules/@vue/server-renderer/node_modules/@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- },
"node_modules/@vue/shared": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
- "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
+ "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==",
"dev": true
},
"node_modules/@vuepic/vue-datepicker": {
@@ -4049,12 +5888,6 @@
"vue": ">=3.2.0"
}
},
- "node_modules/abab": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
- "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
- "dev": true
- },
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -4073,31 +5906,9 @@
}
},
"node_modules/acorn": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
- "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-globals": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
- "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
- "dev": true,
- "dependencies": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
- }
- },
- "node_modules/acorn-globals/node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -4115,15 +5926,6 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "node_modules/acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/aedes": {
"version": "0.46.3",
"resolved": "https://registry.npmjs.org/aedes/-/aedes-0.46.3.tgz",
@@ -4197,11 +5999,34 @@
"node": ">= 6.0.0"
}
},
+ "node_modules/agentkeepalive": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz",
+ "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==",
+ "optional": true,
+ "dependencies": {
+ "debug": "^4.1.0",
+ "depd": "^2.0.0",
+ "humanize-ms": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/agentkeepalive/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "optional": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -4214,7 +6039,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -4226,6 +6051,14 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
+ "engines": {
+ "node": ">=0.4.2"
+ }
+ },
"node_modules/anafanafo": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anafanafo/-/anafanafo-2.0.0.tgz",
@@ -4278,6 +6111,11 @@
"node": ">=4"
}
},
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+ },
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -4339,6 +6177,18 @@
"resolved": "https://registry.npmjs.org/args-parser/-/args-parser-1.3.0.tgz",
"integrity": "sha512-If3Zi4BSjlQIJ9fgAhSiKi0oJtgMzSqh0H4wvl7XSeO16FKx7QqaHld8lZeEajPX7y1C5qKKeNgyrfyvmjmjUQ=="
},
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+ "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -4366,7 +6216,7 @@
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
"integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"safer-buffer": "~2.1.0"
}
@@ -4375,7 +6225,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
- "devOptional": true,
+ "dev": true,
"engines": {
"node": ">=0.8"
}
@@ -4409,6 +6259,17 @@
"node": ">= 4.0.0"
}
},
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/await-lock": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz",
@@ -4418,16 +6279,16 @@
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
- "devOptional": true,
+ "dev": true,
"engines": {
"node": "*"
}
},
"node_modules/aws4": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
- "devOptional": true
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
+ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==",
+ "dev": true
},
"node_modules/axios": {
"version": "0.27.2",
@@ -4456,22 +6317,21 @@
}
},
"node_modules/babel-jest": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
- "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.1.tgz",
+ "integrity": "sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==",
"dev": true,
"dependencies": {
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/transform": "^29.6.1",
"@types/babel__core": "^7.1.14",
"babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^27.5.1",
+ "babel-preset-jest": "^29.5.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"slash": "^3.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
"@babel/core": "^7.8.0"
@@ -4570,54 +6430,54 @@
}
},
"node_modules/babel-plugin-jest-hoist": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
- "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
+ "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
"dev": true,
"dependencies": {
"@babel/template": "^7.3.3",
"@babel/types": "^7.3.3",
- "@types/babel__core": "^7.0.0",
+ "@types/babel__core": "^7.1.14",
"@types/babel__traverse": "^7.0.6"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
- "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz",
+ "integrity": "sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.17.7",
- "@babel/helper-define-polyfill-provider": "^0.3.3",
- "semver": "^6.1.1"
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.4.1",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
- "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz",
+ "integrity": "sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.3.3",
- "core-js-compat": "^3.25.1"
+ "@babel/helper-define-polyfill-provider": "^0.4.1",
+ "core-js-compat": "^3.31.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
- "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz",
+ "integrity": "sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.3.3"
+ "@babel/helper-define-polyfill-provider": "^0.4.1"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
@@ -4653,16 +6513,16 @@
}
},
"node_modules/babel-preset-jest": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
- "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
+ "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
"dev": true,
"dependencies": {
- "babel-plugin-jest-hoist": "^27.5.1",
+ "babel-plugin-jest-hoist": "^29.5.0",
"babel-preset-current-node-syntax": "^1.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
@@ -4713,6 +6573,30 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
+ "node_modules/barse": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/barse/-/barse-0.4.3.tgz",
+ "integrity": "sha512-UEpvriJqAn8zuVinYICuKoPttZy3XxXEoqX/V2uYAL4zzJRuNzCK3+20nAu3YUIa2U7G53kf90wfBIp9/A+Odw==",
+ "dependencies": {
+ "readable-stream": "~1.0.2"
+ }
+ },
+ "node_modules/barse/node_modules/readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/barse/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -4755,7 +6639,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"tweetnacl": "^0.14.3"
}
@@ -4880,11 +6764,6 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
},
- "node_modules/boolean": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
- "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw=="
- },
"node_modules/bootstrap": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
@@ -4898,6 +6777,12 @@
"@popperjs/core": "^2.10.2"
}
},
+ "node_modules/bowser": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
+ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==",
+ "optional": true
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -4919,37 +6804,10 @@
"node": ">=8"
}
},
- "node_modules/bree": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/bree/-/bree-7.1.5.tgz",
- "integrity": "sha512-YAs4VQDjc6p3NhNNHBkS9NXK4wryeMq7Y/SCMcgFh0cSD4oXk7B9v53/cqzoejdelD30KEliumzrd4awka+YhQ==",
- "dependencies": {
- "@breejs/later": "^4.1.0",
- "boolean": "^3.1.4",
- "combine-errors": "^3.0.3",
- "cron-validate": "^1.4.3",
- "debug": "^4.3.3",
- "human-interval": "^2.0.1",
- "is-string-and-not-blank": "^0.0.2",
- "is-valid-path": "^0.1.1",
- "ms": "^2.1.3",
- "p-wait-for": "3",
- "safe-timers": "^1.1.0"
- },
- "engines": {
- "node": ">= 12.11.0"
- }
- },
- "node_modules/browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
- "dev": true
- },
"node_modules/browserslist": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
- "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
+ "version": "4.21.9",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
+ "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
"dev": true,
"funding": [
{
@@ -4959,13 +6817,17 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001400",
- "electron-to-chromium": "^1.4.251",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.9"
+ "caniuse-lite": "^1.0.30001503",
+ "electron-to-chromium": "^1.4.431",
+ "node-releases": "^2.0.12",
+ "update-browserslist-db": "^1.0.11"
},
"bin": {
"browserslist": "cli.js"
@@ -4983,6 +6845,17 @@
"node-int64": "^0.4.0"
}
},
+ "node_modules/bson": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
+ "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
+ "dependencies": {
+ "buffer": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
@@ -5033,6 +6906,16 @@
"node": ">=4"
}
},
+ "node_modules/buildcheck": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz",
+ "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/bulk-write-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/bulk-write-stream/-/bulk-write-stream-2.0.1.tgz",
@@ -5051,6 +6934,53 @@
"node": ">= 0.8"
}
},
+ "node_modules/cacache": {
+ "version": "15.3.0",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
+ "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
+ "optional": true,
+ "dependencies": {
+ "@npmcli/fs": "^1.0.0",
+ "@npmcli/move-file": "^1.0.1",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "glob": "^7.1.4",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^6.0.0",
+ "minipass": "^3.1.1",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.2",
+ "mkdirp": "^1.0.3",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^8.0.1",
+ "tar": "^6.0.2",
+ "unique-filename": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/cacache/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==",
+ "optional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cacache/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "optional": true
+ },
"node_modules/cacheable-lookup": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz",
@@ -5059,6 +6989,34 @@
"node": ">=10.6.0"
}
},
+ "node_modules/cacheable-request": {
+ "version": "10.2.12",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz",
+ "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==",
+ "dependencies": {
+ "@types/http-cache-semantics": "^4.0.1",
+ "get-stream": "^6.0.1",
+ "http-cache-semantics": "^4.1.1",
+ "keyv": "^4.5.2",
+ "mimic-response": "^4.0.0",
+ "normalize-url": "^8.0.0",
+ "responselike": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cachedir": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz",
@@ -5099,26 +7057,51 @@
}
},
"node_modules/camelcase-keys": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
- "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz",
+ "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==",
"dev": true,
"dependencies": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
+ "camelcase": "^6.3.0",
+ "map-obj": "^4.1.0",
+ "quick-lru": "^5.1.1",
+ "type-fest": "^1.2.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-keys/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-keys/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001441",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz",
- "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==",
+ "version": "1.0.30001513",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001513.tgz",
+ "integrity": "sha512-pnjGJo7SOOjAGytZZ203Em95MRM8Cr6jhCXNF/FAXTpCTRTECnqQWLpiTRqrFtdYcth8hf4WECUpkezuYsMVww==",
"dev": true,
"funding": [
{
@@ -5128,6 +7111,10 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
]
},
@@ -5135,7 +7122,7 @@
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
- "devOptional": true
+ "dev": true
},
"node_modules/chalk": {
"version": "2.4.2",
@@ -5174,19 +7161,28 @@
"integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A=="
},
"node_modules/chart.js": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.6.2.tgz",
- "integrity": "sha512-Xz7f/fgtVltfQYWq0zL1Xbv7N2inpG+B54p3D5FSvpCdy3sM+oZhbqa42eNuYXltaVvajgX5UpKCU2GeeJIgxg==",
- "dev": true
- },
- "node_modules/chartjs-adapter-dayjs": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs/-/chartjs-adapter-dayjs-1.0.0.tgz",
- "integrity": "sha512-EnbVqTJGFKLpg1TROLdCEufrzbmIa2oeLGx8O2Wdjw2EoMudoOo9+YFu+6CM0Z0hQ/v3yq/e/Y6efQMu22n8Jg==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.2.1.tgz",
+ "integrity": "sha512-6YbpQ0nt3NovAgOzbkSSeeAQu/3za1319dPUQTXn9WcOpywM8rGKxJHrhS8V8xEkAlk8YhEfjbuAPfUyp6jIsw==",
"dev": true,
+ "dependencies": {
+ "@kurkle/color": "^0.3.0"
+ },
+ "engines": {
+ "pnpm": "^7.0.0"
+ }
+ },
+ "node_modules/chartjs-adapter-dayjs-4": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs-4/-/chartjs-adapter-dayjs-4-1.0.4.tgz",
+ "integrity": "sha512-yy9BAYW4aNzPVrCWZetbILegTRb7HokhgospPoC3b5iZ5qdlqNmXts2KdSp6AqnjkPAp/YWyHDxLvIvwt5x81w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
"peerDependencies": {
- "chart.js": ">= 2.8.0 < 3",
- "dayjs": "^1.8.15"
+ "chart.js": ">=4.0.1",
+ "dayjs": "^1.9.7"
}
},
"node_modules/check-more-types": {
@@ -5292,9 +7288,9 @@
"integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
},
"node_modules/ci-info": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz",
- "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==",
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+ "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
"dev": true,
"funding": [
{
@@ -5307,16 +7303,16 @@
}
},
"node_modules/cjs-module-lexer": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
- "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
"dev": true
},
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">=6"
}
@@ -5365,25 +7361,24 @@
}
},
"node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dependencies": {
"string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
+ "strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/clone-regexp": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz",
- "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==",
- "dev": true,
- "dependencies": {
- "is-regexp": "^2.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=12"
+ }
+ },
+ "node_modules/cluster-key-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz",
+ "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==",
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/co": {
@@ -5396,19 +7391,10 @@
"node": ">= 0.12.0"
}
},
- "node_modules/code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
"dev": true
},
"node_modules/color-convert": {
@@ -5441,20 +7427,11 @@
"dev": true
},
"node_modules/colorette": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"dev": true
},
- "node_modules/combine-errors": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz",
- "integrity": "sha512-C8ikRNRMygCwaTx+Ek3Yr+OuZzgZjduCOfSQBjbM8V3MfgcjSTeto/GXP6PAwKvJz/v15b7GHZvx5rOlczFw/Q==",
- "dependencies": {
- "custom-error-instance": "2.1.1",
- "lodash.uniqby": "4.5.0"
- }
- },
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -5472,9 +7449,9 @@
"integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
},
"node_modules/commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
"dev": true,
"engines": {
"node": ">= 6"
@@ -5552,6 +7529,29 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
+ "node_modules/compressjs": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/compressjs/-/compressjs-1.0.3.tgz",
+ "integrity": "sha512-jpKJjBTretQACTGLNuvnozP1JdP2ZLrjdGdBgk/tz1VfXlUcBhhSZW6vEsuThmeot/yjvSrPQKEgfF3X2Lpi8Q==",
+ "dependencies": {
+ "amdefine": "~1.0.0",
+ "commander": "~2.8.1"
+ },
+ "bin": {
+ "compressjs": "bin/compressjs"
+ }
+ },
+ "node_modules/compressjs/node_modules/commander": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
+ "integrity": "sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ==",
+ "dependencies": {
+ "graceful-readlink": ">= 1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6.x"
+ }
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -5641,20 +7641,6 @@
"node": ">=8"
}
},
- "node_modules/concurrently/node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/concurrently/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -5697,33 +7683,6 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/concurrently/node_modules/yargs": {
- "version": "17.6.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz",
- "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==",
- "dev": true,
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/concurrently/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
@@ -5760,9 +7719,9 @@
]
},
"node_modules/content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"engines": {
"node": ">= 0.6"
}
@@ -5798,12 +7757,12 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.27.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz",
- "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==",
+ "version": "3.31.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz",
+ "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==",
"dev": true,
"dependencies": {
- "browserslist": "^4.21.4"
+ "browserslist": "^4.21.9"
},
"funding": {
"type": "opencollective",
@@ -5813,8 +7772,7 @@
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
- "devOptional": true
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
},
"node_modules/cors": {
"version": "2.8.5",
@@ -5829,27 +7787,53 @@
}
},
"node_modules/cosmiconfig": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
+ "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
"dev": true,
"dependencies": {
- "@types/parse-json": "^4.0.0",
"import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
"parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
+ "path-type": "^4.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
}
},
- "node_modules/cron-validate": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/cron-validate/-/cron-validate-1.4.5.tgz",
- "integrity": "sha512-nKlOJEnYKudMn/aNyNH8xxWczlfpaazfWV32Pcx/2St51r2bxWbGhZD7uwzMcRhunA/ZNL+Htm/i0792Z59UMQ==",
+ "node_modules/cpu-features": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.8.tgz",
+ "integrity": "sha512-BbHBvtYhUhksqTjr6bhNOjGgMnhwhGTQmOoZGD+K7BCaQDCuZl/Ve1ZxUSMRwVC4D/rkCPQ2MAIeYzrWyK7eEg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
"dependencies": {
- "yup": "0.32.9"
+ "buildcheck": "~0.0.6",
+ "nan": "^2.17.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/croner": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/croner/-/croner-6.0.6.tgz",
+ "integrity": "sha512-4wTLNkKefW5WzAaFdOIUK0UH94okjVObJqSfoKbAYXsUNxmU2hq8nQfBrmOjbqd0z6A5cTGbtgZFIXRg6hYEcA==",
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/cronstrue": {
+ "version": "2.24.0",
+ "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.24.0.tgz",
+ "integrity": "sha512-A1of24mAGz+OWrdGsxT9BOnDqn2ba182hie8Jx0UcEC2t+ZKtfAJxaFntKUgR7sIisU297fgHBSlNhMIfvAkSA==",
+ "dev": true,
+ "bin": {
+ "cronstrue": "bin/cli.js"
}
},
"node_modules/cross-env": {
@@ -5874,7 +7858,6 @@
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -5928,6 +7911,19 @@
"url": "https://github.com/sponsors/fb55"
}
},
+ "node_modules/css-tree": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
"node_modules/css-unit-converter": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz",
@@ -5956,45 +7952,16 @@
"node": ">=4"
}
},
- "node_modules/cssom": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
- "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
- "dev": true
- },
- "node_modules/cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
- "dev": true,
- "dependencies": {
- "cssom": "~0.3.6"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cssstyle/node_modules/cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
- },
"node_modules/csstype": {
- "version": "2.6.21",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
- "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
"dev": true
},
- "node_modules/custom-error-instance": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz",
- "integrity": "sha512-p6JFxJc3M4OTD2li2qaHkDCw9SfMw82Ldr6OC9Je1aXiGfhx2W8p3GaoeaGrPJTUN9NirTM/KTxHWMUdR1rsUg=="
- },
"node_modules/cypress": {
- "version": "10.11.0",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz",
- "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==",
+ "version": "12.17.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.0.tgz",
+ "integrity": "sha512-nq0ug8Zrjq/2khHU1PTNxg+3/n1oqtmAFCxwQhS6QzkQ4mR6RLitX+cGIOuIMfnEbDAtVub0hZh661FOA16JxA==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -6012,10 +7979,10 @@
"check-more-types": "^2.24.0",
"cli-cursor": "^3.1.0",
"cli-table3": "~0.6.1",
- "commander": "^5.1.0",
+ "commander": "^6.2.1",
"common-tags": "^1.8.0",
"dayjs": "^1.10.4",
- "debug": "^4.3.2",
+ "debug": "^4.3.4",
"enquirer": "^2.3.6",
"eventemitter2": "6.4.7",
"execa": "4.1.0",
@@ -6030,12 +7997,12 @@
"listr2": "^3.8.3",
"lodash": "^4.17.21",
"log-symbols": "^4.0.0",
- "minimist": "^1.2.6",
+ "minimist": "^1.2.8",
"ospath": "^1.2.2",
"pretty-bytes": "^5.6.0",
"proxy-from-env": "1.0.0",
"request-progress": "^3.0.0",
- "semver": "^7.3.2",
+ "semver": "^7.5.3",
"supports-color": "^8.1.1",
"tmp": "~0.2.1",
"untildify": "^4.0.0",
@@ -6045,13 +8012,13 @@
"cypress": "bin/cypress"
},
"engines": {
- "node": ">=12.0.0"
+ "node": "^14.0.0 || ^16.0.0 || >=18.0.0"
}
},
"node_modules/cypress/node_modules/@types/node": {
- "version": "14.18.36",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
- "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==",
+ "version": "14.18.53",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz",
+ "integrity": "sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==",
"dev": true
},
"node_modules/cypress/node_modules/ansi-styles": {
@@ -6124,33 +8091,6 @@
"node": ">=8"
}
},
- "node_modules/cypress/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/cypress/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/cypress/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -6166,17 +8106,11 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/cypress/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/dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"assert-plus": "^1.0.0"
},
@@ -6184,25 +8118,14 @@
"node": ">=0.10"
}
},
- "node_modules/data-urls": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
- "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "node_modules/date-fns": {
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
"dev": true,
"dependencies": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
+ "@babel/runtime": "^7.21.0"
},
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/date-fns": {
- "version": "2.29.3",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
- "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==",
- "dev": true,
"engines": {
"node": ">=0.11"
},
@@ -6212,9 +8135,9 @@
}
},
"node_modules/dayjs": {
- "version": "1.11.7",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
- "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+ "version": "1.11.9",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz",
+ "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA=="
},
"node_modules/debug": {
"version": "4.3.4",
@@ -6232,18 +8155,16 @@
}
}
},
- "node_modules/debug/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/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz",
+ "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/decamelize-keys": {
@@ -6262,6 +8183,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/decamelize-keys/node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/decamelize-keys/node_modules/map-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
@@ -6271,11 +8201,30 @@
"node": ">=0.10.0"
}
},
- "node_modules/decimal.js": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
- "dev": true
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/dedent": {
"version": "0.7.0",
@@ -6290,14 +8239,22 @@
"dev": true
},
"node_modules/deepmerge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
- "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/define-lazy-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
@@ -6307,9 +8264,9 @@
}
},
"node_modules/define-properties": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
- "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+ "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
"dependencies": {
"has-property-descriptors": "^1.0.0",
"object-keys": "^1.1.1"
@@ -6396,18 +8353,18 @@
"integrity": "sha512-nMNZG0zfMgmdv8S5O0TM5cpwNbGKRGPCxVsr0SmA3NZZy9CYBbuNLL0PD3Acx9e5LIUgwONXtM9kM6RlawPxEQ=="
},
"node_modules/diff-sequences": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
- "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
+ "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
"dev": true,
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/dijkstrajs": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
- "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+ "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==",
"dev": true
},
"node_modules/dir-glob": {
@@ -6464,27 +8421,6 @@
}
]
},
- "node_modules/domexception": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
- "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
- "dev": true,
- "dependencies": {
- "webidl-conversions": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/domexception/node_modules/webidl-conversions": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
- "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/domhandler": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
@@ -6499,19 +8435,33 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.5.tgz",
+ "integrity": "sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==",
+ "dev": true
+ },
"node_modules/domutils": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
- "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
- "domhandler": "^5.0.1"
+ "domhandler": "^5.0.3"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
+ "node_modules/dotenv": {
+ "version": "16.0.3",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
+ "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/duplexify": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
@@ -6523,11 +8473,16 @@
"stream-shift": "^1.0.0"
}
},
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ },
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
@@ -6547,18 +8502,18 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.284",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
- "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
+ "version": "1.4.454",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.454.tgz",
+ "integrity": "sha512-pmf1rbAStw8UEQ0sr2cdJtWl48ZMuPD9Sto8HVQOq9vx9j2WgDEN6lYoaqFvqEHYOmGA9oRGn7LqWI9ta0YugQ==",
"dev": true
},
"node_modules/emittery": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
- "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sindresorhus/emittery?sponsor=1"
@@ -6583,6 +8538,15 @@
"node": ">= 0.8"
}
},
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
"node_modules/end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -6592,9 +8556,9 @@
}
},
"node_modules/engine.io": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz",
- "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==",
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz",
+ "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==",
"dependencies": {
"@types/cookie": "^0.4.1",
"@types/cors": "^2.8.12",
@@ -6605,28 +8569,28 @@
"cors": "~2.8.5",
"debug": "~4.3.1",
"engine.io-parser": "~5.0.3",
- "ws": "~8.2.3"
+ "ws": "~8.11.0"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/engine.io-client": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz",
- "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==",
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz",
+ "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.1",
"engine.io-parser": "~5.0.3",
- "ws": "~8.2.3",
+ "ws": "~8.11.0",
"xmlhttprequest-ssl": "~2.0.0"
}
},
"node_modules/engine.io-client/node_modules/ws": {
- "version": "8.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
- "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+ "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
"engines": {
"node": ">=10.0.0"
},
@@ -6644,17 +8608,17 @@
}
},
"node_modules/engine.io-parser": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
- "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==",
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz",
+ "integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/engine.io/node_modules/ws": {
- "version": "8.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
- "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+ "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
"engines": {
"node": ">=10.0.0"
},
@@ -6684,9 +8648,9 @@
}
},
"node_modules/entities": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
- "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"engines": {
"node": ">=0.12"
},
@@ -6703,6 +8667,12 @@
"node": ">=6"
}
},
+ "node_modules/err-code": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "optional": true
+ },
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -6713,35 +8683,44 @@
}
},
"node_modules/es-abstract": {
- "version": "1.20.5",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
- "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
+ "version": "1.21.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
+ "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==",
"dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
"es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
"function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.1.3",
+ "get-intrinsic": "^1.2.0",
"get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
"gopd": "^1.0.1",
"has": "^1.0.3",
"has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
- "internal-slot": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
"is-callable": "^1.2.7",
"is-negative-zero": "^2.0.2",
"is-regex": "^1.1.4",
"is-shared-array-buffer": "^1.0.2",
"is-string": "^1.0.7",
+ "is-typed-array": "^1.1.10",
"is-weakref": "^1.0.2",
- "object-inspect": "^1.12.2",
+ "object-inspect": "^1.12.3",
"object-keys": "^1.1.1",
"object.assign": "^4.1.4",
"regexp.prototype.flags": "^1.4.3",
"safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.7",
"string.prototype.trimend": "^1.0.6",
"string.prototype.trimstart": "^1.0.6",
- "unbox-primitive": "^1.0.2"
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.9"
},
"engines": {
"node": ">= 0.4"
@@ -6770,6 +8749,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
+ "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es-to-primitive": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
@@ -6787,9 +8779,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
- "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz",
+ "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==",
"dev": true,
"hasInstallScript": true,
"bin": {
@@ -6799,348 +8791,28 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/android-arm": "0.15.18",
- "@esbuild/linux-loong64": "0.15.18",
- "esbuild-android-64": "0.15.18",
- "esbuild-android-arm64": "0.15.18",
- "esbuild-darwin-64": "0.15.18",
- "esbuild-darwin-arm64": "0.15.18",
- "esbuild-freebsd-64": "0.15.18",
- "esbuild-freebsd-arm64": "0.15.18",
- "esbuild-linux-32": "0.15.18",
- "esbuild-linux-64": "0.15.18",
- "esbuild-linux-arm": "0.15.18",
- "esbuild-linux-arm64": "0.15.18",
- "esbuild-linux-mips64le": "0.15.18",
- "esbuild-linux-ppc64le": "0.15.18",
- "esbuild-linux-riscv64": "0.15.18",
- "esbuild-linux-s390x": "0.15.18",
- "esbuild-netbsd-64": "0.15.18",
- "esbuild-openbsd-64": "0.15.18",
- "esbuild-sunos-64": "0.15.18",
- "esbuild-windows-32": "0.15.18",
- "esbuild-windows-64": "0.15.18",
- "esbuild-windows-arm64": "0.15.18"
- }
- },
- "node_modules/esbuild-android-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
- "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-android-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
- "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
- "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
- "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
- "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
- "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-32": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
- "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
- "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-arm": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
- "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
- "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-mips64le": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
- "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-ppc64le": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
- "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-riscv64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
- "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-s390x": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
- "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-netbsd-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
- "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-openbsd-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
- "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-sunos-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
- "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-32": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
- "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
- "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
- "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
+ "@esbuild/android-arm": "0.18.11",
+ "@esbuild/android-arm64": "0.18.11",
+ "@esbuild/android-x64": "0.18.11",
+ "@esbuild/darwin-arm64": "0.18.11",
+ "@esbuild/darwin-x64": "0.18.11",
+ "@esbuild/freebsd-arm64": "0.18.11",
+ "@esbuild/freebsd-x64": "0.18.11",
+ "@esbuild/linux-arm": "0.18.11",
+ "@esbuild/linux-arm64": "0.18.11",
+ "@esbuild/linux-ia32": "0.18.11",
+ "@esbuild/linux-loong64": "0.18.11",
+ "@esbuild/linux-mips64el": "0.18.11",
+ "@esbuild/linux-ppc64": "0.18.11",
+ "@esbuild/linux-riscv64": "0.18.11",
+ "@esbuild/linux-s390x": "0.18.11",
+ "@esbuild/linux-x64": "0.18.11",
+ "@esbuild/netbsd-x64": "0.18.11",
+ "@esbuild/openbsd-x64": "0.18.11",
+ "@esbuild/sunos-x64": "0.18.11",
+ "@esbuild/win32-arm64": "0.18.11",
+ "@esbuild/win32-ia32": "0.18.11",
+ "@esbuild/win32-x64": "0.18.11"
}
},
"node_modules/escalade": {
@@ -7165,88 +8837,6 @@
"node": ">=0.8.0"
}
},
- "node_modules/escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
- "dev": true,
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=6.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/escodegen/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/escodegen/node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dev": true,
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/eslint": {
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz",
@@ -7319,39 +8909,6 @@
"eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
}
},
- "node_modules/eslint-plugin-vue/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/eslint-plugin-vue/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-plugin-vue/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/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -7454,9 +9011,9 @@
}
},
"node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
+ "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
@@ -7464,15 +9021,21 @@
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+ "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/estraverse": {
@@ -7485,9 +9048,9 @@
}
},
"node_modules/eslint/node_modules/globals": {
- "version": "13.19.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
- "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -7541,14 +9104,14 @@
}
},
"node_modules/espree": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
- "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz",
+ "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==",
"dev": true,
"dependencies": {
- "acorn": "^8.8.0",
+ "acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.3.0"
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -7558,12 +9121,15 @@
}
},
"node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+ "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/esprima": {
@@ -7580,9 +9146,9 @@
}
},
"node_modules/esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"dev": true,
"dependencies": {
"estraverse": "^5.1.0"
@@ -7653,6 +9219,12 @@
"node": ">= 0.6"
}
},
+ "node_modules/event-to-promise": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.7.0.tgz",
+ "integrity": "sha512-VOBBfyaADfe378ZzG0tgkzmsvzUyeU5arehrFzNRt5yaASUDshgctTwSrPI17ocAwR3+YftsxRClHF+GBKFByQ==",
+ "deprecated": "Use promise-toolbox/fromEvent instead"
+ },
"node_modules/eventemitter2": {
"version": "6.4.7",
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
@@ -7690,18 +9262,6 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/execall": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz",
- "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==",
- "dev": true,
- "dependencies": {
- "clone-regexp": "^2.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/executable": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
@@ -7724,18 +9284,20 @@
}
},
"node_modules/expect": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
- "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.1.tgz",
+ "integrity": "sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "jest-matcher-utils": "^27.5.1",
- "jest-message-util": "^27.5.1"
+ "@jest/expect-utils": "^29.6.1",
+ "@types/node": "*",
+ "jest-get-type": "^29.4.3",
+ "jest-matcher-utils": "^29.6.1",
+ "jest-message-util": "^29.6.1",
+ "jest-util": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/express": {
@@ -7841,7 +9403,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "devOptional": true
+ "dev": true
},
"node_modules/extract-zip": {
"version": "2.0.1",
@@ -7867,7 +9429,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
- "devOptional": true,
+ "dev": true,
"engines": [
"node >=0.6.0"
]
@@ -7876,12 +9438,12 @@
"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==",
- "devOptional": true
+ "dev": true
},
"node_modules/fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz",
+ "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -7910,7 +9472,7 @@
"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==",
- "devOptional": true
+ "dev": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
@@ -7918,6 +9480,28 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
+ "node_modules/fast-xml-parser": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
+ "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==",
+ "funding": [
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "optional": true,
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
@@ -8108,11 +9692,45 @@
}
}
},
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
+ "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
- "devOptional": true,
+ "dev": true,
"engines": {
"node": "*"
}
@@ -8130,6 +9748,14 @@
"node": ">= 6"
}
},
+ "node_modules/form-data-encoder": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
+ "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
+ "engines": {
+ "node": ">= 14.17"
+ }
+ },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -8156,10 +9782,16 @@
"readable-stream": "^2.0.0"
}
},
+ "node_modules/from2/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
"node_modules/from2/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dev": true,
"dependencies": {
"core-util-is": "~1.0.0",
@@ -8206,22 +9838,6 @@
"node": ">= 8"
}
},
- "node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fs-minipass/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -8277,6 +9893,33 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/gamedig": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.0.6.tgz",
+ "integrity": "sha512-h0k9n/e5vNrd9Mh2wyFUp2Vo7ABWbDkdBxKC6FNJLOZiU5d9Z29bntGeYbXtOkcRWoV6Q63wSAJ3jLWxYQkpZw==",
+ "dependencies": {
+ "cheerio": "^1.0.0-rc.10",
+ "compressjs": "^1.0.2",
+ "gbxremote": "^0.2.1",
+ "got": "^12.0.3",
+ "iconv-lite": "^0.6.3",
+ "long": "^5.2.0",
+ "minimist": "^1.2.6",
+ "punycode": "^2.1.1",
+ "varint": "^6.0.0"
+ },
+ "bin": {
+ "gamedig": "bin/gamedig.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/gamedig/node_modules/long": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
+ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
+ },
"node_modules/gauge": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
@@ -8296,6 +9939,21 @@
"node": ">=10"
}
},
+ "node_modules/gbxremote": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/gbxremote/-/gbxremote-0.2.1.tgz",
+ "integrity": "sha512-SMehu6Y6ndq2Qgp9VxAb8Np3f+UUD+RWoW2SAMaxzGS96rWXyr4T1GGkecO0HHtxeH1m7pEh4FJWB8a/6aM2XQ==",
+ "dependencies": {
+ "any-promise": "^1.1.0",
+ "barse": "~0.4.2",
+ "event-to-promise": "^0.7.0",
+ "string-to-stream": "^1.0.1",
+ "xmlrpc": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/generate-function": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
@@ -8304,6 +9962,14 @@
"is-property": "^1.0.2"
}
},
+ "node_modules/generic-pool": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz",
+ "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -8322,12 +9988,13 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
- "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
"dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
+ "has-proto": "^1.0.1",
"has-symbols": "^1.0.3"
},
"funding": {
@@ -8338,23 +10005,10 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true,
"engines": {
"node": ">=8.0.0"
}
},
- "node_modules/get-stdin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
- "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/get-stream": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
@@ -8386,9 +10040,9 @@
}
},
"node_modules/getopts": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz",
- "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA=="
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz",
+ "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA=="
},
"node_modules/getos": {
"version": "3.2.1",
@@ -8403,7 +10057,7 @@
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"assert-plus": "^1.0.0"
}
@@ -8558,35 +10212,60 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "devOptional": true
- },
- "node_modules/har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
- "optional": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "deprecated": "this library is no longer supported",
- "optional": true,
+ "node_modules/got": {
+ "version": "12.6.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz",
+ "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==",
"dependencies": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
+ "@sindresorhus/is": "^5.2.0",
+ "@szmarczak/http-timer": "^5.0.1",
+ "cacheable-lookup": "^7.0.0",
+ "cacheable-request": "^10.2.8",
+ "decompress-response": "^6.0.0",
+ "form-data-encoder": "^2.1.2",
+ "get-stream": "^6.0.1",
+ "http2-wrapper": "^2.1.10",
+ "lowercase-keys": "^3.0.0",
+ "p-cancelable": "^3.0.0",
+ "responselike": "^3.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
}
},
+ "node_modules/got/node_modules/cacheable-lookup": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
+ "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/got/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "devOptional": true
+ },
+ "node_modules/graceful-readlink": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+ "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w=="
+ },
"node_modules/hard-rejection": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
@@ -8635,6 +10314,17 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
@@ -8710,18 +10400,6 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
- "node_modules/html-encoding-sniffer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
- "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
- "dev": true,
- "dependencies": {
- "whatwg-encoding": "^1.0.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -8729,9 +10407,9 @@
"dev": true
},
"node_modules/html-tags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
- "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
"dev": true,
"engines": {
"node": ">=8"
@@ -8741,9 +10419,9 @@
}
},
"node_modules/htmlparser2": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
- "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
@@ -8753,11 +10431,16 @@
],
"dependencies": {
"domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
+ "domhandler": "^5.0.3",
"domutils": "^3.0.1",
- "entities": "^4.3.0"
+ "entities": "^4.4.0"
}
},
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
+ },
"node_modules/http-errors": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
@@ -8774,9 +10457,9 @@
}
},
"node_modules/http-graceful-shutdown": {
- "version": "3.1.12",
- "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.12.tgz",
- "integrity": "sha512-z3mH1HUwRESrauPjvjH5QuH2Ce4uLlWonPFgZnwAyxIFYROxIMcNNWwNltN+s8fHF/aGlsfQDOICHLXsabK43w==",
+ "version": "3.1.13",
+ "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.13.tgz",
+ "integrity": "sha512-Ci5LRufQ8AtrQ1U26AevS8QoMXDOhnAHCJI3eZu1com7mZGHxREmw3dNj85ftpQokQCvak8nI2pnFS8zyM1M+Q==",
"dependencies": {
"debug": "^4.3.4"
},
@@ -8811,6 +10494,18 @@
"node": ">=0.10"
}
},
+ "node_modules/http2-wrapper": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz",
+ "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==",
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
"node_modules/https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
@@ -8823,14 +10518,6 @@
"node": ">= 6"
}
},
- "node_modules/human-interval": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/human-interval/-/human-interval-2.0.1.tgz",
- "integrity": "sha512-r4Aotzf+OtKIGQCB3odUowy4GfUDTy3aTWTfLd7ZF2gBCy3XW3v/dJLRefZnOFFnjqs5B1TypvS8WarpBkYUNQ==",
- "dependencies": {
- "numbered": "^1.1.0"
- }
- },
"node_modules/human-signals": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
@@ -8840,10 +10527,19 @@
"node": ">=8.12.0"
}
},
+ "node_modules/humanize-ms": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "optional": true,
+ "dependencies": {
+ "ms": "^2.0.0"
+ }
+ },
"node_modules/hyperid": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.0.1.tgz",
- "integrity": "sha512-I+tl7TS5nsoVhkxqX1rS3Qmqlq44eoPUcgPthW8v3IW8CvWL7lwtd6HQbkDUMrBKJTG0vgEaRsjT35imW/D+9Q==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.1.1.tgz",
+ "integrity": "sha512-RveV33kIksycSf7HLkq1sHB5wW0OwuX8ot8MYnY++gaaPXGFfKpBncHrAWxdpuEeRlazUMGWefwP1w6o6GaumA==",
"dev": true,
"dependencies": {
"uuid": "^8.3.2",
@@ -8937,7 +10633,7 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">=0.8.19"
}
@@ -8946,11 +10642,17 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">=8"
}
},
+ "node_modules/infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "optional": true
+ },
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -8975,11 +10677,11 @@
}
},
"node_modules/internal-slot": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
- "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
+ "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
"dependencies": {
- "get-intrinsic": "^1.1.3",
+ "get-intrinsic": "^1.2.0",
"has": "^1.0.3",
"side-channel": "^1.0.4"
},
@@ -9008,6 +10710,19 @@
"node": ">= 0.10"
}
},
+ "node_modules/is-array-buffer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+ "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -9076,9 +10791,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
+ "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
"dependencies": {
"has": "^1.0.3"
},
@@ -9168,35 +10883,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-invalid-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz",
- "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==",
- "dependencies": {
- "is-glob": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-invalid-path/node_modules/is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-invalid-path/node_modules/is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==",
- "dependencies": {
- "is-extglob": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/is-lambda": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
+ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
+ "optional": true
},
"node_modules/is-negative-zero": {
"version": "2.0.2",
@@ -9259,12 +10950,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-potential-custom-element-name": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
- },
"node_modules/is-property": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
@@ -9285,15 +10970,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-regexp": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz",
- "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/is-shared-array-buffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
@@ -9331,22 +11007,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-string-and-not-blank": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/is-string-and-not-blank/-/is-string-and-not-blank-0.0.2.tgz",
- "integrity": "sha512-FyPGAbNVyZpTeDCTXnzuwbu9/WpNXbCfbHXLpCRpN4GANhS00eEIP5Ef+k5HYSNIzIhdN9zRDoBj6unscECvtQ==",
- "dependencies": {
- "is-string-blank": "^1.0.1"
- },
- "engines": {
- "node": ">=6.4.0"
- }
- },
- "node_modules/is-string-blank": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-string-blank/-/is-string-blank-1.0.1.tgz",
- "integrity": "sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw=="
- },
"node_modules/is-symbol": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
@@ -9361,11 +11021,29 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-typed-array": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+ "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
- "devOptional": true
+ "dev": true
},
"node_modules/is-unicode-supported": {
"version": "0.1.0",
@@ -9379,17 +11057,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-valid-path": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz",
- "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==",
- "dependencies": {
- "is-invalid-path": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-weakref": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
@@ -9413,10 +11080,9 @@
}
},
"node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "devOptional": true
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
},
"node_modules/isemail": {
"version": "3.2.0",
@@ -9432,14 +11098,13 @@
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "devOptional": true
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"node_modules/isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
- "devOptional": true
+ "dev": true
},
"node_modules/istanbul-lib-coverage": {
"version": "3.2.0",
@@ -9466,6 +11131,15 @@
"node": ">=8"
}
},
+ "node_modules/istanbul-lib-instrument/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/istanbul-lib-report": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
@@ -9528,21 +11202,39 @@
"node": ">=8"
}
},
+ "node_modules/jackspeak": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz",
+ "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/jest": {
- "version": "27.2.5",
- "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.5.tgz",
- "integrity": "sha512-vDMzXcpQN4Ycaqu+vO7LX8pZwNNoKMhc+gSp6q1D8S6ftRk8gNW8cni3YFxknP95jxzQo23Lul0BI2FrWgnwYQ==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.1.tgz",
+ "integrity": "sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw==",
"dev": true,
"dependencies": {
- "@jest/core": "^27.2.5",
+ "@jest/core": "^29.6.1",
+ "@jest/types": "^29.6.1",
"import-local": "^3.0.2",
- "jest-cli": "^27.2.5"
+ "jest-cli": "^29.6.1"
},
"bin": {
"jest": "bin/jest.js"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
@@ -9554,17 +11246,16 @@
}
},
"node_modules/jest-changed-files": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
- "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
+ "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
"execa": "^5.0.0",
- "throat": "^6.0.1"
+ "p-limit": "^3.1.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-changed-files/node_modules/execa": {
@@ -9612,33 +11303,34 @@
}
},
"node_modules/jest-circus": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
- "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.1.tgz",
+ "integrity": "sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ==",
"dev": true,
"dependencies": {
- "@jest/environment": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/environment": "^29.6.1",
+ "@jest/expect": "^29.6.1",
+ "@jest/test-result": "^29.6.1",
+ "@jest/types": "^29.6.1",
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
"dedent": "^0.7.0",
- "expect": "^27.5.1",
"is-generator-fn": "^2.0.0",
- "jest-each": "^27.5.1",
- "jest-matcher-utils": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-runtime": "^27.5.1",
- "jest-snapshot": "^27.5.1",
- "jest-util": "^27.5.1",
- "pretty-format": "^27.5.1",
+ "jest-each": "^29.6.1",
+ "jest-matcher-utils": "^29.6.1",
+ "jest-message-util": "^29.6.1",
+ "jest-runtime": "^29.6.1",
+ "jest-snapshot": "^29.6.1",
+ "jest-util": "^29.6.1",
+ "p-limit": "^3.1.0",
+ "pretty-format": "^29.6.1",
+ "pure-rand": "^6.0.0",
"slash": "^3.0.0",
- "stack-utils": "^2.0.3",
- "throat": "^6.0.1"
+ "stack-utils": "^2.0.3"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-circus/node_modules/ansi-styles": {
@@ -9712,29 +11404,29 @@
}
},
"node_modules/jest-cli": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
- "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.1.tgz",
+ "integrity": "sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing==",
"dev": true,
"dependencies": {
- "@jest/core": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/core": "^29.6.1",
+ "@jest/test-result": "^29.6.1",
+ "@jest/types": "^29.6.1",
"chalk": "^4.0.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
"import-local": "^3.0.2",
- "jest-config": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-validate": "^27.5.1",
+ "jest-config": "^29.6.1",
+ "jest-util": "^29.6.1",
+ "jest-validate": "^29.6.1",
"prompts": "^2.0.1",
- "yargs": "^16.2.0"
+ "yargs": "^17.3.1"
},
"bin": {
"jest": "bin/jest.js"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
@@ -9816,43 +11508,45 @@
}
},
"node_modules/jest-config": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
- "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.1.tgz",
+ "integrity": "sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.8.0",
- "@jest/test-sequencer": "^27.5.1",
- "@jest/types": "^27.5.1",
- "babel-jest": "^27.5.1",
+ "@babel/core": "^7.11.6",
+ "@jest/test-sequencer": "^29.6.1",
+ "@jest/types": "^29.6.1",
+ "babel-jest": "^29.6.1",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"deepmerge": "^4.2.2",
- "glob": "^7.1.1",
+ "glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-circus": "^27.5.1",
- "jest-environment-jsdom": "^27.5.1",
- "jest-environment-node": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "jest-jasmine2": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-runner": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-validate": "^27.5.1",
+ "jest-circus": "^29.6.1",
+ "jest-environment-node": "^29.6.1",
+ "jest-get-type": "^29.4.3",
+ "jest-regex-util": "^29.4.3",
+ "jest-resolve": "^29.6.1",
+ "jest-runner": "^29.6.1",
+ "jest-util": "^29.6.1",
+ "jest-validate": "^29.6.1",
"micromatch": "^4.0.4",
"parse-json": "^5.2.0",
- "pretty-format": "^27.5.1",
+ "pretty-format": "^29.6.1",
"slash": "^3.0.0",
"strip-json-comments": "^3.1.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
+ "@types/node": "*",
"ts-node": ">=9.0.0"
},
"peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
"ts-node": {
"optional": true
}
@@ -9929,18 +11623,18 @@
}
},
"node_modules/jest-diff": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
- "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz",
+ "integrity": "sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "diff-sequences": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "pretty-format": "^27.5.1"
+ "diff-sequences": "^29.4.3",
+ "jest-get-type": "^29.4.3",
+ "pretty-format": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-diff/node_modules/ansi-styles": {
@@ -10014,31 +11708,31 @@
}
},
"node_modules/jest-docblock": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
- "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
+ "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
"dev": true,
"dependencies": {
"detect-newline": "^3.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-each": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
- "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.1.tgz",
+ "integrity": "sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
+ "@jest/types": "^29.6.1",
"chalk": "^4.0.0",
- "jest-get-type": "^27.5.1",
- "jest-util": "^27.5.1",
- "pretty-format": "^27.5.1"
+ "jest-get-type": "^29.4.3",
+ "jest-util": "^29.6.1",
+ "pretty-format": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-each/node_modules/ansi-styles": {
@@ -10111,200 +11805,83 @@
"node": ">=8"
}
},
- "node_modules/jest-environment-jsdom": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
- "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^27.5.1",
- "@jest/fake-timers": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "jest-mock": "^27.5.1",
- "jest-util": "^27.5.1",
- "jsdom": "^16.6.0"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
"node_modules/jest-environment-node": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
- "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.1.tgz",
+ "integrity": "sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==",
"dev": true,
"dependencies": {
- "@jest/environment": "^27.5.1",
- "@jest/fake-timers": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/environment": "^29.6.1",
+ "@jest/fake-timers": "^29.6.1",
+ "@jest/types": "^29.6.1",
"@types/node": "*",
- "jest-mock": "^27.5.1",
- "jest-util": "^27.5.1"
+ "jest-mock": "^29.6.1",
+ "jest-util": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-get-type": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
- "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
+ "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
"dev": true,
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-haste-map": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
- "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.1.tgz",
+ "integrity": "sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
- "@types/graceful-fs": "^4.1.2",
+ "@jest/types": "^29.6.1",
+ "@types/graceful-fs": "^4.1.3",
"@types/node": "*",
"anymatch": "^3.0.3",
"fb-watchman": "^2.0.0",
"graceful-fs": "^4.2.9",
- "jest-regex-util": "^27.5.1",
- "jest-serializer": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-worker": "^27.5.1",
+ "jest-regex-util": "^29.4.3",
+ "jest-util": "^29.6.1",
+ "jest-worker": "^29.6.1",
"micromatch": "^4.0.4",
- "walker": "^1.0.7"
+ "walker": "^1.0.8"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"optionalDependencies": {
"fsevents": "^2.3.2"
}
},
- "node_modules/jest-jasmine2": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
- "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^27.5.1",
- "@jest/source-map": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "expect": "^27.5.1",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^27.5.1",
- "jest-matcher-utils": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-runtime": "^27.5.1",
- "jest-snapshot": "^27.5.1",
- "jest-util": "^27.5.1",
- "pretty-format": "^27.5.1",
- "throat": "^6.0.1"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/jest-jasmine2/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-jasmine2/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-jasmine2/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-jasmine2/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-jasmine2/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-jasmine2/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jest-leak-detector": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
- "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz",
+ "integrity": "sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ==",
"dev": true,
"dependencies": {
- "jest-get-type": "^27.5.1",
- "pretty-format": "^27.5.1"
+ "jest-get-type": "^29.4.3",
+ "pretty-format": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-matcher-utils": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
- "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz",
+ "integrity": "sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "jest-diff": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "pretty-format": "^27.5.1"
+ "jest-diff": "^29.6.1",
+ "jest-get-type": "^29.4.3",
+ "pretty-format": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-matcher-utils/node_modules/ansi-styles": {
@@ -10378,23 +11955,23 @@
}
},
"node_modules/jest-message-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
- "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.1.tgz",
+ "integrity": "sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@jest/types": "^27.5.1",
+ "@jest/types": "^29.6.1",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"micromatch": "^4.0.4",
- "pretty-format": "^27.5.1",
+ "pretty-format": "^29.6.1",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-message-util/node_modules/ansi-styles": {
@@ -10468,16 +12045,17 @@
}
},
"node_modules/jest-mock": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
- "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.1.tgz",
+ "integrity": "sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
- "@types/node": "*"
+ "@jest/types": "^29.6.1",
+ "@types/node": "*",
+ "jest-util": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-pnp-resolver": {
@@ -10498,47 +12076,45 @@
}
},
"node_modules/jest-regex-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
- "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
+ "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
"dev": true,
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
- "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.1.tgz",
+ "integrity": "sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^27.5.1",
+ "jest-haste-map": "^29.6.1",
"jest-pnp-resolver": "^1.2.2",
- "jest-util": "^27.5.1",
- "jest-validate": "^27.5.1",
+ "jest-util": "^29.6.1",
+ "jest-validate": "^29.6.1",
"resolve": "^1.20.0",
- "resolve.exports": "^1.1.0",
+ "resolve.exports": "^2.0.0",
"slash": "^3.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve-dependencies": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
- "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.1.tgz",
+ "integrity": "sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-snapshot": "^27.5.1"
+ "jest-regex-util": "^29.4.3",
+ "jest-snapshot": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve/node_modules/ansi-styles": {
@@ -10612,35 +12188,35 @@
}
},
"node_modules/jest-runner": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
- "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.1.tgz",
+ "integrity": "sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==",
"dev": true,
"dependencies": {
- "@jest/console": "^27.5.1",
- "@jest/environment": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/console": "^29.6.1",
+ "@jest/environment": "^29.6.1",
+ "@jest/test-result": "^29.6.1",
+ "@jest/transform": "^29.6.1",
+ "@jest/types": "^29.6.1",
"@types/node": "*",
"chalk": "^4.0.0",
- "emittery": "^0.8.1",
+ "emittery": "^0.13.1",
"graceful-fs": "^4.2.9",
- "jest-docblock": "^27.5.1",
- "jest-environment-jsdom": "^27.5.1",
- "jest-environment-node": "^27.5.1",
- "jest-haste-map": "^27.5.1",
- "jest-leak-detector": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-runtime": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-worker": "^27.5.1",
- "source-map-support": "^0.5.6",
- "throat": "^6.0.1"
+ "jest-docblock": "^29.4.3",
+ "jest-environment-node": "^29.6.1",
+ "jest-haste-map": "^29.6.1",
+ "jest-leak-detector": "^29.6.1",
+ "jest-message-util": "^29.6.1",
+ "jest-resolve": "^29.6.1",
+ "jest-runtime": "^29.6.1",
+ "jest-util": "^29.6.1",
+ "jest-watcher": "^29.6.1",
+ "jest-worker": "^29.6.1",
+ "p-limit": "^3.1.0",
+ "source-map-support": "0.5.13"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-runner/node_modules/ansi-styles": {
@@ -10714,36 +12290,36 @@
}
},
"node_modules/jest-runtime": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
- "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.1.tgz",
+ "integrity": "sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ==",
"dev": true,
"dependencies": {
- "@jest/environment": "^27.5.1",
- "@jest/fake-timers": "^27.5.1",
- "@jest/globals": "^27.5.1",
- "@jest/source-map": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/environment": "^29.6.1",
+ "@jest/fake-timers": "^29.6.1",
+ "@jest/globals": "^29.6.1",
+ "@jest/source-map": "^29.6.0",
+ "@jest/test-result": "^29.6.1",
+ "@jest/transform": "^29.6.1",
+ "@jest/types": "^29.6.1",
+ "@types/node": "*",
"chalk": "^4.0.0",
"cjs-module-lexer": "^1.0.0",
"collect-v8-coverage": "^1.0.0",
- "execa": "^5.0.0",
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-mock": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-snapshot": "^27.5.1",
- "jest-util": "^27.5.1",
+ "jest-haste-map": "^29.6.1",
+ "jest-message-util": "^29.6.1",
+ "jest-mock": "^29.6.1",
+ "jest-regex-util": "^29.4.3",
+ "jest-resolve": "^29.6.1",
+ "jest-snapshot": "^29.6.1",
+ "jest-util": "^29.6.1",
"slash": "^3.0.0",
"strip-bom": "^4.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-runtime/node_modules/ansi-styles": {
@@ -10795,41 +12371,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "node_modules/jest-runtime/node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/jest-runtime/node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/jest-runtime/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -10839,15 +12380,6 @@
"node": ">=8"
}
},
- "node_modules/jest-runtime/node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true,
- "engines": {
- "node": ">=10.17.0"
- }
- },
"node_modules/jest-runtime/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -10860,50 +12392,36 @@
"node": ">=8"
}
},
- "node_modules/jest-serializer": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
- "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "graceful-fs": "^4.2.9"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
"node_modules/jest-snapshot": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
- "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.1.tgz",
+ "integrity": "sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.7.2",
+ "@babel/core": "^7.11.6",
"@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-jsx": "^7.7.2",
"@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/traverse": "^7.7.2",
- "@babel/types": "^7.0.0",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/babel__traverse": "^7.0.4",
+ "@babel/types": "^7.3.3",
+ "@jest/expect-utils": "^29.6.1",
+ "@jest/transform": "^29.6.1",
+ "@jest/types": "^29.6.1",
"@types/prettier": "^2.1.5",
"babel-preset-current-node-syntax": "^1.0.0",
"chalk": "^4.0.0",
- "expect": "^27.5.1",
+ "expect": "^29.6.1",
"graceful-fs": "^4.2.9",
- "jest-diff": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "jest-haste-map": "^27.5.1",
- "jest-matcher-utils": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-util": "^27.5.1",
+ "jest-diff": "^29.6.1",
+ "jest-get-type": "^29.4.3",
+ "jest-matcher-utils": "^29.6.1",
+ "jest-message-util": "^29.6.1",
+ "jest-util": "^29.6.1",
"natural-compare": "^1.4.0",
- "pretty-format": "^27.5.1",
- "semver": "^7.3.2"
+ "pretty-format": "^29.6.1",
+ "semver": "^7.5.3"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-snapshot/node_modules/ansi-styles": {
@@ -10964,33 +12482,6 @@
"node": ">=8"
}
},
- "node_modules/jest-snapshot/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jest-snapshot/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/jest-snapshot/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -11003,19 +12494,13 @@
"node": ">=8"
}
},
- "node_modules/jest-snapshot/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/jest-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
- "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz",
+ "integrity": "sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
+ "@jest/types": "^29.6.1",
"@types/node": "*",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
@@ -11023,7 +12508,7 @@
"picomatch": "^2.2.3"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-util/node_modules/ansi-styles": {
@@ -11097,20 +12582,20 @@
}
},
"node_modules/jest-validate": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
- "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz",
+ "integrity": "sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==",
"dev": true,
"dependencies": {
- "@jest/types": "^27.5.1",
+ "@jest/types": "^29.6.1",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
- "jest-get-type": "^27.5.1",
+ "jest-get-type": "^29.4.3",
"leven": "^3.1.0",
- "pretty-format": "^27.5.1"
+ "pretty-format": "^29.6.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-validate/node_modules/ansi-styles": {
@@ -11196,21 +12681,22 @@
}
},
"node_modules/jest-watcher": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
- "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.1.tgz",
+ "integrity": "sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^27.5.1",
- "@jest/types": "^27.5.1",
+ "@jest/test-result": "^29.6.1",
+ "@jest/types": "^29.6.1",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
- "jest-util": "^27.5.1",
+ "emittery": "^0.13.1",
+ "jest-util": "^29.6.1",
"string-length": "^4.0.1"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-watcher/node_modules/ansi-styles": {
@@ -11284,17 +12770,18 @@
}
},
"node_modules/jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz",
+ "integrity": "sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==",
"dev": true,
"dependencies": {
"@types/node": "*",
+ "jest-util": "^29.6.1",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
"engines": {
- "node": ">= 10.13.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-worker/node_modules/has-flag": {
@@ -11338,9 +12825,13 @@
"integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA=="
},
"node_modules/js-sdsl": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz",
- "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw=="
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz",
+ "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/js-sdsl"
+ }
},
"node_modules/js-tokens": {
"version": "4.0.0",
@@ -11369,121 +12860,8 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
- "devOptional": true
- },
- "node_modules/jsdom": {
- "version": "16.7.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
- "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
- "dev": true,
- "dependencies": {
- "abab": "^2.0.5",
- "acorn": "^8.2.4",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.3.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.1",
- "domexception": "^2.0.1",
- "escodegen": "^2.0.0",
- "form-data": "^3.0.0",
- "html-encoding-sniffer": "^2.0.1",
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.0",
- "parse5": "6.0.1",
- "saxes": "^5.0.1",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^4.0.0",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.5.0",
- "ws": "^7.4.6",
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "canvas": "^2.5.0"
- },
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
- }
- },
- "node_modules/jsdom/node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/jsdom/node_modules/form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
- "dev": true,
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/jsdom/node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/jsdom/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"dev": true
},
- "node_modules/jsdom/node_modules/tough-cookie": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
- "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
- "dev": true,
- "dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsdom/node_modules/universalify": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
"node_modules/jsesc": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
@@ -11495,6 +12873,11 @@
"node": ">=6"
}
},
+ "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=="
+ },
"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",
@@ -11505,13 +12888,13 @@
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
- "devOptional": true
+ "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",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "devOptional": true
+ "dev": true
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -11523,7 +12906,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "devOptional": true
+ "dev": true
},
"node_modules/json5": {
"version": "2.2.3",
@@ -11550,9 +12933,9 @@
}
},
"node_modules/jsonwebtoken": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz",
- "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz",
+ "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==",
"dependencies": {
"jws": "^3.2.2",
"lodash": "^4.17.21",
@@ -11564,36 +12947,6 @@
"npm": ">=6"
}
},
- "node_modules/jsonwebtoken/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==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jsonwebtoken/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jsonwebtoken/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/jsprim": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
@@ -11638,6 +12991,14 @@
"resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz",
"integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A=="
},
+ "node_modules/keyv": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz",
+ "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==",
+ "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",
@@ -11657,31 +13018,35 @@
}
},
"node_modules/knex": {
- "version": "0.95.15",
- "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz",
- "integrity": "sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz",
+ "integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==",
"dependencies": {
- "colorette": "2.0.16",
- "commander": "^7.1.0",
- "debug": "4.3.2",
+ "colorette": "2.0.19",
+ "commander": "^9.1.0",
+ "debug": "4.3.4",
"escalade": "^3.1.1",
"esm": "^3.2.25",
- "getopts": "2.2.5",
+ "get-package-type": "^0.1.0",
+ "getopts": "2.3.0",
"interpret": "^2.2.0",
"lodash": "^4.17.21",
"pg-connection-string": "2.5.0",
- "rechoir": "0.7.0",
+ "rechoir": "^0.8.0",
"resolve-from": "^5.0.0",
- "tarn": "^3.0.1",
+ "tarn": "^3.0.2",
"tildify": "2.0.0"
},
"bin": {
"knex": "bin/cli.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
},
"peerDependenciesMeta": {
+ "better-sqlite3": {
+ "optional": true
+ },
"mysql": {
"optional": true
},
@@ -11703,39 +13068,18 @@
}
},
"node_modules/knex/node_modules/colorette": {
- "version": "2.0.16",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
- "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g=="
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
+ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="
},
"node_modules/knex/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"engines": {
- "node": ">= 10"
+ "node": "^12.20.0 || >=14"
}
},
- "node_modules/knex/node_modules/debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/knex/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/knex/node_modules/resolve-from": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
@@ -11745,9 +13089,9 @@
}
},
"node_modules/known-css-properties": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.24.0.tgz",
- "integrity": "sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA==",
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz",
+ "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==",
"dev": true
},
"node_modules/lazy-ass": {
@@ -11839,51 +13183,6 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
- "node_modules/lodash-es": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
- "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
- },
- "node_modules/lodash._baseiteratee": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash._baseiteratee/-/lodash._baseiteratee-4.7.0.tgz",
- "integrity": "sha512-nqB9M+wITz0BX/Q2xg6fQ8mLkyfF7MU7eE+MNBNjTHFKeKaZAPEzEg+E8LWxKWf1DQVflNEn9N49yAuqKh2mWQ==",
- "dependencies": {
- "lodash._stringtopath": "~4.8.0"
- }
- },
- "node_modules/lodash._basetostring": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz",
- "integrity": "sha512-SwcRIbyxnN6CFEEK4K1y+zuApvWdpQdBHM/swxP962s8HIxPO3alBH5t3m/dl+f4CMUug6sJb7Pww8d13/9WSw=="
- },
- "node_modules/lodash._baseuniq": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz",
- "integrity": "sha512-Ja1YevpHZctlI5beLA7oc5KNDhGcPixFhcqSiORHNsp/1QTv7amAXzw+gu4YOvErqVlMVyIJGgtzeepCnnur0A==",
- "dependencies": {
- "lodash._createset": "~4.0.0",
- "lodash._root": "~3.0.0"
- }
- },
- "node_modules/lodash._createset": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz",
- "integrity": "sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA=="
- },
- "node_modules/lodash._root": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
- "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ=="
- },
- "node_modules/lodash._stringtopath": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/lodash._stringtopath/-/lodash._stringtopath-4.8.0.tgz",
- "integrity": "sha512-SXL66C731p0xPDC5LZg4wI5H+dJo/EO4KTqOMwLYCH3+FmmfAKJEZCm6ohGpI+T1xwsDsJCfL4OnhorllvlTPQ==",
- "dependencies": {
- "lodash._basetostring": "~4.12.0"
- }
- },
"node_modules/lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
@@ -11900,36 +13199,6 @@
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
},
- "node_modules/lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
- },
- "node_modules/lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
- },
- "node_modules/lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
- },
- "node_modules/lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
- },
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
- },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -11939,7 +13208,8 @@
"node_modules/lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true
},
"node_modules/lodash.truncate": {
"version": "4.4.2",
@@ -11947,15 +13217,6 @@
"integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
"dev": true
},
- "node_modules/lodash.uniqby": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz",
- "integrity": "sha512-IRt7cfTtHy6f1aRVA5n7kT8rgN3N1nH6MOWLcHfpWG2SH19E3JksLK38MktLxZDhlAjCP9jpIXkOnRXlu6oByQ==",
- "dependencies": {
- "lodash._baseiteratee": "~4.7.0",
- "lodash._baseuniq": "~4.6.0"
- }
- },
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -12129,6 +13390,17 @@
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
+ "node_modules/lowercase-keys": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
+ "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -12139,12 +13411,12 @@
}
},
"node_modules/magic-string": {
- "version": "0.26.7",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
- "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
+ "version": "0.30.1",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz",
+ "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==",
"dev": true,
"dependencies": {
- "sourcemap-codec": "^1.4.8"
+ "@jridgewell/sourcemap-codec": "^1.4.15"
},
"engines": {
"node": ">=12"
@@ -12164,6 +13436,82 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/make-fetch-happen": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
+ "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==",
+ "optional": true,
+ "dependencies": {
+ "agentkeepalive": "^4.1.3",
+ "cacache": "^15.2.0",
+ "http-cache-semantics": "^4.1.0",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^6.0.0",
+ "minipass": "^3.1.3",
+ "minipass-collect": "^1.0.2",
+ "minipass-fetch": "^1.3.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.2",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^6.0.0",
+ "ssri": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "optional": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "optional": true,
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/make-fetch-happen/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==",
+ "optional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "optional": true
+ },
"node_modules/makeerror": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
@@ -12185,6 +13533,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/marked": {
+ "version": "4.2.12",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz",
+ "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==",
+ "dev": true,
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/mathml-tag-names": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
@@ -12195,6 +13555,12 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/mdn-data": {
+ "version": "2.0.30",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
+ "dev": true
+ },
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -12203,36 +13569,42 @@
"node": ">= 0.6"
}
},
+ "node_modules/memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "optional": true
+ },
"node_modules/meow": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
- "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
+ "version": "10.1.5",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz",
+ "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==",
"dev": true,
"dependencies": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize": "^1.2.0",
+ "@types/minimist": "^1.2.2",
+ "camelcase-keys": "^7.0.0",
+ "decamelize": "^5.0.0",
"decamelize-keys": "^1.1.0",
"hard-rejection": "^2.1.0",
"minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
+ "normalize-package-data": "^3.0.2",
+ "read-pkg-up": "^8.0.0",
+ "redent": "^4.0.0",
+ "trim-newlines": "^4.0.2",
+ "type-fest": "^1.2.2",
+ "yargs-parser": "^20.2.9"
},
"engines": {
- "node": ">=10"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/meow/node_modules/type-fest": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
"engines": {
"node": ">=10"
@@ -12327,6 +13699,17 @@
"node": ">=6"
}
},
+ "node_modules/mimic-response": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
+ "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/min-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
@@ -12348,9 +13731,9 @@
}
},
"node_modules/minimist": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
- "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -12370,9 +13753,9 @@
}
},
"node_modules/minipass": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz",
- "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==",
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -12380,6 +13763,71 @@
"node": ">=8"
}
},
+ "node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "optional": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-fetch": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz",
+ "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==",
+ "optional": true,
+ "dependencies": {
+ "minipass": "^3.1.0",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.12"
+ }
+ },
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "optional": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "optional": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+ "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+ "optional": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/minipass/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -12397,17 +13845,6 @@
"node": ">= 8"
}
},
- "node_modules/minizlib/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/minizlib/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -12424,6 +13861,55 @@
"node": ">=10"
}
},
+ "node_modules/mongodb": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz",
+ "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==",
+ "dependencies": {
+ "bson": "^4.7.0",
+ "mongodb-connection-string-url": "^2.5.4",
+ "socks": "^2.7.1"
+ },
+ "engines": {
+ "node": ">=12.9.0"
+ },
+ "optionalDependencies": {
+ "@aws-sdk/credential-providers": "^3.186.0",
+ "saslprep": "^1.0.3"
+ }
+ },
+ "node_modules/mongodb-connection-string-url": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
+ "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
+ "dependencies": {
+ "@types/whatwg-url": "^8.2.1",
+ "whatwg-url": "^11.0.0"
+ }
+ },
+ "node_modules/mongodb-connection-string-url/node_modules/tr46": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+ "dependencies": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/mqemitter": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-4.5.0.tgz",
@@ -12507,9 +13993,9 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/mssql": {
"version": "8.1.4",
@@ -12531,9 +14017,9 @@
}
},
"node_modules/mssql/node_modules/commander": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
- "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==",
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"engines": {
"node": "^12.20.0 || >=14"
}
@@ -12573,40 +14059,41 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/named-placeholders": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
- "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz",
+ "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
"dependencies": {
- "lru-cache": "^4.1.3"
+ "lru-cache": "^7.14.1"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=12.0.0"
}
},
"node_modules/named-placeholders/node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/named-placeholders/node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
- },
- "node_modules/nanoclone": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz",
- "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA=="
+ "node_modules/nan": {
+ "version": "2.17.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
+ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
+ "dev": true,
+ "optional": true
},
"node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true,
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -12634,9 +14121,9 @@
}
},
"node_modules/node-abort-controller": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz",
- "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw=="
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
+ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ=="
},
"node_modules/node-addon-api": {
"version": "4.3.0",
@@ -12652,9 +14139,9 @@
}
},
"node_modules/node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
+ "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -12690,20 +14177,20 @@
}
},
"node_modules/node-gyp": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
- "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz",
+ "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==",
"optional": true,
"dependencies": {
"env-paths": "^2.2.0",
"glob": "^7.1.4",
- "graceful-fs": "^4.2.3",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^9.1.0",
"nopt": "^5.0.0",
- "npmlog": "^4.1.2",
- "request": "^2.88.2",
+ "npmlog": "^6.0.0",
"rimraf": "^3.0.2",
- "semver": "^7.3.2",
- "tar": "^6.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
"which": "^2.0.2"
},
"bin": {
@@ -12713,154 +14200,53 @@
"node": ">= 10.12.0"
}
},
- "node_modules/node-gyp/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/node-gyp/node_modules/aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "optional": true
- },
"node_modules/node-gyp/node_modules/are-we-there-yet": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
- "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
+ "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
"optional": true,
"dependencies": {
"delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/node-gyp/node_modules/gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
+ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
"optional": true,
"dependencies": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "node_modules/node-gyp/node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
- "optional": true,
- "dependencies": {
- "number-is-nan": "^1.0.0"
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/node-gyp/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==",
- "optional": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/node-gyp/node_modules/npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
"optional": true,
"dependencies": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "optional": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/node-gyp/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "optional": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/node-gyp/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "optional": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/node-gyp/node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
- "optional": true,
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/node-gyp/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "optional": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/node-gyp/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "optional": true
- },
"node_modules/node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -12883,11 +14269,29 @@
"integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw=="
},
"node_modules/node-releases": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
- "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
"dev": true
},
+ "node_modules/node-ssh": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-13.1.0.tgz",
+ "integrity": "sha512-GLcw49yFd9+rUpP+FgX6wrF/N90cmuDl2n0i8d3L828b6riRjkb9w3SS+XvviRWbrAhLxuMKywFqxvQDZQ1bug==",
+ "dev": true,
+ "dependencies": {
+ "@types/ssh2": "^1.11.9",
+ "is-stream": "^2.0.0",
+ "make-dir": "^3.1.0",
+ "sb-promise-queue": "^2.1.0",
+ "sb-scandir": "^3.1.0",
+ "shell-escape": "^0.2.0",
+ "ssh2": "^1.11.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/nodemailer": {
"version": "6.6.5",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.5.tgz",
@@ -12925,39 +14329,6 @@
"node": ">=10"
}
},
- "node_modules/normalize-package-data/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/normalize-package-data/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/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/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -12967,11 +14338,16 @@
"node": ">=0.10.0"
}
},
- "node_modules/normalize-selector": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz",
- "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==",
- "dev": true
+ "node_modules/normalize-url": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
+ "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/notp": {
"version": "2.0.3",
@@ -13016,41 +14392,12 @@
}
},
"node_modules/number-allocator": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.12.tgz",
- "integrity": "sha512-sGB0qoQGmKimery9JubBQ9pQUr1V/LixJAk3Ygp7obZf6mpSXime8d7XHEobbIimkdZpgjkNlLt6G7LPEWFYWg==",
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz",
+ "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
"dependencies": {
"debug": "^4.3.1",
- "js-sdsl": "4.1.4"
- }
- },
- "node_modules/number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/numbered": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/numbered/-/numbered-1.1.0.tgz",
- "integrity": "sha512-pv/ue2Odr7IfYOO0byC1KgBI10wo5YDauLhxY6/saNzAdAs0r1SotGCPzzCLNPL0xtrAwWRialLu23AAu9xO1g=="
- },
- "node_modules/nwsapi": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz",
- "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==",
- "dev": true
- },
- "node_modules/oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "optional": true,
- "engines": {
- "node": "*"
+ "js-sdsl": "4.3.0"
}
},
"node_modules/object-assign": {
@@ -13062,9 +14409,9 @@
}
},
"node_modules/object-inspect": {
- "version": "1.12.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
- "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -13137,9 +14484,9 @@
}
},
"node_modules/open": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
- "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
"dependencies": {
"define-lazy-prop": "^2.0.0",
"is-docker": "^2.1.1",
@@ -13153,17 +14500,17 @@
}
},
"node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"dev": true,
"dependencies": {
+ "@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",
- "word-wrap": "^1.2.3"
+ "type-check": "^0.4.0"
},
"engines": {
"node": ">= 0.8.0"
@@ -13175,24 +14522,24 @@
"integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==",
"dev": true
},
- "node_modules/p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "node_modules/p-cancelable": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
+ "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
"engines": {
- "node": ">=4"
+ "node": ">=12.20"
}
},
"node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"dependencies": {
- "p-try": "^2.0.0"
+ "yocto-queue": "^0.1.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -13210,11 +14557,26 @@
"node": ">=8"
}
},
+ "node_modules/p-locate/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/p-map": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"aggregate-error": "^3.0.0"
},
@@ -13225,17 +14587,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-timeout": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
- "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
- "dependencies": {
- "p-finally": "^1.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
@@ -13245,20 +14596,6 @@
"node": ">=6"
}
},
- "node_modules/p-wait-for": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz",
- "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==",
- "dependencies": {
- "p-timeout": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/packet-reader": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
@@ -13357,7 +14694,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -13367,6 +14703,37 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
+ "node_modules/path-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz",
+ "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==",
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/path-scurry/node_modules/minipass": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.1.tgz",
+ "integrity": "sha512-NQ8MCKimInjVlaIqx51RKJJB7mINVkLTJbsZKmto4UAAOC/CWXES8PGaOgoBZyqoUsUA/U3DToGK7GJkkHbjJw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@@ -13391,7 +14758,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
- "devOptional": true
+ "dev": true
},
"node_modules/pg": {
"version": "8.8.0",
@@ -13432,17 +14799,17 @@
}
},
"node_modules/pg-pool": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz",
- "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz",
+ "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==",
"peerDependencies": {
"pg": ">=8.0"
}
},
"node_modules/pg-protocol": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz",
- "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ=="
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz",
+ "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q=="
},
"node_modules/pg-types": {
"version": "2.2.0",
@@ -13468,9 +14835,9 @@
}
},
"node_modules/pgpass/node_modules/split2": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz",
- "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
"engines": {
"node": ">= 10.x"
}
@@ -13502,22 +14869,10 @@
"node": ">=0.10.0"
}
},
- "node_modules/ping": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/ping/-/ping-0.4.2.tgz",
- "integrity": "sha512-1uAw0bzHtrPbPo2s6no06oZAzY6KqKclEJR1JRZKIHKXKlPdrz9N0/1MPPB+BbrvMjN3Mk0pcod3bfLNZFRo9w==",
- "dependencies": {
- "q": "1.x",
- "underscore": "^1.12.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
"node_modules/pirates": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
- "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
"dev": true,
"engines": {
"node": ">= 6"
@@ -13543,6 +14898,17 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/playwright-core": {
+ "version": "1.35.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.35.1.tgz",
+ "integrity": "sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/pngjs": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
@@ -13553,9 +14919,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.20",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz",
- "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
+ "version": "8.4.25",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.25.tgz",
+ "integrity": "sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==",
"dev": true,
"funding": [
{
@@ -13565,10 +14931,14 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "nanoid": "^3.3.4",
+ "nanoid": "^3.3.6",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
@@ -13592,15 +14962,9 @@
}
},
"node_modules/postcss-html/node_modules/js-tokens": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.0.tgz",
- "integrity": "sha512-PC7MzqInq9OqKyTXfIvQNcjMkODJYC8A17kAaQgeW79yfhqTWSOfjHYQ2mDDcwJ96Iibtwkfh0C7R/OvqPlgVA==",
- "dev": true
- },
- "node_modules/postcss-media-query-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
- "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.1.tgz",
+ "integrity": "sha512-3AGrZT6tuMm1ZWWn9mLXh7XMfi2YtiLNPALCVxBCiUVq0LD1OQMxV/AdS/s7rLJU5o9i/jBZw/N4vXXL5dm29A==",
"dev": true
},
"node_modules/postcss-resolve-nested-selector": {
@@ -13663,9 +15027,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.11",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
- "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
+ "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
@@ -13738,17 +15102,17 @@
}
},
"node_modules/pretty-format": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
- "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "version": "29.6.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz",
+ "integrity": "sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==",
"dev": true,
"dependencies": {
- "ansi-regex": "^5.0.1",
+ "@jest/schemas": "^29.6.0",
"ansi-styles": "^5.0.0",
- "react-is": "^17.0.1"
+ "react-is": "^18.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/pretty-format/node_modules/ansi-styles": {
@@ -13812,6 +15176,25 @@
"ms": "^2.1.1"
}
},
+ "node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "optional": true
+ },
+ "node_modules/promise-retry": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+ "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "optional": true,
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -13825,15 +15208,10 @@
"node": ">= 6"
}
},
- "node_modules/property-expr": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz",
- "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA=="
- },
"node_modules/protobufjs": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz",
- "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==",
+ "version": "7.2.4",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz",
+ "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==",
"hasInstallScript": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
@@ -13854,9 +15232,9 @@
}
},
"node_modules/protobufjs/node_modules/long": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz",
- "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A=="
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
+ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
},
"node_modules/proxy-addr": {
"version": "2.0.7",
@@ -13876,16 +15254,11 @@
"integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==",
"dev": true
},
- "node_modules/pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
- },
"node_modules/psl": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
"integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "devOptional": true
+ "dev": true
},
"node_modules/pump": {
"version": "3.0.0",
@@ -13897,21 +15270,28 @@
}
},
"node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
"engines": {
"node": ">=6"
}
},
- "node_modules/q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
- "engines": {
- "node": ">=0.6.0",
- "teleport": ">=0.2.0"
- }
+ "node_modules/pure-rand": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
+ "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ]
},
"node_modules/qlobber": {
"version": "5.0.3",
@@ -13923,9 +15303,9 @@
}
},
"node_modules/qrcode": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz",
- "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz",
+ "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
"dev": true,
"dependencies": {
"dijkstrajs": "^1.0.1",
@@ -13984,6 +15364,15 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "node_modules/qrcode/node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/qrcode/node_modules/wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -14040,20 +15429,19 @@
}
},
"node_modules/qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
- "devOptional": true,
+ "version": "6.10.4",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
+ "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
"engines": {
"node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
- },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -14075,12 +15463,14 @@
]
},
"node_modules/quick-lru": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
- "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
- "dev": true,
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/radius": {
@@ -14133,92 +15523,120 @@
}
},
"node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
"dev": true
},
"node_modules/read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz",
+ "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==",
"dev": true,
"dependencies": {
"@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
+ "normalize-package-data": "^3.0.2",
+ "parse-json": "^5.2.0",
+ "type-fest": "^1.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz",
+ "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==",
"dev": true,
"dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
+ "find-up": "^5.0.0",
+ "read-pkg": "^6.0.0",
+ "type-fest": "^1.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/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,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/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,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/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,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/read-pkg/node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/read-pkg/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -14241,45 +15659,124 @@
}
},
"node_modules/rechoir": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz",
- "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
"dependencies": {
- "resolve": "^1.9.0"
+ "resolve": "^1.20.0"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">= 10.13.0"
}
},
"node_modules/redbean-node": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.1.4.tgz",
- "integrity": "sha512-c1U6wnTeWS0c44tn9hkJWzjGgckLNJ8sN1E2bxnnnQsULOfvEVFLf8dLMjqhyyMrZ1L1mp8UvV4OfhRtH/ZrgQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.3.0.tgz",
+ "integrity": "sha512-DIkAjMVw8lW2j7GsWivsm9ZKUUKvlTeOmB9lZi8e3VIWu4r6c5ZAeSzoQ4Cytj62SaBWFdCGLPhwdf4/Gql+mw==",
"dependencies": {
- "@types/node": "^14.18.12",
- "await-lock": "^2.1.0",
- "dayjs": "^1.11.0",
- "glob": "^7.2.0",
- "knex": "^0.95.15",
- "lodash": "^4.17.21"
+ "@types/node": "~20.3.1",
+ "await-lock": "~2.2.2",
+ "dayjs": "~1.11.8",
+ "glob": "~10.3.0",
+ "knex": "~2.4.2",
+ "lodash": "~4.17.21"
}
},
"node_modules/redbean-node/node_modules/@types/node": {
- "version": "14.18.36",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
- "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ=="
+ "version": "20.3.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz",
+ "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw=="
},
- "node_modules/redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dev": true,
+ "node_modules/redbean-node/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==",
"dependencies": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/redbean-node/node_modules/glob": {
+ "version": "10.3.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.2.tgz",
+ "integrity": "sha512-vsuLzB3c/uyDLLEdBZtT8vGnN0z57rwOxHV2oYZib/7HWmBspUaja/McYIobBjC4qaUTuNpUyFO2IdqM4DZIJA==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
},
"engines": {
- "node": ">=8"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/redbean-node/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/redbean-node/node_modules/minipass": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.1.tgz",
+ "integrity": "sha512-NQ8MCKimInjVlaIqx51RKJJB7mINVkLTJbsZKmto4UAAOC/CWXES8PGaOgoBZyqoUsUA/U3DToGK7GJkkHbjJw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/redent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz",
+ "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==",
+ "dev": true,
+ "dependencies": {
+ "indent-string": "^5.0.0",
+ "strip-indent": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/redent/node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/redis": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-4.5.1.tgz",
+ "integrity": "sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA==",
+ "dependencies": {
+ "@redis/bloom": "1.1.0",
+ "@redis/client": "1.4.2",
+ "@redis/graph": "1.1.0",
+ "@redis/json": "1.0.4",
+ "@redis/search": "1.1.0",
+ "@redis/time-series": "1.0.4"
}
},
"node_modules/regenerate": {
@@ -14303,7 +15800,8 @@
"node_modules/regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "dev": true
},
"node_modules/regenerator-transform": {
"version": "0.15.1",
@@ -14315,13 +15813,13 @@
}
},
"node_modules/regexp.prototype.flags": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
- "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
+ "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "functions-have-names": "^1.2.2"
+ "define-properties": "^1.2.0",
+ "functions-have-names": "^1.2.3"
},
"engines": {
"node": ">= 0.4"
@@ -14343,14 +15841,14 @@
}
},
"node_modules/regexpu-core": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz",
- "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
"dev": true,
"dependencies": {
+ "@babel/regjsgen": "^0.8.0",
"regenerate": "^1.4.2",
"regenerate-unicode-properties": "^10.1.0",
- "regjsgen": "^0.7.1",
"regjsparser": "^0.9.1",
"unicode-match-property-ecmascript": "^2.0.0",
"unicode-match-property-value-ecmascript": "^2.1.0"
@@ -14359,12 +15857,6 @@
"node": ">=4"
}
},
- "node_modules/regjsgen": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz",
- "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==",
- "dev": true
- },
"node_modules/regjsparser": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
@@ -14391,38 +15883,6 @@
"resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
"integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
},
- "node_modules/request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
- "optional": true,
- "dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/request-progress": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
@@ -14432,60 +15892,6 @@
"throttleit": "^1.0.0"
}
},
- "node_modules/request/node_modules/form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "optional": true,
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
- "node_modules/request/node_modules/http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
- "optional": true,
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
- "node_modules/request/node_modules/jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "optional": true,
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/request/node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "optional": true,
- "bin": {
- "uuid": "bin/uuid"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -14509,18 +15915,12 @@
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
- "node_modules/requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
- },
"node_modules/resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
+ "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
"dependencies": {
- "is-core-module": "^2.9.0",
+ "is-core-module": "^2.11.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -14531,6 +15931,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="
+ },
"node_modules/resolve-cwd": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
@@ -14562,14 +15967,28 @@
}
},
"node_modules/resolve.exports": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
- "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+ "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
"dev": true,
"engines": {
"node": ">=10"
}
},
+ "node_modules/responselike": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
+ "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
+ "dependencies": {
+ "lowercase-keys": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/restore-cursor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
@@ -14589,6 +16008,15 @@
"integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==",
"dev": true
},
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "optional": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -14619,24 +16047,25 @@
}
},
"node_modules/rollup": {
- "version": "2.78.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
- "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
+ "version": "3.26.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.2.tgz",
+ "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==",
"dev": true,
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/rollup-plugin-visualizer": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz",
- "integrity": "sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==",
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz",
+ "integrity": "sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==",
"dev": true,
"dependencies": {
"open": "^8.4.0",
@@ -14659,20 +16088,6 @@
}
}
},
- "node_modules/rollup-plugin-visualizer/node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/rollup-plugin-visualizer/node_modules/source-map": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
@@ -14682,33 +16097,6 @@
"node": ">= 8"
}
},
- "node_modules/rollup-plugin-visualizer/node_modules/yargs": {
- "version": "17.6.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz",
- "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==",
- "dev": true,
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/rollup-plugin-visualizer/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/rtlcss": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz",
@@ -14755,21 +16143,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/rtlcss/node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/rtlcss/node_modules/p-locate": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
@@ -14809,9 +16182,9 @@
}
},
"node_modules/rxjs": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
- "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"dev": true,
"dependencies": {
"tslib": "^2.1.0"
@@ -14835,16 +16208,23 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/safe-timers": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-timers/-/safe-timers-1.1.0.tgz",
- "integrity": "sha512-9aqY+v5eMvmRaluUEtdRThV1EjlSElzO7HuCj0sTW9xvp++8iJ9t/RWGNWV6/WHcUJLHpyT2SNf/apoKTU2EpA=="
- },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
+ "node_modules/saslprep": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
+ "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
+ "optional": true,
+ "dependencies": {
+ "sparse-bitfield": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/sass": {
"version": "1.42.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz",
@@ -14860,26 +16240,62 @@
"node": ">=8.9.0"
}
},
- "node_modules/saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "node_modules/sb-promise-queue": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sb-promise-queue/-/sb-promise-queue-2.1.0.tgz",
+ "integrity": "sha512-zwq4YuP1FQFkGx2Q7GIkZYZ6PqWpV+bg0nIO1sJhWOyGyhqbj0MsTvK6lCFo5TQwX5pZr6SCQ75e8PCDCuNvkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/sb-scandir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/sb-scandir/-/sb-scandir-3.1.0.tgz",
+ "integrity": "sha512-70BVm2xz9jn94zSQdpvYrEG101/UV9TVGcfWr9T5iob3QhCK4lYXeculfBqPGFv3XTeKgx4dpWyYIDeZUqo4kg==",
"dev": true,
"dependencies": {
- "xmlchars": "^2.2.0"
+ "sb-promise-queue": "^2.1.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
- "node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "bin": {
- "semver": "bin/semver.js"
+ "node_modules/semver/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==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
+ "node_modules/semver/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
"node_modules/send": {
"version": "0.17.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
@@ -14916,6 +16332,11 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
"node_modules/seq-queue": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
@@ -14949,7 +16370,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -14961,15 +16381,20 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
"engines": {
"node": ">=8"
}
},
+ "node_modules/shell-escape": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz",
+ "integrity": "sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==",
+ "dev": true
+ },
"node_modules/shell-quote": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz",
- "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -15065,44 +16490,67 @@
}
},
"node_modules/socket.io": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz",
- "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==",
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.2.tgz",
+ "integrity": "sha512-Vp+lSks5k0dewYTfwgPT9UeGGd+ht7sCpB7p0e83VgO4X/AHYWhXITMrNk/pg8syY2bpx23ptClCQuHhqi2BgQ==",
"dependencies": {
"accepts": "~1.3.4",
"base64id": "~2.0.0",
"debug": "~4.3.2",
- "engine.io": "~6.2.1",
- "socket.io-adapter": "~2.4.0",
- "socket.io-parser": "~4.2.1"
+ "engine.io": "~6.4.2",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/socket.io-adapter": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
- "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg=="
+ "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==",
+ "dependencies": {
+ "ws": "~8.11.0"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
},
"node_modules/socket.io-client": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz",
- "integrity": "sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==",
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.2.tgz",
+ "integrity": "sha512-OwWrMbbA8wSqhBAR0yoPK6EdQLERQAYjXb3A0zLpgxfM1ZGLKoxHx8gVmCHA6pcclRX5oA/zvQf7bghAS11jRA==",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.2",
- "engine.io-client": "~6.2.3",
- "socket.io-parser": "~4.2.1"
+ "engine.io-client": "~6.4.0",
+ "socket.io-parser": "~4.2.4"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/socket.io-parser": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz",
- "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.1"
@@ -15162,21 +16610,23 @@
}
},
"node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
"dev": true,
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
- "node_modules/sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "deprecated": "Please use @jridgewell/sourcemap-codec instead",
- "dev": true
+ "node_modules/sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+ "optional": true,
+ "dependencies": {
+ "memory-pager": "^1.0.2"
+ }
},
"node_modules/spawn-command": {
"version": "0.0.2-1",
@@ -15185,9 +16635,9 @@
"dev": true
},
"node_modules/spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
"dependencies": {
"spdx-expression-parse": "^3.0.0",
@@ -15211,20 +16661,11 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.12",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
- "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
+ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
"dev": true
},
- "node_modules/specificity": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz",
- "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==",
- "dev": true,
- "bin": {
- "specificity": "bin/specificity"
- }
- },
"node_modules/split2": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
@@ -15246,11 +16687,29 @@
"node": ">= 0.6"
}
},
+ "node_modules/ssh2": {
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.14.0.tgz",
+ "integrity": "sha512-AqzD1UCqit8tbOKoj6ztDDi1ffJZ2rV2SwlgrVVrHPkV5vWqGJOVp5pmtj18PunkPJAuKQsnInyKV+/Nb2bUnA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "asn1": "^0.2.6",
+ "bcrypt-pbkdf": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ },
+ "optionalDependencies": {
+ "cpu-features": "~0.0.8",
+ "nan": "^2.17.0"
+ }
+ },
"node_modules/sshpk": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
"integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
@@ -15271,6 +16730,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "optional": true,
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/stack-utils": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
@@ -15354,6 +16825,42 @@
"node": ">=10"
}
},
+ "node_modules/string-to-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz",
+ "integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.1.0"
+ }
+ },
+ "node_modules/string-to-stream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/string-to-stream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/string-to-stream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -15367,6 +16874,36 @@
"node": ">=8"
}
},
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
+ "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/string.prototype.trimend": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
@@ -15404,6 +16941,18 @@
"node": ">=8"
}
},
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/strip-bom": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
@@ -15423,15 +16972,18 @@
}
},
"node_modules/strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz",
+ "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==",
"dev": true,
"dependencies": {
- "min-indent": "^1.0.0"
+ "min-indent": "^1.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/strip-json-comments": {
@@ -15446,6 +16998,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
+ "optional": true
+ },
"node_modules/style-search": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
@@ -15453,58 +17011,57 @@
"dev": true
},
"node_modules/stylelint": {
- "version": "14.7.1",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.7.1.tgz",
- "integrity": "sha512-rUOWm67hrzGXXyO/cInENEejF4urh1dLgOb9cr/3XLDb/t/A+rXQp3p6+no8o8QCKTgBUdhVUq/bXMgE988PJw==",
+ "version": "15.10.1",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.1.tgz",
+ "integrity": "sha512-CYkzYrCFfA/gnOR+u9kJ1PpzwG10WLVnoxHDuBA/JiwGqdM9+yx9+ou6SE/y9YHtfv1mcLo06fdadHTOx4gBZQ==",
"dev": true,
"dependencies": {
+ "@csstools/css-parser-algorithms": "^2.3.0",
+ "@csstools/css-tokenizer": "^2.1.1",
+ "@csstools/media-query-list-parser": "^2.1.2",
+ "@csstools/selector-specificity": "^3.0.0",
"balanced-match": "^2.0.0",
- "colord": "^2.9.2",
- "cosmiconfig": "^7.0.1",
- "css-functions-list": "^3.0.1",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^8.2.0",
+ "css-functions-list": "^3.1.0",
+ "css-tree": "^2.3.1",
"debug": "^4.3.4",
- "execall": "^2.0.0",
- "fast-glob": "^3.2.11",
- "fastest-levenshtein": "^1.0.12",
+ "fast-glob": "^3.3.0",
+ "fastest-levenshtein": "^1.0.16",
"file-entry-cache": "^6.0.1",
- "get-stdin": "^8.0.0",
"global-modules": "^2.0.0",
"globby": "^11.1.0",
"globjoin": "^0.1.4",
- "html-tags": "^3.2.0",
- "ignore": "^5.2.0",
+ "html-tags": "^3.3.1",
+ "ignore": "^5.2.4",
"import-lazy": "^4.0.0",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
- "known-css-properties": "^0.24.0",
+ "known-css-properties": "^0.27.0",
"mathml-tag-names": "^2.1.3",
- "meow": "^9.0.0",
+ "meow": "^10.1.5",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
- "normalize-selector": "^0.2.0",
"picocolors": "^1.0.0",
- "postcss": "^8.4.12",
- "postcss-media-query-parser": "^0.2.3",
+ "postcss": "^8.4.24",
"postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^6.0.0",
- "postcss-selector-parser": "^6.0.10",
+ "postcss-selector-parser": "^6.0.13",
"postcss-value-parser": "^4.2.0",
"resolve-from": "^5.0.0",
- "specificity": "^0.4.1",
"string-width": "^4.2.3",
"strip-ansi": "^6.0.1",
"style-search": "^0.1.0",
- "supports-hyperlinks": "^2.2.0",
+ "supports-hyperlinks": "^3.0.0",
"svg-tags": "^1.0.0",
- "table": "^6.8.0",
- "v8-compile-cache": "^2.3.0",
- "write-file-atomic": "^4.0.1"
+ "table": "^6.8.1",
+ "write-file-atomic": "^5.0.1"
},
"bin": {
- "stylelint": "bin/stylelint.js"
+ "stylelint": "bin/stylelint.mjs"
},
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": "^14.13.1 || >=16.0.0"
},
"funding": {
"type": "opencollective",
@@ -15547,17 +17104,29 @@
"node": ">=8"
}
},
- "node_modules/stylelint/node_modules/write-file-atomic": {
+ "node_modules/stylelint/node_modules/signal-exit": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
+ "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/stylelint/node_modules/write-file-atomic": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
"dev": true,
"dependencies": {
"imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
+ "signal-exit": "^4.0.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/supports-color": {
@@ -15573,16 +17142,16 @@
}
},
"node_modules/supports-hyperlinks": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
- "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
+ "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0",
"supports-color": "^7.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=14.18"
}
},
"node_modules/supports-hyperlinks/node_modules/has-flag": {
@@ -15623,16 +17192,10 @@
"integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
"dev": true
},
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
"node_modules/systemjs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.13.0.tgz",
- "integrity": "sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==",
+ "version": "6.14.1",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.14.1.tgz",
+ "integrity": "sha512-8ftwWd+XnQtZ/aGbatrN4QFNGrKJzmbtixW+ODpci7pyoTajg4sonPP8aFLESAcuVxaC1FyDESt+SpfFCH9rZQ==",
"dev": true
},
"node_modules/table": {
@@ -15724,13 +17287,13 @@
}
},
"node_modules/tar": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
- "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
+ "version": "6.1.15",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
+ "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
- "minipass": "^4.0.0",
+ "minipass": "^5.0.0",
"minizlib": "^2.1.1",
"mkdirp": "^1.0.3",
"yallist": "^4.0.0"
@@ -15739,6 +17302,14 @@
"node": ">=10"
}
},
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/tar/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -15821,22 +17392,6 @@
"ieee754": "^1.2.1"
}
},
- "node_modules/terminal-link": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
- "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/terser": {
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
@@ -15861,6 +17416,16 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
+ "node_modules/terser/node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
"node_modules/test-exclude": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
@@ -15889,12 +17454,6 @@
"node": ">=0.2.6"
}
},
- "node_modules/throat": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz",
- "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
- "dev": true
- },
"node_modules/throttleit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
@@ -15916,9 +17475,9 @@
}
},
"node_modules/timezones-list": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/timezones-list/-/timezones-list-3.0.1.tgz",
- "integrity": "sha512-yfOzyuVwzgD0LkldD3Epkr+JUdUIxEUL147Fa6ZgG/23KU28iOv3e3M7vQOCFMPyopAhDX7dqOLWttIP7tkTKg==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/timezones-list/-/timezones-list-3.0.2.tgz",
+ "integrity": "sha512-I698hm6Jp/xxkwyTSOr39pZkYKETL8LDJeSIhjxXBfPUAHM5oZNuQ4o9UK3PSkDBOkjATecSOBb3pR1IkIBUsg==",
"dev": true
},
"node_modules/tmp": {
@@ -15977,16 +17536,11 @@
"hoek": "6.x.x"
}
},
- "node_modules/toposort": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
- "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg=="
- },
"node_modules/tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"psl": "^1.1.28",
"punycode": "^2.1.1"
@@ -15996,15 +17550,15 @@
}
},
"node_modules/tr46": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
- "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
+ "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
"dev": true,
"dependencies": {
- "punycode": "^2.1.1"
+ "punycode": "^2.3.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=14"
}
},
"node_modules/tree-kill": {
@@ -16017,18 +17571,21 @@
}
},
"node_modules/trim-newlines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
- "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz",
+ "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
},
"node_modules/tunnel": {
"version": "0.0.6",
@@ -16043,7 +17600,7 @@
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"safe-buffer": "^5.0.1"
},
@@ -16055,7 +17612,7 @@
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
- "devOptional": true
+ "dev": true
},
"node_modules/type-check": {
"version": "0.4.0",
@@ -16102,20 +17659,24 @@
"node": ">= 0.6"
}
},
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
},
- "node_modules/typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
- "dev": true,
- "dependencies": {
- "is-typedarray": "^1.0.0"
- }
- },
"node_modules/typescript": {
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
@@ -16143,11 +17704,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/underscore": {
- "version": "1.13.6",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
- "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
- },
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
@@ -16188,6 +17744,24 @@
"node": ">=4"
}
},
+ "node_modules/unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "optional": true,
+ "dependencies": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "optional": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
"node_modules/universal-user-agent": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
@@ -16221,9 +17795,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
- "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
"dev": true,
"funding": [
{
@@ -16233,6 +17807,10 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
@@ -16240,7 +17818,7 @@
"picocolors": "^1.0.0"
},
"bin": {
- "browserslist-lint": "cli.js"
+ "update-browserslist-db": "cli.js"
},
"peerDependencies": {
"browserslist": ">= 4.21.0"
@@ -16250,19 +17828,9 @@
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "devOptional": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/url-parse": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"dev": true,
"dependencies": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
+ "punycode": "^2.1.0"
}
},
"node_modules/util-deprecate": {
@@ -16310,28 +17878,19 @@
"dev": true
},
"node_modules/v8-to-istanbul": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
- "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+ "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
"dev": true,
"dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.12",
"@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
+ "convert-source-map": "^1.6.0"
},
"engines": {
"node": ">=10.12.0"
}
},
- "node_modules/v8-to-istanbul/node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -16342,6 +17901,11 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/varint": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
+ "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="
+ },
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -16354,7 +17918,7 @@
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
- "devOptional": true,
+ "dev": true,
"engines": [
"node >=0.6.0"
],
@@ -16365,15 +17929,14 @@
}
},
"node_modules/vite": {
- "version": "3.1.8",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz",
- "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==",
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.2.tgz",
+ "integrity": "sha512-zUcsJN+UvdSyHhYa277UHhiJ3iq4hUBwHavOpsNUGsTgjBeoBlK8eDt+iT09pBq0h9/knhG/SPrZiM7cGmg7NA==",
"dev": true,
"dependencies": {
- "esbuild": "^0.15.9",
- "postcss": "^8.4.16",
- "resolve": "^1.22.1",
- "rollup": "~2.78.0"
+ "esbuild": "^0.18.10",
+ "postcss": "^8.4.24",
+ "rollup": "^3.25.2"
},
"bin": {
"vite": "bin/vite.js"
@@ -16381,25 +17944,40 @@
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
"optionalDependencies": {
"fsevents": "~2.3.2"
},
"peerDependencies": {
+ "@types/node": ">= 14",
"less": "*",
+ "lightningcss": "^1.21.0",
"sass": "*",
"stylus": "*",
+ "sugarss": "*",
"terser": "^5.4.0"
},
"peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
"less": {
"optional": true
},
+ "lightningcss": {
+ "optional": true
+ },
"sass": {
"optional": true
},
"stylus": {
"optional": true
},
+ "sugarss": {
+ "optional": true
+ },
"terser": {
"optional": true
}
@@ -16504,51 +18082,26 @@
}
},
"node_modules/vue": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.36.tgz",
- "integrity": "sha512-5yTXmrE6gW8IQgttzHW5bfBiFA6mx35ZXHjGLDmKYzW6MMmYvCwuKybANRepwkMYeXw2v1buGg3/lPICY5YlZw==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
+ "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
"dev": true,
"dependencies": {
- "@vue/compiler-dom": "3.2.36",
- "@vue/compiler-sfc": "3.2.36",
- "@vue/runtime-dom": "3.2.36",
- "@vue/server-renderer": "3.2.36",
- "@vue/shared": "3.2.36"
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-sfc": "3.3.4",
+ "@vue/runtime-dom": "3.3.4",
+ "@vue/server-renderer": "3.3.4",
+ "@vue/shared": "3.3.4"
}
},
- "node_modules/vue-chart-3": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/vue-chart-3/-/vue-chart-3-3.0.9.tgz",
- "integrity": "sha512-RyVaOhSem0v4v645zAkdi1mgZjuD3KMQr11KrEZGFupoHzV2qn/sBpEDvplR9i57YnRxZ3KDnKqw/1rx2CkOZA==",
+ "node_modules/vue-chartjs": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.2.0.tgz",
+ "integrity": "sha512-d3zpKmGZr2OWHQ1xmxBcAn5ShTG917+/UCLaSpaCDDqT0U7DBsvFzTs69ZnHCgKoXT55GZDW8YEj9Av+dlONLA==",
"dev": true,
- "dependencies": {
- "@vue/runtime-core": "latest",
- "@vue/runtime-dom": "latest",
- "csstype": "3.0.10",
- "lodash": "latest",
- "nanoid": "3.1.31"
- },
"peerDependencies": {
- "chart.js": "=> ^3.1.0",
- "vue": ">= 3"
- }
- },
- "node_modules/vue-chart-3/node_modules/csstype": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz",
- "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==",
- "dev": true
- },
- "node_modules/vue-chart-3/node_modules/nanoid": {
- "version": "3.1.31",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.31.tgz",
- "integrity": "sha512-ZivnJm0o9bb13p2Ot5CpgC2rQdzB9Uxm/mFZweqm5eMViqOJe3PV6LU2E30SiLgheesmcPrjquqraoolONSA0A==",
- "dev": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "chart.js": "^4.1.1",
+ "vue": "^3.0.0-0 || ^2.7.0"
}
},
"node_modules/vue-confirm-dialog": {
@@ -16620,9 +18173,9 @@
}
},
"node_modules/vue-eslint-parser/node_modules/eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
+ "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
@@ -16630,15 +18183,21 @@
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+ "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/vue-eslint-parser/node_modules/estraverse": {
@@ -16650,39 +18209,6 @@
"node": ">=4.0"
}
},
- "node_modules/vue-eslint-parser/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/vue-eslint-parser/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/vue-eslint-parser/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/vue-i18n": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz",
@@ -16711,9 +18237,9 @@
}
},
"node_modules/vue-multiselect": {
- "version": "3.0.0-alpha.2",
- "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-alpha.2.tgz",
- "integrity": "sha512-Xp9fGJECns45v+v8jXbCIsAkCybYkEg0lNwr7Z6HDUSMyx2TEIK2giipPE+qXiShEc1Ipn+ZtttH2iq9hwXP4Q==",
+ "version": "3.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-beta.2.tgz",
+ "integrity": "sha512-TFVHtI/KdWoD3Opzbkso8OIqkZlZEqFF7f2jlYx1ttgC4Jv/48IGlU5zn6cBR4p2bFDFGCHF5SkLCaadLhnBPQ==",
"dev": true,
"engines": {
"node": ">= 4.0.0",
@@ -16776,84 +18302,6 @@
"vue": "^3.0.2"
}
},
- "node_modules/vue/node_modules/@vue/compiler-core": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.36.tgz",
- "integrity": "sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.16.4",
- "@vue/shared": "3.2.36",
- "estree-walker": "^2.0.2",
- "source-map": "^0.6.1"
- }
- },
- "node_modules/vue/node_modules/@vue/compiler-dom": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.36.tgz",
- "integrity": "sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA==",
- "dev": true,
- "dependencies": {
- "@vue/compiler-core": "3.2.36",
- "@vue/shared": "3.2.36"
- }
- },
- "node_modules/vue/node_modules/@vue/compiler-sfc": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.36.tgz",
- "integrity": "sha512-AvGb4bTj4W8uQ4BqaSxo7UwTEqX5utdRSMyHy58OragWlt8nEACQ9mIeQh3K4di4/SX+41+pJrLIY01lHAOFOA==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.16.4",
- "@vue/compiler-core": "3.2.36",
- "@vue/compiler-dom": "3.2.36",
- "@vue/compiler-ssr": "3.2.36",
- "@vue/reactivity-transform": "3.2.36",
- "@vue/shared": "3.2.36",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.25.7",
- "postcss": "^8.1.10",
- "source-map": "^0.6.1"
- }
- },
- "node_modules/vue/node_modules/@vue/compiler-ssr": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.36.tgz",
- "integrity": "sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw==",
- "dev": true,
- "dependencies": {
- "@vue/compiler-dom": "3.2.36",
- "@vue/shared": "3.2.36"
- }
- },
- "node_modules/vue/node_modules/@vue/reactivity-transform": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.36.tgz",
- "integrity": "sha512-Jk5o2BhpODC9XTA7o4EL8hSJ4JyrFWErLtClG3NH8wDS7ri9jBDWxI7/549T7JY9uilKsaNM+4pJASLj5dtRwA==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.16.4",
- "@vue/compiler-core": "3.2.36",
- "@vue/shared": "3.2.36",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.25.7"
- }
- },
- "node_modules/vue/node_modules/@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- },
- "node_modules/vue/node_modules/magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dev": true,
- "dependencies": {
- "sourcemap-codec": "^1.4.8"
- }
- },
"node_modules/vuedraggable": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz",
@@ -16866,28 +18314,6 @@
"vue": "^3.0.1"
}
},
- "node_modules/w3c-hr-time": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
- "dev": true,
- "dependencies": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "node_modules/w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
- "dev": true,
- "dependencies": {
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/wait-on": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz",
@@ -16917,15 +18343,15 @@
}
},
"node_modules/wait-on/node_modules/joi": {
- "version": "17.7.0",
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz",
- "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==",
+ "version": "17.9.2",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz",
+ "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==",
"dev": true,
"dependencies": {
"@hapi/hoek": "^9.0.0",
"@hapi/topo": "^5.0.0",
"@sideway/address": "^4.1.3",
- "@sideway/formula": "^3.0.0",
+ "@sideway/formula": "^3.0.1",
"@sideway/pinpoint": "^2.0.0"
}
},
@@ -16939,60 +18365,30 @@
}
},
"node_modules/webidl-conversions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
- "dev": true,
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
"engines": {
- "node": ">=10.4"
+ "node": ">=12"
}
},
- "node_modules/whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dev": true,
- "dependencies": {
- "iconv-lite": "0.4.24"
- }
- },
- "node_modules/whatwg-encoding/node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
- "dev": true
- },
"node_modules/whatwg-url": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
- "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
+ "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
"dev": true,
"dependencies": {
- "lodash": "^4.7.0",
- "tr46": "^2.1.0",
- "webidl-conversions": "^6.1.0"
+ "tr46": "^4.1.1",
+ "webidl-conversions": "^7.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=14"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "devOptional": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -17019,11 +18415,30 @@
}
},
"node_modules/which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
"dev": true
},
+ "node_modules/which-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
+ "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/wide-align": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
@@ -17032,15 +18447,6 @@
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
- "node_modules/word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -17057,6 +18463,53 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
"node_modules/wrap-ansi/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -17093,15 +18546,16 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
"dev": true,
"dependencies": {
"imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
+ "signal-exit": "^3.0.7"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/ws": {
@@ -17124,17 +18578,13 @@
}
}
},
- "node_modules/xml-name-validator": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
- "dev": true
- },
- "node_modules/xmlchars": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
- "dev": true
+ "node_modules/xmlbuilder": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
+ "integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==",
+ "engines": {
+ "node": ">=4.0"
+ }
},
"node_modules/xmlhttprequest-ssl": {
"version": "2.0.0",
@@ -17144,6 +18594,19 @@
"node": ">=0.4.0"
}
},
+ "node_modules/xmlrpc": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz",
+ "integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==",
+ "dependencies": {
+ "sax": "1.2.x",
+ "xmlbuilder": "8.2.x"
+ },
+ "engines": {
+ "node": ">=0.8",
+ "npm": ">=1.0.0"
+ }
+ },
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
@@ -17166,40 +18629,40 @@
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
},
- "node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dependencies": {
- "cliui": "^7.0.2",
+ "cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "string-width": "^4.2.0",
+ "string-width": "^4.2.3",
"y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "yargs-parser": "^21.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
"engines": {
"node": ">=10"
}
},
+ "node_modules/yargs/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/yauzl": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
@@ -17221,12930 +18684,6 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
- },
- "node_modules/yup": {
- "version": "0.32.9",
- "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.9.tgz",
- "integrity": "sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==",
- "dependencies": {
- "@babel/runtime": "^7.10.5",
- "@types/lodash": "^4.14.165",
- "lodash": "^4.17.20",
- "lodash-es": "^4.17.15",
- "nanoclone": "^0.2.1",
- "property-expr": "^2.0.4",
- "toposort": "^2.0.2"
- },
- "engines": {
- "node": ">=10"
- }
- }
- },
- "dependencies": {
- "@actions/github": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.3.tgz",
- "integrity": "sha512-myjA/pdLQfhUGLtRZC/J4L1RXOG4o6aYdiEq+zr5wVVKljzbFld+xv10k1FX6IkIJtNxbAq44BdwSNpQ015P0A==",
- "dev": true,
- "requires": {
- "@actions/http-client": "^2.0.1",
- "@octokit/core": "^3.6.0",
- "@octokit/plugin-paginate-rest": "^2.17.0",
- "@octokit/plugin-rest-endpoint-methods": "^5.13.0"
- }
- },
- "@actions/http-client": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
- "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
- "dev": true,
- "requires": {
- "tunnel": "^0.0.6"
- }
- },
- "@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "dependencies": {
- "@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- }
- }
- },
- "@azure/abort-controller": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz",
- "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==",
- "requires": {
- "tslib": "^2.2.0"
- }
- },
- "@azure/core-auth": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.4.0.tgz",
- "integrity": "sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ==",
- "requires": {
- "@azure/abort-controller": "^1.0.0",
- "tslib": "^2.2.0"
- }
- },
- "@azure/core-client": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.6.1.tgz",
- "integrity": "sha512-mZ1MSKhZBYoV8GAWceA+PEJFWV2VpdNSpxxcj1wjIAOi00ykRuIQChT99xlQGZWLY3/NApWhSImlFwsmCEs4vA==",
- "requires": {
- "@azure/abort-controller": "^1.0.0",
- "@azure/core-auth": "^1.4.0",
- "@azure/core-rest-pipeline": "^1.9.1",
- "@azure/core-tracing": "^1.0.0",
- "@azure/core-util": "^1.0.0",
- "@azure/logger": "^1.0.0",
- "tslib": "^2.2.0"
- }
- },
- "@azure/core-http-compat": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-1.3.0.tgz",
- "integrity": "sha512-ZN9avruqbQ5TxopzG3ih3KRy52n8OAbitX3fnZT5go4hzu0J+KVPSzkL+Wt3hpJpdG8WIfg1sBD1tWkgUdEpBA==",
- "requires": {
- "@azure/abort-controller": "^1.0.4",
- "@azure/core-client": "^1.3.0",
- "@azure/core-rest-pipeline": "^1.3.0"
- }
- },
- "@azure/core-lro": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.4.0.tgz",
- "integrity": "sha512-F65+rYkll1dpw3RGm8/SSiSj+/QkMeYDanzS/QKlM1dmuneVyXbO46C88V1MRHluLGdMP6qfD3vDRYALn0z0tQ==",
- "requires": {
- "@azure/abort-controller": "^1.0.0",
- "@azure/logger": "^1.0.0",
- "tslib": "^2.2.0"
- }
- },
- "@azure/core-paging": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.4.0.tgz",
- "integrity": "sha512-tabFtZTg8D9XqZKEfNUOGh63SuYeOxmvH4GDcOJN+R1bZWZ1FZskctgY9Pmuwzhn+0Xvq9rmimK9hsvtLkeBsw==",
- "requires": {
- "tslib": "^2.2.0"
- }
- },
- "@azure/core-rest-pipeline": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.0.tgz",
- "integrity": "sha512-m6c4iAalfaf6sytOOQhLKFprEHSkSjQuRgkW7MTMnAN+GENDDL4XZJp7WKFnq9VpKUE+ggq+rp5xX9GI93lumw==",
- "requires": {
- "@azure/abort-controller": "^1.0.0",
- "@azure/core-auth": "^1.4.0",
- "@azure/core-tracing": "^1.0.1",
- "@azure/core-util": "^1.0.0",
- "@azure/logger": "^1.0.0",
- "form-data": "^4.0.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "tslib": "^2.2.0",
- "uuid": "^8.3.0"
- }
- },
- "@azure/core-tracing": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz",
- "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==",
- "requires": {
- "tslib": "^2.2.0"
- }
- },
- "@azure/core-util": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.1.1.tgz",
- "integrity": "sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog==",
- "requires": {
- "@azure/abort-controller": "^1.0.0",
- "tslib": "^2.2.0"
- }
- },
- "@azure/identity": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-2.1.0.tgz",
- "integrity": "sha512-BPDz1sK7Ul9t0l9YKLEa8PHqWU4iCfhGJ+ELJl6c8CP3TpJt2urNCbm0ZHsthmxRsYoMPbz2Dvzj30zXZVmAFw==",
- "requires": {
- "@azure/abort-controller": "^1.0.0",
- "@azure/core-auth": "^1.3.0",
- "@azure/core-client": "^1.4.0",
- "@azure/core-rest-pipeline": "^1.1.0",
- "@azure/core-tracing": "^1.0.0",
- "@azure/core-util": "^1.0.0",
- "@azure/logger": "^1.0.0",
- "@azure/msal-browser": "^2.26.0",
- "@azure/msal-common": "^7.0.0",
- "@azure/msal-node": "^1.10.0",
- "events": "^3.0.0",
- "jws": "^4.0.0",
- "open": "^8.0.0",
- "stoppable": "^1.1.0",
- "tslib": "^2.2.0",
- "uuid": "^8.3.0"
- },
- "dependencies": {
- "jwa": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
- "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
- "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
- "requires": {
- "jwa": "^2.0.0",
- "safe-buffer": "^5.0.1"
- }
- }
- }
- },
- "@azure/keyvault-keys": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.6.0.tgz",
- "integrity": "sha512-0112LegxeR03L8J4k+q6HwBVvrpd9y+oInG0FG3NaHXN7YUubVBon/eb5jFI6edGrvNigpxSR0XIsprFXdkzCQ==",
- "requires": {
- "@azure/abort-controller": "^1.0.0",
- "@azure/core-auth": "^1.3.0",
- "@azure/core-client": "^1.5.0",
- "@azure/core-http-compat": "^1.3.0",
- "@azure/core-lro": "^2.2.0",
- "@azure/core-paging": "^1.1.1",
- "@azure/core-rest-pipeline": "^1.8.0",
- "@azure/core-tracing": "^1.0.0",
- "@azure/core-util": "^1.0.0",
- "@azure/logger": "^1.0.0",
- "tslib": "^2.2.0"
- }
- },
- "@azure/logger": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.3.tgz",
- "integrity": "sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==",
- "requires": {
- "tslib": "^2.2.0"
- }
- },
- "@azure/msal-browser": {
- "version": "2.32.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.1.tgz",
- "integrity": "sha512-2G3B12ZEIpiimi6/Yqq7KLk4ud1zZWoHvVd2kJ2VthN1HjMsZjdMUxeHkwMWaQ6RzO6mv9rZiuKmRX64xkXW9g==",
- "requires": {
- "@azure/msal-common": "^9.0.1"
- },
- "dependencies": {
- "@azure/msal-common": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.1.tgz",
- "integrity": "sha512-eNNHIW/cwPTZDWs9KtYgb1X6gtQ+cC+FGX2YN+t4AUVsBdUbqlMTnUs6/c/VBxC2AAGIhgLREuNnO3F66AN2zQ=="
- }
- }
- },
- "@azure/msal-common": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.6.0.tgz",
- "integrity": "sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q=="
- },
- "@azure/msal-node": {
- "version": "1.14.5",
- "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.5.tgz",
- "integrity": "sha512-NcVdMfn8Z3ogN+9RjOSF7uwf2Gki5DEJl0BdDSL83KUAgVAobtkZi5W8EqxbJLrTO/ET0jv5DregrcR5qg2pEA==",
- "requires": {
- "@azure/msal-common": "^9.0.1",
- "jsonwebtoken": "^8.5.1",
- "uuid": "^8.3.0"
- },
- "dependencies": {
- "@azure/msal-common": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.1.tgz",
- "integrity": "sha512-eNNHIW/cwPTZDWs9KtYgb1X6gtQ+cC+FGX2YN+t4AUVsBdUbqlMTnUs6/c/VBxC2AAGIhgLREuNnO3F66AN2zQ=="
- },
- "jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "requires": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.18.6"
- }
- },
- "@babel/compat-data": {
- "version": "7.20.10",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz",
- "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==",
- "dev": true
- },
- "@babel/core": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz",
- "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==",
- "dev": true,
- "requires": {
- "@ampproject/remapping": "^2.1.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.20.7",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-module-transforms": "^7.20.7",
- "@babel/helpers": "^7.20.7",
- "@babel/parser": "^7.20.7",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.7",
- "@babel/types": "^7.20.7",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.1",
- "semver": "^6.3.0"
- }
- },
- "@babel/eslint-parser": {
- "version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz",
- "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==",
- "dev": true,
- "requires": {
- "eslint-scope": "^5.1.1",
- "eslint-visitor-keys": "^2.1.0",
- "semver": "^6.3.0"
- }
- },
- "@babel/generator": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz",
- "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.7",
- "@jridgewell/gen-mapping": "^0.3.2",
- "jsesc": "^2.5.1"
- },
- "dependencies": {
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- }
- }
- },
- "@babel/helper-annotate-as-pure": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
- "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
- "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
- "dev": true,
- "requires": {
- "@babel/helper-explode-assignable-expression": "^7.18.6",
- "@babel/types": "^7.18.9"
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
- "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.0"
- }
- },
- "@babel/helper-create-class-features-plugin": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz",
- "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-member-expression-to-functions": "^7.20.7",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-replace-supers": "^7.20.7",
- "@babel/helper-split-export-declaration": "^7.18.6"
- }
- },
- "@babel/helper-create-regexp-features-plugin": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz",
- "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "regexpu-core": "^5.2.1"
- }
- },
- "@babel/helper-define-polyfill-provider": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
- "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.17.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
- }
- },
- "@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "dev": true
- },
- "@babel/helper-explode-assignable-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
- "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
- "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.18.10",
- "@babel/types": "^7.19.0"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz",
- "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.7"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
- "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.19.1",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.10",
- "@babel/types": "^7.20.7"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
- "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
- "dev": true
- },
- "@babel/helper-remap-async-to-generator": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
- "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-wrap-function": "^7.18.9",
- "@babel/types": "^7.18.9"
- }
- },
- "@babel/helper-replace-supers": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
- "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-member-expression-to-functions": "^7.20.7",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.7",
- "@babel/types": "^7.20.7"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.2"
- }
- },
- "@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
- "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.0"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
- "dev": true
- },
- "@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true
- },
- "@babel/helper-wrap-function": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
- "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
- "dev": true,
- "requires": {
- "@babel/helper-function-name": "^7.19.0",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.5",
- "@babel/types": "^7.20.5"
- }
- },
- "@babel/helpers": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz",
- "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.7",
- "@babel/types": "^7.20.7"
- }
- },
- "@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
- "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==",
- "dev": true
- },
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
- "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz",
- "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/plugin-proposal-optional-chaining": "^7.20.7"
- }
- },
- "@babel/plugin-proposal-async-generator-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
- "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- }
- },
- "@babel/plugin-proposal-class-properties": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
- "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-proposal-class-static-block": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz",
- "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.20.7",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- }
- },
- "@babel/plugin-proposal-dynamic-import": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
- "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-export-namespace-from": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
- "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-json-strings": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
- "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
- "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- }
- },
- "@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
- "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-numeric-separator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
- "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- }
- },
- "@babel/plugin-proposal-object-rest-spread": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
- "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.20.7"
- }
- },
- "@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
- "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-optional-chaining": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz",
- "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-private-methods": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
- "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-proposal-private-property-in-object": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz",
- "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-create-class-features-plugin": "^7.20.5",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- }
- },
- "@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
- "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
- "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
- }
- },
- "@babel/plugin-syntax-import-assertions": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
- "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.19.0"
- }
- },
- "@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-typescript": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
- "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.19.0"
- }
- },
- "@babel/plugin-transform-arrow-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz",
- "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-async-to-generator": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
- "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9"
- }
- },
- "@babel/plugin-transform-block-scoped-functions": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
- "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-block-scoping": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz",
- "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-classes": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz",
- "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-replace-supers": "^7.20.7",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "globals": "^11.1.0"
- }
- },
- "@babel/plugin-transform-computed-properties": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz",
- "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/template": "^7.20.7"
- }
- },
- "@babel/plugin-transform-destructuring": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz",
- "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-dotall-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
- "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-duplicate-keys": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
- "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-exponentiation-operator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
- "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
- "dev": true,
- "requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-for-of": {
- "version": "7.18.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz",
- "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-function-name": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
- "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.18.9",
- "@babel/helper-function-name": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-literals": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
- "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-member-expression-literals": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
- "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-modules-amd": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
- "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-modules-commonjs": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz",
- "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-simple-access": "^7.20.2"
- }
- },
- "@babel/plugin-transform-modules-systemjs": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz",
- "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==",
- "dev": true,
- "requires": {
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-validator-identifier": "^7.19.1"
- }
- },
- "@babel/plugin-transform-modules-umd": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
- "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz",
- "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.20.5",
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-new-target": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
- "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-object-super": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
- "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/helper-replace-supers": "^7.18.6"
- }
- },
- "@babel/plugin-transform-parameters": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz",
- "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-property-literals": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
- "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-regenerator": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
- "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "regenerator-transform": "^0.15.1"
- }
- },
- "@babel/plugin-transform-reserved-words": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
- "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-shorthand-properties": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
- "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-spread": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
- "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
- }
- },
- "@babel/plugin-transform-sticky-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
- "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-template-literals": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
- "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-typeof-symbol": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
- "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-unicode-escapes": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
- "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-unicode-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
- "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/preset-env": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz",
- "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.20.1",
- "@babel/helper-compilation-targets": "^7.20.0",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-validator-option": "^7.18.6",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
- "@babel/plugin-proposal-async-generator-functions": "^7.20.1",
- "@babel/plugin-proposal-class-properties": "^7.18.6",
- "@babel/plugin-proposal-class-static-block": "^7.18.6",
- "@babel/plugin-proposal-dynamic-import": "^7.18.6",
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
- "@babel/plugin-proposal-json-strings": "^7.18.6",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
- "@babel/plugin-proposal-numeric-separator": "^7.18.6",
- "@babel/plugin-proposal-object-rest-spread": "^7.20.2",
- "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
- "@babel/plugin-proposal-optional-chaining": "^7.18.9",
- "@babel/plugin-proposal-private-methods": "^7.18.6",
- "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
- "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.20.0",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-transform-arrow-functions": "^7.18.6",
- "@babel/plugin-transform-async-to-generator": "^7.18.6",
- "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
- "@babel/plugin-transform-block-scoping": "^7.20.2",
- "@babel/plugin-transform-classes": "^7.20.2",
- "@babel/plugin-transform-computed-properties": "^7.18.9",
- "@babel/plugin-transform-destructuring": "^7.20.2",
- "@babel/plugin-transform-dotall-regex": "^7.18.6",
- "@babel/plugin-transform-duplicate-keys": "^7.18.9",
- "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
- "@babel/plugin-transform-for-of": "^7.18.8",
- "@babel/plugin-transform-function-name": "^7.18.9",
- "@babel/plugin-transform-literals": "^7.18.9",
- "@babel/plugin-transform-member-expression-literals": "^7.18.6",
- "@babel/plugin-transform-modules-amd": "^7.19.6",
- "@babel/plugin-transform-modules-commonjs": "^7.19.6",
- "@babel/plugin-transform-modules-systemjs": "^7.19.6",
- "@babel/plugin-transform-modules-umd": "^7.18.6",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
- "@babel/plugin-transform-new-target": "^7.18.6",
- "@babel/plugin-transform-object-super": "^7.18.6",
- "@babel/plugin-transform-parameters": "^7.20.1",
- "@babel/plugin-transform-property-literals": "^7.18.6",
- "@babel/plugin-transform-regenerator": "^7.18.6",
- "@babel/plugin-transform-reserved-words": "^7.18.6",
- "@babel/plugin-transform-shorthand-properties": "^7.18.6",
- "@babel/plugin-transform-spread": "^7.19.0",
- "@babel/plugin-transform-sticky-regex": "^7.18.6",
- "@babel/plugin-transform-template-literals": "^7.18.9",
- "@babel/plugin-transform-typeof-symbol": "^7.18.9",
- "@babel/plugin-transform-unicode-escapes": "^7.18.10",
- "@babel/plugin-transform-unicode-regex": "^7.18.6",
- "@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.20.2",
- "babel-plugin-polyfill-corejs2": "^0.3.3",
- "babel-plugin-polyfill-corejs3": "^0.6.0",
- "babel-plugin-polyfill-regenerator": "^0.4.1",
- "core-js-compat": "^3.25.1",
- "semver": "^6.3.0"
- }
- },
- "@babel/preset-modules": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
- "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
- "@babel/plugin-transform-dotall-regex": "^7.4.4",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- }
- },
- "@babel/runtime": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz",
- "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==",
- "requires": {
- "regenerator-runtime": "^0.13.11"
- }
- },
- "@babel/standalone": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.11.tgz",
- "integrity": "sha512-WUPlwwXFk3iViGE7QFVVp423eVtT+eoXu1940Xu4QJgqgHBF6WWtlwO1Ip5rIWQnp7OHrGdwrwKLtLhUVfOZbA==",
- "dev": true
- },
- "@babel/template": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
- "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7"
- }
- },
- "@babel/traverse": {
- "version": "7.20.10",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz",
- "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.20.7",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- }
- },
- "@babel/types": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
- "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
- "dev": true,
- "requires": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
- },
- "@breejs/later": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@breejs/later/-/later-4.1.0.tgz",
- "integrity": "sha512-QgGnZ9b7o4k0Ai1ZbTJWwZpZcFK9d+Gb+DyNt4UT9x6IEIs5HVu0iIlmgzGqN+t9MoJSpSPo9S/Mm51UtHr3JA=="
- },
- "@colors/colors": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
- "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
- "dev": true,
- "optional": true
- },
- "@cypress/request": {
- "version": "2.88.10",
- "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz",
- "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "http-signature": "~1.3.6",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^8.3.2"
- },
- "dependencies": {
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- }
- }
- },
- "@cypress/xvfb": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz",
- "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==",
- "dev": true,
- "requires": {
- "debug": "^3.1.0",
- "lodash.once": "^4.1.1"
- },
- "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"
- }
- }
- }
- },
- "@esbuild/android-arm": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
- "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-loong64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
- "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
- "dev": true,
- "optional": true
- },
- "@eslint/eslintrc": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
- "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.4.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"
- },
- "dependencies": {
- "globals": {
- "version": "13.19.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
- "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "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
- }
- }
- },
- "@fortawesome/fontawesome-common-types": {
- "version": "0.2.36",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
- "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==",
- "dev": true
- },
- "@fortawesome/fontawesome-svg-core": {
- "version": "1.2.36",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz",
- "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==",
- "dev": true,
- "requires": {
- "@fortawesome/fontawesome-common-types": "^0.2.36"
- }
- },
- "@fortawesome/free-regular-svg-icons": {
- "version": "5.15.4",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.4.tgz",
- "integrity": "sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==",
- "dev": true,
- "requires": {
- "@fortawesome/fontawesome-common-types": "^0.2.36"
- }
- },
- "@fortawesome/free-solid-svg-icons": {
- "version": "5.15.4",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz",
- "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==",
- "dev": true,
- "requires": {
- "@fortawesome/fontawesome-common-types": "^0.2.36"
- }
- },
- "@fortawesome/vue-fontawesome": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz",
- "integrity": "sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==",
- "dev": true
- },
- "@grpc/grpc-js": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz",
- "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==",
- "requires": {
- "@grpc/proto-loader": "^0.7.0",
- "@types/node": ">=12.12.47"
- }
- },
- "@grpc/proto-loader": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz",
- "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==",
- "requires": {
- "@types/long": "^4.0.1",
- "lodash.camelcase": "^4.3.0",
- "long": "^4.0.0",
- "protobufjs": "^7.0.0",
- "yargs": "^16.2.0"
- }
- },
- "@hapi/hoek": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
- "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
- "dev": true
- },
- "@hapi/topo": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
- "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
- "dev": true,
- "requires": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "@humanwhocodes/config-array": {
- "version": "0.9.5",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
- "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- }
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "@intlify/core-base": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz",
- "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
- "dev": true,
- "requires": {
- "@intlify/devtools-if": "9.2.2",
- "@intlify/message-compiler": "9.2.2",
- "@intlify/shared": "9.2.2",
- "@intlify/vue-devtools": "9.2.2"
- }
- },
- "@intlify/devtools-if": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
- "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
- "dev": true,
- "requires": {
- "@intlify/shared": "9.2.2"
- }
- },
- "@intlify/message-compiler": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
- "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
- "dev": true,
- "requires": {
- "@intlify/shared": "9.2.2",
- "source-map": "0.6.1"
- }
- },
- "@intlify/shared": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz",
- "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==",
- "dev": true
- },
- "@intlify/vue-devtools": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
- "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
- "dev": true,
- "requires": {
- "@intlify/core-base": "9.2.2",
- "@intlify/shared": "9.2.2"
- }
- },
- "@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- }
- }
- },
- "@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
- "dev": true
- },
- "@jest/console": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
- "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^27.5.1",
- "jest-util": "^27.5.1",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "@jest/core": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
- "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
- "dev": true,
- "requires": {
- "@jest/console": "^27.5.1",
- "@jest/reporters": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "emittery": "^0.8.1",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^27.5.1",
- "jest-config": "^27.5.1",
- "jest-haste-map": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-resolve-dependencies": "^27.5.1",
- "jest-runner": "^27.5.1",
- "jest-runtime": "^27.5.1",
- "jest-snapshot": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-validate": "^27.5.1",
- "jest-watcher": "^27.5.1",
- "micromatch": "^4.0.4",
- "rimraf": "^3.0.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "@jest/environment": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
- "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
- "dev": true,
- "requires": {
- "@jest/fake-timers": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "jest-mock": "^27.5.1"
- }
- },
- "@jest/fake-timers": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
- "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "@sinonjs/fake-timers": "^8.0.1",
- "@types/node": "*",
- "jest-message-util": "^27.5.1",
- "jest-mock": "^27.5.1",
- "jest-util": "^27.5.1"
- }
- },
- "@jest/globals": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
- "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
- "dev": true,
- "requires": {
- "@jest/environment": "^27.5.1",
- "@jest/types": "^27.5.1",
- "expect": "^27.5.1"
- }
- },
- "@jest/reporters": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
- "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
- "dev": true,
- "requires": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.2",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^5.1.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-haste-map": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-worker": "^27.5.1",
- "slash": "^3.0.0",
- "source-map": "^0.6.0",
- "string-length": "^4.0.1",
- "terminal-link": "^2.0.0",
- "v8-to-istanbul": "^8.1.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "@jest/source-map": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
- "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9",
- "source-map": "^0.6.0"
- }
- },
- "@jest/test-result": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
- "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
- "dev": true,
- "requires": {
- "@jest/console": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- }
- },
- "@jest/test-sequencer": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
- "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^27.5.1",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^27.5.1",
- "jest-runtime": "^27.5.1"
- }
- },
- "@jest/transform": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
- "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^27.5.1",
- "babel-plugin-istanbul": "^6.1.1",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-util": "^27.5.1",
- "micromatch": "^4.0.4",
- "pirates": "^4.0.4",
- "slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "@jest/types": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
- "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^16.0.0",
- "chalk": "^4.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true
- },
- "@jridgewell/source-map": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
- "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- }
- },
- "@js-joda/core": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.1.tgz",
- "integrity": "sha512-oTFmkyv5MhgkHdZhoe5lwRoKW0t4njPvK3g7ODvK/prkoC5bwylKcyQJMsmjvgHBXoy4u5iLnB5yQ7AljouHAA=="
- },
- "@louislam/sqlite3": {
- "version": "15.1.2",
- "resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-15.1.2.tgz",
- "integrity": "sha512-VRquWrCKKwfOnzwVh6hOud8lHPvv2R7Jic3gyZCL5kiZpNfmJ71DLCV9SNgLaMDloU+mVWymLev8vehlf7xf5g==",
- "requires": {
- "@mapbox/node-pre-gyp": "^1.0.0",
- "node-addon-api": "^4.2.0",
- "node-gyp": "^7.1.2",
- "tar": "^6.1.11"
- }
- },
- "@mapbox/node-pre-gyp": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
- "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
- "requires": {
- "detect-libc": "^2.0.0",
- "https-proxy-agent": "^5.0.0",
- "make-dir": "^3.1.0",
- "node-fetch": "^2.6.7",
- "nopt": "^5.0.0",
- "npmlog": "^5.0.1",
- "rimraf": "^3.0.2",
- "semver": "^7.3.5",
- "tar": "^6.1.11"
- },
- "dependencies": {
- "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==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "@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"
- }
- },
- "@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.0.3"
- }
- },
- "@octokit/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
- "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
- "dev": true,
- "requires": {
- "@octokit/auth-token": "^2.4.4",
- "@octokit/graphql": "^4.5.8",
- "@octokit/request": "^5.6.3",
- "@octokit/request-error": "^2.0.5",
- "@octokit/types": "^6.0.3",
- "before-after-hook": "^2.2.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/endpoint": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
- "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/graphql": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
- "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
- "dev": true,
- "requires": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==",
- "dev": true
- },
- "@octokit/plugin-paginate-rest": {
- "version": "2.21.3",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz",
- "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.40.0"
- }
- },
- "@octokit/plugin-rest-endpoint-methods": {
- "version": "5.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz",
- "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.39.0",
- "deprecation": "^2.3.1"
- }
- },
- "@octokit/request": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
- "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
- "dev": true,
- "requires": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/request-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
- "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dev": true,
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "@popperjs/core": {
- "version": "2.10.2",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz",
- "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==",
- "dev": true
- },
- "@protobufjs/aspromise": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
- },
- "@protobufjs/base64": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
- },
- "@protobufjs/codegen": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
- },
- "@protobufjs/eventemitter": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
- "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
- },
- "@protobufjs/fetch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
- "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
- "requires": {
- "@protobufjs/aspromise": "^1.1.1",
- "@protobufjs/inquire": "^1.1.0"
- }
- },
- "@protobufjs/float": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
- },
- "@protobufjs/inquire": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
- },
- "@protobufjs/path": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
- },
- "@protobufjs/pool": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
- },
- "@protobufjs/utf8": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
- },
- "@sideway/address": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
- "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==",
- "dev": true,
- "requires": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "@sideway/formula": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
- "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
- "dev": true
- },
- "@sideway/pinpoint": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
- "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
- "dev": true
- },
- "@sinonjs/commons": {
- "version": "1.8.6",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
- "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
- "dev": true,
- "requires": {
- "type-detect": "4.0.8"
- }
- },
- "@sinonjs/fake-timers": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
- "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "@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=="
- },
- "@tediousjs/connection-string": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.3.0.tgz",
- "integrity": "sha512-d/keJiNKfpHo+GmSB8QcsAwBx8h+V1UbdozA5TD+eSLXprNY53JAYub47J9evsSKWDdNG5uVj0FiMozLKuzowQ=="
- },
- "@tootallnate/once": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
- "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="
- },
- "@types/accepts": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz",
- "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/babel__core": {
- "version": "7.1.20",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz",
- "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "@types/babel__generator": {
- "version": "7.6.4",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
- "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__template": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
- "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__traverse": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz",
- "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.3.0"
- }
- },
- "@types/body-parser": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
- "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
- "requires": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "@types/bootstrap": {
- "version": "5.1.13",
- "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.1.13.tgz",
- "integrity": "sha512-1hIIOgfkMlyQCQz/3ae53xr6ZN2d6EDj/n3G+Sh/LBsBUVigyDmnCbLwsaXJJ1GBGlkjgfXVoyIvEPowQw25xQ==",
- "dev": true,
- "requires": {
- "@popperjs/core": "^2.9.2"
- }
- },
- "@types/connect": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
- "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/content-disposition": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz",
- "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA=="
- },
- "@types/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
- },
- "@types/cookies": {
- "version": "0.7.7",
- "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz",
- "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==",
- "requires": {
- "@types/connect": "*",
- "@types/express": "*",
- "@types/keygrip": "*",
- "@types/node": "*"
- }
- },
- "@types/cors": {
- "version": "2.8.13",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz",
- "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/es-aggregate-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@types/es-aggregate-error/-/es-aggregate-error-1.0.2.tgz",
- "integrity": "sha512-erqUpFXksaeR2kejKnhnjZjbFxUpGZx4Z7ydNL9ie8tEhXPiZTsLeUDJ6aR1F8j5wWUAtOAQWUqkc7givBJbBA==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/express": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz",
- "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==",
- "requires": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.31",
- "@types/qs": "*",
- "@types/serve-static": "*"
- }
- },
- "@types/express-serve-static-core": {
- "version": "4.17.32",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz",
- "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==",
- "requires": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*"
- }
- },
- "@types/graceful-fs": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
- "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/http-assert": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz",
- "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA=="
- },
- "@types/http-errors": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz",
- "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ=="
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
- "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
- "dev": true
- },
- "@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
- "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/keygrip": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz",
- "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
- },
- "@types/koa": {
- "version": "2.13.5",
- "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz",
- "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==",
- "requires": {
- "@types/accepts": "*",
- "@types/content-disposition": "*",
- "@types/cookies": "*",
- "@types/http-assert": "*",
- "@types/http-errors": "*",
- "@types/keygrip": "*",
- "@types/koa-compose": "*",
- "@types/node": "*"
- }
- },
- "@types/koa-compose": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz",
- "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==",
- "requires": {
- "@types/koa": "*"
- }
- },
- "@types/lodash": {
- "version": "4.14.191",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz",
- "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ=="
- },
- "@types/long": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
- "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
- },
- "@types/mime": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
- "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
- },
- "@types/minimist": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
- "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
- "dev": true
- },
- "@types/node": {
- "version": "18.11.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
- "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
- },
- "@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": true
- },
- "@types/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
- "dev": true
- },
- "@types/prettier": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
- "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
- "dev": true
- },
- "@types/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
- },
- "@types/range-parser": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
- "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
- },
- "@types/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
- "requires": {
- "@types/mime": "*",
- "@types/node": "*"
- }
- },
- "@types/sinonjs__fake-timers": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz",
- "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==",
- "dev": true
- },
- "@types/sizzle": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz",
- "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==",
- "dev": true
- },
- "@types/stack-utils": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
- "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
- "dev": true
- },
- "@types/yargs": {
- "version": "16.0.5",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
- "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "@types/yargs-parser": {
- "version": "21.0.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
- "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
- "dev": true
- },
- "@types/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
- "dev": true,
- "optional": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@vitejs/plugin-legacy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-2.1.0.tgz",
- "integrity": "sha512-en3h0L7okBonSYKJx81bU8AVFPjSCiUSz8xUDAW8J0CxskfxSt/VJKbZO6G9yCVgZLywGoO8PNAfOQWVLUWZ2A==",
- "dev": true,
- "requires": {
- "@babel/standalone": "^7.18.13",
- "core-js": "^3.25.0",
- "magic-string": "^0.26.2",
- "regenerator-runtime": "^0.13.9",
- "systemjs": "^6.12.4"
- }
- },
- "@vitejs/plugin-vue": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.1.2.tgz",
- "integrity": "sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==",
- "dev": true
- },
- "@vue/compiler-core": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
- "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.16.4",
- "@vue/shared": "3.2.45",
- "estree-walker": "^2.0.2",
- "source-map": "^0.6.1"
- }
- },
- "@vue/compiler-dom": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
- "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
- "dev": true,
- "requires": {
- "@vue/compiler-core": "3.2.45",
- "@vue/shared": "3.2.45"
- }
- },
- "@vue/compiler-sfc": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
- "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.16.4",
- "@vue/compiler-core": "3.2.45",
- "@vue/compiler-dom": "3.2.45",
- "@vue/compiler-ssr": "3.2.45",
- "@vue/reactivity-transform": "3.2.45",
- "@vue/shared": "3.2.45",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.25.7",
- "postcss": "^8.1.10",
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.8"
- }
- }
- }
- },
- "@vue/compiler-ssr": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
- "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
- "dev": true,
- "requires": {
- "@vue/compiler-dom": "3.2.45",
- "@vue/shared": "3.2.45"
- }
- },
- "@vue/devtools-api": {
- "version": "6.4.5",
- "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz",
- "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==",
- "dev": true
- },
- "@vue/reactivity": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.36.tgz",
- "integrity": "sha512-c2qvopo0crh9A4GXi2/2kfGYMxsJW4tVILrqRPydVGZHhq0fnzy6qmclWOhBFckEhmyxmpHpdJtIRYGeKcuhnA==",
- "dev": true,
- "requires": {
- "@vue/shared": "3.2.36"
- },
- "dependencies": {
- "@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- }
- }
- },
- "@vue/reactivity-transform": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
- "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.16.4",
- "@vue/compiler-core": "3.2.45",
- "@vue/shared": "3.2.45",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.25.7"
- },
- "dependencies": {
- "magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.8"
- }
- }
- }
- },
- "@vue/runtime-core": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.36.tgz",
- "integrity": "sha512-PTWBD+Lub+1U3/KhbCExrfxyS14hstLX+cBboxVHaz+kXoiDLNDEYAovPtxeTutbqtClIXtft+wcGdC+FUQ9qQ==",
- "dev": true,
- "requires": {
- "@vue/reactivity": "3.2.36",
- "@vue/shared": "3.2.36"
- },
- "dependencies": {
- "@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- }
- }
- },
- "@vue/runtime-dom": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.36.tgz",
- "integrity": "sha512-gYPYblm7QXHVuBohqNRRT7Wez0f2Mx2D40rb4fleehrJU9CnkjG0phhcGEZFfGwCmHZRqBCRgbFWE98bPULqkg==",
- "dev": true,
- "requires": {
- "@vue/runtime-core": "3.2.36",
- "@vue/shared": "3.2.36",
- "csstype": "^2.6.8"
- },
- "dependencies": {
- "@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- }
- }
- },
- "@vue/server-renderer": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.36.tgz",
- "integrity": "sha512-uZE0+jfye6yYXWvAQYeHZv+f50sRryvy16uiqzk3jn8hEY8zTjI+rzlmZSGoE915k+W/Ol9XSw6vxOUD8dGkUg==",
- "dev": true,
- "requires": {
- "@vue/compiler-ssr": "3.2.36",
- "@vue/shared": "3.2.36"
- },
- "dependencies": {
- "@vue/compiler-core": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.36.tgz",
- "integrity": "sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.16.4",
- "@vue/shared": "3.2.36",
- "estree-walker": "^2.0.2",
- "source-map": "^0.6.1"
- }
- },
- "@vue/compiler-dom": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.36.tgz",
- "integrity": "sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA==",
- "dev": true,
- "requires": {
- "@vue/compiler-core": "3.2.36",
- "@vue/shared": "3.2.36"
- }
- },
- "@vue/compiler-ssr": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.36.tgz",
- "integrity": "sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw==",
- "dev": true,
- "requires": {
- "@vue/compiler-dom": "3.2.36",
- "@vue/shared": "3.2.36"
- }
- },
- "@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- }
- }
- },
- "@vue/shared": {
- "version": "3.2.45",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
- "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
- "dev": true
- },
- "@vuepic/vue-datepicker": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-3.4.8.tgz",
- "integrity": "sha512-nbuMA7IgjtT99LqcjSTSUcl7omTZSB+7vYSWQ9gQm31Frm/1wn54fT1Q0HaRD9nHXX982AACbqeND4K80SKONw==",
- "dev": true,
- "requires": {
- "date-fns": "^2.29.2"
- }
- },
- "abab": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
- "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
- "dev": true
- },
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "requires": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- }
- },
- "acorn": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
- "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
- "dev": true
- },
- "acorn-globals": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
- "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
- "dev": true,
- "requires": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
- },
- "dependencies": {
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true
- }
- }
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true
- },
- "acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "dev": true
- },
- "aedes": {
- "version": "0.46.3",
- "resolved": "https://registry.npmjs.org/aedes/-/aedes-0.46.3.tgz",
- "integrity": "sha512-i3B+H74uNRhlqcs/JdrMp7e3daz4Cwls0x4yLcfjGXz2tIwnxhF6od4m86O6yyNdz/Gg3jfY3q0sc/Cz8qzg6g==",
- "dev": true,
- "requires": {
- "aedes-packet": "^2.3.1",
- "aedes-persistence": "^8.1.3",
- "bulk-write-stream": "^2.0.1",
- "end-of-stream": "^1.4.4",
- "fastfall": "^1.5.1",
- "fastparallel": "^2.4.1",
- "fastseries": "^2.0.0",
- "hyperid": "^3.0.0",
- "mqemitter": "^4.5.0",
- "mqtt-packet": "^7.1.2",
- "readable-stream": "^3.6.0",
- "retimer": "^3.0.0",
- "reusify": "^1.0.4",
- "uuid": "^8.3.2"
- }
- },
- "aedes-packet": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/aedes-packet/-/aedes-packet-2.3.1.tgz",
- "integrity": "sha512-LqBd57uc2rui2RbjycW17dylglejG26mM4ewVXGNDnVp/SUHFVEgm7d1HTmYrnSkSCNoHti042qgcTwv/F+BtQ==",
- "dev": true,
- "requires": {
- "mqtt-packet": "^6.3.0"
- },
- "dependencies": {
- "mqtt-packet": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz",
- "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==",
- "dev": true,
- "requires": {
- "bl": "^4.0.2",
- "debug": "^4.1.1",
- "process-nextick-args": "^2.0.1"
- }
- }
- }
- },
- "aedes-persistence": {
- "version": "8.1.3",
- "resolved": "https://registry.npmjs.org/aedes-persistence/-/aedes-persistence-8.1.3.tgz",
- "integrity": "sha512-VMCjEV+2g1TNJb/IlDEUy6SP9crT+QUhe2xc6UjyqrFNBNgTvHmOefXY7FxWrwmR2QA02vwg3+5p/JXkyg/Dkw==",
- "dev": true,
- "requires": {
- "aedes-packet": "^2.3.1",
- "from2": "^2.3.0",
- "qlobber": "^5.0.3"
- }
- },
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "requires": {
- "debug": "4"
- }
- },
- "aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
- "requires": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- }
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "devOptional": 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"
- }
- },
- "anafanafo": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anafanafo/-/anafanafo-2.0.0.tgz",
- "integrity": "sha512-Nlfq7NC4AOkTJerWRIZcOAiMNtIDVIGWGvQ98O7Jl6Kr2Dk0dX5u4MqN778kSRTy5KRqchpLdF2RtLFEz9FVkQ==",
- "requires": {
- "char-width-table-consumer": "^1.0.0"
- }
- },
- "ansi-colors": {
- "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
- },
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.21.3"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "aproba": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
- },
- "arch": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
- "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
- "dev": true
- },
- "are-we-there-yet": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
- "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^3.6.0"
- }
- },
- "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
- },
- "args-parser": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/args-parser/-/args-parser-1.3.0.tgz",
- "integrity": "sha512-If3Zi4BSjlQIJ9fgAhSiKi0oJtgMzSqh0H4wvl7XSeO16FKx7QqaHld8lZeEajPX7y1C5qKKeNgyrfyvmjmjUQ=="
- },
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true
- },
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
- "dev": true
- },
- "asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
- "devOptional": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
- "devOptional": true
- },
- "astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true
- },
- "async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true
- },
- "await-lock": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz",
- "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw=="
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
- "devOptional": true
- },
- "aws4": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
- "devOptional": true
- },
- "axios": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
- "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
- "requires": {
- "follow-redirects": "^1.14.9",
- "form-data": "^4.0.0"
- }
- },
- "axios-ntlm": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/axios-ntlm/-/axios-ntlm-1.3.0.tgz",
- "integrity": "sha512-NPNsIMO1SGX5scs3ZWJqsV7iRLvET+DlRl94aZ7Sx14zA8RTQh9EDxsJmxB9cKjardKfp2Vge444uYYLfvWC0Q==",
- "requires": {
- "axios": "^0.21.3",
- "dev-null": "^0.1.1"
- },
- "dependencies": {
- "axios": {
- "version": "0.21.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
- "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
- "requires": {
- "follow-redirects": "^1.14.0"
- }
- }
- }
- },
- "babel-jest": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
- "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
- "dev": true,
- "requires": {
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/babel__core": "^7.1.14",
- "babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^27.5.1",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "babel-plugin-add-module-exports": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz",
- "integrity": "sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==",
- "dev": true
- },
- "babel-plugin-istanbul": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
- "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^5.0.4",
- "test-exclude": "^6.0.0"
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
- "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.0.0",
- "@types/babel__traverse": "^7.0.6"
- }
- },
- "babel-plugin-polyfill-corejs2": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
- "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.17.7",
- "@babel/helper-define-polyfill-provider": "^0.3.3",
- "semver": "^6.1.1"
- }
- },
- "babel-plugin-polyfill-corejs3": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
- "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
- "dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.3.3",
- "core-js-compat": "^3.25.1"
- }
- },
- "babel-plugin-polyfill-regenerator": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
- "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
- "dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.3.3"
- }
- },
- "babel-plugin-rewire": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-rewire/-/babel-plugin-rewire-1.2.0.tgz",
- "integrity": "sha512-JBZxczHw3tScS+djy6JPLMjblchGhLI89ep15H3SyjujIzlxo5nr6Yjo7AXotdeVczeBmWs0tF8PgJWDdgzAkQ==",
- "dev": true
- },
- "babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
- "dev": true,
- "requires": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- }
- },
- "babel-preset-jest": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
- "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
- "dev": true,
- "requires": {
- "babel-plugin-jest-hoist": "^27.5.1",
- "babel-preset-current-node-syntax": "^1.0.0"
- }
- },
- "babel-runtime": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
- "dev": true,
- "requires": {
- "core-js": "^2.4.0",
- "regenerator-runtime": "^0.11.0"
- },
- "dependencies": {
- "core-js": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
- "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
- "dev": true
- },
- "regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
- "dev": true
- }
- }
- },
- "badge-maker": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/badge-maker/-/badge-maker-3.3.1.tgz",
- "integrity": "sha512-OO/PS7Zg2E6qaUWzHEHt21Q5VjcFBAJVA8ztgT/fIdSZFBUwoyeo0ZhA6V5tUM8Vcjq8DJl6jfGhpjESssyqMQ==",
- "requires": {
- "anafanafo": "2.0.0",
- "css-color-converter": "^2.0.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
- },
- "base64id": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
- "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
- },
- "basic-auth": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
- "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
- "requires": {
- "safe-buffer": "5.1.2"
- }
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
- "devOptional": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "bcryptjs": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
- "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
- },
- "before-after-hook": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
- "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "binary-search": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz",
- "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA=="
- },
- "bintrees": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz",
- "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw=="
- },
- "bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "blob-util": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz",
- "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==",
- "dev": true
- },
- "bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
- },
- "body-parser": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz",
- "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==",
- "requires": {
- "bytes": "3.1.2",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.8.1",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.9.7",
- "raw-body": "2.4.3",
- "type-is": "~1.6.18"
- },
- "dependencies": {
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw=="
- }
- }
- },
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
- },
- "boolean": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
- "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw=="
- },
- "bootstrap": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
- "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "bree": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/bree/-/bree-7.1.5.tgz",
- "integrity": "sha512-YAs4VQDjc6p3NhNNHBkS9NXK4wryeMq7Y/SCMcgFh0cSD4oXk7B9v53/cqzoejdelD30KEliumzrd4awka+YhQ==",
- "requires": {
- "@breejs/later": "^4.1.0",
- "boolean": "^3.1.4",
- "combine-errors": "^3.0.3",
- "cron-validate": "^1.4.3",
- "debug": "^4.3.3",
- "human-interval": "^2.0.1",
- "is-string-and-not-blank": "^0.0.2",
- "is-valid-path": "^0.1.1",
- "ms": "^2.1.3",
- "p-wait-for": "3",
- "safe-timers": "^1.1.0"
- }
- },
- "browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
- "dev": true
- },
- "browserslist": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
- "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001400",
- "electron-to-chromium": "^1.4.251",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.9"
- }
- },
- "bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "dev": true,
- "requires": {
- "node-int64": "^0.4.0"
- }
- },
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true
- },
- "buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
- "buffer-writer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
- "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw=="
- },
- "bulk-write-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/bulk-write-stream/-/bulk-write-stream-2.0.1.tgz",
- "integrity": "sha512-XWOLjgHtpDasHfwM8oO4df1JoZwa7/OwTsXDzh4rUTo+9CowzeOFBZz43w+H14h1fyq+xl28tVIBrdjcjj4Gug==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- }
- },
- "bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="
- },
- "cacheable-lookup": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz",
- "integrity": "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A=="
- },
- "cachedir": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz",
- "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==",
- "dev": true
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
- "camelcase-keys": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
- "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
- }
- },
- "caniuse-lite": {
- "version": "1.0.30001441",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz",
- "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==",
- "dev": true
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
- "devOptional": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "dev": true
- },
- "char-width-table-consumer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/char-width-table-consumer/-/char-width-table-consumer-1.0.0.tgz",
- "integrity": "sha512-Fz4UD0LBpxPgL9i29CJ5O4KANwaMnX/OhhbxzvNa332h+9+nRKyeuLw4wA51lt/ex67+/AdsoBQJF3kgX2feYQ==",
- "requires": {
- "binary-search": "^1.3.5"
- }
- },
- "chardet": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz",
- "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A=="
- },
- "chart.js": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.6.2.tgz",
- "integrity": "sha512-Xz7f/fgtVltfQYWq0zL1Xbv7N2inpG+B54p3D5FSvpCdy3sM+oZhbqa42eNuYXltaVvajgX5UpKCU2GeeJIgxg==",
- "dev": true
- },
- "chartjs-adapter-dayjs": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs/-/chartjs-adapter-dayjs-1.0.0.tgz",
- "integrity": "sha512-EnbVqTJGFKLpg1TROLdCEufrzbmIa2oeLGx8O2Wdjw2EoMudoOo9+YFu+6CM0Z0hQ/v3yq/e/Y6efQMu22n8Jg==",
- "dev": true
- },
- "check-more-types": {
- "version": "2.24.0",
- "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz",
- "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==",
- "dev": true
- },
- "check-password-strength": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/check-password-strength/-/check-password-strength-2.0.7.tgz",
- "integrity": "sha512-VyklBkB6dOKnCIh63zdVr7QKVMN9/npwUqNAXxWrz8HabVZH/n/d+lyNm1O/vbXFJlT/Hytb5ouYKYGkoeZirQ=="
- },
- "cheerio": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
- "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
- "requires": {
- "cheerio-select": "^2.1.0",
- "dom-serializer": "^2.0.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "htmlparser2": "^8.0.1",
- "parse5": "^7.0.0",
- "parse5-htmlparser2-tree-adapter": "^7.0.0"
- }
- },
- "cheerio-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
- "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
- "requires": {
- "boolbase": "^1.0.0",
- "css-select": "^5.1.0",
- "css-what": "^6.1.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1"
- }
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
- },
- "chroma-js": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
- "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
- },
- "ci-info": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz",
- "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==",
- "dev": true
- },
- "cjs-module-lexer": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
- "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
- "dev": true
- },
- "clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true
- },
- "cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "requires": {
- "restore-cursor": "^3.1.0"
- }
- },
- "cli-table3": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz",
- "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==",
- "dev": true,
- "requires": {
- "@colors/colors": "1.5.0",
- "string-width": "^4.2.0"
- }
- },
- "cli-truncate": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
- "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
- "dev": true,
- "requires": {
- "slice-ansi": "^3.0.0",
- "string-width": "^4.2.0"
- }
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "clone-regexp": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz",
- "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==",
- "dev": true,
- "requires": {
- "is-regexp": "^2.0.0"
- }
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
- "dev": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
- "optional": true
- },
- "collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
- "dev": true
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
- },
- "colord": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
- "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
- "dev": true
- },
- "colorette": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
- "dev": true
- },
- "combine-errors": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz",
- "integrity": "sha512-C8ikRNRMygCwaTx+Ek3Yr+OuZzgZjduCOfSQBjbM8V3MfgcjSTeto/GXP6PAwKvJz/v15b7GHZvx5rOlczFw/Q==",
- "requires": {
- "custom-error-instance": "2.1.1",
- "lodash.uniqby": "4.5.0"
- }
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "command-exists": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
- "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
- },
- "commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
- "dev": true
- },
- "commist": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz",
- "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==",
- "requires": {
- "leven": "^2.1.0",
- "minimist": "^1.1.0"
- },
- "dependencies": {
- "leven": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
- "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA=="
- }
- }
- },
- "common-tags": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
- "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
- "dev": true
- },
- "compare-versions": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
- "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
- },
- "compressible": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
- "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
- "requires": {
- "mime-db": ">= 1.43.0 < 2"
- }
- },
- "compression": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
- "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
- "requires": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.16",
- "debug": "2.6.9",
- "on-headers": "~1.0.2",
- "safe-buffer": "5.1.2",
- "vary": "~1.1.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- }
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "concurrently": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz",
- "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "date-fns": "^2.29.1",
- "lodash": "^4.17.21",
- "rxjs": "^7.0.0",
- "shell-quote": "^1.7.3",
- "spawn-command": "^0.0.2-1",
- "supports-color": "^8.1.0",
- "tree-kill": "^1.2.2",
- "yargs": "^17.3.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "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"
- },
- "dependencies": {
- "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"
- }
- }
- }
- },
- "cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.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
- },
- "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
- },
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "yargs": {
- "version": "17.6.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz",
- "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==",
- "dev": true,
- "requires": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- }
- },
- "yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true
- }
- }
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
- },
- "content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "requires": {
- "safe-buffer": "5.2.1"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- }
- }
- },
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
- },
- "convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- },
- "cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "core-js": {
- "version": "3.26.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz",
- "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==",
- "dev": true
- },
- "core-js-compat": {
- "version": "3.27.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz",
- "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==",
- "dev": true,
- "requires": {
- "browserslist": "^4.21.4"
- }
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
- "devOptional": true
- },
- "cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
- "requires": {
- "object-assign": "^4",
- "vary": "^1"
- }
- },
- "cosmiconfig": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
- "dev": true,
- "requires": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.2.1",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
- }
- },
- "cron-validate": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/cron-validate/-/cron-validate-1.4.5.tgz",
- "integrity": "sha512-nKlOJEnYKudMn/aNyNH8xxWczlfpaazfWV32Pcx/2St51r2bxWbGhZD7uwzMcRhunA/ZNL+Htm/i0792Z59UMQ==",
- "requires": {
- "yup": "0.32.9"
- }
- },
- "cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.1"
- }
- },
- "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"
- }
- },
- "css-color-converter": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/css-color-converter/-/css-color-converter-2.0.0.tgz",
- "integrity": "sha512-oLIG2soZz3wcC3aAl/7Us5RS8Hvvc6I8G8LniF/qfMmrm7fIKQ8RIDDRZeKyGL2SrWfNqYspuLShbnjBMVWm8g==",
- "requires": {
- "color-convert": "^0.5.2",
- "color-name": "^1.1.4",
- "css-unit-converter": "^1.1.2"
- },
- "dependencies": {
- "color-convert": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
- "integrity": "sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling=="
- },
- "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=="
- }
- }
- },
- "css-functions-list": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz",
- "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==",
- "dev": true
- },
- "css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
- "requires": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- }
- },
- "css-unit-converter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz",
- "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA=="
- },
- "css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="
- },
- "cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true
- },
- "cssom": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
- "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
- "dev": true
- },
- "cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
- "dev": true,
- "requires": {
- "cssom": "~0.3.6"
- },
- "dependencies": {
- "cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
- }
- }
- },
- "csstype": {
- "version": "2.6.21",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
- "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
- "dev": true
- },
- "custom-error-instance": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz",
- "integrity": "sha512-p6JFxJc3M4OTD2li2qaHkDCw9SfMw82Ldr6OC9Je1aXiGfhx2W8p3GaoeaGrPJTUN9NirTM/KTxHWMUdR1rsUg=="
- },
- "cypress": {
- "version": "10.11.0",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz",
- "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==",
- "dev": true,
- "requires": {
- "@cypress/request": "^2.88.10",
- "@cypress/xvfb": "^1.2.4",
- "@types/node": "^14.14.31",
- "@types/sinonjs__fake-timers": "8.1.1",
- "@types/sizzle": "^2.3.2",
- "arch": "^2.2.0",
- "blob-util": "^2.0.2",
- "bluebird": "^3.7.2",
- "buffer": "^5.6.0",
- "cachedir": "^2.3.0",
- "chalk": "^4.1.0",
- "check-more-types": "^2.24.0",
- "cli-cursor": "^3.1.0",
- "cli-table3": "~0.6.1",
- "commander": "^5.1.0",
- "common-tags": "^1.8.0",
- "dayjs": "^1.10.4",
- "debug": "^4.3.2",
- "enquirer": "^2.3.6",
- "eventemitter2": "6.4.7",
- "execa": "4.1.0",
- "executable": "^4.1.1",
- "extract-zip": "2.0.1",
- "figures": "^3.2.0",
- "fs-extra": "^9.1.0",
- "getos": "^3.2.1",
- "is-ci": "^3.0.0",
- "is-installed-globally": "~0.4.0",
- "lazy-ass": "^1.6.0",
- "listr2": "^3.8.3",
- "lodash": "^4.17.21",
- "log-symbols": "^4.0.0",
- "minimist": "^1.2.6",
- "ospath": "^1.2.2",
- "pretty-bytes": "^5.6.0",
- "proxy-from-env": "1.0.0",
- "request-progress": "^3.0.0",
- "semver": "^7.3.2",
- "supports-color": "^8.1.1",
- "tmp": "~0.2.1",
- "untildify": "^4.0.0",
- "yauzl": "^2.10.0"
- },
- "dependencies": {
- "@types/node": {
- "version": "14.18.36",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
- "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==",
- "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"
- }
- },
- "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"
- },
- "dependencies": {
- "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"
- }
- }
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
- "devOptional": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "data-urls": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
- "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
- "dev": true,
- "requires": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
- }
- },
- "date-fns": {
- "version": "2.29.3",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
- "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==",
- "dev": true
- },
- "dayjs": {
- "version": "1.11.7",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
- "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "requires": {
- "ms": "2.1.2"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- }
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true
- },
- "decamelize-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
- "dev": true,
- "requires": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
- "dev": true
- }
- }
- },
- "decimal.js": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
- "dev": true
- },
- "dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
- "dev": true
- },
- "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
- },
- "deepmerge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
- "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
- "dev": true
- },
- "define-lazy-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="
- },
- "define-properties": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
- "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
- "requires": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- }
- },
- "delay": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz",
- "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==",
- "dev": true
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
- },
- "denque": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
- "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw=="
- },
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
- },
- "deprecation": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
- "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
- "dev": true
- },
- "destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg=="
- },
- "detect-libc": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
- "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
- },
- "detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true
- },
- "dev-null": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/dev-null/-/dev-null-0.1.1.tgz",
- "integrity": "sha512-nMNZG0zfMgmdv8S5O0TM5cpwNbGKRGPCxVsr0SmA3NZZy9CYBbuNLL0PD3Acx9e5LIUgwONXtM9kM6RlawPxEQ=="
- },
- "diff-sequences": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
- "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
- "dev": true
- },
- "dijkstrajs": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
- "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "dns2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/dns2/-/dns2-2.0.5.tgz",
- "integrity": "sha512-dznYrQU+Txcz++klGLBY9YR3WLOGHTy2vAKAqF+yYw1KaKFm5f5Y4jbbFEvohJf8YtZ0J2SzZlZx2k6LV4zJqQ==",
- "dev": true
- },
- "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"
- }
- },
- "dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- }
- },
- "domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
- },
- "domexception": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
- "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
- "dev": true,
- "requires": {
- "webidl-conversions": "^5.0.0"
- },
- "dependencies": {
- "webidl-conversions": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
- "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
- "dev": true
- }
- }
- },
- "domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "requires": {
- "domelementtype": "^2.3.0"
- }
- },
- "domutils": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
- "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
- "requires": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.1"
- }
- },
- "duplexify": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
- "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
- "requires": {
- "end-of-stream": "^1.4.1",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1",
- "stream-shift": "^1.0.0"
- }
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
- "devOptional": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "electron-to-chromium": {
- "version": "1.4.284",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
- "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
- "dev": true
- },
- "emittery": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
- "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
- "dev": true
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "encode-utf8": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
- "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==",
- "dev": true
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
- },
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "requires": {
- "once": "^1.4.0"
- }
- },
- "engine.io": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz",
- "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==",
- "requires": {
- "@types/cookie": "^0.4.1",
- "@types/cors": "^2.8.12",
- "@types/node": ">=10.0.0",
- "accepts": "~1.3.4",
- "base64id": "2.0.0",
- "cookie": "~0.4.1",
- "cors": "~2.8.5",
- "debug": "~4.3.1",
- "engine.io-parser": "~5.0.3",
- "ws": "~8.2.3"
- },
- "dependencies": {
- "ws": {
- "version": "8.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
- "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA=="
- }
- }
- },
- "engine.io-client": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz",
- "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==",
- "requires": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1",
- "engine.io-parser": "~5.0.3",
- "ws": "~8.2.3",
- "xmlhttprequest-ssl": "~2.0.0"
- },
- "dependencies": {
- "ws": {
- "version": "8.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
- "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA=="
- }
- }
- },
- "engine.io-parser": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
- "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg=="
- },
- "enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
- "dev": true,
- "requires": {
- "ansi-colors": "^4.1.1"
- }
- },
- "entities": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
- "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA=="
- },
- "env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "optional": true
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.20.5",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
- "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
- "requires": {
- "call-bind": "^1.0.2",
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.1.3",
- "get-symbol-description": "^1.0.0",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.3",
- "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-weakref": "^1.0.2",
- "object-inspect": "^1.12.2",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.4.3",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "unbox-primitive": "^1.0.2"
- }
- },
- "es-aggregate-error": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.9.tgz",
- "integrity": "sha512-fvnX40sb538wdU6r4s35cq4EY6Lr09Upj40BEVem4LEsuW8XgQep9yD5Q1U2KftokNp1rWODFJ2qwZSsAjFpbg==",
- "requires": {
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "function-bind": "^1.1.1",
- "functions-have-names": "^1.2.3",
- "get-intrinsic": "^1.1.3",
- "globalthis": "^1.0.3",
- "has-property-descriptors": "^1.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==",
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "esbuild": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
- "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
- "dev": true,
- "requires": {
- "@esbuild/android-arm": "0.15.18",
- "@esbuild/linux-loong64": "0.15.18",
- "esbuild-android-64": "0.15.18",
- "esbuild-android-arm64": "0.15.18",
- "esbuild-darwin-64": "0.15.18",
- "esbuild-darwin-arm64": "0.15.18",
- "esbuild-freebsd-64": "0.15.18",
- "esbuild-freebsd-arm64": "0.15.18",
- "esbuild-linux-32": "0.15.18",
- "esbuild-linux-64": "0.15.18",
- "esbuild-linux-arm": "0.15.18",
- "esbuild-linux-arm64": "0.15.18",
- "esbuild-linux-mips64le": "0.15.18",
- "esbuild-linux-ppc64le": "0.15.18",
- "esbuild-linux-riscv64": "0.15.18",
- "esbuild-linux-s390x": "0.15.18",
- "esbuild-netbsd-64": "0.15.18",
- "esbuild-openbsd-64": "0.15.18",
- "esbuild-sunos-64": "0.15.18",
- "esbuild-windows-32": "0.15.18",
- "esbuild-windows-64": "0.15.18",
- "esbuild-windows-arm64": "0.15.18"
- }
- },
- "esbuild-android-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
- "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
- "dev": true,
- "optional": true
- },
- "esbuild-android-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
- "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-darwin-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
- "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
- "dev": true,
- "optional": true
- },
- "esbuild-darwin-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
- "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
- "dev": true,
- "optional": true
- },
- "esbuild-freebsd-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
- "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
- "dev": true,
- "optional": true
- },
- "esbuild-freebsd-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
- "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-32": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
- "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
- "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-arm": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
- "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
- "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-mips64le": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
- "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-ppc64le": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
- "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-riscv64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
- "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-s390x": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
- "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-netbsd-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
- "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
- "dev": true,
- "optional": true
- },
- "esbuild-openbsd-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
- "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-sunos-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
- "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-32": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
- "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
- "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
- "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
- "dev": true,
- "optional": true
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
- "dev": true,
- "requires": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- }
- },
- "optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dev": true,
- "requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- }
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
- "dev": true
- },
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- }
- }
- },
- "eslint": {
- "version": "8.14.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz",
- "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==",
- "dev": true,
- "requires": {
- "@eslint/eslintrc": "^1.2.2",
- "@humanwhocodes/config-array": "^0.9.2",
- "ajv": "^6.10.0",
- "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.1.1",
- "eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^6.0.1",
- "globals": "^13.6.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "regexpp": "^3.2.0",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
- "dev": true
- },
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- },
- "globals": {
- "version": "13.19.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
- "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "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
- },
- "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"
- }
- },
- "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
- }
- }
- },
- "eslint-plugin-vue": {
- "version": "8.7.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz",
- "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==",
- "dev": true,
- "requires": {
- "eslint-utils": "^3.0.0",
- "natural-compare": "^1.4.0",
- "nth-check": "^2.0.1",
- "postcss-selector-parser": "^6.0.9",
- "semver": "^7.3.5",
- "vue-eslint-parser": "^8.0.1"
- },
- "dependencies": {
- "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"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^2.0.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true
- },
- "esm": {
- "version": "3.2.25",
- "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
- "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="
- },
- "espree": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
- "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.3.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
- "dev": true
- }
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "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"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
- },
- "estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "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
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
- },
- "eventemitter2": {
- "version": "6.4.7",
- "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
- "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==",
- "dev": true
- },
- "events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
- },
- "execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- }
- },
- "execall": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz",
- "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==",
- "dev": true,
- "requires": {
- "clone-regexp": "^2.1.0"
- }
- },
- "executable": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
- "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
- "dev": true,
- "requires": {
- "pify": "^2.2.0"
- }
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "dev": true
- },
- "expect": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
- "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "jest-matcher-utils": "^27.5.1",
- "jest-message-util": "^27.5.1"
- }
- },
- "express": {
- "version": "4.17.3",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz",
- "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==",
- "requires": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.2",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.4.2",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.9.7",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.17.2",
- "serve-static": "1.14.2",
- "setprototypeof": "1.2.0",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw=="
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- }
- }
- },
- "express-basic-auth": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz",
- "integrity": "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==",
- "requires": {
- "basic-auth": "^2.0.1"
- }
- },
- "express-static-gzip": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.7.tgz",
- "integrity": "sha512-QOCZUC+lhPPCjIJKpQGu1Oa61Axg9Mq09Qvit8Of7kzpMuwDeMSqjjQteQS3OVw/GkENBoSBheuQDWPlngImvw==",
- "requires": {
- "serve-static": "^1.14.1"
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "devOptional": true
- },
- "extract-zip": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
- "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
- "dev": true,
- "requires": {
- "@types/yauzl": "^2.9.1",
- "debug": "^4.1.1",
- "get-stream": "^5.1.0",
- "yauzl": "^2.10.0"
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
- "devOptional": 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==",
- "devOptional": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "devOptional": 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
- },
- "fastest-levenshtein": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
- "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
- "dev": true
- },
- "fastfall": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/fastfall/-/fastfall-1.5.1.tgz",
- "integrity": "sha512-KH6p+Z8AKPXnmA7+Iz2Lh8ARCMr+8WNPVludm1LGkZoD2MjY6LVnRMtTKhkdzI+jr0RzQWXKzKyBJm1zoHEL4Q==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.0"
- }
- },
- "fastparallel": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/fastparallel/-/fastparallel-2.4.1.tgz",
- "integrity": "sha512-qUmhxPgNHmvRjZKBFUNI0oZuuH9OlSIOXmJ98lhKPxMZZ7zS/Fi0wRHOihDSz0R1YiIOjxzOY4bq65YTcdBi2Q==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4",
- "xtend": "^4.0.2"
- }
- },
- "fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fastseries": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fastseries/-/fastseries-2.0.0.tgz",
- "integrity": "sha512-XBU9RXeoYc2/VnvMhplAxEmZLfIk7cvTBu+xwoBuTI8pL19E03cmca17QQycKIdxgwCeFA/a4u27gv1h3ya5LQ==",
- "dev": true
- },
- "favico.js": {
- "version": "0.3.10",
- "resolved": "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz",
- "integrity": "sha512-S5KvqAOczRjlyjQPPZPSlUEybBkfBgKosY/pzTIxkvKgigB+DkITvIEI70dxQarbv4PZ+UD77QzquCAcU/6LHQ==",
- "dev": true
- },
- "fb-watchman": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
- "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
- "dev": true,
- "requires": {
- "bser": "2.1.1"
- }
- },
- "fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "requires": {
- "pend": "~1.2.0"
- }
- },
- "figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "file-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"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- }
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "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.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
- "dev": true
- },
- "follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
- "devOptional": true
- },
- "form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
- },
- "from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "requires": {
- "minipass": "^3.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "function.prototype.name": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
- "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- }
- },
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
- },
- "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=="
- },
- "gauge": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
- "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
- "requires": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.2",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.1",
- "object-assign": "^4.1.1",
- "signal-exit": "^3.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.2"
- }
- },
- "generate-function": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
- "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
- "requires": {
- "is-property": "^1.0.2"
- }
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
- },
- "get-intrinsic": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
- "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true
- },
- "get-stdin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
- "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
- "dev": true
- },
- "get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- }
- },
- "getopts": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz",
- "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA=="
- },
- "getos": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz",
- "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==",
- "dev": true,
- "requires": {
- "async": "^3.2.0"
- }
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
- "devOptional": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "global-dirs": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
- "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
- "dev": true,
- "requires": {
- "ini": "2.0.0"
- }
- },
- "global-modules": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
- "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
- "dev": true,
- "requires": {
- "global-prefix": "^3.0.0"
- }
- },
- "global-prefix": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
- "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
- "dev": true,
- "requires": {
- "ini": "^1.3.5",
- "kind-of": "^6.0.2",
- "which": "^1.3.1"
- },
- "dependencies": {
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- },
- "globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
- "requires": {
- "define-properties": "^1.1.3"
- }
- },
- "globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "globjoin": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
- "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
- "dev": true
- },
- "gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "requires": {
- "get-intrinsic": "^1.1.3"
- }
- },
- "graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "devOptional": true
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
- "optional": true
- },
- "har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "optional": true,
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
- "hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "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=="
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "requires": {
- "get-intrinsic": "^1.1.1"
- }
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
- },
- "has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
- },
- "help-me": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz",
- "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==",
- "requires": {
- "glob": "^7.1.6",
- "readable-stream": "^3.6.0"
- }
- },
- "hoek": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz",
- "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ=="
- },
- "hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "html-encoding-sniffer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
- "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
- "dev": true,
- "requires": {
- "whatwg-encoding": "^1.0.5"
- }
- },
- "html-escaper": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
- },
- "html-tags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
- "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
- "dev": true
- },
- "htmlparser2": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
- "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
- "requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "entities": "^4.3.0"
- }
- },
- "http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.1"
- }
- },
- "http-graceful-shutdown": {
- "version": "3.1.12",
- "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.12.tgz",
- "integrity": "sha512-z3mH1HUwRESrauPjvjH5QuH2Ce4uLlWonPFgZnwAyxIFYROxIMcNNWwNltN+s8fHF/aGlsfQDOICHLXsabK43w==",
- "requires": {
- "debug": "^4.3.4"
- }
- },
- "http-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
- "requires": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
- }
- },
- "http-signature": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz",
- "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^2.0.2",
- "sshpk": "^1.14.1"
- }
- },
- "https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "requires": {
- "agent-base": "6",
- "debug": "4"
- }
- },
- "human-interval": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/human-interval/-/human-interval-2.0.1.tgz",
- "integrity": "sha512-r4Aotzf+OtKIGQCB3odUowy4GfUDTy3aTWTfLd7ZF2gBCy3XW3v/dJLRefZnOFFnjqs5B1TypvS8WarpBkYUNQ==",
- "requires": {
- "numbered": "^1.1.0"
- }
- },
- "human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
- "dev": true
- },
- "hyperid": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.0.1.tgz",
- "integrity": "sha512-I+tl7TS5nsoVhkxqX1rS3Qmqlq44eoPUcgPthW8v3IW8CvWL7lwtd6HQbkDUMrBKJTG0vgEaRsjT35imW/D+9Q==",
- "dev": true,
- "requires": {
- "uuid": "^8.3.2",
- "uuid-parse": "^1.1.0"
- }
- },
- "iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- }
- },
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
- },
- "ignore": {
- "version": "5.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"
- }
- },
- "import-lazy": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
- "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
- "dev": true
- },
- "import-local": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
- "dev": true,
- "requires": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true
- },
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "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=="
- },
- "ini": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
- "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
- "dev": true
- },
- "internal-slot": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
- "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
- "requires": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- }
- },
- "interpret": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
- "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
- },
- "ip": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
- "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
- },
- "ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "requires": {
- "has-bigints": "^1.0.1"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "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==",
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
- },
- "is-ci": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
- "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
- "dev": true,
- "requires": {
- "ci-info": "^3.2.0"
- }
- },
- "is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "is-generator-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.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-installed-globally": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
- "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
- "dev": true,
- "requires": {
- "global-dirs": "^3.0.0",
- "is-path-inside": "^3.0.2"
- }
- },
- "is-invalid-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz",
- "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==",
- "requires": {
- "is-glob": "^2.0.0"
- },
- "dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww=="
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==",
- "requires": {
- "is-extglob": "^1.0.0"
- }
- }
- }
- },
- "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=="
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "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-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
- "dev": true
- },
- "is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true
- },
- "is-potential-custom-element-name": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
- },
- "is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
- },
- "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==",
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-regexp": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz",
- "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==",
- "dev": true
- },
- "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==",
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true
- },
- "is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-string-and-not-blank": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/is-string-and-not-blank/-/is-string-and-not-blank-0.0.2.tgz",
- "integrity": "sha512-FyPGAbNVyZpTeDCTXnzuwbu9/WpNXbCfbHXLpCRpN4GANhS00eEIP5Ef+k5HYSNIzIhdN9zRDoBj6unscECvtQ==",
- "requires": {
- "is-string-blank": "^1.0.1"
- }
- },
- "is-string-blank": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-string-blank/-/is-string-blank-1.0.1.tgz",
- "integrity": "sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw=="
- },
- "is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
- "devOptional": true
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true
- },
- "is-valid-path": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz",
- "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==",
- "requires": {
- "is-invalid-path": "^0.1.0"
- }
- },
- "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==",
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "devOptional": true
- },
- "isemail": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz",
- "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==",
- "requires": {
- "punycode": "2.x.x"
- }
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "devOptional": true
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
- "devOptional": true
- },
- "istanbul-lib-coverage": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
- "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
- "dev": true
- },
- "istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- }
- },
- "istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- },
- "dependencies": {
- "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
- },
- "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"
- }
- }
- }
- },
- "istanbul-lib-source-maps": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
- "dev": true,
- "requires": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- }
- },
- "istanbul-reports": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
- "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
- "dev": true,
- "requires": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- }
- },
- "jest": {
- "version": "27.2.5",
- "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.5.tgz",
- "integrity": "sha512-vDMzXcpQN4Ycaqu+vO7LX8pZwNNoKMhc+gSp6q1D8S6ftRk8gNW8cni3YFxknP95jxzQo23Lul0BI2FrWgnwYQ==",
- "dev": true,
- "requires": {
- "@jest/core": "^27.2.5",
- "import-local": "^3.0.2",
- "jest-cli": "^27.2.5"
- }
- },
- "jest-changed-files": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
- "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "execa": "^5.0.0",
- "throat": "^6.0.1"
- },
- "dependencies": {
- "execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- }
- },
- "get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true
- },
- "human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true
- }
- }
- },
- "jest-circus": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
- "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
- "dev": true,
- "requires": {
- "@jest/environment": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "dedent": "^0.7.0",
- "expect": "^27.5.1",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^27.5.1",
- "jest-matcher-utils": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-runtime": "^27.5.1",
- "jest-snapshot": "^27.5.1",
- "jest-util": "^27.5.1",
- "pretty-format": "^27.5.1",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3",
- "throat": "^6.0.1"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-cli": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
- "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
- "dev": true,
- "requires": {
- "@jest/core": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/types": "^27.5.1",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "import-local": "^3.0.2",
- "jest-config": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-validate": "^27.5.1",
- "prompts": "^2.0.1",
- "yargs": "^16.2.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-config": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
- "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.8.0",
- "@jest/test-sequencer": "^27.5.1",
- "@jest/types": "^27.5.1",
- "babel-jest": "^27.5.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.1",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^27.5.1",
- "jest-environment-jsdom": "^27.5.1",
- "jest-environment-node": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "jest-jasmine2": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-runner": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-validate": "^27.5.1",
- "micromatch": "^4.0.4",
- "parse-json": "^5.2.0",
- "pretty-format": "^27.5.1",
- "slash": "^3.0.0",
- "strip-json-comments": "^3.1.1"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-diff": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
- "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "diff-sequences": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "pretty-format": "^27.5.1"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-docblock": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
- "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
- "dev": true,
- "requires": {
- "detect-newline": "^3.0.0"
- }
- },
- "jest-each": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
- "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "chalk": "^4.0.0",
- "jest-get-type": "^27.5.1",
- "jest-util": "^27.5.1",
- "pretty-format": "^27.5.1"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-environment-jsdom": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
- "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
- "dev": true,
- "requires": {
- "@jest/environment": "^27.5.1",
- "@jest/fake-timers": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "jest-mock": "^27.5.1",
- "jest-util": "^27.5.1",
- "jsdom": "^16.6.0"
- }
- },
- "jest-environment-node": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
- "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
- "dev": true,
- "requires": {
- "@jest/environment": "^27.5.1",
- "@jest/fake-timers": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "jest-mock": "^27.5.1",
- "jest-util": "^27.5.1"
- }
- },
- "jest-get-type": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
- "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
- "dev": true
- },
- "jest-haste-map": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
- "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.3.2",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^27.5.1",
- "jest-serializer": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-worker": "^27.5.1",
- "micromatch": "^4.0.4",
- "walker": "^1.0.7"
- }
- },
- "jest-jasmine2": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
- "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
- "dev": true,
- "requires": {
- "@jest/environment": "^27.5.1",
- "@jest/source-map": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "expect": "^27.5.1",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^27.5.1",
- "jest-matcher-utils": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-runtime": "^27.5.1",
- "jest-snapshot": "^27.5.1",
- "jest-util": "^27.5.1",
- "pretty-format": "^27.5.1",
- "throat": "^6.0.1"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-leak-detector": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
- "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
- "dev": true,
- "requires": {
- "jest-get-type": "^27.5.1",
- "pretty-format": "^27.5.1"
- }
- },
- "jest-matcher-utils": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
- "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "jest-diff": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "pretty-format": "^27.5.1"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-message-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
- "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@jest/types": "^27.5.1",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.4",
- "pretty-format": "^27.5.1",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-mock": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
- "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "@types/node": "*"
- }
- },
- "jest-pnp-resolver": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
- "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
- "dev": true
- },
- "jest-regex-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
- "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
- "dev": true
- },
- "jest-resolve": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
- "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^27.5.1",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^27.5.1",
- "jest-validate": "^27.5.1",
- "resolve": "^1.20.0",
- "resolve.exports": "^1.1.0",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-resolve-dependencies": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
- "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-snapshot": "^27.5.1"
- }
- },
- "jest-runner": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
- "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
- "dev": true,
- "requires": {
- "@jest/console": "^27.5.1",
- "@jest/environment": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.8.1",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^27.5.1",
- "jest-environment-jsdom": "^27.5.1",
- "jest-environment-node": "^27.5.1",
- "jest-haste-map": "^27.5.1",
- "jest-leak-detector": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-runtime": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-worker": "^27.5.1",
- "source-map-support": "^0.5.6",
- "throat": "^6.0.1"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-runtime": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
- "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
- "dev": true,
- "requires": {
- "@jest/environment": "^27.5.1",
- "@jest/fake-timers": "^27.5.1",
- "@jest/globals": "^27.5.1",
- "@jest/source-map": "^27.5.1",
- "@jest/test-result": "^27.5.1",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "execa": "^5.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-mock": "^27.5.1",
- "jest-regex-util": "^27.5.1",
- "jest-resolve": "^27.5.1",
- "jest-snapshot": "^27.5.1",
- "jest-util": "^27.5.1",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- }
- },
- "get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true
- },
- "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
- },
- "human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true
- },
- "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"
- }
- }
- }
- },
- "jest-serializer": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
- "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.9"
- }
- },
- "jest-snapshot": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
- "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.7.2",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/traverse": "^7.7.2",
- "@babel/types": "^7.0.0",
- "@jest/transform": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/babel__traverse": "^7.0.4",
- "@types/prettier": "^2.1.5",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^27.5.1",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^27.5.1",
- "jest-get-type": "^27.5.1",
- "jest-haste-map": "^27.5.1",
- "jest-matcher-utils": "^27.5.1",
- "jest-message-util": "^27.5.1",
- "jest-util": "^27.5.1",
- "natural-compare": "^1.4.0",
- "pretty-format": "^27.5.1",
- "semver": "^7.3.2"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.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"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "jest-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
- "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-validate": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
- "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^27.5.1",
- "leven": "^3.1.0",
- "pretty-format": "^27.5.1"
- },
- "dependencies": {
- "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"
- }
- },
- "camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-watcher": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
- "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^27.5.1",
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "jest-util": "^27.5.1",
- "string-length": "^4.0.1"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "dependencies": {
- "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
- },
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "joi": {
- "version": "14.3.1",
- "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz",
- "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==",
- "requires": {
- "hoek": "6.x.x",
- "isemail": "3.x.x",
- "topo": "3.x.x"
- }
- },
- "js-md4": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz",
- "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA=="
- },
- "js-sdsl": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz",
- "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw=="
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "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"
- }
- },
- "jsbi": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-4.3.0.tgz",
- "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g=="
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
- "devOptional": true
- },
- "jsdom": {
- "version": "16.7.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
- "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
- "dev": true,
- "requires": {
- "abab": "^2.0.5",
- "acorn": "^8.2.4",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.3.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.1",
- "domexception": "^2.0.1",
- "escodegen": "^2.0.0",
- "form-data": "^3.0.0",
- "html-encoding-sniffer": "^2.0.1",
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.0",
- "parse5": "6.0.1",
- "saxes": "^5.0.1",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^4.0.0",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.5.0",
- "ws": "^7.4.6",
- "xml-name-validator": "^3.0.0"
- },
- "dependencies": {
- "@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true
- },
- "form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "requires": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- }
- },
- "parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
- "dev": true
- },
- "tough-cookie": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
- "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
- "dev": true,
- "requires": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
- }
- },
- "universalify": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
- "dev": true
- }
- }
- },
- "jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
- "devOptional": true
- },
- "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==",
- "devOptional": 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": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "devOptional": true
- },
- "json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "jsonwebtoken": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz",
- "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==",
- "requires": {
- "jws": "^3.2.2",
- "lodash": "^4.17.21",
- "ms": "^2.1.1",
- "semver": "^7.3.8"
- },
- "dependencies": {
- "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==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "jsprim": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
- "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- }
- },
- "just-performance": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/just-performance/-/just-performance-4.3.0.tgz",
- "integrity": "sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q=="
- },
- "jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "requires": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "jwt-decode": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz",
- "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A=="
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true
- },
- "knex": {
- "version": "0.95.15",
- "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz",
- "integrity": "sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w==",
- "requires": {
- "colorette": "2.0.16",
- "commander": "^7.1.0",
- "debug": "4.3.2",
- "escalade": "^3.1.1",
- "esm": "^3.2.25",
- "getopts": "2.2.5",
- "interpret": "^2.2.0",
- "lodash": "^4.17.21",
- "pg-connection-string": "2.5.0",
- "rechoir": "0.7.0",
- "resolve-from": "^5.0.0",
- "tarn": "^3.0.1",
- "tildify": "2.0.0"
- },
- "dependencies": {
- "colorette": {
- "version": "2.0.16",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
- "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g=="
- },
- "commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
- },
- "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"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
- }
- }
- },
- "known-css-properties": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.24.0.tgz",
- "integrity": "sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA==",
- "dev": true
- },
- "lazy-ass": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz",
- "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==",
- "dev": true
- },
- "leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true
- },
- "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"
- }
- },
- "limiter": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/limiter/-/limiter-2.1.0.tgz",
- "integrity": "sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw==",
- "requires": {
- "just-performance": "4.3.0"
- }
- },
- "lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "listr2": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz",
- "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==",
- "dev": true,
- "requires": {
- "cli-truncate": "^2.1.0",
- "colorette": "^2.0.16",
- "log-update": "^4.0.0",
- "p-map": "^4.0.0",
- "rfdc": "^1.3.0",
- "rxjs": "^7.5.1",
- "through": "^2.3.8",
- "wrap-ansi": "^7.0.0"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "lodash-es": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
- "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
- },
- "lodash._baseiteratee": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash._baseiteratee/-/lodash._baseiteratee-4.7.0.tgz",
- "integrity": "sha512-nqB9M+wITz0BX/Q2xg6fQ8mLkyfF7MU7eE+MNBNjTHFKeKaZAPEzEg+E8LWxKWf1DQVflNEn9N49yAuqKh2mWQ==",
- "requires": {
- "lodash._stringtopath": "~4.8.0"
- }
- },
- "lodash._basetostring": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz",
- "integrity": "sha512-SwcRIbyxnN6CFEEK4K1y+zuApvWdpQdBHM/swxP962s8HIxPO3alBH5t3m/dl+f4CMUug6sJb7Pww8d13/9WSw=="
- },
- "lodash._baseuniq": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz",
- "integrity": "sha512-Ja1YevpHZctlI5beLA7oc5KNDhGcPixFhcqSiORHNsp/1QTv7amAXzw+gu4YOvErqVlMVyIJGgtzeepCnnur0A==",
- "requires": {
- "lodash._createset": "~4.0.0",
- "lodash._root": "~3.0.0"
- }
- },
- "lodash._createset": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz",
- "integrity": "sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA=="
- },
- "lodash._root": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
- "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ=="
- },
- "lodash._stringtopath": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/lodash._stringtopath/-/lodash._stringtopath-4.8.0.tgz",
- "integrity": "sha512-SXL66C731p0xPDC5LZg4wI5H+dJo/EO4KTqOMwLYCH3+FmmfAKJEZCm6ohGpI+T1xwsDsJCfL4OnhorllvlTPQ==",
- "requires": {
- "lodash._basetostring": "~4.12.0"
- }
- },
- "lodash.camelcase": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
- },
- "lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
- "dev": true
- },
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
- },
- "lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
- },
- "lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
- },
- "lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
- },
- "lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
- },
- "lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
- },
- "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
- },
- "lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
- },
- "lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
- "dev": true
- },
- "lodash.uniqby": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz",
- "integrity": "sha512-IRt7cfTtHy6f1aRVA5n7kT8rgN3N1nH6MOWLcHfpWG2SH19E3JksLK38MktLxZDhlAjCP9jpIXkOnRXlu6oByQ==",
- "requires": {
- "lodash._baseiteratee": "~4.7.0",
- "lodash._baseuniq": "~4.6.0"
- }
- },
- "log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "magic-string": {
- "version": "0.26.7",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
- "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.8"
- }
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "makeerror": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
- "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
- "dev": true,
- "requires": {
- "tmpl": "1.0.5"
- }
- },
- "map-obj": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
- "dev": true
- },
- "mathml-tag-names": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
- "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
- "dev": true
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
- },
- "meow": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
- "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
- "dev": true,
- "requires": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize": "^1.2.0",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
- "dev": true
- }
- }
- },
- "merge": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
- "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==",
- "dev": true
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
- },
- "micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
- "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
- },
- "minimist-options": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
- }
- },
- "minipass": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz",
- "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==",
- "requires": {
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
- },
- "mqemitter": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-4.5.0.tgz",
- "integrity": "sha512-Mp/zytFeIv6piJQkEKnncHcP4R/ErJc5C7dfonkhkNUT2LA/nTayrfNxbipp3M5iCJUTQSUtzfQAQA3XVcKz6w==",
- "dev": true,
- "requires": {
- "fastparallel": "^2.3.0",
- "qlobber": "^5.0.0"
- }
- },
- "mqtt": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.7.tgz",
- "integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==",
- "requires": {
- "commist": "^1.0.0",
- "concat-stream": "^2.0.0",
- "debug": "^4.1.1",
- "duplexify": "^4.1.1",
- "help-me": "^3.0.0",
- "inherits": "^2.0.3",
- "lru-cache": "^6.0.0",
- "minimist": "^1.2.5",
- "mqtt-packet": "^6.8.0",
- "number-allocator": "^1.0.9",
- "pump": "^3.0.0",
- "readable-stream": "^3.6.0",
- "reinterval": "^1.1.0",
- "rfdc": "^1.3.0",
- "split2": "^3.1.0",
- "ws": "^7.5.5",
- "xtend": "^4.0.2"
- },
- "dependencies": {
- "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==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "mqtt-packet": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz",
- "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==",
- "requires": {
- "bl": "^4.0.2",
- "debug": "^4.1.1",
- "process-nextick-args": "^2.0.1"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "mqtt-packet": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-7.1.2.tgz",
- "integrity": "sha512-FFZbcZ2omsf4c5TxEQfcX9hI+JzDpDKPT46OmeIBpVA7+t32ey25UNqlqNXTmeZOr5BLsSIERpQQLsFWJS94SQ==",
- "dev": true,
- "requires": {
- "bl": "^4.0.2",
- "debug": "^4.1.1",
- "process-nextick-args": "^2.0.1"
- }
- },
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "mssql": {
- "version": "8.1.4",
- "resolved": "https://registry.npmjs.org/mssql/-/mssql-8.1.4.tgz",
- "integrity": "sha512-nqkYYehETWVvFLB9zAGJV2kegOsdtLjUnkHA52aFhlE0ZIoOXC3BL8pLERwFicFypM4i3DX1hYeuM726EEIxjQ==",
- "requires": {
- "@tediousjs/connection-string": "^0.3.0",
- "commander": "^9.1.0",
- "debug": "^4.3.3",
- "rfdc": "^1.3.0",
- "tarn": "^3.0.2",
- "tedious": "^14.0.0"
- },
- "dependencies": {
- "commander": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
- "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw=="
- }
- }
- },
- "mysql2": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz",
- "integrity": "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==",
- "requires": {
- "denque": "^2.0.1",
- "generate-function": "^2.3.1",
- "iconv-lite": "^0.6.3",
- "long": "^4.0.0",
- "lru-cache": "^6.0.0",
- "named-placeholders": "^1.1.2",
- "seq-queue": "^0.0.5",
- "sqlstring": "^2.3.2"
- },
- "dependencies": {
- "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==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "named-placeholders": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
- "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
- "requires": {
- "lru-cache": "^4.1.3"
- },
- "dependencies": {
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
- }
- }
- },
- "nanoclone": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz",
- "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA=="
- },
- "nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true
- },
- "native-duplexpair": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz",
- "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA=="
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
- },
- "node-abort-controller": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz",
- "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw=="
- },
- "node-addon-api": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
- "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
- },
- "node-cloudflared-tunnel": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/node-cloudflared-tunnel/-/node-cloudflared-tunnel-1.0.10.tgz",
- "integrity": "sha512-QBTH4bcTePgiwYdK5vYZhZl7GNr3Pqnj5V3Tg1w5HvnK4VhLZe5BUuhqKvzzCA604yhoD2I1ATdnOl6axSJu/w==",
- "requires": {
- "command-exists": "^1.2.9"
- }
- },
- "node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
- "requires": {
- "whatwg-url": "^5.0.0"
- },
- "dependencies": {
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- }
- }
- },
- "node-gyp": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
- "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
- "optional": true,
- "requires": {
- "env-paths": "^2.2.0",
- "glob": "^7.1.4",
- "graceful-fs": "^4.2.3",
- "nopt": "^5.0.0",
- "npmlog": "^4.1.2",
- "request": "^2.88.2",
- "rimraf": "^3.0.2",
- "semver": "^7.3.2",
- "tar": "^6.0.2",
- "which": "^2.0.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "optional": true
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
- "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
- "optional": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
- "optional": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
- "optional": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "optional": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "optional": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "optional": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
- "optional": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "optional": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "optional": true
- }
- }
- },
- "node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
- },
- "node-radius-client": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-radius-client/-/node-radius-client-1.0.0.tgz",
- "integrity": "sha512-FkR9cMV5hNoX+kKDUTzuagvEixlLiaEJQ1/ywOdhahsihKrGDhVZmnCvmrCStA589MT3yuC/J2eKc6z68IGdBw==",
- "requires": {
- "joi": "^14.3.1",
- "node-radius-utils": "^1.2.0",
- "radius": "^1.1.4"
- }
- },
- "node-radius-utils": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/node-radius-utils/-/node-radius-utils-1.2.0.tgz",
- "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw=="
- },
- "node-releases": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
- "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
- "dev": true
- },
- "nodemailer": {
- "version": "6.6.5",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.5.tgz",
- "integrity": "sha512-C/v856DBijUzHcHIgGpQoTrfsH3suKIRAGliIzCstatM2cAa+MYX3LuyCrABiO/cdJTxgBBHXxV1ztiqUwst5A=="
- },
- "nopt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
- "requires": {
- "abbrev": "1"
- }
- },
- "normalize-package-data": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "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"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "normalize-selector": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz",
- "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==",
- "dev": true
- },
- "notp": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz",
- "integrity": "sha512-oBig/2uqkjQ5AkBuw4QJYwkEWa/q+zHxI5/I5z6IeP2NT0alpJFsP/trrfCC+9xOAgQSZXssNi962kp5KBmypQ=="
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "npmlog": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
- "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
- "requires": {
- "are-we-there-yet": "^2.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^3.0.0",
- "set-blocking": "^2.0.0"
- }
- },
- "nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
- "requires": {
- "boolbase": "^1.0.0"
- }
- },
- "number-allocator": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.12.tgz",
- "integrity": "sha512-sGB0qoQGmKimery9JubBQ9pQUr1V/LixJAk3Ygp7obZf6mpSXime8d7XHEobbIimkdZpgjkNlLt6G7LPEWFYWg==",
- "requires": {
- "debug": "^4.3.1",
- "js-sdsl": "4.1.4"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
- "optional": true
- },
- "numbered": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/numbered/-/numbered-1.1.0.tgz",
- "integrity": "sha512-pv/ue2Odr7IfYOO0byC1KgBI10wo5YDauLhxY6/saNzAdAs0r1SotGCPzzCLNPL0xtrAwWRialLu23AAu9xO1g=="
- },
- "nwsapi": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz",
- "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
- },
- "object-inspect": {
- "version": "1.12.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
- "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
- },
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
- },
- "object.assign": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- }
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "open": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
- "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
- "requires": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "ospath": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz",
- "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==",
- "dev": true
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow=="
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
- "requires": {
- "aggregate-error": "^3.0.0"
- }
- },
- "p-timeout": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
- "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
- "requires": {
- "p-finally": "^1.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "p-wait-for": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz",
- "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==",
- "requires": {
- "p-timeout": "^3.0.0"
- }
- },
- "packet-reader": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
- "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="
- },
- "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"
- }
- },
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
- "requires": {
- "entities": "^4.4.0"
- }
- },
- "parse5-htmlparser2-tree-adapter": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
- "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
- "requires": {
- "domhandler": "^5.0.2",
- "parse5": "^7.0.0"
- }
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
- },
- "password-hash": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/password-hash/-/password-hash-1.2.2.tgz",
- "integrity": "sha512-Dy/5+Srojwv+1XnMrK2bn7f2jN3k2p90DfBVA0Zd6PrjWF7lXHOTWgKT4uBp1gIsqV7/llYqm+hj+gwDBF/Fmg=="
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
- },
- "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=="
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
- "devOptional": true
- },
- "pg": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz",
- "integrity": "sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==",
- "requires": {
- "buffer-writer": "2.0.0",
- "packet-reader": "1.0.0",
- "pg-connection-string": "^2.5.0",
- "pg-pool": "^3.5.2",
- "pg-protocol": "^1.5.0",
- "pg-types": "^2.1.0",
- "pgpass": "1.x"
- }
- },
- "pg-connection-string": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
- "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
- },
- "pg-int8": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
- "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="
- },
- "pg-pool": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz",
- "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w=="
- },
- "pg-protocol": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz",
- "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ=="
- },
- "pg-types": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
- "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
- "requires": {
- "pg-int8": "1.0.1",
- "postgres-array": "~2.0.0",
- "postgres-bytea": "~1.0.0",
- "postgres-date": "~1.0.4",
- "postgres-interval": "^1.1.0"
- }
- },
- "pgpass": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
- "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
- "requires": {
- "split2": "^4.1.0"
- },
- "dependencies": {
- "split2": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz",
- "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ=="
- }
- }
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true
- },
- "ping": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/ping/-/ping-0.4.2.tgz",
- "integrity": "sha512-1uAw0bzHtrPbPo2s6no06oZAzY6KqKclEJR1JRZKIHKXKlPdrz9N0/1MPPB+BbrvMjN3Mk0pcod3bfLNZFRo9w==",
- "requires": {
- "q": "1.x",
- "underscore": "^1.12.0"
- }
- },
- "pirates": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
- "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "pkginfo": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
- "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ=="
- },
- "pngjs": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
- "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
- "dev": true
- },
- "postcss": {
- "version": "8.4.20",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz",
- "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
- "dev": true,
- "requires": {
- "nanoid": "^3.3.4",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- }
- },
- "postcss-html": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.5.0.tgz",
- "integrity": "sha512-kCMRWJRHKicpA166kc2lAVUGxDZL324bkj/pVOb6RhjB0Z5Krl7mN0AsVkBhVIRZZirY0lyQXG38HCVaoKVNoA==",
- "dev": true,
- "requires": {
- "htmlparser2": "^8.0.0",
- "js-tokens": "^8.0.0",
- "postcss": "^8.4.0",
- "postcss-safe-parser": "^6.0.0"
- },
- "dependencies": {
- "js-tokens": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.0.tgz",
- "integrity": "sha512-PC7MzqInq9OqKyTXfIvQNcjMkODJYC8A17kAaQgeW79yfhqTWSOfjHYQ2mDDcwJ96Iibtwkfh0C7R/OvqPlgVA==",
- "dev": true
- }
- }
- },
- "postcss-media-query-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
- "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
- "dev": true
- },
- "postcss-resolve-nested-selector": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
- "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
- "dev": true
- },
- "postcss-rtlcss": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-3.7.2.tgz",
- "integrity": "sha512-GurrGedCKvOTe1QrifI+XpDKXA3bJky1v8KiOa/TYYHs1bfJOxI53GIRvVSqLJLly7e1WcNMz8KMESTN01vbZQ==",
- "dev": true,
- "requires": {
- "rtlcss": "^3.5.0"
- }
- },
- "postcss-safe-parser": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
- "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
- "dev": true
- },
- "postcss-scss": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz",
- "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
- "dev": true
- },
- "postcss-selector-parser": {
- "version": "6.0.11",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
- "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
- "dev": true,
- "requires": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- }
- },
- "postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true
- },
- "postgres-array": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
- "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="
- },
- "postgres-bytea": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
- "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w=="
- },
- "postgres-date": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
- "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="
- },
- "postgres-interval": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
- "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
- "requires": {
- "xtend": "^4.0.0"
- }
- },
- "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
- },
- "pretty-bytes": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
- "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
- "dev": true
- },
- "pretty-format": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
- "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1",
- "ansi-styles": "^5.0.0",
- "react-is": "^17.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true
- }
- }
- },
- "prismjs": {
- "version": "1.29.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
- "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
- "dev": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "prom-client": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-13.2.0.tgz",
- "integrity": "sha512-wGr5mlNNdRNzEhRYXgboUU2LxHWIojxscJKmtG3R8f4/KiWqyYgXTLHs0+Ted7tG3zFT7pgHJbtomzZ1L0ARaQ==",
- "requires": {
- "tdigest": "^0.1.1"
- }
- },
- "prometheus-api-metrics": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/prometheus-api-metrics/-/prometheus-api-metrics-3.2.2.tgz",
- "integrity": "sha512-5hT17HAjflPkrHSYQ7lorsKygo0PhLau/FQ6SQhw0XWAm10GwKfLQmIVP6b3LJBnc4WNOf/QKHce2RfcZMLjJQ==",
- "requires": {
- "@types/express": "^4.17.13",
- "@types/express-serve-static-core": "^4.17.28",
- "@types/koa": "^2.13.4",
- "debug": "^3.2.6",
- "lodash.get": "^4.4.2",
- "pkginfo": "^0.4.1"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
- "prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- }
- },
- "property-expr": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz",
- "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA=="
- },
- "protobufjs": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz",
- "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==",
- "requires": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/node": ">=13.7.0",
- "long": "^5.0.0"
- },
- "dependencies": {
- "long": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz",
- "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A=="
- }
- }
- },
- "proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "requires": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- }
- },
- "proxy-from-env": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
- "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
- },
- "psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "devOptional": true
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- },
- "q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
- },
- "qlobber": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/qlobber/-/qlobber-5.0.3.tgz",
- "integrity": "sha512-wW4GTZPePyh0RgOsM18oDyOUlXfurVRgoNyJfS+y7VWPyd0GYhQp5T2tycZFZjonH+hngxIfklGJhTP/ghidgQ==",
- "dev": true
- },
- "qrcode": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz",
- "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==",
- "dev": true,
- "requires": {
- "dijkstrajs": "^1.0.1",
- "encode-utf8": "^1.0.3",
- "pngjs": "^5.0.0",
- "yargs": "^15.3.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "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
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "dev": true,
- "requires": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- }
- },
- "yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
- },
- "qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
- "devOptional": true
- },
- "querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "quick-lru": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
- "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
- "dev": true
- },
- "radius": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/radius/-/radius-1.1.4.tgz",
- "integrity": "sha512-UWuzdF6xf3NpsXFZZmUEkxtEalDXj8hdmMXgbGzn7vOk6zXNsiIY2I6SJ1euHt7PTQuMoz2qDEJB+AfJDJgQYw=="
- },
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
- },
- "raw-body": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz",
- "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==",
- "requires": {
- "bytes": "3.1.2",
- "http-errors": "1.8.1",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- }
- }
- },
- "react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "dev": true
- },
- "read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "requires": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "requires": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- }
- }
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "rechoir": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz",
- "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
- "requires": {
- "resolve": "^1.9.0"
- }
- },
- "redbean-node": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.1.4.tgz",
- "integrity": "sha512-c1U6wnTeWS0c44tn9hkJWzjGgckLNJ8sN1E2bxnnnQsULOfvEVFLf8dLMjqhyyMrZ1L1mp8UvV4OfhRtH/ZrgQ==",
- "requires": {
- "@types/node": "^14.18.12",
- "await-lock": "^2.1.0",
- "dayjs": "^1.11.0",
- "glob": "^7.2.0",
- "knex": "^0.95.15",
- "lodash": "^4.17.21"
- },
- "dependencies": {
- "@types/node": {
- "version": "14.18.36",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
- "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ=="
- }
- }
- },
- "redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dev": true,
- "requires": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- }
- },
- "regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true
- },
- "regenerate-unicode-properties": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
- "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
- "dev": true,
- "requires": {
- "regenerate": "^1.4.2"
- }
- },
- "regenerator-runtime": {
- "version": "0.13.11",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
- },
- "regenerator-transform": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
- "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "regexp.prototype.flags": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
- "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "functions-have-names": "^1.2.2"
- }
- },
- "regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true
- },
- "regexpu-core": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz",
- "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==",
- "dev": true,
- "requires": {
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsgen": "^0.7.1",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- }
- },
- "regjsgen": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz",
- "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==",
- "dev": true
- },
- "regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dev": true,
- "requires": {
- "jsesc": "~0.5.0"
- },
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true
- }
- }
- },
- "reinterval": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
- "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
- },
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "optional": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "optional": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
- "optional": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "optional": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- }
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "optional": true
- }
- }
- },
- "request-progress": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
- "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==",
- "dev": true,
- "requires": {
- "throttleit": "^1.0.0"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
- },
- "require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
- "requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
- },
- "resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "requires": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "dev": true,
- "requires": {
- "resolve-from": "^5.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- }
- }
- },
- "resolve-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.exports": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
- "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==",
- "dev": true
- },
- "restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- }
- },
- "retimer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz",
- "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==",
- "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
- },
- "rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "rollup": {
- "version": "2.78.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
- "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
- "dev": true,
- "requires": {
- "fsevents": "~2.3.2"
- }
- },
- "rollup-plugin-visualizer": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz",
- "integrity": "sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==",
- "dev": true,
- "requires": {
- "open": "^8.4.0",
- "picomatch": "^2.3.1",
- "source-map": "^0.7.4",
- "yargs": "^17.5.1"
- },
- "dependencies": {
- "cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- }
- },
- "source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "dev": true
- },
- "yargs": {
- "version": "17.6.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz",
- "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==",
- "dev": true,
- "requires": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- }
- },
- "yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true
- }
- }
- },
- "rtlcss": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz",
- "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==",
- "dev": true,
- "requires": {
- "find-up": "^5.0.0",
- "picocolors": "^1.0.0",
- "postcss": "^8.3.11",
- "strip-json-comments": "^3.1.1"
- },
- "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"
- }
- }
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "rxjs": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
- "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
- "dev": true,
- "requires": {
- "tslib": "^2.1.0"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "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==",
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- }
- },
- "safe-timers": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-timers/-/safe-timers-1.1.0.tgz",
- "integrity": "sha512-9aqY+v5eMvmRaluUEtdRThV1EjlSElzO7HuCj0sTW9xvp++8iJ9t/RWGNWV6/WHcUJLHpyT2SNf/apoKTU2EpA=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "sass": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz",
- "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==",
- "dev": true,
- "requires": {
- "chokidar": ">=3.0.0 <4.0.0"
- }
- },
- "saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
- "dev": true,
- "requires": {
- "xmlchars": "^2.2.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- },
- "send": {
- "version": "0.17.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
- "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
- "requires": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "1.8.1",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- }
- }
- }
- }
- },
- "seq-queue": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
- "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
- },
- "serve-static": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
- "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.2"
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "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
- },
- "shell-quote": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz",
- "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==",
- "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==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
- },
- "sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "slice-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
- "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- }
- }
- },
- "smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
- },
- "socket.io": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz",
- "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==",
- "requires": {
- "accepts": "~1.3.4",
- "base64id": "~2.0.0",
- "debug": "~4.3.2",
- "engine.io": "~6.2.1",
- "socket.io-adapter": "~2.4.0",
- "socket.io-parser": "~4.2.1"
- }
- },
- "socket.io-adapter": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
- "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg=="
- },
- "socket.io-client": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz",
- "integrity": "sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==",
- "requires": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.2",
- "engine.io-client": "~6.2.3",
- "socket.io-parser": "~4.2.1"
- }
- },
- "socket.io-parser": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz",
- "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==",
- "requires": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1"
- }
- },
- "socks": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
- "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
- "requires": {
- "ip": "^2.0.0",
- "smart-buffer": "^4.2.0"
- }
- },
- "socks-proxy-agent": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz",
- "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==",
- "requires": {
- "agent-base": "^6.0.2",
- "debug": "^4.3.1",
- "socks": "^2.6.1"
- }
- },
- "sortablejs": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz",
- "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
- "spawn-command": {
- "version": "0.0.2-1",
- "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
- "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.12",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
- "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
- "dev": true
- },
- "specificity": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz",
- "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==",
- "dev": true
- },
- "split2": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
- "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
- "requires": {
- "readable-stream": "^3.0.0"
- }
- },
- "sprintf-js": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
- "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug=="
- },
- "sqlstring": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
- "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="
- },
- "sshpk": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
- "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
- "devOptional": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "stack-utils": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
- "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^2.0.0"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- }
- }
- },
- "statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
- },
- "stoppable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
- "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw=="
- },
- "stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "requires": {
- "safe-buffer": "~5.2.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- }
- }
- },
- "string-length": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
- "dev": true,
- "requires": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- }
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "string.prototype.trimend": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
- "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "string.prototype.trimstart": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
- "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true
- },
- "strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dev": true,
- "requires": {
- "min-indent": "^1.0.0"
- }
- },
- "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
- },
- "style-search": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
- "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
- "dev": true
- },
- "stylelint": {
- "version": "14.7.1",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.7.1.tgz",
- "integrity": "sha512-rUOWm67hrzGXXyO/cInENEejF4urh1dLgOb9cr/3XLDb/t/A+rXQp3p6+no8o8QCKTgBUdhVUq/bXMgE988PJw==",
- "dev": true,
- "requires": {
- "balanced-match": "^2.0.0",
- "colord": "^2.9.2",
- "cosmiconfig": "^7.0.1",
- "css-functions-list": "^3.0.1",
- "debug": "^4.3.4",
- "execall": "^2.0.0",
- "fast-glob": "^3.2.11",
- "fastest-levenshtein": "^1.0.12",
- "file-entry-cache": "^6.0.1",
- "get-stdin": "^8.0.0",
- "global-modules": "^2.0.0",
- "globby": "^11.1.0",
- "globjoin": "^0.1.4",
- "html-tags": "^3.2.0",
- "ignore": "^5.2.0",
- "import-lazy": "^4.0.0",
- "imurmurhash": "^0.1.4",
- "is-plain-object": "^5.0.0",
- "known-css-properties": "^0.24.0",
- "mathml-tag-names": "^2.1.3",
- "meow": "^9.0.0",
- "micromatch": "^4.0.5",
- "normalize-path": "^3.0.0",
- "normalize-selector": "^0.2.0",
- "picocolors": "^1.0.0",
- "postcss": "^8.4.12",
- "postcss-media-query-parser": "^0.2.3",
- "postcss-resolve-nested-selector": "^0.1.1",
- "postcss-safe-parser": "^6.0.0",
- "postcss-selector-parser": "^6.0.10",
- "postcss-value-parser": "^4.2.0",
- "resolve-from": "^5.0.0",
- "specificity": "^0.4.1",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "style-search": "^0.1.0",
- "supports-hyperlinks": "^2.2.0",
- "svg-tags": "^1.0.0",
- "table": "^6.8.0",
- "v8-compile-cache": "^2.3.0",
- "write-file-atomic": "^4.0.1"
- },
- "dependencies": {
- "balanced-match": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
- "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
- "dev": true
- },
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- },
- "write-file-atomic": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
- }
- }
- }
- },
- "stylelint-config-recommended": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz",
- "integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==",
- "dev": true
- },
- "stylelint-config-standard": {
- "version": "25.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz",
- "integrity": "sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==",
- "dev": true,
- "requires": {
- "stylelint-config-recommended": "^7.0.0"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "supports-hyperlinks": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
- "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
- },
- "dependencies": {
- "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
- },
- "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=="
- },
- "svg-tags": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
- "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
- "dev": true
- },
- "symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
- "systemjs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.13.0.tgz",
- "integrity": "sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==",
- "dev": true
- },
- "table": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
- "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
- "dev": true,
- "requires": {
- "ajv": "^8.0.1",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
- },
- "dependencies": {
- "ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- }
- },
- "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"
- }
- },
- "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
- },
- "json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- }
- }
- },
- "tar": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
- "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^4.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "tarn": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz",
- "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ=="
- },
- "tcp-ping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/tcp-ping/-/tcp-ping-0.1.1.tgz",
- "integrity": "sha512-7Ed10Ds0hYnF+O1lfiZ2iSZ1bCAj+96Madctebmq7Y1ALPWlBY4YI8C6pCL+UTlshFY5YogixKLpgDP/4BlHrw=="
- },
- "tdigest": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz",
- "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==",
- "requires": {
- "bintrees": "1.0.2"
- }
- },
- "tedious": {
- "version": "14.7.0",
- "resolved": "https://registry.npmjs.org/tedious/-/tedious-14.7.0.tgz",
- "integrity": "sha512-d3qlmZcvZyt7akyPHiOdR+knfzObWZH3mW+gouQTSb7YTSwtpHuYHcvsQabfbY7oOvgbs51xRb7CwOahWK/t9w==",
- "requires": {
- "@azure/identity": "^2.0.4",
- "@azure/keyvault-keys": "^4.4.0",
- "@js-joda/core": "^5.2.0",
- "@types/es-aggregate-error": "^1.0.2",
- "bl": "^5.0.0",
- "es-aggregate-error": "^1.0.8",
- "iconv-lite": "^0.6.3",
- "js-md4": "^0.3.2",
- "jsbi": "^4.3.0",
- "native-duplexpair": "^1.0.0",
- "node-abort-controller": "^3.0.1",
- "punycode": "^2.1.0",
- "sprintf-js": "^1.1.2"
- },
- "dependencies": {
- "bl": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
- "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
- "requires": {
- "buffer": "^6.0.3",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- }
- }
- },
- "terminal-link": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
- "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
- }
- },
- "terser": {
- "version": "5.15.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
- "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
- "dev": true,
- "requires": {
- "@jridgewell/source-map": "^0.3.2",
- "acorn": "^8.5.0",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- }
- }
- },
- "test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
- "dev": true,
- "requires": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "thirty-two": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz",
- "integrity": "sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA=="
- },
- "throat": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz",
- "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
- "dev": true
- },
- "throttleit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
- "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
- },
- "tildify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
- "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw=="
- },
- "timezones-list": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/timezones-list/-/timezones-list-3.0.1.tgz",
- "integrity": "sha512-yfOzyuVwzgD0LkldD3Epkr+JUdUIxEUL147Fa6ZgG/23KU28iOv3e3M7vQOCFMPyopAhDX7dqOLWttIP7tkTKg==",
- "dev": true
- },
- "tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
- "dev": true,
- "requires": {
- "rimraf": "^3.0.0"
- }
- },
- "tmpl": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
- "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
- "dev": true
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
- },
- "topo": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz",
- "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==",
- "requires": {
- "hoek": "6.x.x"
- }
- },
- "toposort": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
- "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg=="
- },
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "devOptional": true,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "tr46": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
- "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.1"
- }
- },
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true
- },
- "trim-newlines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
- "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
- "dev": true
- },
- "tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
- },
- "tunnel": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
- "dev": true
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "devOptional": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
- "devOptional": true
- },
- "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-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true
- },
- "type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- }
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
- },
- "typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
- "dev": true,
- "requires": {
- "is-typedarray": "^1.0.0"
- }
- },
- "typescript": {
- "version": "4.4.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
- "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
- "dev": true
- },
- "unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "requires": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- }
- },
- "underscore": {
- "version": "1.13.6",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
- "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
- },
- "unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "dev": true
- },
- "unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dev": true,
- "requires": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- }
- },
- "unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "dev": true
- },
- "unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
- "dev": true
- },
- "universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
- "dev": true
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
- },
- "untildify": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
- "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
- "dev": true
- },
- "update-browserslist-db": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
- "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "devOptional": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "url-parse": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dev": true,
- "requires": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
- },
- "uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
- },
- "uuid-parse": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz",
- "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==",
- "dev": true
- },
- "v-pagination-3": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/v-pagination-3/-/v-pagination-3-0.1.7.tgz",
- "integrity": "sha512-b5H+SdL+yIhkqyWI+Uj5lGk1VK3Q/hjqN44okerMa9smtk55DJX3Jg+ecU/vJAFrEhNCqgNzLsJ8pLRcHrbjrg==",
- "dev": true,
- "requires": {
- "babel-plugin-add-module-exports": "^0.2.1",
- "merge": "^2.1.1",
- "vue": ">=3.0.0"
- }
- },
- "v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "v8-to-istanbul": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
- "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
- },
- "dependencies": {
- "source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "dev": true
- }
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
- "devOptional": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "vite": {
- "version": "3.1.8",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz",
- "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==",
- "dev": true,
- "requires": {
- "esbuild": "^0.15.9",
- "fsevents": "~2.3.2",
- "postcss": "^8.4.16",
- "resolve": "^1.22.1",
- "rollup": "~2.78.0"
- }
- },
- "vite-plugin-compression": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz",
- "integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.2",
- "debug": "^4.3.3",
- "fs-extra": "^10.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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
- },
- "fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "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
- },
- "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"
- }
- }
- }
- },
- "vue": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.36.tgz",
- "integrity": "sha512-5yTXmrE6gW8IQgttzHW5bfBiFA6mx35ZXHjGLDmKYzW6MMmYvCwuKybANRepwkMYeXw2v1buGg3/lPICY5YlZw==",
- "dev": true,
- "requires": {
- "@vue/compiler-dom": "3.2.36",
- "@vue/compiler-sfc": "3.2.36",
- "@vue/runtime-dom": "3.2.36",
- "@vue/server-renderer": "3.2.36",
- "@vue/shared": "3.2.36"
- },
- "dependencies": {
- "@vue/compiler-core": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.36.tgz",
- "integrity": "sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.16.4",
- "@vue/shared": "3.2.36",
- "estree-walker": "^2.0.2",
- "source-map": "^0.6.1"
- }
- },
- "@vue/compiler-dom": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.36.tgz",
- "integrity": "sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA==",
- "dev": true,
- "requires": {
- "@vue/compiler-core": "3.2.36",
- "@vue/shared": "3.2.36"
- }
- },
- "@vue/compiler-sfc": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.36.tgz",
- "integrity": "sha512-AvGb4bTj4W8uQ4BqaSxo7UwTEqX5utdRSMyHy58OragWlt8nEACQ9mIeQh3K4di4/SX+41+pJrLIY01lHAOFOA==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.16.4",
- "@vue/compiler-core": "3.2.36",
- "@vue/compiler-dom": "3.2.36",
- "@vue/compiler-ssr": "3.2.36",
- "@vue/reactivity-transform": "3.2.36",
- "@vue/shared": "3.2.36",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.25.7",
- "postcss": "^8.1.10",
- "source-map": "^0.6.1"
- }
- },
- "@vue/compiler-ssr": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.36.tgz",
- "integrity": "sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw==",
- "dev": true,
- "requires": {
- "@vue/compiler-dom": "3.2.36",
- "@vue/shared": "3.2.36"
- }
- },
- "@vue/reactivity-transform": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.36.tgz",
- "integrity": "sha512-Jk5o2BhpODC9XTA7o4EL8hSJ4JyrFWErLtClG3NH8wDS7ri9jBDWxI7/549T7JY9uilKsaNM+4pJASLj5dtRwA==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.16.4",
- "@vue/compiler-core": "3.2.36",
- "@vue/shared": "3.2.36",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.25.7"
- }
- },
- "@vue/shared": {
- "version": "3.2.36",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.36.tgz",
- "integrity": "sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==",
- "dev": true
- },
- "magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.8"
- }
- }
- }
- },
- "vue-chart-3": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/vue-chart-3/-/vue-chart-3-3.0.9.tgz",
- "integrity": "sha512-RyVaOhSem0v4v645zAkdi1mgZjuD3KMQr11KrEZGFupoHzV2qn/sBpEDvplR9i57YnRxZ3KDnKqw/1rx2CkOZA==",
- "dev": true,
- "requires": {
- "@vue/runtime-core": "latest",
- "@vue/runtime-dom": "latest",
- "csstype": "3.0.10",
- "lodash": "latest",
- "nanoid": "3.1.31"
- },
- "dependencies": {
- "csstype": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz",
- "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==",
- "dev": true
- },
- "nanoid": {
- "version": "3.1.31",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.31.tgz",
- "integrity": "sha512-ZivnJm0o9bb13p2Ot5CpgC2rQdzB9Uxm/mFZweqm5eMViqOJe3PV6LU2E30SiLgheesmcPrjquqraoolONSA0A==",
- "dev": true
- }
- }
- },
- "vue-confirm-dialog": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/vue-confirm-dialog/-/vue-confirm-dialog-1.0.2.tgz",
- "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ==",
- "dev": true
- },
- "vue-contenteditable": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/vue-contenteditable/-/vue-contenteditable-3.0.4.tgz",
- "integrity": "sha512-CmtqT4zHQwLoJEyNVaXUjjUFPUVYlXXBHfSbRCHCUjODMqrn6L293LM1nc1ELx8epitZZvecTfIqOLlSzB3d+w==",
- "dev": true
- },
- "vue-demi": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.5.tgz",
- "integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==",
- "dev": true
- },
- "vue-eslint-parser": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz",
- "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==",
- "dev": true,
- "requires": {
- "debug": "^4.3.2",
- "eslint-scope": "^7.0.0",
- "eslint-visitor-keys": "^3.1.0",
- "espree": "^9.0.0",
- "esquery": "^1.4.0",
- "lodash": "^4.17.21",
- "semver": "^7.3.5"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
- "dev": true
- },
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- },
- "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"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "vue-i18n": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz",
- "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
- "dev": true,
- "requires": {
- "@intlify/core-base": "9.2.2",
- "@intlify/shared": "9.2.2",
- "@intlify/vue-devtools": "9.2.2",
- "@vue/devtools-api": "^6.2.1"
- }
- },
- "vue-image-crop-upload": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/vue-image-crop-upload/-/vue-image-crop-upload-3.0.3.tgz",
- "integrity": "sha512-VeBsU0oI1hXeCvdpnu19DM/r3KTlI8SUXTxsHsU4MhDXR0ahRziiL9tf4FbILGx+gRVNZhGbl32yuM6TiaGNhA==",
- "dev": true,
- "requires": {
- "babel-runtime": "^6.11.6"
- }
- },
- "vue-multiselect": {
- "version": "3.0.0-alpha.2",
- "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-alpha.2.tgz",
- "integrity": "sha512-Xp9fGJECns45v+v8jXbCIsAkCybYkEg0lNwr7Z6HDUSMyx2TEIK2giipPE+qXiShEc1Ipn+ZtttH2iq9hwXP4Q==",
- "dev": true
- },
- "vue-prism-editor": {
- "version": "2.0.0-alpha.2",
- "resolved": "https://registry.npmjs.org/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz",
- "integrity": "sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==",
- "dev": true
- },
- "vue-qrcode": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/vue-qrcode/-/vue-qrcode-1.0.1.tgz",
- "integrity": "sha512-LHEsHA8mVR+mL8REKeLrvP0h0lelwzkJjFe3ToygKjQS9Mo85m9I7/axdCnRl9ZiZIFjTWkAW1dCK+f8rq0wIg==",
- "dev": true,
- "requires": {
- "tslib": "^2.2.0",
- "vue-demi": "^0.12.5"
- }
- },
- "vue-router": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.16.tgz",
- "integrity": "sha512-JcO7cb8QJLBWE+DfxGUL3xUDOae/8nhM1KVdnudadTAORbuxIC/xAydC5Zr/VLHUDQi1ppuTF5/rjBGzgzrJNA==",
- "dev": true,
- "requires": {
- "@vue/devtools-api": "^6.0.0"
- }
- },
- "vue-toastification": {
- "version": "2.0.0-rc.5",
- "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-2.0.0-rc.5.tgz",
- "integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==",
- "dev": true
- },
- "vuedraggable": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz",
- "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
- "dev": true,
- "requires": {
- "sortablejs": "1.14.0"
- }
- },
- "w3c-hr-time": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "dev": true,
- "requires": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
- "dev": true,
- "requires": {
- "xml-name-validator": "^3.0.0"
- }
- },
- "wait-on": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz",
- "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==",
- "dev": true,
- "requires": {
- "axios": "^0.25.0",
- "joi": "^17.6.0",
- "lodash": "^4.17.21",
- "minimist": "^1.2.5",
- "rxjs": "^7.5.4"
- },
- "dependencies": {
- "axios": {
- "version": "0.25.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz",
- "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==",
- "dev": true,
- "requires": {
- "follow-redirects": "^1.14.7"
- }
- },
- "joi": {
- "version": "17.7.0",
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz",
- "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==",
- "dev": true,
- "requires": {
- "@hapi/hoek": "^9.0.0",
- "@hapi/topo": "^5.0.0",
- "@sideway/address": "^4.1.3",
- "@sideway/formula": "^3.0.0",
- "@sideway/pinpoint": "^2.0.0"
- }
- }
- }
- },
- "walker": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
- "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
- "dev": true,
- "requires": {
- "makeerror": "1.0.12"
- }
- },
- "webidl-conversions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
- "dev": true
- },
- "whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dev": true,
- "requires": {
- "iconv-lite": "0.4.24"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- }
- }
- },
- "whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
- "dev": true
- },
- "whatwg-url": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
- "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
- "dev": true,
- "requires": {
- "lodash": "^4.7.0",
- "tr46": "^2.1.0",
- "webidl-conversions": "^6.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "devOptional": 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==",
- "requires": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
- "dev": true
- },
- "wide-align": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
- "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
- "requires": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
- },
- "write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- },
- "ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q=="
- },
- "xml-name-validator": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
- "dev": true
- },
- "xmlchars": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
- "dev": true
- },
- "xmlhttprequest-ssl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
- "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A=="
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- },
- "yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
- },
- "yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "requires": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "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
- },
- "yup": {
- "version": "0.32.9",
- "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.9.tgz",
- "integrity": "sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==",
- "requires": {
- "@babel/runtime": "^7.10.5",
- "@types/lodash": "^4.14.165",
- "lodash": "^4.17.20",
- "lodash-es": "^4.17.15",
- "nanoclone": "^0.2.1",
- "property-expr": "^2.0.4",
- "toposort": "^2.0.2"
- }
}
}
}
diff --git a/package.json b/package.json
index 0175e4b1d..7fc736000 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,13 @@
{
"name": "uptime-kuma",
- "version": "1.19.3",
+ "version": "1.22.1",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/louislam/uptime-kuma.git"
},
"engines": {
- "node": "14.* || >=16.*"
+ "node": "14.* || 16.* || 18.*"
},
"scripts": {
"install-legacy": "npm install",
@@ -34,12 +34,12 @@
"build-docker-builder-go": "docker buildx build -f docker/builder-go.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:builder-go . --push",
"build-docker-alpine": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:$VERSION-alpine --target release . --push",
"build-docker-debian": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:$VERSION -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:$VERSION-debian --target release . --push",
- "build-docker-nightly": "npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push",
+ "build-docker-nightly": "node ./extra/test-docker.js && npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push",
"build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push",
"build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain",
"build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test --target pr-test . --push",
"upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain",
- "setup": "git checkout 1.19.3 && npm ci --production && npm run download-dist",
+ "setup": "git checkout 1.22.1 && npm ci --production && npm run download-dist",
"download-dist": "node extra/download-dist.js",
"mark-as-nightly": "node extra/mark-as-nightly.js",
"reset-password": "node extra/reset-password.js",
@@ -54,25 +54,28 @@
"simple-mqtt-server": "node extra/simple-mqtt-server.js",
"update-language-files": "cd extra/update-language-files && node index.js && cross-env-shell eslint ../../src/languages/$npm_config_language.js --fix",
"ncu-patch": "npm-check-updates -u -t patch",
- "release-final": "node extra/update-version.js && npm run build-docker && node ./extra/press-any-key.js && npm run upload-artifacts && node ./extra/update-wiki-version.js",
- "release-beta": "node extra/beta/update-version.js && npm run build && node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:$VERSION -t louislam/uptime-kuma:beta . --target release --push && node ./extra/press-any-key.js && npm run upload-artifacts",
+ "release-final": "node ./extra/test-docker.js && node extra/update-version.js && npm run build-docker && node ./extra/press-any-key.js && npm run upload-artifacts && node ./extra/update-wiki-version.js",
+ "release-beta": "node ./extra/test-docker.js && node extra/beta/update-version.js && npm run build && node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:$VERSION -t louislam/uptime-kuma:beta . --target release --push && node ./extra/press-any-key.js && npm run upload-artifacts",
"git-remove-tag": "git tag -d",
"build-dist-and-restart": "npm run build && npm run start-server-dev",
"start-pr-test": "node extra/checkout-pr.js && npm install && npm run dev",
"cy:test": "node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/ --e2e",
"cy:run": "npx cypress run --browser chrome --headless --config-file ./config/cypress.config.js",
+ "cy:run:unit": "npx cypress run --browser chrome --headless --config-file ./config/cypress.frontend.config.js",
"cypress-open": "concurrently -k -r \"node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/\" \"cypress open --config-file ./config/cypress.config.js\"",
- "build-healthcheck-armv7": "cross-env GOOS=linux GOARCH=arm GOARM=7 go build -x -o ./extra/healthcheck-armv7 ./extra/healthcheck.go"
+ "build-healthcheck-armv7": "cross-env GOOS=linux GOARCH=arm GOARM=7 go build -x -o ./extra/healthcheck-armv7 ./extra/healthcheck.go",
+ "deploy-demo-server": "node extra/deploy-demo-server.js",
+ "sort-contributors": "node extra/sort-contributors.js"
},
"dependencies": {
"@grpc/grpc-js": "~1.7.3",
- "@louislam/sqlite3": "15.1.2",
+ "@louislam/ping": "~0.4.4-mod.0",
+ "@louislam/sqlite3": "15.1.6",
"args-parser": "~1.3.0",
"axios": "~0.27.0",
"axios-ntlm": "1.3.0",
"badge-maker": "~3.3.1",
"bcryptjs": "~2.4.3",
- "bree": "~7.1.5",
"cacheable-lookup": "~6.0.4",
"chardet": "~1.4.0",
"check-password-strength": "^2.0.5",
@@ -81,11 +84,14 @@
"command-exists": "~1.2.9",
"compare-versions": "~3.6.0",
"compression": "~1.7.4",
+ "croner": "~6.0.5",
"dayjs": "~1.11.5",
+ "dotenv": "~16.0.3",
"express": "~4.17.3",
"express-basic-auth": "~1.2.1",
"express-static-gzip": "~2.1.7",
"form-data": "~4.0.0",
+ "gamedig": "~4.0.5",
"http-graceful-shutdown": "~3.1.7",
"http-proxy-agent": "~5.0.0",
"https-proxy-agent": "~5.0.1",
@@ -94,9 +100,11 @@
"jsonwebtoken": "~9.0.0",
"jwt-decode": "~3.1.2",
"limiter": "~2.1.0",
+ "mongodb": "~4.14.0",
"mqtt": "~4.3.7",
"mssql": "~8.1.4",
"mysql2": "~2.3.3",
+ "nanoid": "~3.3.4",
"node-cloudflared-tunnel": "~1.0.9",
"node-radius-client": "~1.0.0",
"nodemailer": "~6.6.5",
@@ -104,13 +112,15 @@
"password-hash": "~1.2.2",
"pg": "~8.8.0",
"pg-connection-string": "~2.5.0",
- "ping": "~0.4.2",
+ "playwright-core": "~1.35.1",
"prom-client": "~13.2.0",
"prometheus-api-metrics": "~3.2.1",
- "protobufjs": "~7.1.1",
- "redbean-node": "0.1.4",
- "socket.io": "~4.5.3",
- "socket.io-client": "~4.5.3",
+ "protobufjs": "~7.2.4",
+ "qs": "~6.10.4",
+ "redbean-node": "~0.3.0",
+ "redis": "~4.5.1",
+ "socket.io": "~4.6.1",
+ "socket.io-client": "~4.6.1",
"socks-proxy-agent": "6.1.1",
"tar": "~6.1.11",
"tcp-ping": "~0.1.1",
@@ -118,7 +128,7 @@
},
"devDependencies": {
"@actions/github": "~5.0.1",
- "@babel/eslint-parser": "~7.17.0",
+ "@babel/eslint-parser": "^7.22.7",
"@babel/preset-env": "^7.15.8",
"@fortawesome/fontawesome-svg-core": "~1.2.36",
"@fortawesome/free-regular-svg-icons": "~5.15.4",
@@ -126,25 +136,29 @@
"@fortawesome/vue-fontawesome": "~3.0.0-5",
"@popperjs/core": "~2.10.2",
"@types/bootstrap": "~5.1.9",
- "@vitejs/plugin-legacy": "~2.1.0",
- "@vitejs/plugin-vue": "~3.1.0",
- "@vue/compiler-sfc": "~3.2.36",
+ "@vitejs/plugin-legacy": "~4.1.0",
+ "@vitejs/plugin-vue": "~4.2.3",
+ "@vue/compiler-sfc": "~3.3.4",
"@vuepic/vue-datepicker": "~3.4.8",
"aedes": "^0.46.3",
"babel-plugin-rewire": "~1.2.0",
"bootstrap": "5.1.3",
- "chart.js": "~3.6.2",
- "chartjs-adapter-dayjs": "~1.0.0",
+ "chart.js": "~4.2.1",
+ "chartjs-adapter-dayjs-4": "~1.0.4",
"concurrently": "^7.1.0",
"core-js": "~3.26.1",
+ "cronstrue": "~2.24.0",
"cross-env": "~7.0.3",
- "cypress": "^10.1.0",
+ "cypress": "^12.17.0",
"delay": "^5.0.0",
"dns2": "~2.0.1",
+ "dompurify": "~2.4.3",
"eslint": "~8.14.0",
"eslint-plugin-vue": "~8.7.1",
"favico.js": "~0.3.10",
- "jest": "~27.2.5",
+ "jest": "~29.6.1",
+ "marked": "~4.2.5",
+ "node-ssh": "~13.1.0",
"postcss-html": "~1.5.0",
"postcss-rtlcss": "~3.7.2",
"postcss-scss": "~4.0.4",
@@ -152,16 +166,16 @@
"qrcode": "~1.5.0",
"rollup-plugin-visualizer": "^5.6.0",
"sass": "~1.42.1",
- "stylelint": "~14.7.1",
+ "stylelint": "^15.10.1",
"stylelint-config-standard": "~25.0.0",
"terser": "~5.15.0",
"timezones-list": "~3.0.1",
"typescript": "~4.4.4",
"v-pagination-3": "~0.1.7",
- "vite": "~3.1.0",
+ "vite": "~4.4.1",
"vite-plugin-compression": "^0.5.1",
- "vue": "next",
- "vue-chart-3": "3.0.9",
+ "vue": "~3.3.4",
+ "vue-chartjs": "~5.2.0",
"vue-confirm-dialog": "~1.0.2",
"vue-contenteditable": "~3.0.4",
"vue-i18n": "~9.2.2",
@@ -172,6 +186,7 @@
"vue-router": "~4.0.14",
"vue-toastification": "~2.0.0-rc.5",
"vuedraggable": "~4.1.0",
- "wait-on": "^6.0.1"
+ "wait-on": "^6.0.1",
+ "whatwg-url": "~12.0.1"
}
}
diff --git a/server/auth.js b/server/auth.js
index 3ce1a6041..1ea8b45f9 100644
--- a/server/auth.js
+++ b/server/auth.js
@@ -2,7 +2,10 @@ const basicAuth = require("express-basic-auth");
const passwordHash = require("./password-hash");
const { R } = require("redbean-node");
const { setting } = require("./util-server");
-const { loginRateLimiter } = require("./rate-limiter");
+const { log } = require("../src/util");
+const { loginRateLimiter, apiRateLimiter } = require("./rate-limiter");
+const { Settings } = require("./settings");
+const dayjs = require("dayjs");
/**
* Login to web app
@@ -34,8 +37,36 @@ exports.login = async function (username, password) {
};
/**
- * Callback for myAuthorizer
- * @callback myAuthorizerCB
+ * Validate a provided API key
+ * @param {string} key API key to verify
+ */
+async function verifyAPIKey(key) {
+ if (typeof key !== "string") {
+ return false;
+ }
+
+ // uk prefix + key ID is before _
+ let index = key.substring(2, key.indexOf("_"));
+ let clear = key.substring(key.indexOf("_") + 1, key.length);
+
+ let hash = await R.findOne("api_key", " id=? ", [ index ]);
+
+ if (hash === null) {
+ return false;
+ }
+
+ let current = dayjs();
+ let expiry = dayjs(hash.expires);
+ if (expiry.diff(current) < 0 || !hash.active) {
+ return false;
+ }
+
+ return hash && passwordHash.verify(clear, hash.key);
+}
+
+/**
+ * Callback for basic auth authorizers
+ * @callback authCallback
* @param {any} err Any error encountered
* @param {boolean} authorized Is the client authorized?
*/
@@ -44,9 +75,35 @@ exports.login = async function (username, password) {
* Custom authorizer for express-basic-auth
* @param {string} username
* @param {string} password
- * @param {myAuthorizerCB} callback
+ * @param {authCallback} callback
*/
-function myAuthorizer(username, password, callback) {
+function apiAuthorizer(username, password, callback) {
+ // API Rate Limit
+ apiRateLimiter.pass(null, 0).then((pass) => {
+ if (pass) {
+ verifyAPIKey(password).then((valid) => {
+ if (!valid) {
+ log.warn("api-auth", "Failed API auth attempt: invalid API Key");
+ }
+ callback(null, valid);
+ // Only allow a set number of api requests per minute
+ // (currently set to 60)
+ apiRateLimiter.removeTokens(1);
+ });
+ } else {
+ log.warn("api-auth", "Failed API auth attempt: rate limit exceeded");
+ callback(null, false);
+ }
+ });
+}
+
+/**
+ * Custom authorizer for express-basic-auth
+ * @param {string} username
+ * @param {string} password
+ * @param {authCallback} callback
+ */
+function userAuthorizer(username, password, callback) {
// Login Rate Limit
loginRateLimiter.pass(null, 0).then((pass) => {
if (pass) {
@@ -54,18 +111,26 @@ function myAuthorizer(username, password, callback) {
callback(null, user != null);
if (user == null) {
+ log.warn("basic-auth", "Failed basic auth attempt: invalid username/password");
loginRateLimiter.removeTokens(1);
}
});
} else {
+ log.warn("basic-auth", "Failed basic auth attempt: rate limit exceeded");
callback(null, false);
}
});
}
+/**
+ * Use basic auth if auth is not disabled
+ * @param {express.Request} req Express request object
+ * @param {express.Response} res Express response object
+ * @param {express.NextFunction} next
+ */
exports.basicAuth = async function (req, res, next) {
const middleware = basicAuth({
- authorizer: myAuthorizer,
+ authorizer: userAuthorizer,
authorizeAsync: true,
challenge: true,
});
@@ -78,3 +143,32 @@ exports.basicAuth = async function (req, res, next) {
next();
}
};
+
+/**
+ * Use use API Key if API keys enabled, else use basic auth
+ * @param {express.Request} req Express request object
+ * @param {express.Response} res Express response object
+ * @param {express.NextFunction} next
+ */
+exports.apiAuth = async function (req, res, next) {
+ if (!await Settings.get("disableAuth")) {
+ let usingAPIKeys = await Settings.get("apiKeysEnabled");
+ let middleware;
+ if (usingAPIKeys) {
+ middleware = basicAuth({
+ authorizer: apiAuthorizer,
+ authorizeAsync: true,
+ challenge: true,
+ });
+ } else {
+ middleware = basicAuth({
+ authorizer: userAuthorizer,
+ authorizeAsync: true,
+ challenge: true,
+ });
+ }
+ middleware(req, res, next);
+ } else {
+ next();
+ }
+};
diff --git a/server/cacheable-dns-http-agent.js b/server/cacheable-dns-http-agent.js
index 301367918..cc067f72b 100644
--- a/server/cacheable-dns-http-agent.js
+++ b/server/cacheable-dns-http-agent.js
@@ -37,6 +37,10 @@ class CacheableDnsHttpAgent {
this.enable = isEnable;
}
+ /**
+ * Attach cacheable to HTTP agent
+ * @param {http.Agent} agent Agent to install
+ */
static install(agent) {
this.cacheable.install(agent);
}
diff --git a/server/check-version.js b/server/check-version.js
index e0ea908b6..c6d5cfb92 100644
--- a/server/check-version.js
+++ b/server/check-version.js
@@ -1,27 +1,33 @@
const { setSetting, setting } = require("./util-server");
const axios = require("axios");
const compareVersions = require("compare-versions");
+const { log } = require("../src/util");
exports.version = require("../package.json").version;
exports.latestVersion = null;
+// How much time in ms to wait between update checks
+const UPDATE_CHECKER_INTERVAL_MS = 1000 * 60 * 60 * 48;
+const UPDATE_CHECKER_LATEST_VERSION_URL = "https://uptime.kuma.pet/version";
+
let interval;
-/** Start 48 hour check interval */
exports.startInterval = () => {
let check = async () => {
+ if (await setting("checkUpdate") === false) {
+ return;
+ }
+
+ log.debug("update-checker", "Retrieving latest versions");
+
try {
- const res = await axios.get("https://uptime.kuma.pet/version");
+ const res = await axios.get(UPDATE_CHECKER_LATEST_VERSION_URL);
// For debug
if (process.env.TEST_CHECK_VERSION === "1") {
res.data.slow = "1000.0.0";
}
- if (await setting("checkUpdate") === false) {
- return;
- }
-
let checkBeta = await setting("checkBeta");
if (checkBeta && res.data.beta) {
@@ -35,12 +41,14 @@ exports.startInterval = () => {
exports.latestVersion = res.data.slow;
}
- } catch (_) { }
+ } catch (_) {
+ log.info("update-checker", "Failed to check for new versions");
+ }
};
check();
- interval = setInterval(check, 3600 * 1000 * 48);
+ interval = setInterval(check, UPDATE_CHECKER_INTERVAL_MS);
};
/**
diff --git a/server/client.js b/server/client.js
index ef96c7f44..3efbe8fdc 100644
--- a/server/client.js
+++ b/server/client.js
@@ -113,6 +113,31 @@ async function sendProxyList(socket) {
return list;
}
+/**
+ * Emit API key list to client
+ * @param {Socket} socket Socket.io socket instance
+ * @returns {Promise}
+ */
+async function sendAPIKeyList(socket) {
+ const timeLogger = new TimeLogger();
+
+ let result = [];
+ const list = await R.find(
+ "api_key",
+ "user_id=?",
+ [ socket.userID ],
+ );
+
+ for (let bean of list) {
+ result.push(bean.toPublicJSON());
+ }
+
+ io.to(socket.userID).emit("apiKeyList", result);
+ timeLogger.print("Sent API Key List");
+
+ return list;
+}
+
/**
* Emits the version information to the client.
* @param {Socket} socket Socket.io socket instance
@@ -157,6 +182,7 @@ module.exports = {
sendImportantHeartbeatList,
sendHeartbeatList,
sendProxyList,
+ sendAPIKeyList,
sendInfo,
sendDockerHostList
};
diff --git a/server/config.js b/server/config.js
index d46f24b75..43a40f672 100644
--- a/server/config.js
+++ b/server/config.js
@@ -4,13 +4,21 @@ const demoMode = args["demo"] || false;
const badgeConstants = {
naColor: "#999",
defaultUpColor: "#66c20a",
+ defaultWarnColor: "#eed202",
defaultDownColor: "#c2290a",
+ defaultPendingColor: "#f8a306",
+ defaultMaintenanceColor: "#1747f5",
defaultPingColor: "blue", // as defined by badge-maker / shields.io
defaultStyle: "flat",
defaultPingValueSuffix: "ms",
defaultPingLabelSuffix: "h",
defaultUptimeValueSuffix: "%",
defaultUptimeLabelSuffix: "h",
+ defaultCertExpValueSuffix: " days",
+ defaultCertExpLabelSuffix: "h",
+ // Values Come From Default Notification Times
+ defaultCertExpireWarnDays: "14",
+ defaultCertExpireDownDays: "7"
};
module.exports = {
diff --git a/server/database.js b/server/database.js
index 2544f1972..1348e10ce 100644
--- a/server/database.js
+++ b/server/database.js
@@ -2,7 +2,6 @@ const fs = require("fs");
const { R } = require("redbean-node");
const { setSetting, setting } = require("./util-server");
const { log, sleep } = require("../src/util");
-const dayjs = require("dayjs");
const knex = require("knex");
/**
@@ -22,6 +21,8 @@ class Database {
*/
static uploadDir;
+ static screenshotDir;
+
static path;
/**
@@ -29,11 +30,6 @@ class Database {
*/
static patched = false;
- /**
- * For Backup only
- */
- static backupPath = null;
-
/**
* Add patch filename in key
* Values:
@@ -65,7 +61,17 @@ class Database {
"patch-grpc-monitor.sql": true,
"patch-add-radius-monitor.sql": true,
"patch-monitor-add-resend-interval.sql": true,
+ "patch-ping-packet-size.sql": true,
"patch-maintenance-table2.sql": true,
+ "patch-add-gamedig-monitor.sql": true,
+ "patch-add-google-analytics-status-page-tag.sql": true,
+ "patch-http-body-encoding.sql": true,
+ "patch-add-description-monitor.sql": true,
+ "patch-api-key-table.sql": true,
+ "patch-monitor-tls.sql": true,
+ "patch-maintenance-cron.sql": true,
+ "patch-add-parent-monitor.sql": true,
+ "patch-add-invert-keyword.sql": true,
};
/**
@@ -83,6 +89,7 @@ class Database {
static init(args) {
// Data Directory (must be end with "/")
Database.dataDir = process.env.DATA_DIR || args["data-dir"] || "./data/";
+
Database.path = Database.dataDir + "kuma.db";
if (! fs.existsSync(Database.dataDir)) {
fs.mkdirSync(Database.dataDir, { recursive: true });
@@ -94,6 +101,12 @@ class Database {
fs.mkdirSync(Database.uploadDir, { recursive: true });
}
+ // Create screenshot dir
+ Database.screenshotDir = Database.dataDir + "screenshots/";
+ if (! fs.existsSync(Database.screenshotDir)) {
+ fs.mkdirSync(Database.screenshotDir, { recursive: true });
+ }
+
log.info("db", `Data Dir: ${Database.dataDir}`);
}
@@ -150,12 +163,12 @@ class Database {
await R.exec("PRAGMA journal_mode = WAL");
}
await R.exec("PRAGMA cache_size = -12000");
- await R.exec("PRAGMA auto_vacuum = FULL");
+ await R.exec("PRAGMA auto_vacuum = INCREMENTAL");
// This ensures that an operating system crash or power failure will not corrupt the database.
// FULL synchronous is very safe, but it is also slower.
// Read more: https://sqlite.org/pragma.html#pragma_synchronous
- await R.exec("PRAGMA synchronous = FULL");
+ await R.exec("PRAGMA synchronous = NORMAL");
if (!noLog) {
log.info("db", "SQLite config:");
@@ -183,15 +196,7 @@ class Database {
} else {
log.info("db", "Database patch is needed");
- try {
- this.backup(version);
- } catch (e) {
- log.error("db", e);
- log.error("db", "Unable to create a backup before patching the database. Please make sure you have enough space and permission.");
- process.exit(1);
- }
-
- // Try catch anything here, if gone wrong, restore the backup
+ // Try catch anything here
try {
for (let i = version + 1; i <= this.latestVersion; i++) {
const sqlFile = `./db/patch${i}.sql`;
@@ -207,7 +212,6 @@ class Database {
log.error("db", "Start Uptime-Kuma failed due to issue patching the database");
log.error("db", "Please submit a bug report if you still encounter the problem after restart: https://github.com/louislam/uptime-kuma/issues");
- this.restore();
process.exit(1);
}
}
@@ -249,8 +253,6 @@ class Database {
log.error("db", "Start Uptime-Kuma failed due to issue patching the database");
log.error("db", "Please submit the bug report if you still encounter the problem after restart: https://github.com/louislam/uptime-kuma/issues");
- this.restore();
-
process.exit(1);
}
@@ -352,8 +354,6 @@ class Database {
}
}
- this.backup(dayjs().format("YYYYMMDDHHmmss"));
-
log.info("db", sqlFilename + " is patching");
this.patched = true;
await this.importSQLFile("./db/" + sqlFilename);
@@ -419,6 +419,9 @@ class Database {
log.info("db", "Closing the database");
+ // Flush WAL to main database
+ await R.exec("PRAGMA wal_checkpoint(TRUNCATE)");
+
while (true) {
Database.noReject = true;
await R.close();
@@ -435,90 +438,6 @@ class Database {
process.removeListener("unhandledRejection", listener);
}
- /**
- * One backup one time in this process.
- * Reset this.backupPath if you want to backup again
- * @param {string} version Version code of backup
- */
- static backup(version) {
- if (! this.backupPath) {
- log.info("db", "Backing up the database");
- this.backupPath = this.dataDir + "kuma.db.bak" + version;
- fs.copyFileSync(Database.path, this.backupPath);
-
- const shmPath = Database.path + "-shm";
- if (fs.existsSync(shmPath)) {
- this.backupShmPath = shmPath + ".bak" + version;
- fs.copyFileSync(shmPath, this.backupShmPath);
- }
-
- const walPath = Database.path + "-wal";
- if (fs.existsSync(walPath)) {
- this.backupWalPath = walPath + ".bak" + version;
- fs.copyFileSync(walPath, this.backupWalPath);
- }
-
- // Double confirm if all files actually backup
- if (!fs.existsSync(this.backupPath)) {
- throw new Error("Backup failed! " + this.backupPath);
- }
-
- if (fs.existsSync(shmPath)) {
- if (!fs.existsSync(this.backupShmPath)) {
- throw new Error("Backup failed! " + this.backupShmPath);
- }
- }
-
- if (fs.existsSync(walPath)) {
- if (!fs.existsSync(this.backupWalPath)) {
- throw new Error("Backup failed! " + this.backupWalPath);
- }
- }
- }
- }
-
- /** Restore from most recent backup */
- static restore() {
- if (this.backupPath) {
- log.error("db", "Patching the database failed!!! Restoring the backup");
-
- const shmPath = Database.path + "-shm";
- const walPath = Database.path + "-wal";
-
- // Delete patch failed db
- try {
- if (fs.existsSync(Database.path)) {
- fs.unlinkSync(Database.path);
- }
-
- if (fs.existsSync(shmPath)) {
- fs.unlinkSync(shmPath);
- }
-
- if (fs.existsSync(walPath)) {
- fs.unlinkSync(walPath);
- }
- } catch (e) {
- log.error("db", "Restore failed; you may need to restore the backup manually");
- process.exit(1);
- }
-
- // Restore backup
- fs.copyFileSync(this.backupPath, Database.path);
-
- if (this.backupShmPath) {
- fs.copyFileSync(this.backupShmPath, shmPath);
- }
-
- if (this.backupWalPath) {
- fs.copyFileSync(this.backupWalPath, walPath);
- }
-
- } else {
- log.info("db", "Nothing to restore");
- }
- }
-
/** Get the size of the database */
static getSize() {
log.debug("db", "Database.getSize()");
diff --git a/server/google-analytics.js b/server/google-analytics.js
new file mode 100644
index 000000000..fc9fbec84
--- /dev/null
+++ b/server/google-analytics.js
@@ -0,0 +1,24 @@
+const jsesc = require("jsesc");
+
+/**
+ * Returns a string that represents the javascript that is required to insert the Google Analytics scripts
+ * into a webpage.
+ * @param tagId Google UA/G/AW/DC Property ID to use with the Google Analytics script.
+ * @returns {string}
+ */
+function getGoogleAnalyticsScript(tagId) {
+ let escapedTagId = jsesc(tagId, { isScriptContext: true });
+
+ if (escapedTagId) {
+ escapedTagId = escapedTagId.trim();
+ }
+
+ return `
+
+
+ `;
+}
+
+module.exports = {
+ getGoogleAnalyticsScript,
+};
diff --git a/server/jobs.js b/server/jobs.js
index f9c7f86e9..8e1454261 100644
--- a/server/jobs.js
+++ b/server/jobs.js
@@ -1,40 +1,44 @@
-const path = require("path");
-const Bree = require("bree");
-const { SHARE_ENV } = require("worker_threads");
-const { log } = require("../src/util");
-let bree;
+const { UptimeKumaServer } = require("./uptime-kuma-server");
+const { clearOldData } = require("./jobs/clear-old-data");
+const Cron = require("croner");
+
const jobs = [
{
name: "clear-old-data",
- interval: "at 03:14",
+ interval: "14 03 * * *",
+ jobFunc: clearOldData,
+ croner: null,
},
];
/**
* Initialize background jobs
- * @param {Object} args Arguments to pass to workers
- * @returns {Bree}
+ * @returns {Promise}
*/
-const initBackgroundJobs = function (args) {
- bree = new Bree({
- root: path.resolve("server", "jobs"),
- jobs,
- worker: {
- env: SHARE_ENV,
- workerData: args,
- },
- workerMessageHandler: (message) => {
- log.info("jobs", message);
- }
- });
+const initBackgroundJobs = async function () {
+ const timezone = await UptimeKumaServer.getInstance().getTimezone();
+
+ for (const job of jobs) {
+ const cornerJob = new Cron(
+ job.interval,
+ {
+ name: job.name,
+ timezone,
+ },
+ job.jobFunc,
+ );
+ job.croner = cornerJob;
+ }
- bree.start();
- return bree;
};
+/** Stop all background jobs if running */
const stopBackgroundJobs = function () {
- if (bree) {
- bree.stop();
+ for (const job of jobs) {
+ if (job.croner) {
+ job.croner.stop();
+ job.croner = null;
+ }
}
};
diff --git a/server/jobs/clear-old-data.js b/server/jobs/clear-old-data.js
index ed80b0f74..cf7488cad 100644
--- a/server/jobs/clear-old-data.js
+++ b/server/jobs/clear-old-data.js
@@ -1,12 +1,15 @@
-const { log, exit, connectDb } = require("./util-worker");
const { R } = require("redbean-node");
+const { log } = require("../../src/util");
const { setSetting, setting } = require("../util-server");
const DEFAULT_KEEP_PERIOD = 180;
-(async () => {
- await connectDb();
+/**
+ * Clears old data from the heartbeat table of the database.
+ * @return {Promise} A promise that resolves when the data has been cleared.
+ */
+const clearOldData = async () => {
let period = await setting("keepDataPeriodDays");
// Set Default Period
@@ -20,16 +23,16 @@ const DEFAULT_KEEP_PERIOD = 180;
try {
parsedPeriod = parseInt(period);
} catch (_) {
- log("Failed to parse setting, resetting to default..");
+ log.warn("clearOldData", "Failed to parse setting, resetting to default..");
await setSetting("keepDataPeriodDays", DEFAULT_KEEP_PERIOD, "general");
parsedPeriod = DEFAULT_KEEP_PERIOD;
}
if (parsedPeriod < 1) {
- log(`Data deletion has been disabled as period is less than 1. Period is ${parsedPeriod} days.`);
+ log.info("clearOldData", `Data deletion has been disabled as period is less than 1. Period is ${parsedPeriod} days.`);
} else {
- log(`Clearing Data older than ${parsedPeriod} days...`);
+ log.debug("clearOldData", `Clearing Data older than ${parsedPeriod} days...`);
try {
await R.exec(
@@ -37,9 +40,11 @@ const DEFAULT_KEEP_PERIOD = 180;
[ parsedPeriod ]
);
} catch (e) {
- log(`Failed to clear old data: ${e.message}`);
+ log.error("clearOldData", `Failed to clear old data: ${e.message}`);
}
}
+};
- exit();
-})();
+module.exports = {
+ clearOldData,
+};
diff --git a/server/jobs/util-worker.js b/server/jobs/util-worker.js
deleted file mode 100644
index 1aeec794d..000000000
--- a/server/jobs/util-worker.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const { parentPort, workerData } = require("worker_threads");
-const Database = require("../database");
-const path = require("path");
-
-/**
- * Send message to parent process for logging
- * since worker_thread does not have access to stdout, this is used
- * instead of console.log()
- * @param {any} any The message to log
- */
-const log = function (any) {
- if (parentPort) {
- parentPort.postMessage(any);
- }
-};
-
-/**
- * Exit the worker process
- * @param {number} error The status code to exit
- */
-const exit = function (error) {
- if (error && error !== 0) {
- process.exit(error);
- } else {
- if (parentPort) {
- parentPort.postMessage("done");
- } else {
- process.exit(0);
- }
- }
-};
-
-/** Connects to the database */
-const connectDb = async function () {
- const dbPath = path.join(
- process.env.DATA_DIR || workerData["data-dir"] || "./data/"
- );
-
- Database.init({
- "data-dir": dbPath,
- });
-
- await Database.connect();
-};
-
-module.exports = {
- log,
- exit,
- connectDb,
-};
diff --git a/server/model/api_key.js b/server/model/api_key.js
new file mode 100644
index 000000000..1b27a60f6
--- /dev/null
+++ b/server/model/api_key.js
@@ -0,0 +1,76 @@
+const { BeanModel } = require("redbean-node/dist/bean-model");
+const { R } = require("redbean-node");
+const dayjs = require("dayjs");
+
+class APIKey extends BeanModel {
+ /**
+ * Get the current status of this API key
+ * @returns {string} active, inactive or expired
+ */
+ getStatus() {
+ let current = dayjs();
+ let expiry = dayjs(this.expires);
+ if (expiry.diff(current) < 0) {
+ return "expired";
+ }
+
+ return this.active ? "active" : "inactive";
+ }
+
+ /**
+ * Returns an object that ready to parse to JSON
+ * @returns {Object}
+ */
+ toJSON() {
+ return {
+ id: this.id,
+ key: this.key,
+ name: this.name,
+ userID: this.user_id,
+ createdDate: this.created_date,
+ active: this.active,
+ expires: this.expires,
+ status: this.getStatus(),
+ };
+ }
+
+ /**
+ * Returns an object that ready to parse to JSON with sensitive fields
+ * removed
+ * @returns {Object}
+ */
+ toPublicJSON() {
+ return {
+ id: this.id,
+ name: this.name,
+ userID: this.user_id,
+ createdDate: this.created_date,
+ active: this.active,
+ expires: this.expires,
+ status: this.getStatus(),
+ };
+ }
+
+ /**
+ * Create a new API Key and store it in the database
+ * @param {Object} key Object sent by client
+ * @param {int} userID ID of socket user
+ * @returns {Promise}
+ */
+ static async save(key, userID) {
+ let bean;
+ bean = R.dispense("api_key");
+
+ bean.key = key.key;
+ bean.name = key.name;
+ bean.user_id = userID;
+ bean.active = key.active;
+ bean.expires = key.expires;
+
+ await R.store(bean);
+
+ return bean;
+ }
+}
+
+module.exports = APIKey;
diff --git a/server/model/maintenance.js b/server/model/maintenance.js
index d9be34273..f18eb026d 100644
--- a/server/model/maintenance.js
+++ b/server/model/maintenance.js
@@ -1,8 +1,10 @@
const { BeanModel } = require("redbean-node/dist/bean-model");
-const { parseTimeObject, parseTimeFromTimeObject, utcToLocal, localToUTC, log } = require("../../src/util");
-const { timeObjectToUTC, timeObjectToLocal } = require("../util-server");
+const { parseTimeObject, parseTimeFromTimeObject, log } = require("../../src/util");
const { R } = require("redbean-node");
const dayjs = require("dayjs");
+const Cron = require("croner");
+const { UptimeKumaServer } = require("../uptime-kuma-server");
+const apicache = require("../modules/apicache");
class Maintenance extends BeanModel {
@@ -15,16 +17,19 @@ class Maintenance extends BeanModel {
let dateRange = [];
if (this.start_date) {
- dateRange.push(utcToLocal(this.start_date));
- if (this.end_date) {
- dateRange.push(utcToLocal(this.end_date));
- }
+ dateRange.push(this.start_date);
+ } else {
+ dateRange.push(null);
+ }
+
+ if (this.end_date) {
+ dateRange.push(this.end_date);
}
let timeRange = [];
- let startTime = timeObjectToLocal(parseTimeObject(this.start_time));
+ let startTime = parseTimeObject(this.start_time);
timeRange.push(startTime);
- let endTime = timeObjectToLocal(parseTimeObject(this.end_time));
+ let endTime = parseTimeObject(this.end_time);
timeRange.push(endTime);
let obj = {
@@ -39,12 +44,44 @@ class Maintenance extends BeanModel {
weekdays: (this.weekdays) ? JSON.parse(this.weekdays) : [],
daysOfMonth: (this.days_of_month) ? JSON.parse(this.days_of_month) : [],
timeslotList: [],
+ cron: this.cron,
+ duration: this.duration,
+ durationMinutes: parseInt(this.duration / 60),
+ timezone: await this.getTimezone(), // Only valid timezone
+ timezoneOption: this.timezone, // Mainly for dropdown menu, because there is a option "SAME_AS_SERVER"
+ timezoneOffset: await this.getTimezoneOffset(),
+ status: await this.getStatus(),
};
- const timeslotList = await this.getTimeslotList();
+ if (this.strategy === "manual") {
+ // Do nothing, no timeslots
+ } else if (this.strategy === "single") {
+ obj.timeslotList.push({
+ startDate: this.start_date,
+ endDate: this.end_date,
+ });
+ } else {
+ // Should be cron or recurring here
+ if (this.beanMeta.job) {
+ let runningTimeslot = this.getRunningTimeslot();
- for (let timeslot of timeslotList) {
- obj.timeslotList.push(await timeslot.toPublicJSON());
+ if (runningTimeslot) {
+ obj.timeslotList.push(runningTimeslot);
+ }
+
+ let nextRunDate = this.beanMeta.job.nextRun();
+ if (nextRunDate) {
+ let startDateDayjs = dayjs(nextRunDate);
+
+ let startDate = startDateDayjs.toISOString();
+ let endDate = startDateDayjs.add(this.duration, "second").toISOString();
+
+ obj.timeslotList.push({
+ startDate,
+ endDate,
+ });
+ }
+ }
}
if (!Array.isArray(obj.weekdays)) {
@@ -55,54 +92,9 @@ class Maintenance extends BeanModel {
obj.daysOfMonth = [];
}
- // Maintenance Status
- if (!obj.active) {
- obj.status = "inactive";
- } else if (obj.strategy === "manual") {
- obj.status = "under-maintenance";
- } else if (obj.timeslotList.length > 0) {
- let currentTimestamp = dayjs().unix();
-
- for (let timeslot of obj.timeslotList) {
- if (dayjs.utc(timeslot.startDate).unix() <= currentTimestamp && dayjs.utc(timeslot.endDate).unix() >= currentTimestamp) {
- log.debug("timeslot", "Timeslot ID: " + timeslot.id);
- log.debug("timeslot", "currentTimestamp:" + currentTimestamp);
- log.debug("timeslot", "timeslot.start_date:" + dayjs.utc(timeslot.startDate).unix());
- log.debug("timeslot", "timeslot.end_date:" + dayjs.utc(timeslot.endDate).unix());
-
- obj.status = "under-maintenance";
- break;
- }
- }
-
- if (!obj.status) {
- obj.status = "scheduled";
- }
- } else if (obj.timeslotList.length === 0) {
- obj.status = "ended";
- } else {
- obj.status = "unknown";
- }
-
return obj;
}
- /**
- * Only get future or current timeslots only
- * @returns {Promise<[]>}
- */
- async getTimeslotList() {
- return R.convertToBeans("maintenance_timeslot", await R.getAll(`
- SELECT maintenance_timeslot.*
- FROM maintenance_timeslot, maintenance
- WHERE maintenance_timeslot.maintenance_id = maintenance.id
- AND maintenance.id = ?
- AND ${Maintenance.getActiveAndFutureMaintenanceSQLCondition()}
- `, [
- this.id
- ]));
- }
-
/**
* Return an object that ready to parse to JSON
* @param {string} timezone If not specified, the timeRange will be in UTC
@@ -112,6 +104,11 @@ class Maintenance extends BeanModel {
return this.toPublicJSON(timezone);
}
+ /**
+ * Get a list of weekdays that the maintenance is active for
+ * Monday=1, Tuesday=2 etc.
+ * @returns {number[]} Array of active weekdays
+ */
getDayOfWeekList() {
log.debug("timeslot", "List: " + this.weekdays);
return JSON.parse(this.weekdays).sort(function (a, b) {
@@ -119,25 +116,21 @@ class Maintenance extends BeanModel {
});
}
+ /**
+ * Get a list of days in month that maintenance is active for
+ * @returns {number[]|string[]} Array of active days in month
+ */
getDayOfMonthList() {
return JSON.parse(this.days_of_month).sort(function (a, b) {
return a - b;
});
}
- getStartDateTime() {
- let startOfTheDay = dayjs.utc(this.start_date).format("HH:mm");
- log.debug("timeslot", "startOfTheDay: " + startOfTheDay);
-
- // Start Time
- let startTimeSecond = dayjs.utc(this.start_time, "HH:mm").diff(dayjs.utc(startOfTheDay, "HH:mm"), "second");
- log.debug("timeslot", "startTime: " + startTimeSecond);
-
- // Bake StartDate + StartTime = Start DateTime
- return dayjs.utc(this.start_date).add(startTimeSecond, "second");
- }
-
- getDuration() {
+ /**
+ * Get the duration of maintenance in seconds
+ * @returns {number} Duration of maintenance
+ */
+ calcDuration() {
let duration = dayjs.utc(this.end_time, "HH:mm").diff(dayjs.utc(this.start_time, "HH:mm"), "second");
// Add 24hours if it is across day
if (duration < 0) {
@@ -146,71 +139,276 @@ class Maintenance extends BeanModel {
return duration;
}
- static jsonToBean(bean, obj) {
+ /**
+ * Convert data from socket to bean
+ * @param {Bean} bean Bean to fill in
+ * @param {Object} obj Data to fill bean with
+ * @returns {Bean} Filled bean
+ */
+ static async jsonToBean(bean, obj) {
if (obj.id) {
bean.id = obj.id;
}
- // Apply timezone offset to timeRange, as it cannot apply automatically.
- if (obj.timeRange[0]) {
- timeObjectToUTC(obj.timeRange[0]);
- if (obj.timeRange[1]) {
- timeObjectToUTC(obj.timeRange[1]);
- }
- }
-
bean.title = obj.title;
bean.description = obj.description;
bean.strategy = obj.strategy;
bean.interval_day = obj.intervalDay;
+ bean.timezone = obj.timezoneOption;
bean.active = obj.active;
if (obj.dateRange[0]) {
- bean.start_date = localToUTC(obj.dateRange[0]);
-
- if (obj.dateRange[1]) {
- bean.end_date = localToUTC(obj.dateRange[1]);
- }
+ bean.start_date = obj.dateRange[0];
+ } else {
+ bean.start_date = null;
}
- bean.start_time = parseTimeFromTimeObject(obj.timeRange[0]);
- bean.end_time = parseTimeFromTimeObject(obj.timeRange[1]);
+ if (obj.dateRange[1]) {
+ bean.end_date = obj.dateRange[1];
+ } else {
+ bean.end_date = null;
+ }
- bean.weekdays = JSON.stringify(obj.weekdays);
- bean.days_of_month = JSON.stringify(obj.daysOfMonth);
+ if (bean.strategy === "cron") {
+ bean.duration = obj.durationMinutes * 60;
+ bean.cron = obj.cron;
+ this.validateCron(bean.cron);
+ }
+ if (bean.strategy.startsWith("recurring-")) {
+ bean.start_time = parseTimeFromTimeObject(obj.timeRange[0]);
+ bean.end_time = parseTimeFromTimeObject(obj.timeRange[1]);
+ bean.weekdays = JSON.stringify(obj.weekdays);
+ bean.days_of_month = JSON.stringify(obj.daysOfMonth);
+ await bean.generateCron();
+ this.validateCron(bean.cron);
+ }
return bean;
}
/**
- * SQL conditions for active maintenance
- * @returns {string}
+ * Throw error if cron is invalid
+ * @param cron
+ * @returns {Promise}
*/
- static getActiveMaintenanceSQLCondition() {
- return `
- (
- (maintenance_timeslot.start_date <= DATETIME('now')
- AND maintenance_timeslot.end_date >= DATETIME('now')
- AND maintenance.active = 1)
- OR
- (maintenance.strategy = 'manual' AND active = 1)
- )
- `;
+ static async validateCron(cron) {
+ let job = new Cron(cron, () => {});
+ job.stop();
}
/**
- * SQL conditions for active and future maintenance
- * @returns {string}
+ * Run the cron
*/
- static getActiveAndFutureMaintenanceSQLCondition() {
- return `
- (
- ((maintenance_timeslot.end_date >= DATETIME('now')
- AND maintenance.active = 1)
- OR
- (maintenance.strategy = 'manual' AND active = 1))
- )
- `;
+ async run(throwError = false) {
+ if (this.beanMeta.job) {
+ log.debug("maintenance", "Maintenance is already running, stop it first. id: " + this.id);
+ this.stop();
+ }
+
+ log.debug("maintenance", "Run maintenance id: " + this.id);
+
+ // 1.21.2 migration
+ if (!this.cron) {
+ await this.generateCron();
+ if (!this.timezone) {
+ this.timezone = "UTC";
+ }
+ if (this.cron) {
+ await R.store(this);
+ }
+ }
+
+ if (this.strategy === "manual") {
+ // Do nothing, because it is controlled by the user
+ } else if (this.strategy === "single") {
+ this.beanMeta.job = new Cron(this.start_date, { timezone: await this.getTimezone() }, () => {
+ log.info("maintenance", "Maintenance id: " + this.id + " is under maintenance now");
+ UptimeKumaServer.getInstance().sendMaintenanceListByUserID(this.user_id);
+ apicache.clear();
+ });
+ } else if (this.cron != null) {
+ // Here should be cron or recurring
+ try {
+ this.beanMeta.status = "scheduled";
+
+ let startEvent = (customDuration = 0) => {
+ log.info("maintenance", "Maintenance id: " + this.id + " is under maintenance now");
+
+ this.beanMeta.status = "under-maintenance";
+ clearTimeout(this.beanMeta.durationTimeout);
+
+ // Check if duration is still in the window. If not, use the duration from the current time to the end of the window
+ let duration;
+
+ if (customDuration > 0) {
+ duration = customDuration;
+ } else if (this.end_date) {
+ let d = dayjs(this.end_date).diff(dayjs(), "second");
+ if (d < this.duration) {
+ duration = d * 1000;
+ }
+ } else {
+ duration = this.duration * 1000;
+ }
+
+ UptimeKumaServer.getInstance().sendMaintenanceListByUserID(this.user_id);
+
+ this.beanMeta.durationTimeout = setTimeout(() => {
+ // End of maintenance for this timeslot
+ this.beanMeta.status = "scheduled";
+ UptimeKumaServer.getInstance().sendMaintenanceListByUserID(this.user_id);
+ }, duration);
+ };
+
+ // Create Cron
+ this.beanMeta.job = new Cron(this.cron, {
+ timezone: await this.getTimezone(),
+ }, startEvent);
+
+ // Continue if the maintenance is still in the window
+ let runningTimeslot = this.getRunningTimeslot();
+ let current = dayjs();
+
+ if (runningTimeslot) {
+ let duration = dayjs(runningTimeslot.endDate).diff(current, "second") * 1000;
+ log.debug("maintenance", "Maintenance id: " + this.id + " Remaining duration: " + duration + "ms");
+ startEvent(duration);
+ }
+
+ } catch (e) {
+ log.error("maintenance", "Error in maintenance id: " + this.id);
+ log.error("maintenance", "Cron: " + this.cron);
+ log.error("maintenance", e);
+
+ if (throwError) {
+ throw e;
+ }
+ }
+
+ } else {
+ log.error("maintenance", "Maintenance id: " + this.id + " has no cron");
+ }
+ }
+
+ getRunningTimeslot() {
+ let start = dayjs(this.beanMeta.job.nextRun(dayjs().add(-this.duration, "second").toDate()));
+ let end = start.add(this.duration, "second");
+ let current = dayjs();
+
+ if (current.isAfter(start) && current.isBefore(end)) {
+ return {
+ startDate: start.toISOString(),
+ endDate: end.toISOString(),
+ };
+ } else {
+ return null;
+ }
+ }
+
+ stop() {
+ if (this.beanMeta.job) {
+ this.beanMeta.job.stop();
+ delete this.beanMeta.job;
+ }
+ }
+
+ async isUnderMaintenance() {
+ return (await this.getStatus()) === "under-maintenance";
+ }
+
+ async getTimezone() {
+ if (!this.timezone || this.timezone === "SAME_AS_SERVER") {
+ return await UptimeKumaServer.getInstance().getTimezone();
+ }
+ return this.timezone;
+ }
+
+ async getTimezoneOffset() {
+ return dayjs.tz(dayjs(), await this.getTimezone()).format("Z");
+ }
+
+ async getStatus() {
+ if (!this.active) {
+ return "inactive";
+ }
+
+ if (this.strategy === "manual") {
+ return "under-maintenance";
+ }
+
+ // Check if the maintenance is started
+ if (this.start_date && dayjs().isBefore(dayjs.tz(this.start_date, await this.getTimezone()))) {
+ return "scheduled";
+ }
+
+ // Check if the maintenance is ended
+ if (this.end_date && dayjs().isAfter(dayjs.tz(this.end_date, await this.getTimezone()))) {
+ return "ended";
+ }
+
+ if (this.strategy === "single") {
+ return "under-maintenance";
+ }
+
+ if (!this.beanMeta.status) {
+ return "unknown";
+ }
+
+ return this.beanMeta.status;
+ }
+
+ /**
+ * Generate Cron for recurring maintenance
+ * @returns {Promise}
+ */
+ async generateCron() {
+ log.info("maintenance", "Generate cron for maintenance id: " + this.id);
+
+ if (this.strategy === "cron") {
+ // Do nothing for cron
+ } else if (!this.strategy.startsWith("recurring-")) {
+ this.cron = "";
+ } else if (this.strategy === "recurring-interval") {
+ let array = this.start_time.split(":");
+ let hour = parseInt(array[0]);
+ let minute = parseInt(array[1]);
+ this.cron = minute + " " + hour + " */" + this.interval_day + " * *";
+ this.duration = this.calcDuration();
+ log.debug("maintenance", "Cron: " + this.cron);
+ log.debug("maintenance", "Duration: " + this.duration);
+ } else if (this.strategy === "recurring-weekday") {
+ let list = this.getDayOfWeekList();
+ let array = this.start_time.split(":");
+ let hour = parseInt(array[0]);
+ let minute = parseInt(array[1]);
+ this.cron = minute + " " + hour + " * * " + list.join(",");
+ this.duration = this.calcDuration();
+ } else if (this.strategy === "recurring-day-of-month") {
+ let list = this.getDayOfMonthList();
+ let array = this.start_time.split(":");
+ let hour = parseInt(array[0]);
+ let minute = parseInt(array[1]);
+
+ let dayList = [];
+
+ for (let day of list) {
+ if (typeof day === "string" && day.startsWith("lastDay")) {
+ if (day === "lastDay1") {
+ dayList.push("L");
+ }
+ // Unfortunately, lastDay2-4 is not supported by cron
+ } else {
+ dayList.push(day);
+ }
+ }
+
+ // Remove duplicate
+ dayList = [ ...new Set(dayList) ];
+
+ this.cron = minute + " " + hour + " " + dayList.join(",") + " * *";
+ this.duration = this.calcDuration();
+ }
+
}
}
diff --git a/server/model/maintenance_timeslot.js b/server/model/maintenance_timeslot.js
deleted file mode 100644
index 2babe6bca..000000000
--- a/server/model/maintenance_timeslot.js
+++ /dev/null
@@ -1,189 +0,0 @@
-const { BeanModel } = require("redbean-node/dist/bean-model");
-const { R } = require("redbean-node");
-const dayjs = require("dayjs");
-const { log, utcToLocal, SQL_DATETIME_FORMAT_WITHOUT_SECOND, localToUTC } = require("../../src/util");
-const { UptimeKumaServer } = require("../uptime-kuma-server");
-
-class MaintenanceTimeslot extends BeanModel {
-
- async toPublicJSON() {
- const serverTimezoneOffset = UptimeKumaServer.getInstance().getTimezoneOffset();
-
- const obj = {
- id: this.id,
- startDate: this.start_date,
- endDate: this.end_date,
- startDateServerTimezone: utcToLocal(this.start_date, SQL_DATETIME_FORMAT_WITHOUT_SECOND),
- endDateServerTimezone: utcToLocal(this.end_date, SQL_DATETIME_FORMAT_WITHOUT_SECOND),
- serverTimezoneOffset,
- };
-
- return obj;
- }
-
- async toJSON() {
- return await this.toPublicJSON();
- }
-
- /**
- * @param {Maintenance} maintenance
- * @param {dayjs} minDate (For recurring type only) Generate a next timeslot from this date.
- * @param {boolean} removeExist Remove existing timeslot before create
- * @returns {Promise}
- */
- static async generateTimeslot(maintenance, minDate = null, removeExist = false) {
- if (removeExist) {
- await R.exec("DELETE FROM maintenance_timeslot WHERE maintenance_id = ? ", [
- maintenance.id
- ]);
- }
-
- if (maintenance.strategy === "manual") {
- log.debug("maintenance", "No need to generate timeslot for manual type");
-
- } else if (maintenance.strategy === "single") {
- let bean = R.dispense("maintenance_timeslot");
- bean.maintenance_id = maintenance.id;
- bean.start_date = maintenance.start_date;
- bean.end_date = maintenance.end_date;
- bean.generated_next = true;
- return await R.store(bean);
-
- } else if (maintenance.strategy === "recurring-interval") {
- // Prevent dead loop, in case interval_day is not set
- if (!maintenance.interval_day || maintenance.interval_day <= 0) {
- maintenance.interval_day = 1;
- }
-
- return await this.handleRecurringType(maintenance, minDate, (startDateTime) => {
- return startDateTime.add(maintenance.interval_day, "day");
- }, () => {
- return true;
- });
-
- } else if (maintenance.strategy === "recurring-weekday") {
- let dayOfWeekList = maintenance.getDayOfWeekList();
- log.debug("timeslot", dayOfWeekList);
-
- if (dayOfWeekList.length <= 0) {
- log.debug("timeslot", "No weekdays selected?");
- return null;
- }
-
- const isValid = (startDateTime) => {
- log.debug("timeslot", "nextDateTime: " + startDateTime);
-
- let day = startDateTime.local().day();
- log.debug("timeslot", "nextDateTime.day(): " + day);
-
- return dayOfWeekList.includes(day);
- };
-
- return await this.handleRecurringType(maintenance, minDate, (startDateTime) => {
- while (true) {
- startDateTime = startDateTime.add(1, "day");
-
- if (isValid(startDateTime)) {
- return startDateTime;
- }
- }
- }, isValid);
-
- } else if (maintenance.strategy === "recurring-day-of-month") {
- let dayOfMonthList = maintenance.getDayOfMonthList();
- if (dayOfMonthList.length <= 0) {
- log.debug("timeslot", "No day selected?");
- return null;
- }
-
- const isValid = (startDateTime) => {
- let day = parseInt(startDateTime.local().format("D"));
-
- log.debug("timeslot", "day: " + day);
-
- // Check 1-31
- if (dayOfMonthList.includes(day)) {
- return startDateTime;
- }
-
- // Check "lastDay1","lastDay2"...
- let daysInMonth = startDateTime.daysInMonth();
- let lastDayList = [];
-
- // Small first, e.g. 28 > 29 > 30 > 31
- for (let i = 4; i >= 1; i--) {
- if (dayOfMonthList.includes("lastDay" + i)) {
- lastDayList.push(daysInMonth - i + 1);
- }
- }
- log.debug("timeslot", lastDayList);
- return lastDayList.includes(day);
- };
-
- return await this.handleRecurringType(maintenance, minDate, (startDateTime) => {
- while (true) {
- startDateTime = startDateTime.add(1, "day");
- if (isValid(startDateTime)) {
- return startDateTime;
- }
- }
- }, isValid);
- } else {
- throw new Error("Unknown maintenance strategy");
- }
- }
-
- /**
- * Generate a next timeslot for all recurring types
- * @param maintenance
- * @param minDate
- * @param {function} nextDayCallback The logic how to get the next possible day
- * @param {function} isValidCallback Check the day whether is matched the current strategy
- * @returns {Promise}
- */
- static async handleRecurringType(maintenance, minDate, nextDayCallback, isValidCallback) {
- let bean = R.dispense("maintenance_timeslot");
-
- let duration = maintenance.getDuration();
- let startDateTime = maintenance.getStartDateTime();
- let endDateTime;
-
- // Keep generating from the first possible date, until it is ok
- while (true) {
- log.debug("timeslot", "startDateTime: " + startDateTime.format());
-
- // Handling out of effective date range
- if (startDateTime.diff(dayjs.utc(maintenance.end_date)) > 0) {
- log.debug("timeslot", "Out of effective date range");
- return null;
- }
-
- endDateTime = startDateTime.add(duration, "second");
-
- // If endDateTime is out of effective date range, use the end datetime from effective date range
- if (endDateTime.diff(dayjs.utc(maintenance.end_date)) > 0) {
- endDateTime = dayjs.utc(maintenance.end_date);
- }
-
- // If minDate is set, the endDateTime must be bigger than it.
- // And the endDateTime must be bigger current time
- // Is valid under current recurring strategy
- if (
- (!minDate || endDateTime.diff(minDate) > 0) &&
- endDateTime.diff(dayjs()) > 0 &&
- isValidCallback(startDateTime)
- ) {
- break;
- }
- startDateTime = nextDayCallback(startDateTime);
- }
-
- bean.maintenance_id = maintenance.id;
- bean.start_date = localToUTC(startDateTime);
- bean.end_date = localToUTC(endDateTime);
- bean.generated_next = false;
- return await R.store(bean);
- }
-}
-
-module.exports = MaintenanceTimeslot;
diff --git a/server/model/monitor.js b/server/model/monitor.js
index 9f8c8300a..663f01d6f 100644
--- a/server/model/monitor.js
+++ b/server/model/monitor.js
@@ -2,8 +2,12 @@ const https = require("https");
const dayjs = require("dayjs");
const axios = require("axios");
const { Prometheus } = require("../prometheus");
-const { log, UP, DOWN, PENDING, MAINTENANCE, flipStatus, TimeLogger, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND } = require("../../src/util");
-const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, mqttAsync, setSetting, httpNtlm, radius, grpcQuery } = require("../util-server");
+const { log, UP, DOWN, PENDING, MAINTENANCE, flipStatus, TimeLogger, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND,
+ SQL_DATETIME_FORMAT
+} = require("../../src/util");
+const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, mqttAsync, setSetting, httpNtlm, radius, grpcQuery,
+ redisPingAsync, mongodbPing,
+} = require("../util-server");
const { R } = require("redbean-node");
const { BeanModel } = require("redbean-node/dist/bean-model");
const { Notification } = require("../notification");
@@ -14,8 +18,9 @@ const apicache = require("../modules/apicache");
const { UptimeKumaServer } = require("../uptime-kuma-server");
const { CacheableDnsHttpAgent } = require("../cacheable-dns-http-agent");
const { DockerHost } = require("../docker");
-const Maintenance = require("./maintenance");
const { UptimeCacheList } = require("../uptime-cache-list");
+const Gamedig = require("gamedig");
+const jwt = require("jsonwebtoken");
/**
* status:
@@ -36,7 +41,6 @@ class Monitor extends BeanModel {
id: this.id,
name: this.name,
sendUrl: this.sendUrl,
- maintenance: await Monitor.isUnderMaintenance(this.id),
};
if (this.sendUrl) {
@@ -67,24 +71,37 @@ class Monitor extends BeanModel {
const tags = await this.getTags();
+ let screenshot = null;
+
+ if (this.type === "real-browser") {
+ screenshot = "/screenshots/" + jwt.sign(this.id, UptimeKumaServer.getInstance().jwtSecret) + ".png";
+ }
+
let data = {
id: this.id,
name: this.name,
+ description: this.description,
+ pathName: await this.getPathName(),
+ parent: this.parent,
+ childrenIDs: await Monitor.getAllChildrenIDs(this.id),
url: this.url,
method: this.method,
hostname: this.hostname,
port: this.port,
maxretries: this.maxretries,
weight: this.weight,
- active: this.active,
+ active: await this.isActive(),
+ forceInactive: !await Monitor.isParentActive(this.id),
type: this.type,
interval: this.interval,
retryInterval: this.retryInterval,
resendInterval: this.resendInterval,
keyword: this.keyword,
+ invertKeyword: this.isInvertKeyword(),
expiryNotification: this.isEnabledExpiryNotification(),
ignoreTls: this.getIgnoreTls(),
upsideDown: this.isUpsideDown(),
+ packetSize: this.packetSize,
maxredirects: this.maxredirects,
accepted_statuscodes: this.getAcceptedStatuscodes(),
dns_resolve_type: this.dns_resolve_type,
@@ -107,6 +124,9 @@ class Monitor extends BeanModel {
grpcEnableTls: this.getGrpcEnableTls(),
radiusCalledStationId: this.radiusCalledStationId,
radiusCallingStationId: this.radiusCallingStationId,
+ game: this.game,
+ httpBodyEncoding: this.httpBodyEncoding,
+ screenshot,
};
if (includeSensitiveData) {
@@ -127,6 +147,9 @@ class Monitor extends BeanModel {
mqttPassword: this.mqttPassword,
authWorkstation: this.authWorkstation,
authDomain: this.authDomain,
+ tlsCa: this.tlsCa,
+ tlsCert: this.tlsCert,
+ tlsKey: this.tlsKey,
};
}
@@ -134,12 +157,22 @@ class Monitor extends BeanModel {
return data;
}
+ /**
+ * Checks if the monitor is active based on itself and its parents
+ * @returns {Promise}
+ */
+ async isActive() {
+ const parentActive = await Monitor.isParentActive(this.id);
+
+ return this.active && parentActive;
+ }
+
/**
* Get all tags applied to this monitor
* @returns {Promise[]>}
*/
async getTags() {
- return await R.getAll("SELECT mt.*, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ?", [ this.id ]);
+ return await R.getAll("SELECT mt.*, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ? ORDER BY tag.name", [ this.id ]);
}
/**
@@ -175,6 +208,14 @@ class Monitor extends BeanModel {
return Boolean(this.upsideDown);
}
+ /**
+ * Parse to boolean
+ * @returns {boolean}
+ */
+ isInvertKeyword() {
+ return Boolean(this.invertKeyword);
+ }
+
/**
* Parse to boolean
* @returns {boolean}
@@ -199,7 +240,7 @@ class Monitor extends BeanModel {
let previousBeat = null;
let retries = 0;
- let prometheus = new Prometheus(this);
+ this.prometheus = new Prometheus(this);
const beat = async () => {
@@ -249,6 +290,36 @@ class Monitor extends BeanModel {
if (await Monitor.isUnderMaintenance(this.id)) {
bean.msg = "Monitor under maintenance";
bean.status = MAINTENANCE;
+ } else if (this.type === "group") {
+ const children = await Monitor.getChildren(this.id);
+
+ if (children.length > 0) {
+ bean.status = UP;
+ bean.msg = "All children up and running";
+ for (const child of children) {
+ if (!child.active) {
+ // Ignore inactive childs
+ continue;
+ }
+ const lastBeat = await Monitor.getPreviousHeartbeat(child.id);
+
+ // Only change state if the monitor is in worse conditions then the ones before
+ if (bean.status === UP && (lastBeat.status === PENDING || lastBeat.status === DOWN)) {
+ bean.status = lastBeat.status;
+ } else if (bean.status === PENDING && lastBeat.status === DOWN) {
+ bean.status = lastBeat.status;
+ }
+ }
+
+ if (bean.status !== UP) {
+ bean.msg = "Child inaccessible";
+ }
+ } else {
+ // Set status pending if group is empty
+ bean.status = PENDING;
+ bean.msg = "Group empty";
+ }
+
} else if (this.type === "http" || this.type === "keyword") {
// Do not do any queries/high loading things before the "bean.ping"
let startTime = dayjs().valueOf();
@@ -268,17 +339,34 @@ class Monitor extends BeanModel {
log.debug("monitor", `[${this.name}] Prepare Options for axios`);
+ let contentType = null;
+ let bodyValue = null;
+
+ if (this.body && (typeof this.body === "string" && this.body.trim().length > 0)) {
+ if (!this.httpBodyEncoding || this.httpBodyEncoding === "json") {
+ try {
+ bodyValue = JSON.parse(this.body);
+ contentType = "application/json";
+ } catch (e) {
+ throw new Error("Your JSON body is invalid. " + e.message);
+ }
+ } else if (this.httpBodyEncoding === "xml") {
+ bodyValue = this.body;
+ contentType = "text/xml; charset=utf-8";
+ }
+ }
+
// Axios Options
const options = {
url: this.url,
method: (this.method || "get").toLowerCase(),
- ...(this.body ? { data: JSON.parse(this.body) } : {}),
timeout: this.interval * 1000 * 0.8,
headers: {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"User-Agent": "Uptime-Kuma/" + version,
- ...(this.headers ? JSON.parse(this.headers) : {}),
+ ...(contentType ? { "Content-Type": contentType } : {}),
...(basicAuthHeader),
+ ...(this.headers ? JSON.parse(this.headers) : {})
},
maxRedirects: this.maxredirects,
validateStatus: (status) => {
@@ -286,6 +374,10 @@ class Monitor extends BeanModel {
},
};
+ if (bodyValue) {
+ options.data = bodyValue;
+ }
+
if (this.proxy_id) {
const proxy = await R.load("proxy", this.proxy_id);
@@ -304,6 +396,18 @@ class Monitor extends BeanModel {
options.httpsAgent = new https.Agent(httpsAgentOptions);
}
+ if (this.auth_method === "mtls") {
+ if (this.tlsCert !== null && this.tlsCert !== "") {
+ options.httpsAgent.options.cert = Buffer.from(this.tlsCert);
+ }
+ if (this.tlsCa !== null && this.tlsCa !== "") {
+ options.httpsAgent.options.ca = Buffer.from(this.tlsCa);
+ }
+ if (this.tlsKey !== null && this.tlsKey !== "") {
+ options.httpsAgent.options.key = Buffer.from(this.tlsKey);
+ }
+ }
+
log.debug("monitor", `[${this.name}] Axios Options: ${JSON.stringify(options)}`);
log.debug("monitor", `[${this.name}] Axios Request`);
@@ -322,8 +426,8 @@ class Monitor extends BeanModel {
tlsInfo = await this.updateTlsInfo(tlsInfoObject);
if (!this.getIgnoreTls() && this.isEnabledExpiryNotification()) {
- log.debug("monitor", `[${this.name}] call sendCertNotification`);
- await this.sendCertNotification(tlsInfoObject);
+ log.debug("monitor", `[${this.name}] call checkCertExpiryNotifications`);
+ await this.checkCertExpiryNotifications(tlsInfoObject);
}
} catch (e) {
@@ -353,15 +457,17 @@ class Monitor extends BeanModel {
data = JSON.stringify(data);
}
- if (data.includes(this.keyword)) {
- bean.msg += ", keyword is found";
+ let keywordFound = data.includes(this.keyword);
+ if (keywordFound === !this.isInvertKeyword()) {
+ bean.msg += ", keyword " + (keywordFound ? "is" : "not") + " found";
bean.status = UP;
} else {
- data = data.replace(/<[^>]*>?|[\n\r]|\s+/gm, " ");
+ data = data.replace(/<[^>]*>?|[\n\r]|\s+/gm, " ").trim();
if (data.length > 50) {
data = data.substring(0, 47) + "...";
}
- throw new Error(bean.msg + ", but keyword is not in [" + data + "]");
+ throw new Error(bean.msg + ", but keyword is " +
+ (keywordFound ? "present" : "not") + " in [" + data + "]");
}
}
@@ -372,7 +478,7 @@ class Monitor extends BeanModel {
bean.status = UP;
} else if (this.type === "ping") {
- bean.ping = await ping(this.hostname);
+ bean.ping = await ping(this.hostname, this.packetSize);
bean.msg = "";
bean.status = UP;
} else if (this.type === "dns") {
@@ -482,25 +588,44 @@ class Monitor extends BeanModel {
bean.msg = res.data.response.servers[0].name;
try {
- bean.ping = await ping(this.hostname);
+ bean.ping = await ping(this.hostname, this.packetSize);
} catch (_) { }
} else {
throw new Error("Server not found on Steam");
}
+ } else if (this.type === "gamedig") {
+ try {
+ const state = await Gamedig.query({
+ type: this.game,
+ host: this.hostname,
+ port: this.port,
+ givenPortOnly: true,
+ });
+
+ bean.msg = state.name;
+ bean.status = UP;
+ bean.ping = state.ping;
+ } catch (e) {
+ throw new Error(e.message);
+ }
} else if (this.type === "docker") {
- log.debug(`[${this.name}] Prepare Options for Axios`);
+ log.debug("monitor", `[${this.name}] Prepare Options for Axios`);
const dockerHost = await R.load("docker_host", this.docker_host);
const options = {
url: `/containers/${this.docker_container}/json`,
+ timeout: this.interval * 1000 * 0.8,
headers: {
"Accept": "*/*",
"User-Agent": "Uptime-Kuma/" + version,
},
- httpsAgent: new https.Agent({
+ httpsAgent: CacheableDnsHttpAgent.getHttpsAgent({
maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940)
- rejectUnauthorized: ! this.getIgnoreTls(),
+ rejectUnauthorized: !this.getIgnoreTls(),
+ }),
+ httpAgent: CacheableDnsHttpAgent.getHttpAgent({
+ maxCachedSessions: 0,
}),
};
@@ -510,11 +635,17 @@ class Monitor extends BeanModel {
options.baseURL = DockerHost.patchDockerURL(dockerHost._dockerDaemon);
}
- log.debug(`[${this.name}] Axios Request`);
+ log.debug("monitor", `[${this.name}] Axios Request`);
let res = await axios.request(options);
+
if (res.data.State.Running) {
- bean.status = UP;
- bean.msg = res.data.State.Status;
+ if (res.data.State.Health && res.data.State.Health.Status !== "healthy") {
+ bean.status = PENDING;
+ bean.msg = res.data.State.Health.Status;
+ } else {
+ bean.status = UP;
+ bean.msg = res.data.State.Health ? res.data.State.Health.Status : res.data.State.Status;
+ }
} else {
throw Error("Container State is " + res.data.State.Status);
}
@@ -543,7 +674,6 @@ class Monitor extends BeanModel {
grpcEnableTls: this.grpcEnableTls,
grpcMethod: this.grpcMethod,
grpcBody: this.grpcBody,
- keyword: this.keyword
};
const response = await grpcQuery(options);
bean.ping = dayjs().valueOf() - startTime;
@@ -556,13 +686,14 @@ class Monitor extends BeanModel {
bean.status = DOWN;
bean.msg = `Error in send gRPC ${response.code} ${response.errorMessage}`;
} else {
- if (response.data.toString().includes(this.keyword)) {
+ let keywordFound = response.data.toString().includes(this.keyword);
+ if (keywordFound === !this.isInvertKeyword()) {
bean.status = UP;
- bean.msg = `${responseData}, keyword [${this.keyword}] is found`;
+ bean.msg = `${responseData}, keyword [${this.keyword}] ${keywordFound ? "is" : "not"} found`;
} else {
- log.debug("monitor:", `GRPC response [${response.data}] + ", but keyword [${this.keyword}] is not in [" + ${response.data} + "]"`);
+ log.debug("monitor:", `GRPC response [${response.data}] + ", but keyword [${this.keyword}] is ${keywordFound ? "present" : "not"} in [" + ${response.data} + "]"`);
bean.status = DOWN;
- bean.msg = `, but keyword [${this.keyword}] is not in [" + ${responseData} + "]`;
+ bean.msg = `, but keyword [${this.keyword}] is ${keywordFound ? "present" : "not"} in [" + ${responseData} + "]`;
}
}
} else if (this.type === "postgres") {
@@ -576,11 +707,18 @@ class Monitor extends BeanModel {
} else if (this.type === "mysql") {
let startTime = dayjs().valueOf();
- await mysqlQuery(this.databaseConnectionString, this.databaseQuery);
+ bean.msg = await mysqlQuery(this.databaseConnectionString, this.databaseQuery);
+ bean.status = UP;
+ bean.ping = dayjs().valueOf() - startTime;
+ } else if (this.type === "mongodb") {
+ let startTime = dayjs().valueOf();
+
+ await mongodbPing(this.databaseConnectionString);
bean.msg = "";
bean.status = UP;
bean.ping = dayjs().valueOf() - startTime;
+
} else if (this.type === "radius") {
let startTime = dayjs().valueOf();
@@ -617,9 +755,23 @@ class Monitor extends BeanModel {
}
}
bean.ping = dayjs().valueOf() - startTime;
+ } else if (this.type === "redis") {
+ let startTime = dayjs().valueOf();
+
+ bean.msg = await redisPingAsync(this.databaseConnectionString);
+ bean.status = UP;
+ bean.ping = dayjs().valueOf() - startTime;
+
+ } else if (this.type in UptimeKumaServer.monitorTypeList) {
+ let startTime = dayjs().valueOf();
+ const monitorType = UptimeKumaServer.monitorTypeList[this.type];
+ await monitorType.check(this, bean, UptimeKumaServer.getInstance());
+ if (!bean.ping) {
+ bean.ping = dayjs().valueOf() - startTime;
+ }
+
} else {
- bean.msg = "Unknown Monitor Type";
- bean.status = PENDING;
+ throw new Error("Unknown Monitor Type");
}
if (this.isUpsideDown()) {
@@ -709,7 +861,7 @@ class Monitor extends BeanModel {
await R.store(bean);
log.debug("monitor", `[${this.name}] prometheus.update`);
- prometheus.update(bean, tlsInfo);
+ this.prometheus?.update(bean, tlsInfo);
previousBeat = bean;
@@ -748,6 +900,13 @@ class Monitor extends BeanModel {
}
}
+ /**
+ * Make a request using axios
+ * @param {Object} options Options for Axios
+ * @param {boolean} finalCall Should this be the final call i.e
+ * don't retry on faliure
+ * @returns {Object} Axios response
+ */
async makeAxiosRequest(options, finalCall = false) {
try {
let res;
@@ -760,7 +919,6 @@ class Monitor extends BeanModel {
domain: this.authDomain,
workstation: this.authWorkstation ? this.authWorkstation : undefined
});
-
} else {
res = await axios.request(options);
}
@@ -787,15 +945,15 @@ class Monitor extends BeanModel {
clearTimeout(this.heartbeatInterval);
this.isStop = true;
- this.prometheus().remove();
+ this.prometheus?.remove();
}
/**
- * Get a new prometheus instance
- * @returns {Prometheus}
+ * Get prometheus instance
+ * @returns {Prometheus|undefined}
*/
- prometheus() {
- return new Prometheus(this);
+ getPrometheus() {
+ return this.prometheus;
}
/**
@@ -1089,12 +1247,18 @@ class Monitor extends BeanModel {
for (let notification of notificationList) {
try {
- // Prevent if the msg is undefined, notifications such as Discord cannot send out.
const heartbeatJSON = bean.toJSON();
+
+ // Prevent if the msg is undefined, notifications such as Discord cannot send out.
if (!heartbeatJSON["msg"]) {
heartbeatJSON["msg"] = "N/A";
}
+ // Also provide the time in server timezone
+ heartbeatJSON["timezone"] = await UptimeKumaServer.getInstance().getTimezone();
+ heartbeatJSON["timezoneOffset"] = UptimeKumaServer.getInstance().getTimezoneOffset();
+ heartbeatJSON["localDateTime"] = dayjs.utc(heartbeatJSON["time"]).tz(heartbeatJSON["timezone"]).format(SQL_DATETIME_FORMAT);
+
await Notification.send(JSON.parse(notification.config), msg, await monitor.toJSON(false), heartbeatJSON);
} catch (e) {
log.error("monitor", "Cannot send notification to " + notification.name);
@@ -1117,13 +1281,19 @@ class Monitor extends BeanModel {
}
/**
- * Send notification about a certificate
+ * checks certificate chain for expiring certificates
* @param {Object} tlsInfoObject Information about certificate
*/
- async sendCertNotification(tlsInfoObject) {
+ async checkCertExpiryNotifications(tlsInfoObject) {
if (tlsInfoObject && tlsInfoObject.certInfo && tlsInfoObject.certInfo.daysRemaining) {
const notificationList = await Monitor.getNotificationList(this);
+ if (! notificationList.length > 0) {
+ // fail fast. If no notification is set, all the following checks can be skipped.
+ log.debug("monitor", "No notification, no need to send cert notification");
+ return;
+ }
+
let notifyDays = await setting("tlsExpiryNotifyDays");
if (notifyDays == null || !Array.isArray(notifyDays)) {
// Reset Default
@@ -1131,10 +1301,19 @@ class Monitor extends BeanModel {
notifyDays = [ 7, 14, 21 ];
}
- if (notifyDays != null && Array.isArray(notifyDays)) {
- for (const day of notifyDays) {
- log.debug("monitor", "call sendCertNotificationByTargetDays", day);
- await this.sendCertNotificationByTargetDays(tlsInfoObject.certInfo.daysRemaining, day, notificationList);
+ if (Array.isArray(notifyDays)) {
+ for (const targetDays of notifyDays) {
+ let certInfo = tlsInfoObject.certInfo;
+ while (certInfo) {
+ let subjectCN = certInfo.subject["CN"];
+ if (certInfo.daysRemaining > targetDays) {
+ log.debug("monitor", `No need to send cert notification for ${certInfo.certType} certificate "${subjectCN}" (${certInfo.daysRemaining} days valid) on ${targetDays} deadline.`);
+ } else {
+ log.debug("monitor", `call sendCertNotificationByTargetDays for ${targetDays} deadline on certificate ${subjectCN}.`);
+ await this.sendCertNotificationByTargetDays(subjectCN, certInfo.certType, certInfo.daysRemaining, targetDays, notificationList);
+ }
+ certInfo = certInfo.issuerCertificate;
+ }
}
}
}
@@ -1143,55 +1322,47 @@ class Monitor extends BeanModel {
/**
* Send a certificate notification when certificate expires in less
* than target days
- * @param {number} daysRemaining Number of days remaining on certifcate
+ * @param {string} certCN Common Name attribute from the certificate subject
+ * @param {string} certType certificate type
+ * @param {number} daysRemaining Number of days remaining on certificate
* @param {number} targetDays Number of days to alert after
* @param {LooseObject[]} notificationList List of notification providers
* @returns {Promise}
*/
- async sendCertNotificationByTargetDays(daysRemaining, targetDays, notificationList) {
+ async sendCertNotificationByTargetDays(certCN, certType, daysRemaining, targetDays, notificationList) {
- if (daysRemaining > targetDays) {
- log.debug("monitor", `No need to send cert notification. ${daysRemaining} > ${targetDays}`);
+ let row = await R.getRow("SELECT * FROM notification_sent_history WHERE type = ? AND monitor_id = ? AND days <= ?", [
+ "certificate",
+ this.id,
+ targetDays,
+ ]);
+
+ // Sent already, no need to send again
+ if (row) {
+ log.debug("monitor", "Sent already, no need to send again");
return;
}
- if (notificationList.length > 0) {
+ let sent = false;
+ log.debug("monitor", "Send certificate notification");
- let row = await R.getRow("SELECT * FROM notification_sent_history WHERE type = ? AND monitor_id = ? AND days = ?", [
+ for (let notification of notificationList) {
+ try {
+ log.debug("monitor", "Sending to " + notification.name);
+ await Notification.send(JSON.parse(notification.config), `[${this.name}][${this.url}] ${certType} certificate ${certCN} will be expired in ${daysRemaining} days`);
+ sent = true;
+ } catch (e) {
+ log.error("monitor", "Cannot send cert notification to " + notification.name);
+ log.error("monitor", e);
+ }
+ }
+
+ if (sent) {
+ await R.exec("INSERT INTO notification_sent_history (type, monitor_id, days) VALUES(?, ?, ?)", [
"certificate",
this.id,
targetDays,
]);
-
- // Sent already, no need to send again
- if (row) {
- log.debug("monitor", "Sent already, no need to send again");
- return;
- }
-
- let sent = false;
- log.debug("monitor", "Send certificate notification");
-
- for (let notification of notificationList) {
- try {
- log.debug("monitor", "Sending to " + notification.name);
- await Notification.send(JSON.parse(notification.config), `[${this.name}][${this.url}] Certificate will be expired in ${daysRemaining} days`);
- sent = true;
- } catch (e) {
- log.error("monitor", "Cannot send cert notification to " + notification.name);
- log.error("monitor", e);
- }
- }
-
- if (sent) {
- await R.exec("INSERT INTO notification_sent_history (type, monitor_id, days) VALUES(?, ?, ?)", [
- "certificate",
- this.id,
- targetDays,
- ]);
- }
- } else {
- log.debug("monitor", "No notification, no need to send cert notification");
}
}
@@ -1202,7 +1373,7 @@ class Monitor extends BeanModel {
*/
static async getPreviousHeartbeat(monitorID) {
return await R.getRow(`
- SELECT status, time FROM heartbeat
+ SELECT ping, status, time FROM heartbeat
WHERE id = (select MAX(id) from heartbeat where monitor_id = ?)
`, [
monitorID
@@ -1215,20 +1386,27 @@ class Monitor extends BeanModel {
* @returns {Promise}
*/
static async isUnderMaintenance(monitorID) {
- let activeCondition = Maintenance.getActiveMaintenanceSQLCondition();
- const maintenance = await R.getRow(`
- SELECT COUNT(*) AS count
- FROM monitor_maintenance mm
- JOIN maintenance
- ON mm.maintenance_id = maintenance.id
- AND mm.monitor_id = ?
- LEFT JOIN maintenance_timeslot
- ON maintenance_timeslot.maintenance_id = maintenance.id
- WHERE ${activeCondition}
- LIMIT 1`, [ monitorID ]);
- return maintenance.count !== 0;
+ const maintenanceIDList = await R.getCol(`
+ SELECT maintenance_id FROM monitor_maintenance
+ WHERE monitor_id = ?
+ `, [ monitorID ]);
+
+ for (const maintenanceID of maintenanceIDList) {
+ const maintenance = await UptimeKumaServer.getInstance().getMaintenance(maintenanceID);
+ if (maintenance && await maintenance.isUnderMaintenance()) {
+ return true;
+ }
+ }
+
+ const parent = await Monitor.getParent(monitorID);
+ if (parent != null) {
+ return await Monitor.isUnderMaintenance(parent.id);
+ }
+
+ return false;
}
+ /** Make sure monitor interval is between bounds */
validate() {
if (this.interval > MAX_INTERVAL_SECOND) {
throw new Error(`Interval cannot be more than ${MAX_INTERVAL_SECOND} seconds`);
@@ -1237,6 +1415,105 @@ class Monitor extends BeanModel {
throw new Error(`Interval cannot be less than ${MIN_INTERVAL_SECOND} seconds`);
}
}
+
+ /**
+ * Gets Parent of the monitor
+ * @param {number} monitorID ID of monitor to get
+ * @returns {Promise>}
+ */
+ static async getParent(monitorID) {
+ return await R.getRow(`
+ SELECT parent.* FROM monitor parent
+ LEFT JOIN monitor child
+ ON child.parent = parent.id
+ WHERE child.id = ?
+ `, [
+ monitorID,
+ ]);
+ }
+
+ /**
+ * Gets all Children of the monitor
+ * @param {number} monitorID ID of monitor to get
+ * @returns {Promise>}
+ */
+ static async getChildren(monitorID) {
+ return await R.getAll(`
+ SELECT * FROM monitor
+ WHERE parent = ?
+ `, [
+ monitorID,
+ ]);
+ }
+
+ /**
+ * Gets Full Path-Name (Groups and Name)
+ * @returns {Promise}
+ */
+ async getPathName() {
+ let path = this.name;
+
+ if (this.parent === null) {
+ return path;
+ }
+
+ let parent = await Monitor.getParent(this.id);
+ while (parent !== null) {
+ path = `${parent.name} / ${path}`;
+ parent = await Monitor.getParent(parent.id);
+ }
+
+ return path;
+ }
+
+ /**
+ * Gets recursive all child ids
+ * @param {number} monitorID ID of the monitor to get
+ * @returns {Promise}
+ */
+ static async getAllChildrenIDs(monitorID) {
+ const childs = await Monitor.getChildren(monitorID);
+
+ if (childs === null) {
+ return [];
+ }
+
+ let childrenIDs = [];
+
+ for (const child of childs) {
+ childrenIDs.push(child.id);
+ childrenIDs = childrenIDs.concat(await Monitor.getAllChildrenIDs(child.id));
+ }
+
+ return childrenIDs;
+ }
+
+ /**
+ * Unlinks all children of the the group monitor
+ * @param {number} groupID ID of group to remove children of
+ * @returns {Promise}
+ */
+ static async unlinkAllChildren(groupID) {
+ return await R.exec("UPDATE `monitor` SET parent = ? WHERE parent = ? ", [
+ null, groupID
+ ]);
+ }
+
+ /**
+ * Checks recursive if parent (ancestors) are active
+ * @param {number} monitorID ID of the monitor to get
+ * @returns {Promise}
+ */
+ static async isParentActive(monitorID) {
+ const parent = await Monitor.getParent(monitorID);
+
+ if (parent === null) {
+ return true;
+ }
+
+ const parentActive = await Monitor.isParentActive(parent.id);
+ return parent.active && parentActive;
+ }
}
module.exports = Monitor;
diff --git a/server/model/status_page.js b/server/model/status_page.js
index 0dabf5ab1..65b77367e 100644
--- a/server/model/status_page.js
+++ b/server/model/status_page.js
@@ -3,7 +3,7 @@ const { R } = require("redbean-node");
const cheerio = require("cheerio");
const { UptimeKumaServer } = require("../uptime-kuma-server");
const jsesc = require("jsesc");
-const Maintenance = require("./maintenance");
+const googleAnalytics = require("../google-analytics");
class StatusPage extends BeanModel {
@@ -53,9 +53,17 @@ class StatusPage extends BeanModel {
const head = $("head");
+ if (statusPage.googleAnalyticsTagId) {
+ let escapedGoogleAnalyticsScript = googleAnalytics.getGoogleAnalyticsScript(statusPage.googleAnalyticsTagId);
+ head.append($(escapedGoogleAnalyticsScript));
+ }
+
// OG Meta Tags
- head.append(` `);
- head.append(` `);
+ let ogTitle = $(" ").attr("content", statusPage.title);
+ head.append(ogTitle);
+
+ let ogDescription = $(" ").attr("content", description155);
+ head.append(ogDescription);
// Preload data
// Add jsesc, fix https://github.com/louislam/uptime-kuma/issues/2186
@@ -225,6 +233,7 @@ class StatusPage extends BeanModel {
customCSS: this.custom_css,
footerText: this.footer_text,
showPoweredBy: !!this.show_powered_by,
+ googleAnalyticsId: this.google_analytics_tag_id,
};
}
@@ -245,6 +254,7 @@ class StatusPage extends BeanModel {
customCSS: this.custom_css,
footerText: this.footer_text,
showPoweredBy: !!this.show_powered_by,
+ googleAnalyticsId: this.google_analytics_tag_id,
};
}
@@ -279,21 +289,17 @@ class StatusPage extends BeanModel {
try {
const publicMaintenanceList = [];
- let activeCondition = Maintenance.getActiveMaintenanceSQLCondition();
- let maintenanceBeanList = R.convertToBeans("maintenance", await R.getAll(`
- SELECT DISTINCT maintenance.*
- FROM maintenance
- JOIN maintenance_status_page
- ON maintenance_status_page.maintenance_id = maintenance.id
- AND maintenance_status_page.status_page_id = ?
- LEFT JOIN maintenance_timeslot
- ON maintenance_timeslot.maintenance_id = maintenance.id
- WHERE ${activeCondition}
- ORDER BY maintenance.end_date
- `, [ statusPageId ]));
+ let maintenanceIDList = await R.getCol(`
+ SELECT DISTINCT maintenance_id
+ FROM maintenance_status_page
+ WHERE status_page_id = ?
+ `, [ statusPageId ]);
- for (const bean of maintenanceBeanList) {
- publicMaintenanceList.push(await bean.toPublicJSON());
+ for (const maintenanceID of maintenanceIDList) {
+ let maintenance = UptimeKumaServer.getInstance().getMaintenance(maintenanceID);
+ if (maintenance && await maintenance.isUnderMaintenance()) {
+ publicMaintenanceList.push(await maintenance.toPublicJSON());
+ }
}
return publicMaintenanceList;
diff --git a/server/monitor-types/monitor-type.js b/server/monitor-types/monitor-type.js
new file mode 100644
index 000000000..80a0a7d92
--- /dev/null
+++ b/server/monitor-types/monitor-type.js
@@ -0,0 +1,20 @@
+class MonitorType {
+
+ name = undefined;
+
+ /**
+ *
+ * @param {Monitor} monitor
+ * @param {Heartbeat} heartbeat
+ * @param {UptimeKumaServer} server
+ * @returns {Promise}
+ */
+ async check(monitor, heartbeat, server) {
+ throw new Error("You need to override check()");
+ }
+
+}
+
+module.exports = {
+ MonitorType,
+};
diff --git a/server/monitor-types/real-browser-monitor-type.js b/server/monitor-types/real-browser-monitor-type.js
new file mode 100644
index 000000000..f3e5695f8
--- /dev/null
+++ b/server/monitor-types/real-browser-monitor-type.js
@@ -0,0 +1,212 @@
+const { MonitorType } = require("./monitor-type");
+const { chromium } = require("playwright-core");
+const { UP, log } = require("../../src/util");
+const { Settings } = require("../settings");
+const commandExistsSync = require("command-exists").sync;
+const childProcess = require("child_process");
+const path = require("path");
+const Database = require("../database");
+const jwt = require("jsonwebtoken");
+const config = require("../config");
+
+let browser = null;
+
+let allowedList = [];
+let lastAutoDetectChromeExecutable = null;
+
+if (process.platform === "win32") {
+ allowedList.push(process.env.LOCALAPPDATA + "\\Google\\Chrome\\Application\\chrome.exe");
+ allowedList.push(process.env.PROGRAMFILES + "\\Google\\Chrome\\Application\\chrome.exe");
+ allowedList.push(process.env["ProgramFiles(x86)"] + "\\Google\\Chrome\\Application\\chrome.exe");
+
+ // Allow Chromium too
+ allowedList.push(process.env.LOCALAPPDATA + "\\Chromium\\Application\\chrome.exe");
+ allowedList.push(process.env.PROGRAMFILES + "\\Chromium\\Application\\chrome.exe");
+ allowedList.push(process.env["ProgramFiles(x86)"] + "\\Chromium\\Application\\chrome.exe");
+
+ // For Loop A to Z
+ for (let i = 65; i <= 90; i++) {
+ let drive = String.fromCharCode(i);
+ allowedList.push(drive + ":\\Program Files\\Google\\Chrome\\Application\\chrome.exe");
+ allowedList.push(drive + ":\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
+ }
+
+} else if (process.platform === "linux") {
+ allowedList = [
+ "chromium",
+ "chromium-browser",
+ "google-chrome",
+
+ "/usr/bin/chromium",
+ "/usr/bin/chromium-browser",
+ "/usr/bin/google-chrome",
+ ];
+} else if (process.platform === "darwin") {
+ // TODO: Generated by GitHub Copilot, but not sure if it's correct
+ allowedList = [
+ "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
+ "/Applications/Chromium.app/Contents/MacOS/Chromium",
+ ];
+}
+
+log.debug("chrome", allowedList);
+
+async function isAllowedChromeExecutable(executablePath) {
+ console.log(config.args);
+ if (config.args["allow-all-chrome-exec"] || process.env.UPTIME_KUMA_ALLOW_ALL_CHROME_EXEC === "1") {
+ return true;
+ }
+
+ // Check if the executablePath is in the list of allowed executables
+ return allowedList.includes(executablePath);
+}
+
+async function getBrowser() {
+ if (!browser) {
+ let executablePath = await Settings.get("chromeExecutable");
+
+ executablePath = await prepareChromeExecutable(executablePath);
+
+ browser = await chromium.launch({
+ //headless: false,
+ executablePath,
+ });
+ }
+ return browser;
+}
+
+async function prepareChromeExecutable(executablePath) {
+ // Special code for using the playwright_chromium
+ if (typeof executablePath === "string" && executablePath.toLocaleLowerCase() === "#playwright_chromium") {
+ // Set to undefined = use playwright_chromium
+ executablePath = undefined;
+ } else if (!executablePath) {
+ if (process.env.UPTIME_KUMA_IS_CONTAINER) {
+ executablePath = "/usr/bin/chromium";
+
+ // Install chromium in container via apt install
+ if ( !commandExistsSync(executablePath)) {
+ await new Promise((resolve, reject) => {
+ log.info("Chromium", "Installing Chromium...");
+ let child = childProcess.exec("apt update && apt --yes --no-install-recommends install chromium fonts-indic fonts-noto fonts-noto-cjk");
+
+ // On exit
+ child.on("exit", (code) => {
+ log.info("Chromium", "apt install chromium exited with code " + code);
+
+ if (code === 0) {
+ log.info("Chromium", "Installed Chromium");
+ let version = childProcess.execSync(executablePath + " --version").toString("utf8");
+ log.info("Chromium", "Chromium version: " + version);
+ resolve();
+ } else if (code === 100) {
+ reject(new Error("Installing Chromium, please wait..."));
+ } else {
+ reject(new Error("apt install chromium failed with code " + code));
+ }
+ });
+ });
+ }
+
+ } else {
+ executablePath = findChrome(allowedList);
+ }
+ } else {
+ // User specified a path
+ // Check if the executablePath is in the list of allowed
+ if (!await isAllowedChromeExecutable(executablePath)) {
+ throw new Error("This Chromium executable path is not allowed by default. If you are sure this is safe, please add an environment variable UPTIME_KUMA_ALLOW_ALL_CHROME_EXEC=1 to allow it.");
+ }
+ }
+ return executablePath;
+}
+
+function findChrome(executables) {
+ // Use the last working executable, so we don't have to search for it again
+ if (lastAutoDetectChromeExecutable) {
+ if (commandExistsSync(lastAutoDetectChromeExecutable)) {
+ return lastAutoDetectChromeExecutable;
+ }
+ }
+
+ for (let executable of executables) {
+ if (commandExistsSync(executable)) {
+ lastAutoDetectChromeExecutable = executable;
+ return executable;
+ }
+ }
+ throw new Error("Chromium not found, please specify Chromium executable path in the settings page.");
+}
+
+async function resetChrome() {
+ if (browser) {
+ await browser.close();
+ browser = null;
+ }
+}
+
+/**
+ * Test if the chrome executable is valid and return the version
+ * @param executablePath
+ * @returns {Promise}
+ */
+async function testChrome(executablePath) {
+ try {
+ executablePath = await prepareChromeExecutable(executablePath);
+
+ log.info("Chromium", "Testing Chromium executable: " + executablePath);
+
+ const browser = await chromium.launch({
+ executablePath,
+ });
+ const version = browser.version();
+ await browser.close();
+ return version;
+ } catch (e) {
+ throw new Error(e.message);
+ }
+}
+
+/**
+ * TODO: connect remote browser? https://playwright.dev/docs/api/class-browsertype#browser-type-connect
+ *
+ */
+class RealBrowserMonitorType extends MonitorType {
+
+ name = "real-browser";
+
+ async check(monitor, heartbeat, server) {
+ const browser = await getBrowser();
+ const context = await browser.newContext();
+ const page = await context.newPage();
+
+ const res = await page.goto(monitor.url, {
+ waitUntil: "networkidle",
+ timeout: monitor.interval * 1000 * 0.8,
+ });
+
+ let filename = jwt.sign(monitor.id, server.jwtSecret) + ".png";
+
+ await page.screenshot({
+ path: path.join(Database.screenshotDir, filename),
+ });
+
+ await context.close();
+
+ if (res.status() >= 200 && res.status() < 400) {
+ heartbeat.status = UP;
+ heartbeat.msg = res.status();
+
+ const timing = res.request().timing();
+ heartbeat.ping = timing.responseEnd;
+ } else {
+ throw new Error(res.status() + "");
+ }
+ }
+}
+
+module.exports = {
+ RealBrowserMonitorType,
+ testChrome,
+ resetChrome,
+};
diff --git a/server/notification-providers/clicksendsms.js b/server/notification-providers/clicksendsms.js
index e66b982c8..1df053098 100644
--- a/server/notification-providers/clicksendsms.js
+++ b/server/notification-providers/clicksendsms.js
@@ -8,7 +8,6 @@ class ClickSendSMS extends NotificationProvider {
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
let okMsg = "Sent Successfully.";
try {
- console.log({ notification });
let config = {
headers: {
"Content-Type": "application/json",
diff --git a/server/notification-providers/dingding.js b/server/notification-providers/dingding.js
index 59efd053a..cea0b0a1e 100644
--- a/server/notification-providers/dingding.js
+++ b/server/notification-providers/dingding.js
@@ -15,7 +15,7 @@ class DingDing extends NotificationProvider {
msgtype: "markdown",
markdown: {
title: `[${this.statusToString(heartbeatJSON["status"])}] ${monitorJSON["name"]}`,
- text: `## [${this.statusToString(heartbeatJSON["status"])}] ${monitorJSON["name"]} \n > ${heartbeatJSON["msg"]} \n > Time(UTC):${heartbeatJSON["time"]}`,
+ text: `## [${this.statusToString(heartbeatJSON["status"])}] ${monitorJSON["name"]} \n> ${heartbeatJSON["msg"]}\n> Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
}
};
if (this.sendToDingDing(notification, params)) {
diff --git a/server/notification-providers/discord.js b/server/notification-providers/discord.js
index b699228c9..37de0d364 100644
--- a/server/notification-providers/discord.js
+++ b/server/notification-providers/discord.js
@@ -59,8 +59,8 @@ class Discord extends NotificationProvider {
value: monitorJSON["type"] === "push" ? "Heartbeat" : address,
},
{
- name: "Time (UTC)",
- value: heartbeatJSON["time"],
+ name: `Time (${heartbeatJSON["timezone"]})`,
+ value: heartbeatJSON["localDateTime"],
},
{
name: "Error",
@@ -94,8 +94,8 @@ class Discord extends NotificationProvider {
value: monitorJSON["type"] === "push" ? "Heartbeat" : address,
},
{
- name: "Time (UTC)",
- value: heartbeatJSON["time"],
+ name: `Time (${heartbeatJSON["timezone"]})`,
+ value: heartbeatJSON["localDateTime"],
},
{
name: "Ping",
diff --git a/server/notification-providers/feishu.js b/server/notification-providers/feishu.js
index 73781ca4e..683a3653d 100644
--- a/server/notification-providers/feishu.js
+++ b/server/notification-providers/feishu.js
@@ -35,8 +35,7 @@ class Feishu extends NotificationProvider {
text:
"[Down] " +
heartbeatJSON["msg"] +
- "\nTime (UTC): " +
- heartbeatJSON["time"],
+ `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
},
],
],
@@ -62,8 +61,7 @@ class Feishu extends NotificationProvider {
text:
"[Up] " +
heartbeatJSON["msg"] +
- "\nTime (UTC): " +
- heartbeatJSON["time"],
+ `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
},
],
],
diff --git a/server/notification-providers/home-assistant.js b/server/notification-providers/home-assistant.js
index 285989eeb..6b9504767 100644
--- a/server/notification-providers/home-assistant.js
+++ b/server/notification-providers/home-assistant.js
@@ -11,7 +11,7 @@ class HomeAssistant extends NotificationProvider {
try {
await axios.post(
- `${notification.homeAssistantUrl}/api/services/notify/${notificationService}`,
+ `${notification.homeAssistantUrl.trim().replace(/\/*$/, "")}/api/services/notify/${notificationService}`,
{
title: "Uptime Kuma",
message,
diff --git a/server/notification-providers/line.js b/server/notification-providers/line.js
index e594e1742..10b7f2c9b 100644
--- a/server/notification-providers/line.js
+++ b/server/notification-providers/line.js
@@ -33,7 +33,10 @@ class Line extends NotificationProvider {
"messages": [
{
"type": "text",
- "text": "UptimeKuma Alert: [🔴 Down]\n" + "Name: " + monitorJSON["name"] + " \n" + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"]
+ "text": "UptimeKuma Alert: [🔴 Down]\n" +
+ "Name: " + monitorJSON["name"] + " \n" +
+ heartbeatJSON["msg"] +
+ `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
}
]
};
@@ -44,7 +47,10 @@ class Line extends NotificationProvider {
"messages": [
{
"type": "text",
- "text": "UptimeKuma Alert: [✅ Up]\n" + "Name: " + monitorJSON["name"] + " \n" + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"]
+ "text": "UptimeKuma Alert: [✅ Up]\n" +
+ "Name: " + monitorJSON["name"] + " \n" +
+ heartbeatJSON["msg"] +
+ `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
}
]
};
diff --git a/server/notification-providers/linenotify.js b/server/notification-providers/linenotify.js
index 8454152d8..279acb7d4 100644
--- a/server/notification-providers/linenotify.js
+++ b/server/notification-providers/linenotify.js
@@ -24,12 +24,18 @@ class LineNotify extends NotificationProvider {
await axios.post(lineAPIUrl, qs.stringify(testMessage), config);
} else if (heartbeatJSON["status"] === DOWN) {
let downMessage = {
- "message": "\n[🔴 Down]\n" + "Name: " + monitorJSON["name"] + " \n" + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"]
+ "message": "\n[🔴 Down]\n" +
+ "Name: " + monitorJSON["name"] + " \n" +
+ heartbeatJSON["msg"] + "\n" +
+ `Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
};
await axios.post(lineAPIUrl, qs.stringify(downMessage), config);
} else if (heartbeatJSON["status"] === UP) {
let upMessage = {
- "message": "\n[✅ Up]\n" + "Name: " + monitorJSON["name"] + " \n" + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"]
+ "message": "\n[✅ Up]\n" +
+ "Name: " + monitorJSON["name"] + " \n" +
+ heartbeatJSON["msg"] + "\n" +
+ `Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
};
await axios.post(lineAPIUrl, qs.stringify(upMessage), config);
}
diff --git a/server/notification-providers/lunasea.js b/server/notification-providers/lunasea.js
index 2985425ef..0a5fea7b0 100644
--- a/server/notification-providers/lunasea.js
+++ b/server/notification-providers/lunasea.js
@@ -8,7 +8,12 @@ class LunaSea extends NotificationProvider {
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
let okMsg = "Sent Successfully.";
- let lunaseadevice = "https://notify.lunasea.app/v1/custom/device/" + notification.lunaseaDevice;
+ let lunaseaurl = "";
+ if (notification.lunaseaTarget === "user") {
+ lunaseaurl = "https://notify.lunasea.app/v1/custom/user/" + notification.lunaseaUserID;
+ } else {
+ lunaseaurl = "https://notify.lunasea.app/v1/custom/device/" + notification.lunaseaDevice;
+ }
try {
if (heartbeatJSON == null) {
@@ -16,25 +21,29 @@ class LunaSea extends NotificationProvider {
"title": "Uptime Kuma Alert",
"body": msg,
};
- await axios.post(lunaseadevice, testdata);
+ await axios.post(lunaseaurl, testdata);
return okMsg;
}
if (heartbeatJSON["status"] === DOWN) {
let downdata = {
"title": "UptimeKuma Alert: " + monitorJSON["name"],
- "body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
+ "body": "[🔴 Down] " +
+ heartbeatJSON["msg"] +
+ `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
};
- await axios.post(lunaseadevice, downdata);
+ await axios.post(lunaseaurl, downdata);
return okMsg;
}
if (heartbeatJSON["status"] === UP) {
let updata = {
"title": "UptimeKuma Alert: " + monitorJSON["name"],
- "body": "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
+ "body": "[✅ Up] " +
+ heartbeatJSON["msg"] +
+ `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
};
- await axios.post(lunaseadevice, updata);
+ await axios.post(lunaseaurl, updata);
return okMsg;
}
diff --git a/server/notification-providers/mattermost.js b/server/notification-providers/mattermost.js
index 2076ad213..d4997392c 100644
--- a/server/notification-providers/mattermost.js
+++ b/server/notification-providers/mattermost.js
@@ -10,7 +10,7 @@ class Mattermost extends NotificationProvider {
let okMsg = "Sent Successfully.";
try {
const mattermostUserName = notification.mattermostusername || "Uptime Kuma";
- // If heartbeatJSON is null, assume we're testing.
+ // If heartbeatJSON is null, assume non monitoring notification (Certificate warning) or testing.
if (heartbeatJSON == null) {
let mattermostTestData = {
username: mattermostUserName,
@@ -27,97 +27,79 @@ class Mattermost extends NotificationProvider {
}
const mattermostIconEmoji = notification.mattermosticonemo;
- const mattermostIconUrl = notification.mattermosticonurl;
+ let mattermostIconEmojiOnline = "";
+ let mattermostIconEmojiOffline = "";
- if (heartbeatJSON["status"] === DOWN) {
- let mattermostdowndata = {
- username: mattermostUserName,
- text: "Uptime Kuma Alert",
- channel: mattermostChannel,
- icon_emoji: mattermostIconEmoji,
- icon_url: mattermostIconUrl,
- attachments: [
- {
- fallback:
- "Your " +
- monitorJSON["name"] +
- " service went down.",
- color: "#FF0000",
- title:
- "❌ " +
- monitorJSON["name"] +
- " service went down. ❌",
- title_link: monitorJSON["url"],
- fields: [
- {
- short: true,
- title: "Service Name",
- value: monitorJSON["name"],
- },
- {
- short: true,
- title: "Time (UTC)",
- value: heartbeatJSON["time"],
- },
- {
- short: false,
- title: "Error",
- value: heartbeatJSON["msg"],
- },
- ],
- },
- ],
- };
- await axios.post(
- notification.mattermostWebhookUrl,
- mattermostdowndata
- );
- return okMsg;
- } else if (heartbeatJSON["status"] === UP) {
- let mattermostupdata = {
- username: mattermostUserName,
- text: "Uptime Kuma Alert",
- channel: mattermostChannel,
- icon_emoji: mattermostIconEmoji,
- icon_url: mattermostIconUrl,
- attachments: [
- {
- fallback:
- "Your " +
- monitorJSON["name"] +
- " service went up!",
- color: "#32CD32",
- title:
- "✅ " +
- monitorJSON["name"] +
- " service went up! ✅",
- title_link: monitorJSON["url"],
- fields: [
- {
- short: true,
- title: "Service Name",
- value: monitorJSON["name"],
- },
- {
- short: true,
- title: "Time (UTC)",
- value: heartbeatJSON["time"],
- },
- {
- short: false,
- title: "Ping",
- value: heartbeatJSON["ping"] + "ms",
- },
- ],
- },
- ],
- };
- await axios.post(
- notification.mattermostWebhookUrl,
- mattermostupdata
- );
- return okMsg;
+ if (mattermostIconEmoji && typeof mattermostIconEmoji === "string") {
+ const emojiArray = mattermostIconEmoji.split(" ");
+ if (emojiArray.length >= 2) {
+ mattermostIconEmojiOnline = emojiArray[0];
+ mattermostIconEmojiOffline = emojiArray[1];
+ }
}
+ const mattermostIconUrl = notification.mattermosticonurl;
+ let iconEmoji = mattermostIconEmoji;
+ let statusField = {
+ short: false,
+ title: "Error",
+ value: heartbeatJSON.msg,
+ };
+ let statusText = "unknown";
+ let color = "#000000";
+ if (heartbeatJSON.status === DOWN) {
+ iconEmoji = mattermostIconEmojiOffline || mattermostIconEmoji;
+ statusField = {
+ short: false,
+ title: "Error",
+ value: heartbeatJSON.msg,
+ };
+ statusText = "down.";
+ color = "#FF0000";
+ } else if (heartbeatJSON.status === UP) {
+ iconEmoji = mattermostIconEmojiOnline || mattermostIconEmoji;
+ statusField = {
+ short: false,
+ title: "Ping",
+ value: heartbeatJSON.ping + "ms",
+ };
+ statusText = "up!";
+ color = "#32CD32";
+ }
+
+ let mattermostdata = {
+ username: monitorJSON.name + " " + mattermostUserName,
+ channel: mattermostChannel,
+ icon_emoji: iconEmoji,
+ icon_url: mattermostIconUrl,
+ attachments: [
+ {
+ fallback:
+ "Your " +
+ monitorJSON.name +
+ " service went " +
+ statusText,
+ color: color,
+ title:
+ monitorJSON.name +
+ " service went " +
+ statusText,
+ title_link: monitorJSON.url,
+ fields: [
+ statusField,
+ {
+ short: true,
+ title: `Time (${heartbeatJSON["timezone"]})`,
+ value: heartbeatJSON.localDateTime,
+ },
+ ],
+ },
+ ],
+ };
+ await axios.post(
+ notification.mattermostWebhookUrl,
+ mattermostdata
+ );
+ return okMsg;
} catch (error) {
this.throwGeneralAxiosError(error);
}
diff --git a/server/notification-providers/ntfy.js b/server/notification-providers/ntfy.js
index 521137cd1..2d8378e57 100644
--- a/server/notification-providers/ntfy.js
+++ b/server/notification-providers/ntfy.js
@@ -1,5 +1,6 @@
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
+const { DOWN, UP } = require("../../src/util");
class Ntfy extends NotificationProvider {
@@ -9,16 +10,54 @@ class Ntfy extends NotificationProvider {
let okMsg = "Sent Successfully.";
try {
let headers = {};
- if (notification.ntfyusername) {
+ if (notification.ntfyAuthenticationMethod === "usernamePassword") {
headers = {
"Authorization": "Basic " + Buffer.from(notification.ntfyusername + ":" + notification.ntfypassword).toString("base64"),
};
+ } else if (notification.ntfyAuthenticationMethod === "accessToken") {
+ headers = {
+ "Authorization": "Bearer " + notification.ntfyaccesstoken,
+ };
+ }
+ // If heartbeatJSON is null, assume non monitoring notification (Certificate warning) or testing.
+ if (heartbeatJSON == null) {
+ let ntfyTestData = {
+ "topic": notification.ntfytopic,
+ "title": (monitorJSON?.name || notification.ntfytopic) + " [Uptime-Kuma]",
+ "message": msg,
+ "priority": notification.ntfyPriority,
+ "tags": [ "test_tube" ],
+ };
+ await axios.post(`${notification.ntfyserverurl}`, ntfyTestData, { headers: headers });
+ return okMsg;
+ }
+ let tags = [];
+ let status = "unknown";
+ let priority = notification.ntfyPriority || 4;
+ if ("status" in heartbeatJSON) {
+ if (heartbeatJSON.status === DOWN) {
+ tags = [ "red_circle" ];
+ status = "Down";
+ // if priority is not 5, increase priority for down alerts
+ priority = priority === 5 ? priority : priority + 1;
+ } else if (heartbeatJSON["status"] === UP) {
+ tags = [ "green_circle" ];
+ status = "Up";
+ }
}
let data = {
"topic": notification.ntfytopic,
- "message": msg,
- "priority": notification.ntfyPriority || 4,
- "title": "Uptime-Kuma",
+ "message": heartbeatJSON.msg,
+ "priority": priority,
+ "title": monitorJSON.name + " " + status + " [Uptime-Kuma]",
+ "tags": tags,
+ "actions": [
+ {
+ "action": "view",
+ "label": "Open " + monitorJSON.name,
+ "url": monitorJSON.url,
+ }
+ ]
};
if (notification.ntfyIcon) {
diff --git a/server/notification-providers/opsgenie.js b/server/notification-providers/opsgenie.js
new file mode 100644
index 000000000..5fa7f3e4e
--- /dev/null
+++ b/server/notification-providers/opsgenie.js
@@ -0,0 +1,97 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { UP, DOWN } = require("../../src/util");
+
+const opsgenieAlertsUrlEU = "https://api.eu.opsgenie.com/v2/alerts";
+const opsgenieAlertsUrlUS = "https://api.opsgenie.com/v2/alerts";
+let okMsg = "Sent Successfully.";
+
+class Opsgenie extends NotificationProvider {
+
+ name = "Opsgenie";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ let opsgenieAlertsUrl;
+ let priority = (!notification.opsgeniePriority) ? 3 : notification.opsgeniePriority;
+ const textMsg = "Uptime Kuma Alert";
+
+ try {
+ switch (notification.opsgenieRegion) {
+ case "US":
+ opsgenieAlertsUrl = opsgenieAlertsUrlUS;
+ break;
+ case "EU":
+ opsgenieAlertsUrl = opsgenieAlertsUrlEU;
+ break;
+ default:
+ opsgenieAlertsUrl = opsgenieAlertsUrlUS;
+ }
+
+ if (heartbeatJSON == null) {
+ let notificationTestAlias = "uptime-kuma-notification-test";
+ let data = {
+ "message": msg,
+ "alias": notificationTestAlias,
+ "source": "Uptime Kuma",
+ "priority": "P5"
+ };
+
+ return this.post(notification, opsgenieAlertsUrl, data);
+ }
+
+ if (heartbeatJSON.status === DOWN) {
+ let data = {
+ "message": monitorJSON ? textMsg + `: ${monitorJSON.name}` : textMsg,
+ "alias": monitorJSON.name,
+ "description": msg,
+ "source": "Uptime Kuma",
+ "priority": `P${priority}`
+ };
+
+ return this.post(notification, opsgenieAlertsUrl, data);
+ }
+
+ if (heartbeatJSON.status === UP) {
+ let opsgenieAlertsCloseUrl = `${opsgenieAlertsUrl}/${encodeURIComponent(monitorJSON.name)}/close?identifierType=alias`;
+ let data = {
+ "source": "Uptime Kuma",
+ };
+
+ return this.post(notification, opsgenieAlertsCloseUrl, data);
+ }
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+ /**
+ *
+ * @param {BeanModel} notification
+ * @param {string} url Request url
+ * @param {Object} data Request body
+ * @returns {Promise}
+ */
+ async post(notification, url, data) {
+ let config = {
+ headers: {
+ "Content-Type": "application/json",
+ "Authorization": `GenieKey ${notification.opsgenieApiKey}`,
+ }
+ };
+
+ let res = await axios.post(url, data, config);
+ if (res.status == null) {
+ return "Opsgenie notification failed with invalid response!";
+ }
+ if (res.status < 200 || res.status >= 300) {
+ return `Opsgenie notification failed with status code ${res.status}`;
+ }
+
+ return okMsg;
+ }
+}
+
+module.exports = Opsgenie;
diff --git a/server/notification-providers/pagertree.js b/server/notification-providers/pagertree.js
new file mode 100644
index 000000000..8a0c4e368
--- /dev/null
+++ b/server/notification-providers/pagertree.js
@@ -0,0 +1,91 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { UP, DOWN, getMonitorRelativeURL } = require("../../src/util");
+const { setting } = require("../util-server");
+let successMessage = "Sent Successfully.";
+
+class PagerTree extends NotificationProvider {
+ name = "PagerTree";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ try {
+ if (heartbeatJSON == null) {
+ // general messages
+ return this.postNotification(notification, msg, monitorJSON, heartbeatJSON);
+ }
+
+ if (heartbeatJSON.status === UP && notification.pagertreeAutoResolve === "resolve") {
+ return this.postNotification(notification, null, monitorJSON, heartbeatJSON, notification.pagertreeAutoResolve);
+ }
+
+ if (heartbeatJSON.status === DOWN) {
+ const title = `Uptime Kuma Monitor "${monitorJSON.name}" is DOWN`;
+ return this.postNotification(notification, title, monitorJSON, heartbeatJSON);
+ }
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+ /**
+ * Check if result is successful, result code should be in range 2xx
+ * @param {Object} result Axios response object
+ * @throws {Error} The status code is not in range 2xx
+ */
+ checkResult(result) {
+ if (result.status == null) {
+ throw new Error("PagerTree notification failed with invalid response!");
+ }
+ if (result.status < 200 || result.status >= 300) {
+ throw new Error("PagerTree notification failed with status code " + result.status);
+ }
+ }
+
+ /**
+ * Send the message
+ * @param {BeanModel} notification Message title
+ * @param {string} title Message title
+ * @param {Object} monitorJSON Monitor details (For Up/Down only)
+ * @param {?string} eventAction Action event for PagerTree (create, resolve)
+ * @returns {string}
+ */
+ async postNotification(notification, title, monitorJSON, heartbeatJSON, eventAction = "create") {
+
+ if (eventAction == null) {
+ return "No action required";
+ }
+
+ const options = {
+ method: "POST",
+ url: notification.pagertreeIntegrationUrl,
+ headers: { "Content-Type": "application/json" },
+ data: {
+ event_type: eventAction,
+ id: heartbeatJSON?.monitorID || "uptime-kuma",
+ title: title,
+ urgency: notification.pagertreeUrgency,
+ heartbeat: heartbeatJSON,
+ monitor: monitorJSON
+ }
+ };
+
+ const baseURL = await setting("primaryBaseURL");
+ if (baseURL && monitorJSON) {
+ options.client = "Uptime Kuma";
+ options.client_url = baseURL + getMonitorRelativeURL(monitorJSON.id);
+ }
+
+ let result = await axios.request(options);
+ this.checkResult(result);
+ if (result.statusText != null) {
+ return "PagerTree notification succeed: " + result.statusText;
+ }
+
+ return successMessage;
+ }
+}
+
+module.exports = PagerTree;
diff --git a/server/notification-providers/promosms.js b/server/notification-providers/promosms.js
index 4f7e8f901..572a21325 100644
--- a/server/notification-providers/promosms.js
+++ b/server/notification-providers/promosms.js
@@ -8,6 +8,14 @@ class PromoSMS extends NotificationProvider {
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
let okMsg = "Sent Successfully.";
+ if (notification.promosmsAllowLongSMS === undefined) {
+ notification.promosmsAllowLongSMS = false;
+ }
+
+ //TODO: Add option for enabling special characters. It will decrese message max length from 160 to 70 chars.
+ //Lets remove non ascii char
+ let cleanMsg = msg.replace(/[^\x00-\x7F]/g, "");
+
try {
let config = {
headers: {
@@ -18,8 +26,9 @@ class PromoSMS extends NotificationProvider {
};
let data = {
"recipients": [ notification.promosmsPhoneNumber ],
- //Lets remove non ascii char
- "text": msg.replace(/[^\x00-\x7F]/g, ""),
+ //Trim message to maximum length of 1 SMS or 4 if we allowed long messages
+ "text": notification.promosmsAllowLongSMS ? cleanMsg.substring(0, 639) : cleanMsg.substring(0, 159),
+ "long-sms": notification.promosmsAllowLongSMS,
"type": Number(notification.promosmsSMSType),
"sender": notification.promosmsSenderName
};
diff --git a/server/notification-providers/pushbullet.js b/server/notification-providers/pushbullet.js
index 1346655d0..f3d95a85e 100644
--- a/server/notification-providers/pushbullet.js
+++ b/server/notification-providers/pushbullet.js
@@ -29,14 +29,18 @@ class Pushbullet extends NotificationProvider {
let downData = {
"type": "note",
"title": "UptimeKuma Alert: " + monitorJSON["name"],
- "body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
+ "body": "[🔴 Down] " +
+ heartbeatJSON["msg"] +
+ `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
};
await axios.post(pushbulletUrl, downData, config);
} else if (heartbeatJSON["status"] === UP) {
let upData = {
"type": "note",
"title": "UptimeKuma Alert: " + monitorJSON["name"],
- "body": "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
+ "body": "[✅ Up] " +
+ heartbeatJSON["msg"] +
+ `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
};
await axios.post(pushbulletUrl, upData, config);
}
diff --git a/server/notification-providers/pushover.js b/server/notification-providers/pushover.js
index bafde56e0..b333b476e 100644
--- a/server/notification-providers/pushover.js
+++ b/server/notification-providers/pushover.js
@@ -10,7 +10,7 @@ class Pushover extends NotificationProvider {
let pushoverlink = "https://api.pushover.net/1/messages.json";
let data = {
- "message": "Message :" + msg,
+ "message": msg,
"user": notification.pushoveruserkey,
"token": notification.pushoverapptoken,
"sound": notification.pushoversounds,
@@ -24,13 +24,16 @@ class Pushover extends NotificationProvider {
if (notification.pushoverdevice) {
data.device = notification.pushoverdevice;
}
+ if (notification.pushoverttl) {
+ data.ttl = notification.pushoverttl;
+ }
try {
if (heartbeatJSON == null) {
await axios.post(pushoverlink, data);
return okMsg;
} else {
- data.message += "\nTime (UTC) :" + heartbeatJSON["time"];
+ data.message += `\nTime (${heartbeatJSON["timezone"]}) :${heartbeatJSON["localDateTime"]}`;
await axios.post(pushoverlink, data);
return okMsg;
}
diff --git a/server/notification-providers/rocket-chat.js b/server/notification-providers/rocket-chat.js
index fb48ce1a6..76b964a3a 100644
--- a/server/notification-providers/rocket-chat.js
+++ b/server/notification-providers/rocket-chat.js
@@ -22,8 +22,6 @@ class RocketChat extends NotificationProvider {
return okMsg;
}
- const time = heartbeatJSON["time"];
-
let data = {
"text": "Uptime Kuma Alert",
"channel": notification.rocketchannel,
@@ -31,7 +29,7 @@ class RocketChat extends NotificationProvider {
"icon_emoji": notification.rocketiconemo,
"attachments": [
{
- "title": "Uptime Kuma Alert *Time (UTC)*\n" + time,
+ "title": `Uptime Kuma Alert *Time (${heartbeatJSON["timezone"]})*\n${heartbeatJSON["localDateTime"]}`,
"text": "*Message*\n" + msg,
}
]
diff --git a/server/notification-providers/serverchan.js b/server/notification-providers/serverchan.js
index fbf99f80d..d631c8e61 100644
--- a/server/notification-providers/serverchan.js
+++ b/server/notification-providers/serverchan.js
@@ -21,6 +21,12 @@ class ServerChan extends NotificationProvider {
}
}
+ /**
+ * Get the formatted title for message
+ * @param {?Object} monitorJSON Monitor details (For Up/Down only)
+ * @param {?Object} heartbeatJSON Heartbeat details (For Up/Down only)
+ * @returns {string} Formatted title
+ */
checkStatus(heartbeatJSON, monitorJSON) {
let title = "UptimeKuma Message";
if (heartbeatJSON != null && heartbeatJSON["status"] === UP) {
diff --git a/server/notification-providers/slack.js b/server/notification-providers/slack.js
index 5a5d40cb3..12207bd4f 100644
--- a/server/notification-providers/slack.js
+++ b/server/notification-providers/slack.js
@@ -39,10 +39,9 @@ class Slack extends NotificationProvider {
return okMsg;
}
- const time = heartbeatJSON["time"];
const textMsg = "Uptime Kuma Alert";
let data = {
- "text": monitorJSON ? textMsg + `: ${monitorJSON.name}` : textMsg,
+ "text": `${textMsg}\n${msg}`,
"channel": notification.slackchannel,
"username": notification.slackusername,
"icon_emoji": notification.slackiconemo,
@@ -65,7 +64,7 @@ class Slack extends NotificationProvider {
},
{
"type": "mrkdwn",
- "text": "*Time (UTC)*\n" + time,
+ "text": `*Time (${heartbeatJSON["timezone"]})*\n${heartbeatJSON["localDateTime"]}`,
}],
}
],
diff --git a/server/notification-providers/smtp.js b/server/notification-providers/smtp.js
index a6a0cc016..aae0e46c7 100644
--- a/server/notification-providers/smtp.js
+++ b/server/notification-providers/smtp.js
@@ -91,7 +91,7 @@ class SMTP extends NotificationProvider {
let bodyTextContent = msg;
if (heartbeatJSON) {
- bodyTextContent = `${msg}\nTime (UTC): ${heartbeatJSON["time"]}`;
+ bodyTextContent = `${msg}\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`;
}
// send mail with defined transport object
diff --git a/server/notification-providers/splunk.js b/server/notification-providers/splunk.js
new file mode 100644
index 000000000..2d82dd397
--- /dev/null
+++ b/server/notification-providers/splunk.js
@@ -0,0 +1,113 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { UP, DOWN, getMonitorRelativeURL } = require("../../src/util");
+const { setting } = require("../util-server");
+let successMessage = "Sent Successfully.";
+
+class Splunk extends NotificationProvider {
+ name = "Splunk";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ try {
+ if (heartbeatJSON == null) {
+ const title = "Uptime Kuma Alert";
+ const monitor = {
+ type: "ping",
+ url: "Uptime Kuma Test Button",
+ };
+ return this.postNotification(notification, title, msg, monitor, "trigger");
+ }
+
+ if (heartbeatJSON.status === UP) {
+ const title = "Uptime Kuma Monitor ✅ Up";
+ return this.postNotification(notification, title, heartbeatJSON.msg, monitorJSON, "recovery");
+ }
+
+ if (heartbeatJSON.status === DOWN) {
+ const title = "Uptime Kuma Monitor 🔴 Down";
+ return this.postNotification(notification, title, heartbeatJSON.msg, monitorJSON, "trigger");
+ }
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+ /**
+ * Check if result is successful, result code should be in range 2xx
+ * @param {Object} result Axios response object
+ * @throws {Error} The status code is not in range 2xx
+ */
+ checkResult(result) {
+ if (result.status == null) {
+ throw new Error("Splunk notification failed with invalid response!");
+ }
+ if (result.status < 200 || result.status >= 300) {
+ throw new Error("Splunk notification failed with status code " + result.status);
+ }
+ }
+
+ /**
+ * Send the message
+ * @param {BeanModel} notification Message title
+ * @param {string} title Message title
+ * @param {string} body Message
+ * @param {Object} monitorInfo Monitor details (For Up/Down only)
+ * @param {?string} eventAction Action event for PagerDuty (trigger, acknowledge, resolve)
+ * @returns {string}
+ */
+ async postNotification(notification, title, body, monitorInfo, eventAction = "trigger") {
+
+ let monitorUrl;
+ if (monitorInfo.type === "port") {
+ monitorUrl = monitorInfo.hostname;
+ if (monitorInfo.port) {
+ monitorUrl += ":" + monitorInfo.port;
+ }
+ } else if (monitorInfo.hostname != null) {
+ monitorUrl = monitorInfo.hostname;
+ } else {
+ monitorUrl = monitorInfo.url;
+ }
+
+ if (eventAction === "recovery") {
+ if (notification.splunkAutoResolve === "0") {
+ return "No action required";
+ }
+ eventAction = notification.splunkAutoResolve;
+ } else {
+ eventAction = notification.splunkSeverity;
+ }
+
+ const options = {
+ method: "POST",
+ url: notification.splunkRestURL,
+ headers: { "Content-Type": "application/json" },
+ data: {
+ message_type: eventAction,
+ state_message: `[${title}] [${monitorUrl}] ${body}`,
+ entity_display_name: "Uptime Kuma Alert: " + monitorInfo.name,
+ routing_key: notification.pagerdutyIntegrationKey,
+ entity_id: "Uptime Kuma/" + monitorInfo.id,
+ }
+ };
+
+ const baseURL = await setting("primaryBaseURL");
+ if (baseURL && monitorInfo) {
+ options.client = "Uptime Kuma";
+ options.client_url = baseURL + getMonitorRelativeURL(monitorInfo.id);
+ }
+
+ let result = await axios.request(options);
+ this.checkResult(result);
+ if (result.statusText != null) {
+ return "Splunk notification succeed: " + result.statusText;
+ }
+
+ return successMessage;
+ }
+}
+
+module.exports = Splunk;
diff --git a/server/notification-providers/telegram.js b/server/notification-providers/telegram.js
index 2b0576224..561cabd87 100644
--- a/server/notification-providers/telegram.js
+++ b/server/notification-providers/telegram.js
@@ -9,17 +9,27 @@ class Telegram extends NotificationProvider {
let okMsg = "Sent Successfully.";
try {
+ let params = {
+ chat_id: notification.telegramChatID,
+ text: msg,
+ disable_notification: notification.telegramSendSilently ?? false,
+ protect_content: notification.telegramProtectContent ?? false,
+ };
+ if (notification.telegramMessageThreadID) {
+ params.message_thread_id = notification.telegramMessageThreadID;
+ }
+
await axios.get(`https://api.telegram.org/bot${notification.telegramBotToken}/sendMessage`, {
- params: {
- chat_id: notification.telegramChatID,
- text: msg,
- },
+ params: params,
});
return okMsg;
} catch (error) {
- let msg = (error.response.data.description) ? error.response.data.description : "Error without description";
- throw new Error(msg);
+ if (error.response && error.response.data && error.response.data.description) {
+ throw new Error(error.response.data.description);
+ } else {
+ throw new Error(error.message);
+ }
}
}
}
diff --git a/server/notification-providers/twilio.js b/server/notification-providers/twilio.js
new file mode 100644
index 000000000..8f4db0404
--- /dev/null
+++ b/server/notification-providers/twilio.js
@@ -0,0 +1,41 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class Twilio extends NotificationProvider {
+
+ name = "twilio";
+
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+
+ let okMsg = "Sent Successfully.";
+
+ let accountSID = notification.twilioAccountSID;
+ let authToken = notification.twilioAuthToken;
+
+ try {
+
+ let config = {
+ headers: {
+ "Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
+ "Authorization": "Basic " + Buffer.from(accountSID + ":" + authToken).toString("base64"),
+ }
+ };
+
+ let data = new URLSearchParams();
+ data.append("To", notification.twilioToNumber);
+ data.append("From", notification.twilioFromNumber);
+ data.append("Body", msg);
+
+ let url = "https://api.twilio.com/2010-04-01/Accounts/" + accountSID + "/Messages.json";
+
+ await axios.post(url, data, config);
+
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+}
+
+module.exports = Twilio;
diff --git a/server/notification.js b/server/notification.js
index 1aad704c0..9bfa371d9 100644
--- a/server/notification.js
+++ b/server/notification.js
@@ -23,7 +23,9 @@ const Mattermost = require("./notification-providers/mattermost");
const Ntfy = require("./notification-providers/ntfy");
const Octopush = require("./notification-providers/octopush");
const OneBot = require("./notification-providers/onebot");
+const Opsgenie = require("./notification-providers/opsgenie");
const PagerDuty = require("./notification-providers/pagerduty");
+const PagerTree = require("./notification-providers/pagertree");
const PromoSMS = require("./notification-providers/promosms");
const Pushbullet = require("./notification-providers/pushbullet");
const PushDeer = require("./notification-providers/pushdeer");
@@ -40,6 +42,8 @@ const Stackfield = require("./notification-providers/stackfield");
const Teams = require("./notification-providers/teams");
const TechulusPush = require("./notification-providers/techulus-push");
const Telegram = require("./notification-providers/telegram");
+const Twilio = require("./notification-providers/twilio");
+const Splunk = require("./notification-providers/splunk");
const Webhook = require("./notification-providers/webhook");
const WeCom = require("./notification-providers/wecom");
const GoAlert = require("./notification-providers/goalert");
@@ -81,7 +85,9 @@ class Notification {
new Ntfy(),
new Octopush(),
new OneBot(),
+ new Opsgenie(),
new PagerDuty(),
+ new PagerTree(),
new PromoSMS(),
new Pushbullet(),
new PushDeer(),
@@ -100,6 +106,8 @@ class Notification {
new Teams(),
new TechulusPush(),
new Telegram(),
+ new Twilio(),
+ new Splunk(),
new Webhook(),
new WeCom(),
new GoAlert(),
diff --git a/server/prometheus.js b/server/prometheus.js
index 1473ab7a9..dd04394ae 100644
--- a/server/prometheus.js
+++ b/server/prometheus.js
@@ -28,7 +28,7 @@ const monitorResponseTime = new PrometheusClient.Gauge({
const monitorStatus = new PrometheusClient.Gauge({
name: "monitor_status",
- help: "Monitor Status (1 = UP, 0= DOWN)",
+ help: "Monitor Status (1 = UP, 0= DOWN, 2= PENDING, 3= MAINTENANCE)",
labelNames: commonLabels
});
@@ -99,6 +99,7 @@ class Prometheus {
}
}
+ /** Remove monitor from prometheus */
remove() {
try {
monitorCertDaysRemaining.remove(this.monitorLabelValues);
diff --git a/server/proxy.js b/server/proxy.js
index 2f2b57694..660b9b411 100644
--- a/server/proxy.js
+++ b/server/proxy.js
@@ -132,6 +132,9 @@ class Proxy {
...httpAgentOptions,
...httpsAgentOptions,
...proxyOptions,
+ tls: {
+ rejectUnauthorized: httpsAgentOptions.rejectUnauthorized,
+ },
});
httpAgent = agent;
diff --git a/server/rate-limiter.js b/server/rate-limiter.js
index 6f185beb9..ec77f1a4e 100644
--- a/server/rate-limiter.js
+++ b/server/rate-limiter.js
@@ -54,6 +54,13 @@ const loginRateLimiter = new KumaRateLimiter({
errorMessage: "Too frequently, try again later."
});
+const apiRateLimiter = new KumaRateLimiter({
+ tokensPerInterval: 60,
+ interval: "minute",
+ fireImmediately: true,
+ errorMessage: "Too frequently, try again later."
+});
+
const twoFaRateLimiter = new KumaRateLimiter({
tokensPerInterval: 30,
interval: "minute",
@@ -63,5 +70,6 @@ const twoFaRateLimiter = new KumaRateLimiter({
module.exports = {
loginRateLimiter,
+ apiRateLimiter,
twoFaRateLimiter,
};
diff --git a/server/routers/api-router.js b/server/routers/api-router.js
index bbecbced3..8b5d36f2a 100644
--- a/server/routers/api-router.js
+++ b/server/routers/api-router.js
@@ -1,14 +1,16 @@
let express = require("express");
-const { allowDevAllOrigin, allowAllOrigin, percentageToColor, filterAndJoin, send403 } = require("../util-server");
+const { allowDevAllOrigin, allowAllOrigin, percentageToColor, filterAndJoin, sendHttpError } = require("../util-server");
const { R } = require("redbean-node");
const apicache = require("../modules/apicache");
const Monitor = require("../model/monitor");
const dayjs = require("dayjs");
-const { UP, MAINTENANCE, DOWN, flipStatus, log } = require("../../src/util");
+const { UP, MAINTENANCE, DOWN, PENDING, flipStatus, log } = require("../../src/util");
const StatusPage = require("../model/status_page");
const { UptimeKumaServer } = require("../uptime-kuma-server");
+const { UptimeCacheList } = require("../uptime-cache-list");
const { makeBadge } = require("badge-maker");
const { badgeConstants } = require("../config");
+const { Prometheus } = require("../prometheus");
let router = express.Router();
@@ -36,7 +38,7 @@ router.get("/api/push/:pushToken", async (request, response) => {
let pushToken = request.params.pushToken;
let msg = request.query.msg || "OK";
- let ping = request.query.ping || null;
+ let ping = parseInt(request.query.ping) || null;
let statusString = request.query.status || "up";
let status = (statusString === "up") ? UP : DOWN;
@@ -86,7 +88,9 @@ router.get("/api/push/:pushToken", async (request, response) => {
await R.store(bean);
io.to(monitor.user_id).emit("heartbeat", bean.toJSON());
+ UptimeCacheList.clearCache(monitor.id);
Monitor.sendStats(io, monitor.id, monitor.user_id);
+ new Prometheus(monitor).update(bean, undefined);
response.json({
ok: true,
@@ -111,8 +115,12 @@ router.get("/api/badge/:id/status", cache("5 minutes"), async (request, response
label,
upLabel = "Up",
downLabel = "Down",
+ pendingLabel = "Pending",
+ maintenanceLabel = "Maintenance",
upColor = badgeConstants.defaultUpColor,
downColor = badgeConstants.defaultDownColor,
+ pendingColor = badgeConstants.defaultPendingColor,
+ maintenanceColor = badgeConstants.defaultMaintenanceColor,
style = badgeConstants.defaultStyle,
value, // for demo purpose only
} = request.query;
@@ -139,11 +147,34 @@ router.get("/api/badge/:id/status", cache("5 minutes"), async (request, response
badgeValues.color = badgeConstants.naColor;
} else {
const heartbeat = await Monitor.getPreviousHeartbeat(requestedMonitorId);
- const state = overrideValue !== undefined ? overrideValue : heartbeat.status === 1;
+ const state = overrideValue !== undefined ? overrideValue : heartbeat.status;
- badgeValues.label = label ? label : "";
- badgeValues.color = state ? upColor : downColor;
- badgeValues.message = label ?? state ? upLabel : downLabel;
+ if (label === undefined) {
+ badgeValues.label = "Status";
+ } else {
+ badgeValues.label = label;
+ }
+ switch (state) {
+ case DOWN:
+ badgeValues.color = downColor;
+ badgeValues.message = downLabel;
+ break;
+ case UP:
+ badgeValues.color = upColor;
+ badgeValues.message = upLabel;
+ break;
+ case PENDING:
+ badgeValues.color = pendingColor;
+ badgeValues.message = pendingLabel;
+ break;
+ case MAINTENANCE:
+ badgeValues.color = maintenanceColor;
+ badgeValues.message = maintenanceLabel;
+ break;
+ default:
+ badgeValues.color = badgeConstants.naColor;
+ badgeValues.message = "N/A";
+ }
}
// build the svg based on given values
@@ -152,7 +183,7 @@ router.get("/api/badge/:id/status", cache("5 minutes"), async (request, response
response.type("image/svg+xml");
response.send(svg);
} catch (error) {
- send403(response, error.message);
+ sendHttpError(response, error.message);
}
});
@@ -189,7 +220,7 @@ router.get("/api/badge/:id/uptime/:duration?", cache("5 minutes"), async (reques
const badgeValues = { style };
if (!publicMonitor) {
- // return a "N/A" badge in naColor (grey), if monitor is not public / not available / non exsitant
+ // return a "N/A" badge in naColor (grey), if monitor is not public / not available / non existent
badgeValues.message = "N/A";
badgeValues.color = badgeConstants.naColor;
} else {
@@ -199,15 +230,18 @@ router.get("/api/badge/:id/uptime/:duration?", cache("5 minutes"), async (reques
);
// limit the displayed uptime percentage to four (two, when displayed as percent) decimal digits
- const cleanUptime = parseFloat(uptime.toPrecision(4));
+ const cleanUptime = (uptime * 100).toPrecision(4);
// use a given, custom color or calculate one based on the uptime value
badgeValues.color = color ?? percentageToColor(uptime);
// use a given, custom labelColor or use the default badge label color (defined by badge-maker)
badgeValues.labelColor = labelColor ?? "";
- // build a lable string. If a custom label is given, override the default one (requestedDuration)
- badgeValues.label = filterAndJoin([ labelPrefix, label ?? requestedDuration, labelSuffix ]);
- badgeValues.message = filterAndJoin([ prefix, `${cleanUptime * 100}`, suffix ]);
+ // build a label string. If a custom label is given, override the default one (requestedDuration)
+ badgeValues.label = filterAndJoin([
+ labelPrefix,
+ label ?? `Uptime (${requestedDuration}${labelSuffix})`,
+ ]);
+ badgeValues.message = filterAndJoin([ prefix, cleanUptime, suffix ]);
}
// build the SVG based on given values
@@ -216,7 +250,7 @@ router.get("/api/badge/:id/uptime/:duration?", cache("5 minutes"), async (reques
response.type("image/svg+xml");
response.send(svg);
} catch (error) {
- send403(response, error.message);
+ sendHttpError(response, error.message);
}
});
@@ -267,7 +301,7 @@ router.get("/api/badge/:id/ping/:duration?", cache("5 minutes"), async (request,
// use a given, custom labelColor or use the default badge label color (defined by badge-maker)
badgeValues.labelColor = labelColor ?? "";
// build a lable string. If a custom label is given, override the default one (requestedDuration)
- badgeValues.label = filterAndJoin([ labelPrefix, label ?? requestedDuration, labelSuffix ]);
+ badgeValues.label = filterAndJoin([ labelPrefix, label ?? `Avg. Ping (${requestedDuration}${labelSuffix})` ]);
badgeValues.message = filterAndJoin([ prefix, avgPing, suffix ]);
}
@@ -277,7 +311,240 @@ router.get("/api/badge/:id/ping/:duration?", cache("5 minutes"), async (request,
response.type("image/svg+xml");
response.send(svg);
} catch (error) {
- send403(response, error.message);
+ sendHttpError(response, error.message);
+ }
+});
+
+router.get("/api/badge/:id/avg-response/:duration?", cache("5 minutes"), async (request, response) => {
+ allowAllOrigin(response);
+
+ const {
+ label,
+ labelPrefix,
+ labelSuffix,
+ prefix,
+ suffix = badgeConstants.defaultPingValueSuffix,
+ color = badgeConstants.defaultPingColor,
+ labelColor,
+ style = badgeConstants.defaultStyle,
+ value, // for demo purpose only
+ } = request.query;
+
+ try {
+ const requestedMonitorId = parseInt(request.params.id, 10);
+
+ // Default duration is 24 (h) if not defined in queryParam, limited to 720h (30d)
+ const requestedDuration = Math.min(
+ request.params.duration
+ ? parseInt(request.params.duration, 10)
+ : 24,
+ 720
+ );
+ const overrideValue = value && parseFloat(value);
+
+ const publicAvgPing = parseInt(await R.getCell(`
+ SELECT AVG(ping) FROM monitor_group, \`group\`, heartbeat
+ WHERE monitor_group.group_id = \`group\`.id
+ AND heartbeat.time > DATETIME('now', ? || ' hours')
+ AND heartbeat.ping IS NOT NULL
+ AND public = 1
+ AND heartbeat.monitor_id = ?
+ `,
+ [ -requestedDuration, requestedMonitorId ]
+ ));
+
+ const badgeValues = { style };
+
+ if (!publicAvgPing) {
+ // return a "N/A" badge in naColor (grey), if monitor is not public / not available / non existent
+
+ badgeValues.message = "N/A";
+ badgeValues.color = badgeConstants.naColor;
+ } else {
+ const avgPing = parseInt(overrideValue ?? publicAvgPing);
+
+ badgeValues.color = color;
+ // use a given, custom labelColor or use the default badge label color (defined by badge-maker)
+ badgeValues.labelColor = labelColor ?? "";
+ // build a label string. If a custom label is given, override the default one (requestedDuration)
+ badgeValues.label = filterAndJoin([
+ labelPrefix,
+ label ?? `Avg. Response (${requestedDuration}h)`,
+ labelSuffix,
+ ]);
+ badgeValues.message = filterAndJoin([ prefix, avgPing, suffix ]);
+ }
+
+ // build the SVG based on given values
+ const svg = makeBadge(badgeValues);
+
+ response.type("image/svg+xml");
+ response.send(svg);
+ } catch (error) {
+ sendHttpError(response, error.message);
+ }
+});
+
+router.get("/api/badge/:id/cert-exp", cache("5 minutes"), async (request, response) => {
+ allowAllOrigin(response);
+
+ const date = request.query.date;
+
+ const {
+ label,
+ labelPrefix,
+ labelSuffix,
+ prefix,
+ suffix = date ? "" : badgeConstants.defaultCertExpValueSuffix,
+ upColor = badgeConstants.defaultUpColor,
+ warnColor = badgeConstants.defaultWarnColor,
+ downColor = badgeConstants.defaultDownColor,
+ warnDays = badgeConstants.defaultCertExpireWarnDays,
+ downDays = badgeConstants.defaultCertExpireDownDays,
+ labelColor,
+ style = badgeConstants.defaultStyle,
+ value, // for demo purpose only
+ } = request.query;
+
+ try {
+ const requestedMonitorId = parseInt(request.params.id, 10);
+
+ const overrideValue = value && parseFloat(value);
+
+ let publicMonitor = await R.getRow(`
+ SELECT monitor_group.monitor_id FROM monitor_group, \`group\`
+ WHERE monitor_group.group_id = \`group\`.id
+ AND monitor_group.monitor_id = ?
+ AND public = 1
+ `,
+ [ requestedMonitorId ]
+ );
+
+ const badgeValues = { style };
+
+ if (!publicMonitor) {
+ // return a "N/A" badge in naColor (grey), if monitor is not public / not available / non existent
+
+ badgeValues.message = "N/A";
+ badgeValues.color = badgeConstants.naColor;
+ } else {
+ const tlsInfoBean = await R.findOne("monitor_tls_info", "monitor_id = ?", [
+ requestedMonitorId,
+ ]);
+
+ if (!tlsInfoBean) {
+ // return a "No/Bad Cert" badge in naColor (grey), if no cert saved (does not save bad certs?)
+ badgeValues.message = "No/Bad Cert";
+ badgeValues.color = badgeConstants.naColor;
+ } else {
+ const tlsInfo = JSON.parse(tlsInfoBean.info_json);
+
+ if (!tlsInfo.valid) {
+ // return a "Bad Cert" badge in naColor (grey), when cert is not valid
+ badgeValues.message = "Bad Cert";
+ badgeValues.color = badgeConstants.downColor;
+ } else {
+ const daysRemaining = parseInt(overrideValue ?? tlsInfo.certInfo.daysRemaining);
+
+ if (daysRemaining > warnDays) {
+ badgeValues.color = upColor;
+ } else if (daysRemaining > downDays) {
+ badgeValues.color = warnColor;
+ } else {
+ badgeValues.color = downColor;
+ }
+ // use a given, custom labelColor or use the default badge label color (defined by badge-maker)
+ badgeValues.labelColor = labelColor ?? "";
+ // build a label string. If a custom label is given, override the default one
+ badgeValues.label = filterAndJoin([
+ labelPrefix,
+ label ?? "Cert Exp.",
+ labelSuffix,
+ ]);
+ badgeValues.message = filterAndJoin([ prefix, date ? tlsInfo.certInfo.validTo : daysRemaining, suffix ]);
+ }
+ }
+ }
+
+ // build the SVG based on given values
+ const svg = makeBadge(badgeValues);
+
+ response.type("image/svg+xml");
+ response.send(svg);
+ } catch (error) {
+ sendHttpError(response, error.message);
+ }
+});
+
+router.get("/api/badge/:id/response", cache("5 minutes"), async (request, response) => {
+ allowAllOrigin(response);
+
+ const {
+ label,
+ labelPrefix,
+ labelSuffix,
+ prefix,
+ suffix = badgeConstants.defaultPingValueSuffix,
+ color = badgeConstants.defaultPingColor,
+ labelColor,
+ style = badgeConstants.defaultStyle,
+ value, // for demo purpose only
+ } = request.query;
+
+ try {
+ const requestedMonitorId = parseInt(request.params.id, 10);
+
+ const overrideValue = value && parseFloat(value);
+
+ let publicMonitor = await R.getRow(`
+ SELECT monitor_group.monitor_id FROM monitor_group, \`group\`
+ WHERE monitor_group.group_id = \`group\`.id
+ AND monitor_group.monitor_id = ?
+ AND public = 1
+ `,
+ [ requestedMonitorId ]
+ );
+
+ const badgeValues = { style };
+
+ if (!publicMonitor) {
+ // return a "N/A" badge in naColor (grey), if monitor is not public / not available / non existent
+
+ badgeValues.message = "N/A";
+ badgeValues.color = badgeConstants.naColor;
+ } else {
+ const heartbeat = await Monitor.getPreviousHeartbeat(
+ requestedMonitorId
+ );
+
+ if (!heartbeat.ping) {
+ // return a "N/A" badge in naColor (grey), if previous heartbeat has no ping
+
+ badgeValues.message = "N/A";
+ badgeValues.color = badgeConstants.naColor;
+ } else {
+ const ping = parseInt(overrideValue ?? heartbeat.ping);
+
+ badgeValues.color = color;
+ // use a given, custom labelColor or use the default badge label color (defined by badge-maker)
+ badgeValues.labelColor = labelColor ?? "";
+ // build a label string. If a custom label is given, override the default one
+ badgeValues.label = filterAndJoin([
+ labelPrefix,
+ label ?? "Response",
+ labelSuffix,
+ ]);
+ badgeValues.message = filterAndJoin([ prefix, ping, suffix ]);
+ }
+ }
+
+ // build the SVG based on given values
+ const svg = makeBadge(badgeValues);
+
+ response.type("image/svg+xml");
+ response.send(svg);
+ } catch (error) {
+ sendHttpError(response, error.message);
}
});
diff --git a/server/routers/status-page-router.js b/server/routers/status-page-router.js
index 338a6536b..17b616b40 100644
--- a/server/routers/status-page-router.js
+++ b/server/routers/status-page-router.js
@@ -2,7 +2,7 @@ let express = require("express");
const apicache = require("../modules/apicache");
const { UptimeKumaServer } = require("../uptime-kuma-server");
const StatusPage = require("../model/status_page");
-const { allowDevAllOrigin, send403 } = require("../util-server");
+const { allowDevAllOrigin, sendHttpError } = require("../util-server");
const { R } = require("redbean-node");
const Monitor = require("../model/monitor");
const { badgeConstants } = require("../config");
@@ -46,10 +46,7 @@ router.get("/api/status-page/:slug", cache("5 minutes"), async (request, respons
let statusPageData = await StatusPage.getStatusPageData(statusPage);
if (!statusPageData) {
- response.statusCode = 404;
- response.json({
- msg: "Not Found"
- });
+ sendHttpError(response, "Not Found");
return;
}
@@ -57,7 +54,7 @@ router.get("/api/status-page/:slug", cache("5 minutes"), async (request, respons
response.json(statusPageData);
} catch (error) {
- send403(response, error.message);
+ sendHttpError(response, error.message);
}
});
@@ -105,7 +102,7 @@ router.get("/api/status-page/heartbeat/:slug", cache("1 minutes"), async (reques
});
} catch (error) {
- send403(response, error.message);
+ sendHttpError(response, error.message);
}
});
@@ -121,10 +118,7 @@ router.get("/api/status-page/:slug/manifest.json", cache("1440 minutes"), async
]);
if (!statusPage) {
- response.statusCode = 404;
- response.json({
- msg: "Not Found"
- });
+ sendHttpError(response, "Not Found");
return;
}
@@ -143,7 +137,7 @@ router.get("/api/status-page/:slug/manifest.json", cache("1440 minutes"), async
});
} catch (error) {
- send403(response, error.message);
+ sendHttpError(response, error.message);
}
});
diff --git a/server/server.js b/server/server.js
index 5473cecd4..976dca5de 100644
--- a/server/server.js
+++ b/server/server.js
@@ -11,11 +11,19 @@ dayjs.extend(require("dayjs/plugin/utc"));
dayjs.extend(require("./modules/dayjs/plugin/timezone"));
dayjs.extend(require("dayjs/plugin/customParseFormat"));
+// Load environment variables from `.env`
+require("dotenv").config();
+
// Check Node.js Version
const nodeVersion = parseInt(process.versions.node.split(".")[0]);
const requiredVersion = 14;
console.log(`Your Node.js version: ${nodeVersion}`);
+// See more: https://github.com/louislam/uptime-kuma/issues/3138
+if (nodeVersion >= 20) {
+ console.warn("\x1b[31m%s\x1b[0m", "Warning: Uptime Kuma is currently not stable on Node.js >= 20, please use Node.js 18.");
+}
+
if (nodeVersion < requiredVersion) {
console.error(`Error: Your Node.js version is not supported, please upgrade to Node.js >= ${requiredVersion}.`);
process.exit(-1);
@@ -84,7 +92,7 @@ log.debug("server", "Importing Background Jobs");
const { initBackgroundJobs, stopBackgroundJobs } = require("./jobs");
const { loginRateLimiter, twoFaRateLimiter } = require("./rate-limiter");
-const { basicAuth } = require("./auth");
+const { apiAuth } = require("./auth");
const { login } = require("./auth");
const passwordHash = require("./password-hash");
@@ -126,7 +134,7 @@ if (config.demoMode) {
}
// Must be after io instantiation
-const { sendNotificationList, sendHeartbeatList, sendImportantHeartbeatList, sendInfo, sendProxyList, sendDockerHostList } = require("./client");
+const { sendNotificationList, sendHeartbeatList, sendImportantHeartbeatList, sendInfo, sendProxyList, sendDockerHostList, sendAPIKeyList } = require("./client");
const { statusPageSocketHandler } = require("./socket-handlers/status-page-socket-handler");
const databaseSocketHandler = require("./socket-handlers/database-socket-handler");
const TwoFA = require("./2fa");
@@ -135,9 +143,12 @@ const { cloudflaredSocketHandler, autoStart: cloudflaredAutoStart, stop: cloudfl
const { proxySocketHandler } = require("./socket-handlers/proxy-socket-handler");
const { dockerSocketHandler } = require("./socket-handlers/docker-socket-handler");
const { maintenanceSocketHandler } = require("./socket-handlers/maintenance-socket-handler");
+const { apiKeySocketHandler } = require("./socket-handlers/api-key-socket-handler");
const { generalSocketHandler } = require("./socket-handlers/general-socket-handler");
const { Settings } = require("./settings");
const { CacheableDnsHttpAgent } = require("./cacheable-dns-http-agent");
+const apicache = require("./modules/apicache");
+const { resetChrome } = require("./monitor-types/real-browser-monitor-type");
app.use(express.json());
@@ -150,12 +161,6 @@ app.use(function (req, res, next) {
next();
});
-/**
- * Use for decode the auth object
- * @type {null}
- */
-let jwtSecret = null;
-
/**
* Show Setup Page
* @type {boolean}
@@ -166,7 +171,6 @@ let needSetup = false;
Database.init(args);
await initDatabase(testMode);
await server.initAfterDatabaseReady();
-
server.entryPage = await Settings.get("entryPage");
await StatusPage.loadDomainMappingList();
@@ -225,7 +229,7 @@ let needSetup = false;
// Prometheus API metrics /metrics
// With Basic Auth using the first user's username/password
- app.get("/metrics", basicAuth, prometheusAPIMetrics());
+ app.get("/metrics", apiAuth, prometheusAPIMetrics());
app.use("/", expressStaticGzip("dist", {
enableBrotli: true,
@@ -275,7 +279,7 @@ let needSetup = false;
log.info("auth", `Login by token. IP=${clientIP}`);
try {
- let decoded = jwt.verify(token, jwtSecret);
+ let decoded = jwt.verify(token, server.jwtSecret);
log.info("auth", "Username from JWT: " + decoded.username);
@@ -346,7 +350,7 @@ let needSetup = false;
ok: true,
token: jwt.sign({
username: data.username,
- }, jwtSecret),
+ }, server.jwtSecret),
});
}
@@ -376,7 +380,7 @@ let needSetup = false;
ok: true,
token: jwt.sign({
username: data.username,
- }, jwtSecret),
+ }, server.jwtSecret),
});
} else {
@@ -574,7 +578,6 @@ let needSetup = false;
});
}
} catch (error) {
- console.log(error);
callback({
ok: false,
msg: error.message,
@@ -666,6 +669,7 @@ let needSetup = false;
// Edit a monitor
socket.on("editMonitor", async (monitor, callback) => {
try {
+ let removeGroupChildren = false;
checkLogin(socket);
let bean = await R.findOne("monitor", " id = ? ", [ monitor.id ]);
@@ -674,10 +678,22 @@ let needSetup = false;
throw new Error("Permission denied.");
}
- // Reset Prometheus labels
- server.monitorList[monitor.id]?.prometheus()?.remove();
+ // Check if Parent is Descendant (would cause endless loop)
+ if (monitor.parent !== null) {
+ const childIDs = await Monitor.getAllChildrenIDs(monitor.id);
+ if (childIDs.includes(monitor.parent)) {
+ throw new Error("Invalid Monitor Group");
+ }
+ }
+
+ // Remove children if monitor type has changed (from group to non-group)
+ if (bean.type === "group" && monitor.type !== bean.type) {
+ removeGroupChildren = true;
+ }
bean.name = monitor.name;
+ bean.description = monitor.description;
+ bean.parent = monitor.parent;
bean.type = monitor.type;
bean.url = monitor.url;
bean.method = monitor.method;
@@ -685,16 +701,22 @@ let needSetup = false;
bean.headers = monitor.headers;
bean.basic_auth_user = monitor.basic_auth_user;
bean.basic_auth_pass = monitor.basic_auth_pass;
+ bean.tlsCa = monitor.tlsCa;
+ bean.tlsCert = monitor.tlsCert;
+ bean.tlsKey = monitor.tlsKey;
bean.interval = monitor.interval;
bean.retryInterval = monitor.retryInterval;
bean.resendInterval = monitor.resendInterval;
bean.hostname = monitor.hostname;
+ bean.game = monitor.game;
bean.maxretries = monitor.maxretries;
bean.port = parseInt(monitor.port);
bean.keyword = monitor.keyword;
+ bean.invertKeyword = monitor.invertKeyword;
bean.ignoreTls = monitor.ignoreTls;
bean.expiryNotification = monitor.expiryNotification;
bean.upsideDown = monitor.upsideDown;
+ bean.packetSize = monitor.packetSize;
bean.maxredirects = monitor.maxredirects;
bean.accepted_statuscodes_json = JSON.stringify(monitor.accepted_statuscodes);
bean.dns_resolve_type = monitor.dns_resolve_type;
@@ -724,14 +746,19 @@ let needSetup = false;
bean.radiusCalledStationId = monitor.radiusCalledStationId;
bean.radiusCallingStationId = monitor.radiusCallingStationId;
bean.radiusSecret = monitor.radiusSecret;
+ bean.httpBodyEncoding = monitor.httpBodyEncoding;
bean.validate();
await R.store(bean);
+ if (removeGroupChildren) {
+ await Monitor.unlinkAllChildren(monitor.id);
+ }
+
await updateMonitorNotification(bean.id, monitor.notificationIDList);
- if (bean.active) {
+ if (bean.isActive()) {
await restartMonitor(socket.userID, bean.id);
}
@@ -874,11 +901,20 @@ let needSetup = false;
delete server.monitorList[monitorID];
}
+ const startTime = Date.now();
+
await R.exec("DELETE FROM monitor WHERE id = ? AND user_id = ? ", [
monitorID,
socket.userID,
]);
+ // Fix #2880
+ apicache.clear();
+
+ const endTime = Date.now();
+
+ log.info("DB", `Delete Monitor completed in : ${endTime - startTime} ms`);
+
callback({
ok: true,
msg: "Deleted Successfully.",
@@ -941,13 +977,21 @@ let needSetup = false;
try {
checkLogin(socket);
- let bean = await R.findOne("monitor", " id = ? ", [ tag.id ]);
+ let bean = await R.findOne("tag", " id = ? ", [ tag.id ]);
+ if (bean == null) {
+ callback({
+ ok: false,
+ msg: "Tag not found",
+ });
+ return;
+ }
bean.name = tag.name;
bean.color = tag.color;
await R.store(bean);
callback({
ok: true,
+ msg: "Saved",
tag: await bean.toJSON(),
});
@@ -1114,6 +1158,8 @@ let needSetup = false;
await doubleCheckPassword(socket, currentPassword);
}
+ const previousChromeExecutable = await Settings.get("chromeExecutable");
+
await setSettings("general", data);
server.entryPage = data.entryPage;
@@ -1124,6 +1170,12 @@ let needSetup = false;
await server.setTimezone(data.serverTimezone);
}
+ // If Chrome Executable is changed, need to reset the browser
+ if (previousChromeExecutable !== data.chromeExecutable) {
+ log.info("settings", "Chrome executable is changed. Resetting Chrome...");
+ await resetChrome();
+ }
+
callback({
ok: true,
msg: "Saved"
@@ -1307,6 +1359,7 @@ let needSetup = false;
let monitor = {
// Define the new variable from earlier here
name: monitorListData[i].name,
+ description: monitorListData[i].description,
type: monitorListData[i].type,
url: monitorListData[i].url,
method: monitorListData[i].method || "GET",
@@ -1324,13 +1377,14 @@ let needSetup = false;
maxretries: monitorListData[i].maxretries,
port: monitorListData[i].port,
keyword: monitorListData[i].keyword,
+ invertKeyword: monitorListData[i].invertKeyword,
ignoreTls: monitorListData[i].ignoreTls,
upsideDown: monitorListData[i].upsideDown,
maxredirects: monitorListData[i].maxredirects,
accepted_statuscodes: monitorListData[i].accepted_statuscodes,
dns_resolve_type: monitorListData[i].dns_resolve_type,
dns_resolve_server: monitorListData[i].dns_resolve_server,
- notificationIDList: {},
+ notificationIDList: monitorListData[i].notificationIDList,
proxy_id: monitorListData[i].proxy_id || null,
};
@@ -1490,6 +1544,7 @@ let needSetup = false;
proxySocketHandler(socket);
dockerSocketHandler(socket);
maintenanceSocketHandler(socket);
+ apiKeySocketHandler(socket);
generalSocketHandler(socket, server);
log.debug("server", "added all socket handlers");
@@ -1534,7 +1589,7 @@ let needSetup = false;
}
});
- initBackgroundJobs(args);
+ await initBackgroundJobs();
// Start cloudflared at the end if configured
await cloudflaredAutoStart(cloudflaredToken);
@@ -1597,6 +1652,7 @@ async function afterLogin(socket, user) {
sendNotificationList(socket);
sendProxyList(socket);
sendDockerHostList(socket);
+ sendAPIKeyList(socket);
await sleep(500);
@@ -1659,7 +1715,7 @@ async function initDatabase(testMode = false) {
needSetup = true;
}
- jwtSecret = jwtSecretBean.value;
+ server.jwtSecret = jwtSecretBean.value;
}
/**
diff --git a/server/socket-handlers/api-key-socket-handler.js b/server/socket-handlers/api-key-socket-handler.js
new file mode 100644
index 000000000..69b0b60de
--- /dev/null
+++ b/server/socket-handlers/api-key-socket-handler.js
@@ -0,0 +1,150 @@
+const { checkLogin } = require("../util-server");
+const { log } = require("../../src/util");
+const { R } = require("redbean-node");
+const { nanoid } = require("nanoid");
+const passwordHash = require("../password-hash");
+const apicache = require("../modules/apicache");
+const APIKey = require("../model/api_key");
+const { Settings } = require("../settings");
+const { sendAPIKeyList } = require("../client");
+
+/**
+ * Handlers for Maintenance
+ * @param {Socket} socket Socket.io instance
+ */
+module.exports.apiKeySocketHandler = (socket) => {
+ // Add a new api key
+ socket.on("addAPIKey", async (key, callback) => {
+ try {
+ checkLogin(socket);
+
+ let clearKey = nanoid(40);
+ let hashedKey = passwordHash.generate(clearKey);
+ key["key"] = hashedKey;
+ let bean = await APIKey.save(key, socket.userID);
+
+ log.debug("apikeys", "Added API Key");
+ log.debug("apikeys", key);
+
+ // Append key ID and prefix to start of key seperated by _, used to get
+ // correct hash when validating key.
+ let formattedKey = "uk" + bean.id + "_" + clearKey;
+ await sendAPIKeyList(socket);
+
+ // Enable API auth if the user creates a key, otherwise only basic
+ // auth will be used for API.
+ await Settings.set("apiKeysEnabled", true);
+
+ callback({
+ ok: true,
+ msg: "Added Successfully.",
+ key: formattedKey,
+ keyID: bean.id,
+ });
+
+ } catch (e) {
+ callback({
+ ok: false,
+ msg: e.message,
+ });
+ }
+ });
+
+ socket.on("getAPIKeyList", async (callback) => {
+ try {
+ checkLogin(socket);
+ await sendAPIKeyList(socket);
+ callback({
+ ok: true,
+ });
+ } catch (e) {
+ console.error(e);
+ callback({
+ ok: false,
+ msg: e.message,
+ });
+ }
+ });
+
+ socket.on("deleteAPIKey", async (keyID, callback) => {
+ try {
+ checkLogin(socket);
+
+ log.debug("apikeys", `Deleted API Key: ${keyID} User ID: ${socket.userID}`);
+
+ await R.exec("DELETE FROM api_key WHERE id = ? AND user_id = ? ", [
+ keyID,
+ socket.userID,
+ ]);
+
+ apicache.clear();
+
+ callback({
+ ok: true,
+ msg: "Deleted Successfully.",
+ });
+
+ await sendAPIKeyList(socket);
+
+ } catch (e) {
+ callback({
+ ok: false,
+ msg: e.message,
+ });
+ }
+ });
+
+ socket.on("disableAPIKey", async (keyID, callback) => {
+ try {
+ checkLogin(socket);
+
+ log.debug("apikeys", `Disabled Key: ${keyID} User ID: ${socket.userID}`);
+
+ await R.exec("UPDATE api_key SET active = 0 WHERE id = ? ", [
+ keyID,
+ ]);
+
+ apicache.clear();
+
+ callback({
+ ok: true,
+ msg: "Disabled Successfully.",
+ });
+
+ await sendAPIKeyList(socket);
+
+ } catch (e) {
+ callback({
+ ok: false,
+ msg: e.message,
+ });
+ }
+ });
+
+ socket.on("enableAPIKey", async (keyID, callback) => {
+ try {
+ checkLogin(socket);
+
+ log.debug("apikeys", `Enabled Key: ${keyID} User ID: ${socket.userID}`);
+
+ await R.exec("UPDATE api_key SET active = 1 WHERE id = ? ", [
+ keyID,
+ ]);
+
+ apicache.clear();
+
+ callback({
+ ok: true,
+ msg: "Enabled Successfully",
+ });
+
+ await sendAPIKeyList(socket);
+
+ } catch (e) {
+ callback({
+ ok: false,
+ msg: e.message,
+ });
+ }
+ });
+};
diff --git a/server/socket-handlers/general-socket-handler.js b/server/socket-handlers/general-socket-handler.js
index 700b4a384..2f0c63b41 100644
--- a/server/socket-handlers/general-socket-handler.js
+++ b/server/socket-handlers/general-socket-handler.js
@@ -2,6 +2,30 @@ const { log } = require("../../src/util");
const { Settings } = require("../settings");
const { sendInfo } = require("../client");
const { checkLogin } = require("../util-server");
+const GameResolver = require("gamedig/lib/GameResolver");
+const { testChrome } = require("../monitor-types/real-browser-monitor-type");
+
+let gameResolver = new GameResolver();
+let gameList = null;
+
+/**
+ * Get a game list via GameDig
+ * @returns {Object[]} list of games supported by GameDig
+ */
+function getGameList() {
+ if (gameList == null) {
+ gameList = gameResolver._readGames().games.sort((a, b) => {
+ if ( a.pretty < b.pretty ) {
+ return -1;
+ }
+ if ( a.pretty > b.pretty ) {
+ return 1;
+ }
+ return 0;
+ });
+ }
+ return gameList;
+}
module.exports.generalSocketHandler = (socket, server) => {
@@ -17,4 +41,25 @@ module.exports.generalSocketHandler = (socket, server) => {
}
});
+ socket.on("getGameList", async (callback) => {
+ callback({
+ ok: true,
+ gameList: getGameList(),
+ });
+ });
+
+ socket.on("testChrome", (executable, callback) => {
+ // Just noticed that await call could block the whole socket.io server!!! Use pure promise instead.
+ testChrome(executable).then((version) => {
+ callback({
+ ok: true,
+ msg: "Found Chromium/Chrome. Version: " + version,
+ });
+ }).catch((e) => {
+ callback({
+ ok: false,
+ msg: e.message,
+ });
+ });
+ });
};
diff --git a/server/socket-handlers/maintenance-socket-handler.js b/server/socket-handlers/maintenance-socket-handler.js
index 929150cdd..ff5bb0fcf 100644
--- a/server/socket-handlers/maintenance-socket-handler.js
+++ b/server/socket-handlers/maintenance-socket-handler.js
@@ -5,7 +5,6 @@ const apicache = require("../modules/apicache");
const { UptimeKumaServer } = require("../uptime-kuma-server");
const Maintenance = require("../model/maintenance");
const server = UptimeKumaServer.getInstance();
-const MaintenanceTimeslot = require("../model/maintenance_timeslot");
/**
* Handlers for Maintenance
@@ -19,10 +18,12 @@ module.exports.maintenanceSocketHandler = (socket) => {
log.debug("maintenance", maintenance);
- let bean = Maintenance.jsonToBean(R.dispense("maintenance"), maintenance);
+ let bean = await Maintenance.jsonToBean(R.dispense("maintenance"), maintenance);
bean.user_id = socket.userID;
let maintenanceID = await R.store(bean);
- await MaintenanceTimeslot.generateTimeslot(bean);
+
+ server.maintenanceList[maintenanceID] = bean;
+ await bean.run(true);
await server.sendMaintenanceList(socket);
@@ -45,17 +46,15 @@ module.exports.maintenanceSocketHandler = (socket) => {
try {
checkLogin(socket);
- let bean = await R.findOne("maintenance", " id = ? ", [ maintenance.id ]);
+ let bean = server.getMaintenance(maintenance.id);
if (bean.user_id !== socket.userID) {
throw new Error("Permission denied.");
}
- Maintenance.jsonToBean(bean, maintenance);
-
+ await Maintenance.jsonToBean(bean, maintenance);
await R.store(bean);
- await MaintenanceTimeslot.generateTimeslot(bean, null, true);
-
+ await bean.run(true);
await server.sendMaintenanceList(socket);
callback({
@@ -187,7 +186,7 @@ module.exports.maintenanceSocketHandler = (socket) => {
log.debug("maintenance", `Get Monitors for Maintenance: ${maintenanceID} User ID: ${socket.userID}`);
- let monitors = await R.getAll("SELECT monitor.id, monitor.name FROM monitor_maintenance mm JOIN monitor ON mm.monitor_id = monitor.id WHERE mm.maintenance_id = ? ", [
+ let monitors = await R.getAll("SELECT monitor.id FROM monitor_maintenance mm JOIN monitor ON mm.monitor_id = monitor.id WHERE mm.maintenance_id = ? ", [
maintenanceID,
]);
@@ -236,6 +235,7 @@ module.exports.maintenanceSocketHandler = (socket) => {
log.debug("maintenance", `Delete Maintenance: ${maintenanceID} User ID: ${socket.userID}`);
if (maintenanceID in server.maintenanceList) {
+ server.maintenanceList[maintenanceID].stop();
delete server.maintenanceList[maintenanceID];
}
@@ -267,9 +267,15 @@ module.exports.maintenanceSocketHandler = (socket) => {
log.debug("maintenance", `Pause Maintenance: ${maintenanceID} User ID: ${socket.userID}`);
- await R.exec("UPDATE maintenance SET active = 0 WHERE id = ? ", [
- maintenanceID,
- ]);
+ let maintenance = server.getMaintenance(maintenanceID);
+
+ if (!maintenance) {
+ throw new Error("Maintenance not found");
+ }
+
+ maintenance.active = false;
+ await R.store(maintenance);
+ maintenance.stop();
apicache.clear();
@@ -294,9 +300,15 @@ module.exports.maintenanceSocketHandler = (socket) => {
log.debug("maintenance", `Resume Maintenance: ${maintenanceID} User ID: ${socket.userID}`);
- await R.exec("UPDATE maintenance SET active = 1 WHERE id = ? ", [
- maintenanceID,
- ]);
+ let maintenance = server.getMaintenance(maintenanceID);
+
+ if (!maintenance) {
+ throw new Error("Maintenance not found");
+ }
+
+ maintenance.active = true;
+ await R.store(maintenance);
+ await maintenance.run();
apicache.clear();
diff --git a/server/socket-handlers/status-page-socket-handler.js b/server/socket-handlers/status-page-socket-handler.js
index 16d6ee73b..411bda556 100644
--- a/server/socket-handlers/status-page-socket-handler.js
+++ b/server/socket-handlers/status-page-socket-handler.js
@@ -163,6 +163,7 @@ module.exports.statusPageSocketHandler = (socket) => {
statusPage.custom_css = config.customCSS;
statusPage.show_powered_by = config.showPoweredBy;
statusPage.modified_date = R.isoDateTime();
+ statusPage.google_analytics_tag_id = config.googleAnalyticsId;
await R.store(statusPage);
@@ -275,7 +276,7 @@ module.exports.statusPageSocketHandler = (socket) => {
let statusPage = R.dispense("status_page");
statusPage.slug = slug;
statusPage.title = title;
- statusPage.theme = "light";
+ statusPage.theme = "auto";
statusPage.icon = "";
await R.store(statusPage);
diff --git a/server/uptime-cache-list.js b/server/uptime-cache-list.js
index 1347968fa..d88a9cbf8 100644
--- a/server/uptime-cache-list.js
+++ b/server/uptime-cache-list.js
@@ -6,10 +6,10 @@ class UptimeCacheList {
static list = {};
/**
- *
- * @param monitorID
- * @param duration
- * @return number
+ * Get the uptime for a specific period
+ * @param {number} monitorID
+ * @param {number} duration
+ * @return {number}
*/
static getUptime(monitorID, duration) {
if (UptimeCacheList.list[monitorID] && UptimeCacheList.list[monitorID][duration]) {
@@ -20,6 +20,12 @@ class UptimeCacheList {
}
}
+ /**
+ * Add uptime for specified monitor
+ * @param {number} monitorID
+ * @param {number} duration
+ * @param {number} uptime Uptime to add
+ */
static addUptime(monitorID, duration, uptime) {
log.debug("UptimeCacheList", "addUptime: " + monitorID + " " + duration);
if (!UptimeCacheList.list[monitorID]) {
@@ -28,6 +34,10 @@ class UptimeCacheList {
UptimeCacheList.list[monitorID][duration] = uptime;
}
+ /**
+ * Clear cache for specified monitor
+ * @param {number} monitorID
+ */
static clearCache(monitorID) {
log.debug("UptimeCacheList", "clearCache: " + monitorID);
delete UptimeCacheList.list[monitorID];
diff --git a/server/uptime-kuma-server.js b/server/uptime-kuma-server.js
index 062375626..b45a749b9 100644
--- a/server/uptime-kuma-server.js
+++ b/server/uptime-kuma-server.js
@@ -46,7 +46,19 @@ class UptimeKumaServer {
*/
indexHTML = "";
- generateMaintenanceTimeslotsInterval = undefined;
+ /**
+ *
+ * @type {{}}
+ */
+ static monitorTypeList = {
+
+ };
+
+ /**
+ * Use for decode the auth object
+ * @type {null}
+ */
+ jwtSecret = null;
static getInstance(args) {
if (UptimeKumaServer.instance == null) {
@@ -59,6 +71,7 @@ class UptimeKumaServer {
// SSL
const sslKey = args["ssl-key"] || process.env.UPTIME_KUMA_SSL_KEY || process.env.SSL_KEY || undefined;
const sslCert = args["ssl-cert"] || process.env.UPTIME_KUMA_SSL_CERT || process.env.SSL_CERT || undefined;
+ const sslKeyPassphrase = args["ssl-key-passphrase"] || process.env.UPTIME_KUMA_SSL_KEY_PASSPHRASE || process.env.SSL_KEY_PASSPHRASE || undefined;
log.info("server", "Creating express and socket.io instance");
this.app = express();
@@ -66,7 +79,8 @@ class UptimeKumaServer {
log.info("server", "Server Type: HTTPS");
this.httpServer = https.createServer({
key: fs.readFileSync(sslKey),
- cert: fs.readFileSync(sslCert)
+ cert: fs.readFileSync(sslCert),
+ passphrase: sslKeyPassphrase,
}, this.app);
} else {
log.info("server", "Server Type: HTTP");
@@ -83,10 +97,17 @@ class UptimeKumaServer {
}
}
+ // Set Monitor Types
+ UptimeKumaServer.monitorTypeList["real-browser"] = new RealBrowserMonitorType();
+
this.io = new Server(this.httpServer);
}
+ /** Initialise app after the database has been set up */
async initAfterDatabaseReady() {
+ // Static
+ this.app.use("/screenshots", express.static(Database.screenshotDir));
+
await CacheableDnsHttpAgent.update();
process.env.TZ = await this.getTimezone();
@@ -94,10 +115,14 @@ class UptimeKumaServer {
log.debug("DEBUG", "Timezone: " + process.env.TZ);
log.debug("DEBUG", "Current Time: " + dayjs.tz().format());
- await this.generateMaintenanceTimeslots();
- this.generateMaintenanceTimeslotsInterval = setInterval(this.generateMaintenanceTimeslots, 60 * 1000);
+ await this.loadMaintenanceList();
}
+ /**
+ * Send list of monitors to client
+ * @param {Socket} socket
+ * @returns {Object} List of monitors
+ */
async sendMonitorList(socket) {
let list = await this.getMonitorJSONList(socket.userID);
this.io.to(socket.userID).emit("monitorList", list);
@@ -134,6 +159,11 @@ class UptimeKumaServer {
return await this.sendMaintenanceListByUserID(socket.userID);
}
+ /**
+ * Send list of maintenances to user
+ * @param {number} userID
+ * @returns {Object}
+ */
async sendMaintenanceListByUserID(userID) {
let list = await this.getMaintenanceJSONList(userID);
this.io.to(userID).emit("maintenanceList", list);
@@ -147,16 +177,33 @@ class UptimeKumaServer {
*/
async getMaintenanceJSONList(userID) {
let result = {};
+ for (let maintenanceID in this.maintenanceList) {
+ result[maintenanceID] = await this.maintenanceList[maintenanceID].toJSON();
+ }
+ return result;
+ }
+
+ /**
+ * Load maintenance list and run
+ * @param userID
+ * @returns {Promise}
+ */
+ async loadMaintenanceList(userID) {
+ let maintenanceList = await R.findAll("maintenance", " ORDER BY end_date DESC, title", [
- let maintenanceList = await R.find("maintenance", " user_id = ? ORDER BY end_date DESC, title", [
- userID,
]);
for (let maintenance of maintenanceList) {
- result[maintenance.id] = await maintenance.toJSON();
+ this.maintenanceList[maintenance.id] = maintenance;
+ maintenance.run(this);
}
+ }
- return result;
+ getMaintenance(maintenanceID) {
+ if (this.maintenanceList[maintenanceID]) {
+ return this.maintenanceList[maintenanceID];
+ }
+ return null;
}
/**
@@ -185,6 +232,11 @@ class UptimeKumaServer {
errorLogStream.end();
}
+ /**
+ * Get the IP of the client connected to the socket
+ * @param {Socket} socket
+ * @returns {string}
+ */
async getClientIP(socket) {
let clientIP = socket.client.conn.remoteAddress;
@@ -203,6 +255,12 @@ class UptimeKumaServer {
}
}
+ /**
+ * Attempt to get the current server timezone
+ * If this fails, fall back to environment variables and then make a
+ * guess.
+ * @returns {Promise}
+ */
async getTimezone() {
let timezone = await Settings.get("serverTimezone");
if (timezone) {
@@ -214,31 +272,27 @@ class UptimeKumaServer {
}
}
+ /**
+ * Get the current offset
+ * @returns {string}
+ */
getTimezoneOffset() {
return dayjs().format("Z");
}
+ /**
+ * Set the current server timezone and environment variables
+ * @param {string} timezone
+ */
async setTimezone(timezone) {
await Settings.set("serverTimezone", timezone, "general");
process.env.TZ = timezone;
dayjs.tz.setDefault(timezone);
}
- async generateMaintenanceTimeslots() {
-
- let list = await R.find("maintenance_timeslot", " generated_next = 0 AND start_date <= DATETIME('now') ");
-
- for (let maintenanceTimeslot of list) {
- let maintenance = await maintenanceTimeslot.maintenance;
- await MaintenanceTimeslot.generateTimeslot(maintenance, maintenanceTimeslot.end_date, false);
- maintenanceTimeslot.generated_next = true;
- await R.store(maintenanceTimeslot);
- }
-
- }
-
+ /** Stop the server */
async stop() {
- clearTimeout(this.generateMaintenanceTimeslotsInterval);
+
}
}
@@ -247,4 +301,5 @@ module.exports = {
};
// Must be at the end
-const MaintenanceTimeslot = require("./model/maintenance_timeslot");
+const { MonitorType } = require("./monitor-types/monitor-type");
+const { RealBrowserMonitorType } = require("./monitor-types/real-browser-monitor-type");
diff --git a/server/util-server.js b/server/util-server.js
index 4a30017a4..3c382b714 100644
--- a/server/util-server.js
+++ b/server/util-server.js
@@ -1,5 +1,5 @@
const tcpp = require("tcp-ping");
-const ping = require("ping");
+const ping = require("@louislam/ping");
const { R } = require("redbean-node");
const { log, genSecret } = require("../src/util");
const passwordHash = require("./password-hash");
@@ -14,11 +14,13 @@ const mssql = require("mssql");
const { Client } = require("pg");
const postgresConParse = require("pg-connection-string").parse;
const mysql = require("mysql2");
+const { MongoClient } = require("mongodb");
const { NtlmClient } = require("axios-ntlm");
const { Settings } = require("./settings");
const grpc = require("@grpc/grpc-js");
const protojs = require("protobufjs");
const radiusClient = require("node-radius-client");
+const redis = require("redis");
const {
dictionaries: {
rfc2865: { file, attributes },
@@ -77,15 +79,19 @@ exports.tcping = function (hostname, port) {
/**
* Ping the specified machine
* @param {string} hostname Hostname / address of machine
+ * @param {number} [size=56] Size of packet to send
* @returns {Promise} Time for ping in ms rounded to nearest integer
*/
-exports.ping = async (hostname) => {
+exports.ping = async (hostname, size = 56) => {
try {
- return await exports.pingAsync(hostname);
+ return await exports.pingAsync(hostname, false, size);
} catch (e) {
// If the host cannot be resolved, try again with ipv6
- if (e.message.includes("service not known")) {
- return await exports.pingAsync(hostname, true);
+ console.debug("ping", "IPv6 error message: " + e.message);
+
+ // As node-ping does not report a specific error for this, try again if it is an empty message with ipv6 no matter what.
+ if (!e.message) {
+ return await exports.pingAsync(hostname, true, size);
} else {
throw e;
}
@@ -96,14 +102,16 @@ exports.ping = async (hostname) => {
* Ping the specified machine
* @param {string} hostname Hostname / address of machine to ping
* @param {boolean} ipv6 Should IPv6 be used?
+ * @param {number} [size = 56] Size of ping packet to send
* @returns {Promise} Time for ping in ms rounded to nearest integer
*/
-exports.pingAsync = function (hostname, ipv6 = false) {
+exports.pingAsync = function (hostname, ipv6 = false, size = 56) {
return new Promise((resolve, reject) => {
ping.promise.probe(hostname, {
v6: ipv6,
min_reply: 1,
- timeout: 10,
+ deadline: 10,
+ packetSize: size,
}).then((res) => {
// If ping failed, it will set field to unknown
if (res.alive) {
@@ -135,7 +143,7 @@ exports.mqttAsync = function (hostname, topic, okMessage, options = {}) {
const { port, username, password, interval = 20 } = options;
// Adds MQTT protocol to the hostname if not already present
- if (!/^(?:http|mqtt)s?:\/\//.test(hostname)) {
+ if (!/^(?:http|mqtt|ws)s?:\/\//.test(hostname)) {
hostname = "mqtt://" + hostname;
}
@@ -145,10 +153,11 @@ exports.mqttAsync = function (hostname, topic, okMessage, options = {}) {
reject(new Error("Timeout"));
}, interval * 1000 * 0.8);
- log.debug("mqtt", "MQTT connecting");
+ const mqttUrl = `${hostname}:${port}`;
- let client = mqtt.connect(hostname, {
- port,
+ log.debug("mqtt", `MQTT connecting to ${mqttUrl}`);
+
+ let client = mqtt.connect(mqttUrl, {
username,
password
});
@@ -280,18 +289,32 @@ exports.postgresQuery = function (connectionString, query) {
const client = new Client({ connectionString });
- client.connect();
-
- return client.query(query)
- .then(res => {
- resolve(res);
- })
- .catch(err => {
+ client.connect((err) => {
+ if (err) {
reject(err);
- })
- .finally(() => {
client.end();
- });
+ } else {
+ // Connected here
+ try {
+ // No query provided by user, use SELECT 1
+ if (!query || (typeof query === "string" && query.trim() === "")) {
+ query = "SELECT 1";
+ }
+
+ client.query(query, (err, res) => {
+ if (err) {
+ reject(err);
+ } else {
+ resolve(res);
+ }
+ client.end();
+ });
+ } catch (e) {
+ reject(e);
+ }
+ }
+ });
+
});
};
@@ -299,24 +322,53 @@ exports.postgresQuery = function (connectionString, query) {
* Run a query on MySQL/MariaDB
* @param {string} connectionString The database connection string
* @param {string} query The query to validate the database with
- * @returns {Promise<(string[]|Object[]|Object)>}
+ * @returns {Promise<(string)>}
*/
exports.mysqlQuery = function (connectionString, query) {
return new Promise((resolve, reject) => {
const connection = mysql.createConnection(connectionString);
- connection.promise().query(query)
- .then(res => {
- resolve(res);
- })
- .catch(err => {
+
+ connection.on("error", (err) => {
+ reject(err);
+ });
+
+ connection.query(query, (err, res) => {
+ if (err) {
reject(err);
- })
- .finally(() => {
+ } else {
+ if (Array.isArray(res)) {
+ resolve("Rows: " + res.length);
+ } else {
+ resolve("No Error, but the result is not an array. Type: " + typeof res);
+ }
+ }
+
+ try {
connection.end();
- });
+ } catch (_) {
+ connection.destroy();
+ }
+ });
});
};
+/**
+ * Connect to and Ping a MongoDB database
+ * @param {string} connectionString The database connection string
+ * @returns {Promise<(string[]|Object[]|Object)>}
+ */
+exports.mongodbPing = async function (connectionString) {
+ let client = await MongoClient.connect(connectionString);
+ let dbPing = await client.db().command({ ping: 1 });
+ await client.close();
+
+ if (dbPing["ok"] === 1) {
+ return "UP";
+ } else {
+ throw Error("failed");
+ }
+};
+
/**
* Query radius server
* @param {string} hostname Hostname of radius server
@@ -354,6 +406,39 @@ exports.radius = function (
});
};
+/**
+ * Redis server ping
+ * @param {string} dsn The redis connection string
+ */
+exports.redisPingAsync = function (dsn) {
+ return new Promise((resolve, reject) => {
+ const client = redis.createClient({
+ url: dsn
+ });
+ client.on("error", (err) => {
+ if (client.isOpen) {
+ client.disconnect();
+ }
+ reject(err);
+ });
+ client.connect().then(() => {
+ if (!client.isOpen) {
+ client.emit("error", new Error("connection isn't open"));
+ }
+ client.ping().then((res, err) => {
+ if (client.isOpen) {
+ client.disconnect();
+ }
+ if (err) {
+ reject(err);
+ } else {
+ resolve(res);
+ }
+ }).catch(error => reject(error));
+ });
+ });
+};
+
/**
* Retrieve value of setting based on key
* @param {string} key Key of setting to retrieve
@@ -445,12 +530,16 @@ const parseCertificateInfo = function (info) {
// Move up the chain until loop is encountered
if (link.issuerCertificate == null) {
+ link.certType = (i === 0) ? "self-signed" : "root CA";
break;
} else if (link.issuerCertificate.fingerprint in existingList) {
+ // a root CA certificate is typically "signed by itself" (=> "self signed certificate") and thus the "issuerCertificate" is a reference to itself.
log.debug("cert", `[Last] ${link.issuerCertificate.fingerprint}`);
+ link.certType = (i === 0) ? "self-signed" : "root CA";
link.issuerCertificate = null;
break;
} else {
+ link.certType = (i === 0) ? "server" : "intermediate CA";
link = link.issuerCertificate;
}
@@ -678,15 +767,27 @@ exports.filterAndJoin = (parts, connector = "") => {
};
/**
- * Send a 403 response
+ * Send an Error response
* @param {Object} res Express response object
* @param {string} [msg=""] Message to send
*/
-module.exports.send403 = (res, msg = "") => {
- res.status(403).json({
- "status": "fail",
- "msg": msg,
- });
+module.exports.sendHttpError = (res, msg = "") => {
+ if (msg.includes("SQLITE_BUSY") || msg.includes("SQLITE_LOCKED")) {
+ res.status(503).json({
+ "status": "fail",
+ "msg": msg,
+ });
+ } else if (msg.toLowerCase().includes("not found")) {
+ res.status(404).json({
+ "status": "fail",
+ "msg": msg,
+ });
+ } else {
+ res.status(403).json({
+ "status": "fail",
+ "msg": msg,
+ });
+ }
};
function timeObjectConvertTimezone(obj, timezone, timeObjectToUTC = true) {
diff --git a/src/assets/app.scss b/src/assets/app.scss
index 7da76fff0..b648cbcd0 100644
--- a/src/assets/app.scss
+++ b/src/assets/app.scss
@@ -35,6 +35,11 @@ textarea.form-control {
color: $maintenance !important;
}
+.incident a,
+.bg-maintenance a {
+ color: inherit;
+}
+
.list-group {
border-radius: 0.75rem;
@@ -248,6 +253,11 @@ optgroup {
}
}
+ .incident a,
+ .bg-maintenance a {
+ color: inherit;
+ }
+
.form-control,
.form-control:focus,
.form-select,
@@ -256,6 +266,11 @@ optgroup {
background-color: $dark-bg2;
}
+ .form-select:disabled {
+ color: rgba($dark-font-color, 0.7);
+ background-color: $dark-bg;
+ }
+
.form-control, .form-select {
border-color: $dark-border-color;
}
@@ -546,6 +561,31 @@ h5.settings-subheading::after {
border-bottom: 1px solid $dark-border-color;
}
+
+$shadow-box-padding: 20px;
+
+.shadow-box-with-fixed-bottom-bar {
+ padding-top: $shadow-box-padding;
+ padding-bottom: 0;
+ padding-right: $shadow-box-padding;
+ padding-left: $shadow-box-padding;
+}
+
+.fixed-bottom-bar {
+ position: sticky;
+ bottom: 0;
+ margin-left: -$shadow-box-padding;
+ margin-right: -$shadow-box-padding;
+ z-index: 100;
+ background-color: rgba(white, 0.2);
+ backdrop-filter: blur(2px);
+ border-radius: 0 0 10px 10px;
+
+ .dark & {
+ background-color: rgba($dark-header-bg, 0.9);
+ }
+}
+
// Localization
@import "localization.scss";
diff --git a/src/assets/localization.scss b/src/assets/localization.scss
index f9a28d8a4..97be37785 100644
--- a/src/assets/localization.scss
+++ b/src/assets/localization.scss
@@ -2,4 +2,8 @@ html[lang='fa'] {
#app {
font-family: 'IRANSans', 'Iranian Sans','B Nazanin', 'Tahoma', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji;
}
-}
\ No newline at end of file
+}
+
+ul.multiselect__content {
+ padding-left: 0 !important;
+}
diff --git a/src/assets/multiselect.scss b/src/assets/multiselect.scss
index 53b47c16e..9ea04ca07 100644
--- a/src/assets/multiselect.scss
+++ b/src/assets/multiselect.scss
@@ -1,6 +1,12 @@
@import "vars.scss";
@import "node_modules/vue-multiselect/dist/vue-multiselect";
+.multiselect {
+ .dark & {
+ color: $dark-font-color;
+ }
+}
+
.multiselect__tags {
border-radius: 1.5rem;
border: 1px solid #ced4da;
@@ -14,10 +20,12 @@
.multiselect__option--highlight {
background: $primary !important;
+ color: $dark-font-color2 !important;
}
.multiselect__option--highlight::after {
background: $primary !important;
+ color: $dark-font-color2 !important;
}
.multiselect__tag {
diff --git a/src/components/APIKeyDialog.vue b/src/components/APIKeyDialog.vue
new file mode 100644
index 000000000..4bba69fec
--- /dev/null
+++ b/src/components/APIKeyDialog.vue
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
diff --git a/src/components/BadgeGeneratorDialog.vue b/src/components/BadgeGeneratorDialog.vue
new file mode 100644
index 000000000..9e073e39a
--- /dev/null
+++ b/src/components/BadgeGeneratorDialog.vue
@@ -0,0 +1,299 @@
+
+
+
+
+
+
+
diff --git a/src/components/Confirm.vue b/src/components/Confirm.vue
index 1a1addc6e..4bc2217cb 100644
--- a/src/components/Confirm.vue
+++ b/src/components/Confirm.vue
@@ -4,7 +4,7 @@
@@ -15,7 +15,7 @@
{{ yesText }}
-
+
{{ noText }}
@@ -44,8 +44,13 @@ export default {
type: String,
default: "No",
},
+ /** Title to show on modal. Defaults to translated version of "Config" */
+ title: {
+ type: String,
+ default: null,
+ }
},
- emits: [ "yes" ],
+ emits: [ "yes", "no" ],
data: () => ({
modal: null,
}),
@@ -63,6 +68,12 @@ export default {
yes() {
this.$emit("yes");
},
+ /**
+ * @emits string "no" Notify the parent when No is pressed
+ */
+ no() {
+ this.$emit("no");
+ }
},
};
diff --git a/src/components/CopyableInput.vue b/src/components/CopyableInput.vue
index 2e1dee766..943193f4d 100644
--- a/src/components/CopyableInput.vue
+++ b/src/components/CopyableInput.vue
@@ -13,6 +13,9 @@
:disabled="disabled"
>
+
+
+
@@ -111,24 +114,19 @@ export default {
}, 3000);
// navigator clipboard api needs a secure context (https)
+ // For http, use the text area method (else part)
if (navigator.clipboard && window.isSecureContext) {
// navigator clipboard api method'
return navigator.clipboard.writeText(textToCopy);
} else {
// text area method
- let textArea = document.createElement("textarea");
+ let textArea = this.$refs.hiddenTextarea;
textArea.value = textToCopy;
- // make the textarea out of viewport
- textArea.style.position = "fixed";
- textArea.style.left = "-999999px";
- textArea.style.top = "-999999px";
- document.body.appendChild(textArea);
textArea.focus();
textArea.select();
return new Promise((res, rej) => {
// here the magic happens
document.execCommand("copy") ? res() : rej();
- textArea.remove();
});
}
}
diff --git a/src/components/DockerHostDialog.vue b/src/components/DockerHostDialog.vue
index 50ffa49c1..335e8f2b3 100644
--- a/src/components/DockerHostDialog.vue
+++ b/src/components/DockerHostDialog.vue
@@ -73,7 +73,7 @@ export default {
emits: [ "added" ],
data() {
return {
- model: null,
+ modal: null,
processing: false,
id: null,
connectionTypes: [ "socket", "tcp" ],
@@ -91,11 +91,16 @@ export default {
},
methods: {
+ /** Confirm deletion of docker host */
deleteConfirm() {
this.modal.hide();
this.$refs.confirmDelete.show();
},
+ /**
+ * Show specified docker host
+ * @param {number} dockerHostID
+ */
show(dockerHostID) {
if (dockerHostID) {
let found = false;
@@ -126,6 +131,7 @@ export default {
this.modal.show();
},
+ /** Add docker host */
submit() {
this.processing = true;
this.$root.getSocket().emit("addDockerHost", this.dockerHost, this.id, (res) => {
@@ -144,6 +150,7 @@ export default {
});
},
+ /** Test the docker host */
test() {
this.processing = true;
this.$root.getSocket().emit("testDockerHost", this.dockerHost, (res) => {
@@ -152,6 +159,7 @@ export default {
});
},
+ /** Delete this docker host */
deleteDockerHost() {
this.processing = true;
this.$root.getSocket().emit("deleteDockerHost", this.id, (res) => {
diff --git a/src/components/MaintenanceTime.vue b/src/components/MaintenanceTime.vue
index 07d657400..ba8855534 100644
--- a/src/components/MaintenanceTime.vue
+++ b/src/components/MaintenanceTime.vue
@@ -3,16 +3,23 @@
{{ $t("Manual") }}
-
- {{ maintenance.timeslotList[0].startDateServerTimezone }}
-
-
- {{ maintenance.timeslotList[0].endDateServerTimezone }}
- (UTC{{ maintenance.timeslotList[0].serverTimezoneOffset }})
+
+
+ {{ startDateTime }}
+ -
+ {{ endDateTime }}
+
+
+ UTC{{ maintenance.timezoneOffset }} {{ maintenance.timezone }}
+
@@ -31,6 +46,7 @@ export default {
background-color: rgba(255, 255, 255, 0.5);
border-radius: 20px;
padding: 0 10px;
+ margin-right: 5px;
.to {
margin: 0 6px;
diff --git a/src/components/MonitorList.vue b/src/components/MonitorList.vue
index 115660a5e..c69169ccf 100644
--- a/src/components/MonitorList.vue
+++ b/src/components/MonitorList.vue
@@ -19,43 +19,18 @@
{{ $t("No Monitors, please") }} {{ $t("add one") }}
-
-
-
-
-
- {{ item.name }}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/src/components/MonitorSettingDialog.vue b/src/components/MonitorSettingDialog.vue
new file mode 100644
index 000000000..a6976853c
--- /dev/null
+++ b/src/components/MonitorSettingDialog.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+ {{ $t("Open Badge Generator") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/NotificationDialog.vue b/src/components/NotificationDialog.vue
index 0ca95c222..856d6f537 100644
--- a/src/components/NotificationDialog.vue
+++ b/src/components/NotificationDialog.vue
@@ -13,7 +13,10 @@
{{ $t("Notification Type") }}
- {{ $t(type) }}
+ {{ name }}
+
+ {{ name }}
+
@@ -67,7 +70,7 @@
-
+
+
diff --git a/src/components/TagsManager.vue b/src/components/TagsManager.vue
index 8481fdfeb..ac374813d 100644
--- a/src/components/TagsManager.vue
+++ b/src/components/TagsManager.vue
@@ -130,16 +130,31 @@
import { Modal } from "bootstrap";
import VueMultiselect from "vue-multiselect";
import { useToast } from "vue-toastification";
+import { colorOptions } from "../util-frontend";
import Tag from "../components/Tag.vue";
const toast = useToast();
+/**
+ * @typedef Tag
+ * @type {object}
+ * @property {number | undefined} id
+ * @property {number | undefined} monitor_id
+ * @property {number | undefined} tag_id
+ * @property {string} value
+ * @property {string} name
+ * @property {string} color
+ * @property {boolean | undefined} new
+ */
+
export default {
components: {
Tag,
VueMultiselect,
},
props: {
- /** Array of tags to be pre-selected */
+ /** Array of tags to be pre-selected
+ * @type {Tag[]}
+ */
preSelectedTags: {
type: Array,
default: () => [],
@@ -147,10 +162,14 @@ export default {
},
data() {
return {
+ /** @type {Modal | null} */
modal: null,
+ /** @type {Tag[]} */
existingTags: [],
processing: false,
+ /** @type {Tag[]} */
newTags: [],
+ /** @type {Tag[]} */
deleteTags: [],
newDraftTag: {
name: null,
@@ -176,24 +195,7 @@ export default {
return this.preSelectedTags.concat(this.newTags).filter(tag => !this.deleteTags.find(monitorTag => monitorTag.id === tag.id));
},
colorOptions() {
- return [
- { name: this.$t("Gray"),
- color: "#4B5563" },
- { name: this.$t("Red"),
- color: "#DC2626" },
- { name: this.$t("Orange"),
- color: "#D97706" },
- { name: this.$t("Green"),
- color: "#059669" },
- { name: this.$t("Blue"),
- color: "#2563EB" },
- { name: this.$t("Indigo"),
- color: "#4F46E5" },
- { name: this.$t("Purple"),
- color: "#7C3AED" },
- { name: this.$t("Pink"),
- color: "#DB2777" },
- ];
+ return colorOptions(this);
},
validateDraftTag() {
let nameInvalid = false;
diff --git a/src/components/Uptime.vue b/src/components/Uptime.vue
index df9bd47ac..afb82fa5e 100644
--- a/src/components/Uptime.vue
+++ b/src/components/Uptime.vue
@@ -3,6 +3,8 @@
diff --git a/src/components/notifications/Ntfy.vue b/src/components/notifications/Ntfy.vue
index df21c5c5a..57fac671b 100644
--- a/src/components/notifications/Ntfy.vue
+++ b/src/components/notifications/Ntfy.vue
@@ -16,17 +16,29 @@
- {{ $t("Username") }} ({{ $t("Optional") }})
+ {{ $t("ntfyAuthenticationMethod") }}
+
+ {{ name }}
+
+
+
-
-
{{ $t("Password") }} ({{ $t("Optional") }})
+
+
+
{{ $t("Access Token") }}
+
+
+
+
{{ $t("IconUrl") }}
@@ -40,11 +52,29 @@ export default {
components: {
HiddenInput,
},
+ computed: {
+ authenticationMethods() {
+ return {
+ none: this.$t("None"),
+ usernamePassword: this.$t("ntfyUsernameAndPassword"),
+ accessToken: this.$t("Access Token")
+ };
+ }
+ },
mounted() {
if (typeof this.$parent.notification.ntfyPriority === "undefined") {
this.$parent.notification.ntfyserverurl = "https://ntfy.sh";
this.$parent.notification.ntfyPriority = 5;
}
+
+ // Handling notifications that added before 1.22.0
+ if (typeof this.$parent.notification.ntfyAuthenticationMethod === "undefined") {
+ if (!this.$parent.notification.ntfyusername) {
+ this.$parent.notification.ntfyAuthenticationMethod = "none";
+ } else {
+ this.$parent.notification.ntfyAuthenticationMethod = "usernamePassword";
+ }
+ }
},
};
diff --git a/src/components/notifications/Opsgenie.vue b/src/components/notifications/Opsgenie.vue
new file mode 100644
index 000000000..3f07d0528
--- /dev/null
+++ b/src/components/notifications/Opsgenie.vue
@@ -0,0 +1,36 @@
+
+
+ {{ $t("Region") }}*
+
+
+ US (Default)
+
+
+ EU
+
+
+
+
+ {{ $t("API Key") }}*
+
+
+
+ {{ $t("Priority") }}
+
+
+
+
+
+
diff --git a/src/components/notifications/PagerTree.vue b/src/components/notifications/PagerTree.vue
new file mode 100644
index 000000000..0121f65ef
--- /dev/null
+++ b/src/components/notifications/PagerTree.vue
@@ -0,0 +1,31 @@
+
+
+
+ {{ $t("pagertreeUrgency") }}
+
+
+
+ {{ $t("pagertreeResolve") }}
+
+
+
+
+
diff --git a/src/components/notifications/PromoSMS.vue b/src/components/notifications/PromoSMS.vue
index 03c02222d..15ed241b7 100644
--- a/src/components/notifications/PromoSMS.vue
+++ b/src/components/notifications/PromoSMS.vue
@@ -26,6 +26,10 @@
{{ $t("promosmsSMSSender") }}
+
+
+ {{ $t("promosmsAllowLongSMS") }}
+
diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue
index 9daf31ac6..a7e46fded 100644
--- a/src/components/notifications/Telegram.vue
+++ b/src/components/notifications/Telegram.vue
@@ -28,6 +28,30 @@
{{ telegramGetUpdatesURL("masked") }}
+
+ {{ $t("telegramMessageThreadID") }}
+
+ {{ $t("telegramMessageThreadIDDescription") }}
+
+
+
+ {{ $t("telegramSendSilently") }}
+
+
+
+ {{ $t("telegramSendSilentlyDescription") }}
+
+
+
+
+
+
+ {{ $t("telegramProtectContent") }}
+
+
+
+ {{ $t("telegramProtectContentDescription") }}
+
@@ -42,6 +66,11 @@ export default {
HiddenInput,
},
methods: {
+ /**
+ * Get the URL for telegram updates
+ * @param {string} [mode=masked] Should the token be masked?
+ * @returns {string} formatted URL
+ */
telegramGetUpdatesURL(mode = "masked") {
let token = `<${this.$t("YOUR BOT TOKEN HERE")}>`;
@@ -55,6 +84,8 @@ export default {
return `https://api.telegram.org/bot${token}/getUpdates`;
},
+
+ /** Get the telegram chat ID */
async autoGetTelegramChatID() {
try {
let res = await axios.get(this.telegramGetUpdatesURL("withToken"));
diff --git a/src/components/notifications/Twilio.vue b/src/components/notifications/Twilio.vue
new file mode 100644
index 000000000..3edf1e3df
--- /dev/null
+++ b/src/components/notifications/Twilio.vue
@@ -0,0 +1,27 @@
+
+
+ {{ $t("Account SID") }}
+
+
+
+
+ {{ $t("Auth Token") }}
+
+
+
+
+ {{ $t("From Number") }}
+
+
+
+
+ {{ $t("To Number") }}
+
+
+
+
+
diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js
index 810cdf03e..7b5e6b6c7 100644
--- a/src/components/notifications/index.js
+++ b/src/components/notifications/index.js
@@ -21,7 +21,9 @@ import Mattermost from "./Mattermost.vue";
import Ntfy from "./Ntfy.vue";
import Octopush from "./Octopush.vue";
import OneBot from "./OneBot.vue";
+import Opsgenie from "./Opsgenie.vue";
import PagerDuty from "./PagerDuty.vue";
+import PagerTree from "./PagerTree.vue";
import PromoSMS from "./PromoSMS.vue";
import Pushbullet from "./Pushbullet.vue";
import PushDeer from "./PushDeer.vue";
@@ -40,10 +42,12 @@ import STMP from "./SMTP.vue";
import Teams from "./Teams.vue";
import TechulusPush from "./TechulusPush.vue";
import Telegram from "./Telegram.vue";
+import Twilio from "./Twilio.vue";
import Webhook from "./Webhook.vue";
import WeCom from "./WeCom.vue";
import GoAlert from "./GoAlert.vue";
import ZohoCliq from "./ZohoCliq.vue";
+import Splunk from "./Splunk.vue";
/**
* Manage all notification form.
@@ -74,7 +78,9 @@ const NotificationFormList = {
"ntfy": Ntfy,
"octopush": Octopush,
"OneBot": OneBot,
+ "Opsgenie": Opsgenie,
"PagerDuty": PagerDuty,
+ "PagerTree": PagerTree,
"promosms": PromoSMS,
"pushbullet": Pushbullet,
"PushByTechulus": TechulusPush,
@@ -92,6 +98,8 @@ const NotificationFormList = {
"stackfield": Stackfield,
"teams": Teams,
"telegram": Telegram,
+ "twilio": Twilio,
+ "Splunk": Splunk,
"webhook": Webhook,
"WeCom": WeCom,
"GoAlert": GoAlert,
diff --git a/src/components/settings/APIKeys.vue b/src/components/settings/APIKeys.vue
new file mode 100644
index 000000000..757789937
--- /dev/null
+++ b/src/components/settings/APIKeys.vue
@@ -0,0 +1,257 @@
+
+
+
+
+ {{ $t("Add API Key") }}
+
+
+
+
+
+ {{ $t("No API Keys") }}
+
+
+
+
+
+
+
{{ item.name }}
+
+ {{ $t("apiKey-" + item.status) }}
+
+
+ {{ $t("Created") }}: {{ item.createdDate }}
+
+
+ {{ $t("Expires") }}: {{ item.expires || $t("Never") }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("disableAPIKeyMsg") }}
+
+
+
+ {{ $t("deleteAPIKeyMsg") }}
+
+
+
+
+
+
+
+
+
diff --git a/src/components/settings/General.vue b/src/components/settings/General.vue
index 1f6964155..9f9a88b65 100644
--- a/src/components/settings/General.vue
+++ b/src/components/settings/General.vue
@@ -190,6 +190,30 @@
+
+
+
+ {{ $t("chromeExecutable") }}
+
+
+
+
+
+ {{ $t("Test") }}
+
+
+
+
+ {{ $t("chromeExecutableDescription") }}
+
+
+
@@ -241,6 +265,12 @@ export default {
autoGetPrimaryBaseURL() {
this.settings.primaryBaseURL = location.protocol + "//" + location.host;
},
+
+ testChrome() {
+ this.$root.getSocket().emit("testChrome", this.settings.chromeExecutable, (res) => {
+ this.$root.toastRes(res);
+ });
+ },
},
};
diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue
index 330fe9ca5..7d13ea90e 100644
--- a/src/components/settings/Security.vue
+++ b/src/components/settings/Security.vue
@@ -191,6 +191,7 @@ export default {
location.reload();
},
+ /** Show confirmation dialog for disable auth */
confirmDisableAuth() {
this.$refs.confirmDisableAuth.show();
},
diff --git a/src/components/settings/Tags.vue b/src/components/settings/Tags.vue
new file mode 100644
index 000000000..4c9853ed3
--- /dev/null
+++ b/src/components/settings/Tags.vue
@@ -0,0 +1,177 @@
+
+
+
+ {{ $t("Add New Tag") }}
+
+
+
+
+
+
+ {{ $t("confirmDeleteTagMsg") }}
+
+
+
+
+
+
+
diff --git a/src/i18n.js b/src/i18n.js
index aff60c75f..c33b523e2 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -1,7 +1,8 @@
import { createI18n } from "vue-i18n/dist/vue-i18n.esm-browser.prod.js";
-import en from "./languages/en";
+import en from "./lang/en.json";
const languageList = {
+ "ar-SY": "العربية",
"cs-CZ": "Čeština",
"zh-HK": "繁體中文 (香港)",
"bg-BG": "Български",
@@ -14,7 +15,9 @@ const languageList = {
"fa": "Farsi",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasileiro)",
+ "fi": "Suomi",
"fr-FR": "Français (France)",
+ "he-IL": "עברית",
"hu": "Magyar",
"hr-HR": "Hrvatski",
"it-IT": "Italiano (Italian)",
@@ -33,9 +36,13 @@ const languageList = {
"et-EE": "eesti",
"vi-VN": "Tiếng Việt",
"zh-TW": "繁體中文 (台灣)",
- "uk-UA": "Український",
+ "uk-UA": "Українська",
"th-TH": "ไทย",
"el-GR": "Ελληνικά",
+ "yue": "繁體中文 (廣東話 / 粵語)",
+ "ro": "Limba română",
+ "ur": "Urdu",
+ "ge": "ქართული"
};
let messages = {
@@ -48,7 +55,7 @@ for (let lang in languageList) {
};
}
-const rtlLangs = [ "fa" ];
+const rtlLangs = [ "fa", "ar-SY", "ur" ];
export const currentLocale = () => localStorage.locale
|| languageList[navigator.language] && navigator.language
diff --git a/src/icon.js b/src/icon.js
index b38bef3ce..7bdfe1ca0 100644
--- a/src/icon.js
+++ b/src/icon.js
@@ -3,6 +3,9 @@ import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
// Add Free Font Awesome Icons
// https://fontawesome.com/v5.15/icons?d=gallery&p=2&s=solid&m=free
+// In order to add an icon, you have to:
+// 1) add the icon name in the import statement below;
+// 2) add the icon name to the library.add() statement below.
import {
faArrowAltCircleUp,
faCog,
@@ -44,6 +47,9 @@ import {
faWrench,
faHeartbeat,
faFilter,
+ faInfoCircle,
+ faClone,
+ faCertificate,
} from "@fortawesome/free-solid-svg-icons";
library.add(
@@ -88,6 +94,9 @@ library.add(
faWrench,
faHeartbeat,
faFilter,
+ faInfoCircle,
+ faClone,
+ faCertificate,
);
export { FontAwesomeIcon };
diff --git a/src/lang/README.md b/src/lang/README.md
new file mode 100644
index 000000000..aafda2de9
--- /dev/null
+++ b/src/lang/README.md
@@ -0,0 +1,18 @@
+# How to translate
+
+(2023-01-24 Updated)
+
+1. Go to [https://weblate.kuma.pet](https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/)
+2. Register an account on Weblate
+3. Make sure your GitHub email is matched with Weblate's account, so that it could show you as a contributor on GitHub
+4. Choose your language on Weblate and start translating.
+
+# How to add a new language in the dropdown
+
+1. Add your language at https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/
+2. Find the language code (You can find it at the end of the URL)
+3. Go to https://github.com/louislam/uptime-kuma/blob/master/src/i18n.js and click `Edit` icon
+4. Add your language at the end of `languageList`, format: `"zh-TW": "繁體中文 (台灣)",`
+5. Commit and make a pull request for me to approve
+
+If you do not have programming skills, let me know in [the issues section](https://github.com/louislam/uptime-kuma/issues). I will assist you. 😏
diff --git a/src/lang/ar-SY.json b/src/lang/ar-SY.json
new file mode 100644
index 000000000..a83c9a3c5
--- /dev/null
+++ b/src/lang/ar-SY.json
@@ -0,0 +1,716 @@
+{
+ "languageName": "إنجليزي",
+ "checkEverySecond": "تحقق من كل {0} ثانية",
+ "retryCheckEverySecond": "أعد محاولة كل {0} ثانية",
+ "resendEveryXTimes": "إعادة تقديم كل {0} مرات",
+ "resendDisabled": "إعادة الالتزام بالتعطيل",
+ "retriesDescription": "الحد الأقصى لإعادة المحاولة قبل تمييز الخدمة على أنها لأسفل وإرسال إشعار",
+ "ignoreTLSError": "تجاهل خطأ TLS/SSL لمواقع HTTPS",
+ "upsideDownModeDescription": "اقلب الحالة رأسًا على عقب. إذا كانت الخدمة قابلة للوصول إلى أسفل.",
+ "maxRedirectDescription": "الحد الأقصى لعدد إعادة التوجيه لمتابعة. ضبط على 0 لتعطيل إعادة التوجيه.",
+ "enableGRPCTls": "السماح لإرسال طلب GRPC مع اتصال TLS",
+ "grpcMethodDescription": "يتم تحويل اسم الطريقة إلى تنسيق Cammelcase مثل Sayhello Check وما إلى ذلك.",
+ "acceptedStatusCodesDescription": "حدد رموز الحالة التي تعتبر استجابة ناجحة.",
+ "Maintenance": "صيانة",
+ "statusMaintenance": "صيانة",
+ "Schedule maintenance": "جدولة الصيانة",
+ "Affected Monitors": "الشاشات المتأثرة",
+ "Pick Affected Monitors...": "اختر الشاشات المتأثرة …",
+ "Start of maintenance": "بداية الصيانة",
+ "All Status Pages": "جميع صفحات الحالة",
+ "Select status pages...": "حدد صفحات الحالة …",
+ "recurringIntervalMessage": "ركض مرة واحدة كل يوم | قم بالتشغيل مرة واحدة كل يوم {0}",
+ "affectedMonitorsDescription": "حدد المراقبين المتأثرة بالصيانة الحالية",
+ "affectedStatusPages": "إظهار رسالة الصيانة هذه على صفحات الحالة المحددة",
+ "atLeastOneMonitor": "حدد شاشة واحدة على الأقل من المتأثرين",
+ "passwordNotMatchMsg": "كلمة المرور المتكررة لا تتطابق.",
+ "notificationDescription": "يجب تعيين الإخطارات إلى شاشة للعمل.",
+ "keywordDescription": "ابحث في الكلمة الرئيسية في استجابة HTML العادية أو JSON. البحث حساس للحالة.",
+ "pauseDashboardHome": "وقفة",
+ "deleteMonitorMsg": "هل أنت متأكد من حذف هذا الشاشة؟",
+ "deleteMaintenanceMsg": "هل أنت متأكد من حذف هذه الصيانة؟",
+ "deleteNotificationMsg": "هل أنت متأكد من حذف هذا الإشعار لجميع الشاشات؟",
+ "dnsPortDescription": "منفذ خادم DNS. الافتراضيات إلى 53. يمكنك تغيير المنفذ في أي وقت.",
+ "resolverserverDescription": "CloudFlare هو الخادم الافتراضي. يمكنك تغيير خادم المحوّل في أي وقت.",
+ "rrtypeDescription": "حدد نوع RR الذي تريد مراقبته",
+ "pauseMonitorMsg": "هل أنت متأكد من أن تتوقف مؤقتًا؟",
+ "enableDefaultNotificationDescription": "سيتم تمكين هذا الإشعار افتراضيًا للشاشات الجديدة. لا يزال بإمكانك تعطيل الإخطار بشكل منفصل لكل شاشة.",
+ "clearEventsMsg": "هل أنت متأكد من حذف جميع الأحداث لهذا الشاشة؟",
+ "clearHeartbeatsMsg": "هل أنت متأكد من حذف جميع دقات القلب لهذا الشاشة؟",
+ "confirmClearStatisticsMsg": "هل أنت متأكد من أنك تريد حذف جميع الإحصائيات؟",
+ "importHandleDescription": "اختر 'تخطي موجود' إذا كنت تريد تخطي كل شاشة أو إشعار بنفس الاسم. 'الكتابة فوق' سوف يحذف كل شاشة وإخطار موجود.",
+ "confirmImportMsg": "هل أنت متأكد من أنك تريد استيراد النسخ الاحتياطي؟ يرجى التحقق من أنك حددت خيار الاستيراد الصحيح.",
+ "twoFAVerifyLabel": "الرجاء إدخال الرمز المميز الخاص بك للتحقق من 2FA",
+ "tokenValidSettingsMsg": "الرمز المميز صالح! يمكنك الآن حفظ إعدادات 2FA.",
+ "confirmEnableTwoFAMsg": "هل أنت متأكد من أنك تريد تمكين 2FA؟",
+ "confirmDisableTwoFAMsg": "هل أنت متأكد من أنك تريد تعطيل 2FA؟",
+ "Settings": "إعدادات",
+ "Dashboard": "لوحة التحكم",
+ "New Update": "تحديث جديد",
+ "Language": "لغة",
+ "Appearance": "مظهر",
+ "Theme": "سمة",
+ "General": "عام",
+ "Primary Base URL": "عنوان URL الأساسي",
+ "Version": "الإصدار",
+ "Check Update On GitHub": "تحقق من التحديث على GitHub",
+ "List": "قائمة",
+ "Add": "يضيف",
+ "Add New Monitor": "أضف شاشة جديدة",
+ "Quick Stats": "إحصائيات سريعة",
+ "Up": "فوق",
+ "Down": "أسفل",
+ "Pending": "قيد الانتظار",
+ "Unknown": "غير معرّف",
+ "Pause": "إيقاف مؤقت",
+ "Name": "الاسم",
+ "Status": "الحالة",
+ "DateTime": "الوقت والتاريخ",
+ "Message": "الرسالة",
+ "No important events": "لا توجد أحداث مهمة",
+ "Resume": "استمرار",
+ "Edit": "تعديل",
+ "Delete": "حذف",
+ "Current": "حالي",
+ "Uptime": "مدة التشغيل",
+ "Cert Exp.": "تصدير الشهادة",
+ "Monitor": "مراقب | مراقبات",
+ "day": "يوم | أيام",
+ "-day": "-يوم",
+ "hour": "ساعة",
+ "-hour": "-ساعة",
+ "Response": "استجاية",
+ "Ping": "بينغ",
+ "Monitor Type": "نوع المراقب",
+ "Keyword": "كلمة مفتاحية",
+ "Friendly Name": "اسم معروف",
+ "URL": "عنوان URL",
+ "Hostname": "اسم المضيف",
+ "Port": "المنفذ",
+ "Heartbeat Interval": "فاصل نبضات القلب",
+ "Retries": "يحاول مجدداً",
+ "Heartbeat Retry Interval": "الفاصل الزمني لإعادة محاكمة نبضات القلب",
+ "Resend Notification if Down X times consecutively": "إعادة تقديم الإخطار إذا انخفض x مرات بالتالي",
+ "Advanced": "متقدم",
+ "Upside Down Mode": "وضع أسفل أسفل",
+ "Max. Redirects": "الأعلى. إعادة التوجيه",
+ "Accepted Status Codes": "رموز الحالة المقبولة",
+ "Push URL": "دفع عنوان URL",
+ "needPushEvery": "يجب عليك استدعاء عنوان URL هذا كل ثانية.",
+ "pushOptionalParams": "المعلمات الاختيارية",
+ "Save": "يحفظ",
+ "Notifications": "إشعارات",
+ "Not available, please setup.": "غير متوفر من فضلك الإعداد.",
+ "Setup Notification": "إشعار الإعداد",
+ "Light": "نور",
+ "Dark": "داكن",
+ "Auto": "آلي",
+ "Theme - Heartbeat Bar": "موضوع - بار نبضات",
+ "Normal": "طبيعي",
+ "Bottom": "الأسفل",
+ "None": "لا أحد",
+ "Timezone": "وحدة زمنية",
+ "Search Engine Visibility": "محرك بحث الرؤية",
+ "Allow indexing": "السماح الفهرسة",
+ "Discourage search engines from indexing site": "تثبيط محركات البحث من موقع الفهرسة",
+ "Change Password": "غير كلمة السر",
+ "Current Password": "كلمة المرور الحالي",
+ "New Password": "كلمة سر جديدة",
+ "Repeat New Password": "كرر كلمة المرور الجديدة",
+ "Update Password": "تطوير كلمة السر",
+ "Disable Auth": "تعطيل المصادقة",
+ "Enable Auth": "تمكين المصادقة",
+ "disableauth.message1": "هل أنت متأكد من أن تعطيل المصادقة ؟",
+ "disableauth.message2": "تم تصميمه للسيناريوهات حيث تنوي تنفيذ مصادقة الطرف الثالث أمام كوما في وقت التشغيل مثل CloudFlare Access Authelia أو آليات المصادقة الأخرى.",
+ "Please use this option carefully!": "الرجاء استخدام هذا الخيار بعناية!",
+ "Logout": "تسجيل خروج",
+ "Leave": "غادر",
+ "I understand, please disable": "أنا أفهم من فضلك تعطيل",
+ "Confirm": "يتأكد",
+ "Yes": "نعم",
+ "No": "رقم",
+ "Username": "اسم المستخدم",
+ "Password": "كلمة المرور",
+ "Remember me": "تذكرنى",
+ "Login": "تسجيل الدخول",
+ "No Monitors, please": "لا شاشات من فضلك",
+ "add one": "أضف واحدا",
+ "Notification Type": "نوع إعلام",
+ "Email": "بريد إلكتروني",
+ "Test": "امتحان",
+ "Certificate Info": "معلومات الشهادة",
+ "Resolver Server": "خادم Resolver",
+ "Resource Record Type": "نوع سجل الموارد",
+ "Last Result": "اخر نتيجة",
+ "Create your admin account": "إنشاء حساب المسؤول الخاص بك",
+ "Repeat Password": "اعد كلمة السر",
+ "Import Backup": "استيراد النسخ الاحتياطي",
+ "Export Backup": "النسخ الاحتياطي تصدير",
+ "Export": "يصدّر",
+ "Import": "يستورد",
+ "respTime": "resp. الوقت (MS)",
+ "notAvailableShort": "ن/أ",
+ "Default enabled": "التمكين الافتراضي",
+ "Apply on all existing monitors": "تنطبق على جميع الشاشات الحالية",
+ "Create": "خلق",
+ "Clear Data": "امسح البيانات",
+ "Events": "الأحداث",
+ "Heartbeats": "نبضات القلب",
+ "Auto Get": "الحصول على السيارات",
+ "backupDescription": "يمكنك النسخ الاحتياطي لجميع الشاشات والإشعارات في ملف JSON.",
+ "backupDescription2": "ملحوظة",
+ "backupDescription3": "يتم تضمين البيانات الحساسة مثل الرموز الإخطار في ملف التصدير ؛ يرجى تخزين التصدير بشكل آمن.",
+ "alertNoFile": "الرجاء تحديد ملف للاستيراد.",
+ "alertWrongFileType": "الرجاء تحديد ملف JSON.",
+ "Clear all statistics": "مسح جميع الإحصاءات",
+ "Skip existing": "تخطي الموجود",
+ "Overwrite": "الكتابة فوق",
+ "Options": "خيارات",
+ "Keep both": "احتفظ بكليهما",
+ "Verify Token": "تحقق من الرمز المميز",
+ "Setup 2FA": "الإعداد 2FA",
+ "Enable 2FA": "تمكين 2FA",
+ "Disable 2FA": "تعطيل 2FA",
+ "2FA Settings": "2FA إعدادات",
+ "Two Factor Authentication": "توثيق ذو عاملين",
+ "Active": "نشيط",
+ "Inactive": "غير نشط",
+ "Token": "رمز",
+ "Show URI": "أظهر URI",
+ "Tags": "العلامات",
+ "Add New below or Select...": "إضافة جديد أدناه أو تحديد …",
+ "Tag with this name already exist.": "علامة مع هذا الاسم موجود بالفعل.",
+ "Tag with this value already exist.": "علامة مع هذه القيمة موجودة بالفعل.",
+ "color": "اللون",
+ "value (optional)": "القيمة (اختياري)",
+ "Gray": "رمادي",
+ "Red": "أحمر",
+ "Orange": "البرتقالي",
+ "Green": "لون أخضر",
+ "Blue": "أزرق",
+ "Indigo": "النيلي",
+ "Purple": "نفسجي",
+ "Pink": "لون القرنفل",
+ "Custom": "العادة",
+ "Search...": "يبحث…",
+ "Avg. Ping": "متوسط. بينغ",
+ "Avg. Response": "متوسط. إجابة",
+ "Entry Page": "صفحة الدخول",
+ "statusPageNothing": "لا شيء هنا الرجاء إضافة مجموعة أو شاشة.",
+ "No Services": "لا توجد خدمات",
+ "All Systems Operational": "جميع الأنظمة التشغيلية",
+ "Partially Degraded Service": "الخدمة المتدهورة جزئيا",
+ "Degraded Service": "خدمة متدهورة",
+ "Add Group": "أضف مجموعة",
+ "Add a monitor": "إضافة شاشة",
+ "Edit Status Page": "تحرير صفحة الحالة",
+ "Go to Dashboard": "الذهاب إلى لوحة القيادة",
+ "Status Page": "صفحة الحالة",
+ "Status Pages": "صفحات الحالة",
+ "defaultNotificationName": "تنبيه {الإخطار} ({number})",
+ "here": "هنا",
+ "Required": "مطلوب",
+ "telegram": "برقية",
+ "ZohoCliq": "Zohocliq",
+ "Bot Token": "رمز الروبوت",
+ "wayToGetTelegramToken": "يمكنك الحصول على رمز من {0}.",
+ "Chat ID": "معرف الدردشة",
+ "telegramMessageThreadID": "معرف المواضيع",
+ "supportTelegramChatID": "دعم الدردشة المباشرة / معرف الدردشة للقناة",
+ "wayToGetTelegramChatID": "يمكنك الحصول على معرف الدردشة الخاص بك عن طريق إرسال رسالة إلى الروبوت والانتقال إلى عنوان URL هذا لعرض Chat_id",
+ "YOUR BOT TOKEN HERE": "رمز الروبوت الخاص بك هنا",
+ "chatIDNotFound": "لم يتم العثور على معرف الدردشة ؛ الرجاء إرسال رسالة إلى هذا الروبوت أولاً",
+ "webhook": "webhook",
+ "Post URL": "بعد عنوان URL",
+ "Content Type": "نوع المحتوى",
+ "webhookJsonDesc": "{0} مفيد لأي خوادم HTTP الحديثة مثل Express.js",
+ "webhookFormDataDesc": "{multipart} مفيد لـ PHP. سيحتاج JSON إلى تحليل {decodefunction}",
+ "webhookAdditionalHeadersTitle": "رؤوس إضافية",
+ "webhookAdditionalHeadersDesc": "يحدد رؤوس إضافية مرسلة مع webhook.",
+ "smtp": "البريد الإلكتروني (SMTP)",
+ "secureOptionNone": "لا شيء / startTls (25 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "تجاهل خطأ TLS",
+ "From Email": "من البريد الإلكترونى",
+ "emailCustomSubject": "موضوع مخصص",
+ "To Email": "للبريد الإلكتروني",
+ "smtpCC": "نسخة",
+ "smtpBCC": "BCC",
+ "discord": "خلاف",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "يمكنك الحصول على هذا بالانتقال إلى إعدادات الخادم -> عمليات التكامل -> عرض الخطافات على الويب -> خطاف ويب جديد",
+ "Bot Display Name": "اسم عرض الروبوت",
+ "Prefix Custom Message": "بادئة رسالة مخصصة",
+ "Hello @everyone is...": "مرحبًا {'@'} الجميع…",
+ "teams": "فرق Microsoft",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "يمكنك معرفة كيفية إنشاء عنوان URL webhook {0}.",
+ "wayToGetZohoCliqURL": "يمكنك معرفة كيفية إنشاء عنوان URL webhook {0}.",
+ "signal": "الإشارة",
+ "Number": "رقم",
+ "Recipients": "المستلمين",
+ "needSignalAPI": "تحتاج إلى وجود عميل إشارة مع REST API.",
+ "wayToCheckSignalURL": "يمكنك التحقق من عنوان URL هذا لعرض كيفية إعداد واحد",
+ "signalImportant": "مهم",
+ "gotify": "gotify",
+ "Application Token": "رمز التطبيق",
+ "Server URL": "عنوان URL الخادم",
+ "Priority": "أولوية",
+ "slack": "تثاقل",
+ "Icon Emoji": "أيقونة الرموز التعبيرية",
+ "Channel Name": "اسم القناة",
+ "Uptime Kuma URL": "UPTIME KUMA URL",
+ "aboutWebhooks": "مزيد من المعلومات حول Webhooks ON",
+ "aboutChannelName": "أدخل اسم القناة في حقل اسم القناة {0} إذا كنت تريد تجاوز قناة WebHook. السابق",
+ "aboutKumaURL": "إذا تركت حقل URL في وقت التشغيل KUMA فارغًا ، فسيتم افتراضيًا إلى صفحة GitHub Project.",
+ "emojiCheatSheet": "ورقة الغش في الرموز التعبيرية",
+ "rocket.chat": "صاروخ",
+ "pushover": "مهمة سهلة",
+ "pushy": "انتهازي",
+ "PushByTechulus": "دفع بواسطة Techulus",
+ "octopush": "أوكتوبوش",
+ "promosms": "الترويجيات",
+ "clicksendsms": "نقرات SMS",
+ "lunasea": "لوناسيا",
+ "apprise": "إبلاغ (دعم 50+ خدمات الإخطار)",
+ "GoogleChat": "دردشة Google",
+ "pushbullet": "حماس",
+ "Kook": "كووك",
+ "wayToGetKookBotToken": "قم بإنشاء تطبيق واحصل على رمز الروبوت الخاص بك على {0}",
+ "wayToGetKookGuildID": "قم بتشغيل 'وضع المطور' في إعداد Kook وانقر بزر الماوس الأيمن على النقابة للحصول على معرفه",
+ "Guild ID": "معرف النقابة",
+ "line": "خط",
+ "mattermost": "المادة",
+ "User Key": "مفتاح المستخدم",
+ "Device": "جهاز",
+ "Message Title": "عنوان الرسالة",
+ "Notification Sound": "صوت الإشعار",
+ "More info on": "مزيد من المعلومات حول",
+ "pushoverDesc1": "أولوية الطوارئ (2) لها مهلة افتراضية 30 ثانية بين إعادة المحاولة وستنتهي صلاحيتها بعد ساعة واحدة.",
+ "pushoverDesc2": "إذا كنت ترغب في إرسال إشعارات إلى أجهزة مختلفة ، قم بملء حقل الجهاز.",
+ "SMS Type": "نوع الرسائل القصيرة",
+ "octopushTypePremium": "قسط (سريع - موصى به للتنبيه)",
+ "octopushTypeLowCost": "التكلفة المنخفضة (بطيئة - تم حظرها أحيانًا بواسطة المشغل)",
+ "checkPrice": "تحقق من الأسعار {0}",
+ "apiCredentials": "بيانات اعتماد API",
+ "octopushLegacyHint": "هل تستخدم الإصدار القديم من Octopush (2011-2020) أو الإصدار الجديد؟",
+ "Check octopush prices": "تحقق من أسعار Octopush {0}.",
+ "octopushPhoneNumber": "رقم الهاتف (تنسيق intl على سبيل المثال",
+ "octopushSMSSender": "اسم مرسل الرسائل القصيرة",
+ "LunaSea Device ID": "معرف جهاز Lunasea",
+ "Apprise URL": "إبلاغ عنوان URL",
+ "Example": "مثال",
+ "Read more:": "{0} :قراءة المزيد",
+ "Status:": "{0} :حالة",
+ "Read more": "قراءة المزيد",
+ "appriseInstalled": "تم تثبيت Prosise.",
+ "appriseNotInstalled": "الإبرام غير مثبت. {0}",
+ "Access Token": "رمز وصول",
+ "Channel access token": "قناة الوصول إلى الرمز",
+ "Line Developers Console": "تحكم المطورين",
+ "lineDevConsoleTo": "وحدة المطورين Line Console - {0}",
+ "Basic Settings": "الإعدادات الأساسية",
+ "User ID": "معرف المستخدم",
+ "Messaging API": "واجهة برمجة تطبيقات المراسلة",
+ "wayToGetLineChannelToken": "قم أولاً بالوصول إلى {0} إنشاء مزود وقناة (واجهة برمجة تطبيقات المراسلة) ، ثم يمكنك الحصول على رمز الوصول إلى القناة ومعرف المستخدم من عناصر القائمة المذكورة أعلاه.",
+ "Icon URL": "url url icon",
+ "aboutIconURL": "يمكنك توفير رابط لصورة في \"Icon URL\" لتجاوز صورة الملف الشخصي الافتراضي. لن يتم استخدامه إذا تم تعيين رمز رمز رمز.",
+ "aboutMattermostChannelName": "يمكنك تجاوز القناة الافتراضية التي تنشرها WebHook من خلال إدخال اسم القناة في \"Channel Name\" الحقل. يجب تمكين هذا في إعدادات Webhook Mattern. السابق",
+ "matrix": "مصفوفة",
+ "promosmsTypeEco": "SMS Eco - رخيصة ولكن بطيئة وغالبًا ما تكون محملة. يقتصر فقط على المستفيدين البولنديين.",
+ "promosmsTypeFlash": "SMS Flash - سيتم عرض الرسالة تلقائيًا على جهاز المستلم. يقتصر فقط على المستفيدين البولنديين.",
+ "promosmsTypeFull": "SMS Full - Tier Premium SMS يمكنك استخدام اسم المرسل الخاص بك (تحتاج إلى تسجيل الاسم أولاً). موثوقة للتنبيهات.",
+ "promosmsTypeSpeed": "سرعة الرسائل القصيرة - أولوية قصوى في النظام. سريع وموثوق للغاية ولكنه مكلف (حوالي مرتين من الرسائل القصيرة السعر الكامل).",
+ "promosmsPhoneNumber": "رقم الهاتف (للمستلم البولندي ، يمكنك تخطي رموز المنطقة)",
+ "promosmsSMSSender": "اسم مرسل الرسائل القصيرة",
+ "promosmsAllowLongSMS": "السماح الرسائل القصيرة الطويلة",
+ "Feishu WebHookUrl": "Feishu Webhookurl",
+ "matrixHomeserverURL": "عنوان URL HomeServer (مع HTTP (S)",
+ "Internal Room Id": "معرف الغرفة الداخلية",
+ "matrixDesc1": "يمكنك العثور على معرف الغرفة الداخلي من خلال البحث في القسم المتقدم من إعدادات الغرفة في عميل Matrix الخاص بك. يجب أن تبدو مثل! QMDRCPUIFLWSFJXYE6",
+ "matrixDesc2": "يوصى بشدة بإنشاء مستخدم جديد ولا تستخدم رمز الوصول إلى مستخدم Matrix الخاص بك لأنه سيتيح الوصول الكامل إلى حسابك وجميع الغرف التي انضمت إليها. بدلاً من ذلك ، قم بإنشاء مستخدم جديد ودعوته فقط إلى الغرفة التي تريد تلقيها الإشعار فيها. يمكنك الحصول على رمز الوصول عن طريق تشغيل {0}",
+ "Method": "طريقة",
+ "Body": "الجسم",
+ "Headers": "الرؤوس",
+ "PushUrl": "دفع عنوان URL",
+ "HeadersInvalidFormat": "رؤوس الطلبات غير صالحة JSON",
+ "BodyInvalidFormat": "هيئة الطلب غير صالحة JSON",
+ "Monitor History": "مراقبة التاريخ",
+ "clearDataOlderThan": "الحفاظ على بيانات سجل المراقبة للأيام {0}.",
+ "PasswordsDoNotMatch": "كلمة المرور غير مطابقة.",
+ "records": "السجلات",
+ "One record": "سجل واحد",
+ "steamApiKeyDescription": "لمراقبة خادم لعبة Steam ، تحتاج إلى مفتاح Steam Web-API. يمكنك تسجيل مفتاح API الخاص بك هنا",
+ "Current User": "المستخدم الحالي",
+ "topic": "عنوان",
+ "topicExplanation": "موضوع MQTT لرصد",
+ "successMessage": "نجاح رسالة",
+ "successMessageExplanation": "رسالة MQTT التي ستعتبر نجاحًا",
+ "recent": "الأخيرة",
+ "Done": "فعله",
+ "Info": "معلومات",
+ "Security": "حماية",
+ "Steam API Key": "مفتاح API Steam",
+ "Shrink Database": "تقلص قاعدة البيانات",
+ "Pick a RR-Type...": "اختر نوع RR …",
+ "Pick Accepted Status Codes...": "اختر أكواد الحالة المقبولة …",
+ "Default": "تقصير",
+ "HTTP Options": "خيارات HTTP",
+ "Create Incident": "إنشاء حادث",
+ "Title": "لقب",
+ "Content": "المحتوى",
+ "Style": "أسلوب",
+ "info": "معلومات",
+ "warning": "تحذير",
+ "danger": "خطر",
+ "error": "خطأ",
+ "critical": "شديد الأهمية",
+ "primary": "الأولية",
+ "light": "نور",
+ "dark": "ظلام",
+ "Post": "بريد",
+ "Please input title and content": "الرجاء إدخال العنوان والمحتوى",
+ "Created": "مخلوق",
+ "Last Updated": "التحديث الاخير",
+ "Unpin": "إلغاء",
+ "Switch to Light Theme": "التبديل إلى موضوع الضوء",
+ "Switch to Dark Theme": "التبديل إلى موضوع الظلام",
+ "Show Tags": "أضهر العلامات",
+ "Hide Tags": "إخفاء العلامات",
+ "Description": "وصف",
+ "No monitors available.": "لا شاشات المتاحة.",
+ "Add one": "أضف واحدا",
+ "No Monitors": "لا شاشات",
+ "Untitled Group": "مجموعة بلا عنوان",
+ "Services": "خدمات",
+ "Discard": "تجاهل",
+ "Cancel": "يلغي",
+ "Powered by": "مشغل بواسطة",
+ "shrinkDatabaseDescription": "تشغيل فراغ قاعدة البيانات لـ SQLite. إذا تم إنشاء قاعدة البيانات الخاصة بك بعد تمكين 1.10.0 AUTO_VACUUM بالفعل ولا يلزم هذا الإجراء.",
+ "serwersms": "Serwersms.pl",
+ "serwersmsAPIUser": "اسم مستخدم API (بما في ذلك بادئة WebAPI_)",
+ "serwersmsAPIPassword": "كلمة مرور API",
+ "serwersmsPhoneNumber": "رقم الهاتف",
+ "serwersmsSenderName": "اسم مرسل الرسائل القصيرة (مسجل عبر بوابة العملاء)",
+ "smseagle": "smseagle",
+ "smseagleTo": "أرقام الهواتف)",
+ "smseagleGroup": "اسم مجموعة كتب الهاتف (S)",
+ "smseagleContact": "كتاب الاتصال اسم (S)",
+ "smseagleRecipientType": "نوع المستلم",
+ "smseagleRecipient": "المتلقي (المتلقيين) (يجب فصل المتعددة مع فاصلة)",
+ "smseagleToken": "API وصول الرمز المميز",
+ "smseagleUrl": "عنوان URL لجهاز SMSEGLE الخاص بك",
+ "smseagleEncoding": "إرسال Unicode",
+ "smseaglePriority": "أولوية الرسالة (0-9 افتراضي = 0)",
+ "stackfield": "Stackfield",
+ "Customize": "يعدل أو يكيف",
+ "Custom Footer": "تذييل مخصص",
+ "Custom CSS": "لغة تنسيق ويب حسب الطلب",
+ "smtpDkimSettings": "إعدادات DKIM",
+ "smtpDkimDesc": "يرجى الرجوع إلى Nodemailer dkim {0} للاستخدام.",
+ "documentation": "توثيق",
+ "smtpDkimDomain": "اسم النطاق",
+ "smtpDkimKeySelector": "المحدد الرئيسي",
+ "smtpDkimPrivateKey": "مفتاح سري",
+ "smtpDkimHashAlgo": "خوارزمية التجزئة (اختياري)",
+ "smtpDkimheaderFieldNames": "مفاتيح الرأس للتوقيع (اختياري)",
+ "smtpDkimskipFields": "مفاتيح الرأس لا توقيع (اختياري)",
+ "wayToGetPagerDutyKey": "يمكنك الحصول على هذا عن طريق الانتقال إلى الخدمة -> دليل الخدمة -> (حدد خدمة) -> تكامل -> إضافة التكامل. هنا يمكنك البحث عن \"Events API V2\". مزيد من المعلومات {0}",
+ "Integration Key": "مفتاح التكامل",
+ "Integration URL": "URL تكامل",
+ "Auto resolve or acknowledged": "حل السيارات أو الاعتراف به",
+ "do nothing": "لا تفعل شيئا",
+ "auto acknowledged": "اعترف السيارات",
+ "auto resolve": "عزم السيارات",
+ "gorush": "جورش",
+ "alerta": "أليتا",
+ "alertaApiEndpoint": "نقطة نهاية API",
+ "alertaEnvironment": "بيئة",
+ "alertaApiKey": "مفتاح API",
+ "alertaAlertState": "حالة التنبيه",
+ "alertaRecoverState": "استعادة الدولة",
+ "deleteStatusPageMsg": "هل أنت متأكد من حذف صفحة الحالة هذه؟",
+ "Proxies": "وكلاء",
+ "default": "تقصير",
+ "enabled": "تمكين",
+ "setAsDefault": "تعيين كافتراضي",
+ "deleteProxyMsg": "هل أنت متأكد من حذف هذا الوكيل لجميع الشاشات؟",
+ "proxyDescription": "يجب تعيين الوكلاء إلى شاشة للعمل.",
+ "enableProxyDescription": "لن يؤثر هذا الوكيل على طلبات الشاشة حتى يتم تنشيطه. يمكنك التحكم مؤقتًا في تعطيل الوكيل من جميع الشاشات حسب حالة التنشيط.",
+ "setAsDefaultProxyDescription": "سيتم تمكين هذا الوكيل افتراضيًا للشاشات الجديدة. لا يزال بإمكانك تعطيل الوكيل بشكل منفصل لكل شاشة.",
+ "Certificate Chain": "سلسلة الشهادة",
+ "Valid": "صالح",
+ "Invalid": "غير صالح",
+ "AccessKeyId": "معرف AccessKey",
+ "SecretAccessKey": "Accesskey Secret",
+ "PhoneNumbers": "أرقام الهواتف",
+ "TemplateCode": "TemplateCode",
+ "SignName": "اسم تسجيل الدخول",
+ "Sms template must contain parameters: ": "يجب أن يحتوي قالب الرسائل القصيرة على معلمات:",
+ "Bark Endpoint": "نقطة نهاية اللحاء",
+ "Bark Group": "مجموعة اللحاء",
+ "Bark Sound": "صوت اللحاء",
+ "WebHookUrl": "webhookurl",
+ "SecretKey": "Secretkey",
+ "For safety, must use secret key": "للسلامة يجب استخدام المفتاح السري",
+ "Device Token": "رمز الجهاز",
+ "Platform": "منصة",
+ "iOS": "iOS",
+ "Android": "ذكري المظهر",
+ "Huawei": "هواوي",
+ "High": "عالٍ",
+ "Retry": "إعادة المحاولة",
+ "Topic": "عنوان",
+ "WeCom Bot Key": "WECOM BOT KEY",
+ "Setup Proxy": "وكيل الإعداد",
+ "Proxy Protocol": "بروتوكول الوكيل",
+ "Proxy Server": "مخدم بروكسي",
+ "Proxy server has authentication": "خادم الوكيل لديه مصادقة",
+ "User": "المستعمل",
+ "Installed": "المثبتة",
+ "Not installed": "غير مثبت",
+ "Running": "جري",
+ "Not running": "لا يعمل",
+ "Remove Token": "إزالة الرمز المميز",
+ "Start": "بداية",
+ "Stop": "قف",
+ "Uptime Kuma": "وقت التشغيل كوما",
+ "Add New Status Page": "أضف صفحة حالة جديدة",
+ "Slug": "سبيكة",
+ "Accept characters": "قبول الشخصيات",
+ "startOrEndWithOnly": "ابدأ أو ينتهي بـ {0} فقط",
+ "No consecutive dashes": "لا شرطات متتالية",
+ "Next": "التالي",
+ "The slug is already taken. Please choose another slug.": "تم أخذ سبيكة بالفعل. الرجاء اختيار سبيكة أخرى.",
+ "No Proxy": "لا الوكيل",
+ "Authentication": "المصادقة",
+ "HTTP Basic Auth": "HTTP الأساسي Auth",
+ "New Status Page": "صفحة حالة جديدة",
+ "Page Not Found": "الصفحة غير موجودة",
+ "Reverse Proxy": "وكيل عكسي",
+ "Backup": "دعم",
+ "About": "عن",
+ "wayToGetCloudflaredURL": "(قم بتنزيل CloudFlared من {0})",
+ "cloudflareWebsite": "موقع CloudFlare",
+ "Message:": ":رسالة",
+ "Don't know how to get the token? Please read the guide": "لا أعرف كيف تحصل على الرمز المميز؟ يرجى قراءة الدليل",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "قد يضيع الاتصال الحالي إذا كنت تتصل حاليًا عبر نفق CloudFlare. هل أنت متأكد تريد إيقافها؟ اكتب كلمة المرور الحالية لتأكيدها.",
+ "HTTP Headers": "رؤوس HTTP",
+ "Trust Proxy": "الوكيل الثقة",
+ "Other Software": "برامج أخرى",
+ "For example: nginx, Apache and Traefik.": "على سبيل المثال: nginx و Apache و Traefik.",
+ "Please read": "يرجى القراءة",
+ "Subject": "موضوع",
+ "Valid To": "صالحة ل",
+ "Days Remaining": "الأيام المتبقية",
+ "Issuer": "المصدر",
+ "Fingerprint": "بصمة",
+ "No status pages": "لا صفحات الحالة",
+ "Domain Name Expiry Notification": "اسم النطاق إشعار انتهاء الصلاحية",
+ "Proxy": "الوكيل",
+ "Date Created": "تاريخ الإنشاء",
+ "HomeAssistant": "مساعد المنزل",
+ "onebotHttpAddress": "OneBot HTTP عنوان",
+ "onebotMessageType": "نوع رسالة OneBot",
+ "onebotGroupMessage": "مجموعة",
+ "onebotPrivateMessage": "خاص",
+ "onebotUserOrGroupId": "معرف المجموعة/المستخدم",
+ "onebotSafetyTips": "للسلامة يجب ضبط الرمز المميز للوصول",
+ "PushDeer Key": "مفتاح PushDeer",
+ "Footer Text": "نص تذييل",
+ "Show Powered By": "عرض مدعوم من قبل",
+ "Domain Names": "أسماء المجال",
+ "signedInDisp": "وقعت في {0}",
+ "signedInDispDisabled": "معاق المصادقة.",
+ "RadiusSecret": "سر نصف القطر",
+ "RadiusSecretDescription": "السر المشترك بين العميل والخادم",
+ "RadiusCalledStationId": "يسمى معرف المحطة",
+ "RadiusCalledStationIdDescription": "معرف الجهاز المتصل",
+ "RadiusCallingStationId": "معرف محطة الاتصال",
+ "RadiusCallingStationIdDescription": "معرف جهاز الاتصال",
+ "Certificate Expiry Notification": "إشعار انتهاء الصلاحية",
+ "API Username": "اسم المستخدم API",
+ "API Key": "مفتاح API",
+ "Recipient Number": "رقم المستلم",
+ "From Name/Number": "من الاسم/الرقم",
+ "Leave blank to use a shared sender number.": "اترك فارغًا لاستخدام رقم المرسل المشترك.",
+ "Octopush API Version": "إصدار Octopush API",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "endpoint": "نقطة النهاية",
+ "octopushAPIKey": "\"API key\" from HTTP API بيانات اعتماد في لوحة التحكم",
+ "octopushLogin": "\"Login\" من بيانات اعتماد API HTTP في لوحة التحكم",
+ "promosmsLogin": "اسم تسجيل الدخول API",
+ "promosmsPassword": "كلمة مرور API",
+ "pushoversounds pushover": "سداد (افتراضي)",
+ "pushoversounds bike": "دراجة هوائية",
+ "pushoversounds bugle": "بوق",
+ "pushoversounds cashregister": "ماكينة تسجيل المدفوعات النقدية",
+ "pushoversounds classical": "كلاسيكي",
+ "pushoversounds cosmic": "كونية",
+ "pushoversounds falling": "هبوط",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "واردة",
+ "pushoversounds intermission": "استراحة",
+ "pushoversounds magic": "سحر",
+ "pushoversounds mechanical": "ميكانيكي",
+ "pushoversounds pianobar": "شريط البيانو",
+ "pushoversounds siren": "صفارة إنذار",
+ "pushoversounds spacealarm": "إنذار الفضاء",
+ "pushoversounds tugboat": "قارب السحب",
+ "pushoversounds alien": "إنذار أجنبي (طويل)",
+ "pushoversounds climb": "تسلق (طويل)",
+ "pushoversounds persistent": "مستمر (طويل)",
+ "pushoversounds echo": "صدى مهووس (طويل)",
+ "pushoversounds updown": "صعودا (طويلة)",
+ "pushoversounds vibrate": "يهتز فقط",
+ "pushoversounds none": "لا شيء (صامت)",
+ "pushyAPIKey": "مفتاح API السري",
+ "pushyToken": "رمز الجهاز",
+ "Show update if available": "عرض التحديث إذا كان ذلك متاحًا",
+ "Also check beta release": "تحقق أيضًا من الإصدار التجريبي",
+ "Using a Reverse Proxy?": "باستخدام وكيل عكسي؟",
+ "Check how to config it for WebSocket": "تحقق من كيفية تكوينه لـ WebSocket",
+ "Steam Game Server": "خادم لعبة البخار",
+ "Most likely causes": "الأسباب المرجحة",
+ "The resource is no longer available.": "لم يعد المورد متاحًا.",
+ "There might be a typing error in the address.": "قد يكون هناك خطأ مطبعي في العنوان.",
+ "What you can try": "ماذا تستطيع أن تجرب",
+ "Retype the address.": "اعد كتابة العنوان.",
+ "Go back to the previous page.": "عد للصفحة السابقة.",
+ "Coming Soon": "قريبا",
+ "wayToGetClickSendSMSToken": "يمكنك الحصول على اسم مستخدم API ومفتاح API من {0}.",
+ "Connection String": "سلسلة الاتصال",
+ "Query": "استفسار",
+ "settingsCertificateExpiry": "شهادة TLS انتهاء الصلاحية",
+ "certificationExpiryDescription": "شاشات HTTPS تضيء عندما تنتهي شهادة TLS في",
+ "Setup Docker Host": "إعداد مضيف Docker",
+ "Connection Type": "نوع الاتصال",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "هل أنت متأكد من حذف مضيف Docker لجميع الشاشات؟",
+ "socket": "قابس كهرباء",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "حاوية Docker",
+ "Container Name / ID": "اسم الحاوية / معرف",
+ "Docker Host": "مضيف Docker",
+ "Docker Hosts": "مضيفي Docker",
+ "ntfy Topic": "موضوع ntfy",
+ "Domain": "اِختِصاص",
+ "Workstation": "محطة العمل",
+ "disableCloudflaredNoAuthMsg": "أنت في وضع مصادقة لا توجد كلمة مرور غير مطلوبة.",
+ "trustProxyDescription": "ثق في رؤوس \"X-Forwarded- *\". إذا كنت ترغب في الحصول على عنوان IP الصحيح للعميل وكان Uptime Kuma خلف وكيل مثل Nginx أو Apache ، فيجب عليك تمكين هذا.",
+ "wayToGetLineNotifyToken": "يمكنك الحصول على رمز الوصول من {0}",
+ "Examples": "أمثلة",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "الرمز المميز للوصول منذ فترة طويلة",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "يمكن إنشاء رمز الوصول منذ فترة طويلة عن طريق النقر على اسم ملف التعريف الخاص بك (أسفل اليسار) والتمرير إلى الأسفل ثم انقر فوق إنشاء الرمز المميز.",
+ "Notification Service": "خدمة الإخطار",
+ "default: notify all devices": "الافتراضي: إخطار جميع الأجهزة",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "يمكن العثور على قائمة بخدمات الإخطار في المساعد المنزلي ضمن \"Developer Tools > Services\" ابحث عن \"notification\" للعثور على اسم جهازك/هاتفك.",
+ "Automations can optionally be triggered in Home Assistant": "يمكن أن يتم تشغيل الأتمتة اختياريًا في مساعد المنزل",
+ "Trigger type": "نوع الزناد",
+ "Event type": "نوع الحدث",
+ "Event data": "بيانات الحدث",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "ثم اختر إجراءً على سبيل المثال قم بتبديل المشهد إلى حيث يكون ضوء RGB أحمر.",
+ "Frontend Version": "إصدار الواجهة الأمامية",
+ "Frontend Version do not match backend version!": "إصدار Frontend لا يتطابق مع الإصدار الخلفي!",
+ "Base URL": "عنوان URL الأساسي",
+ "goAlertInfo": "الهدف هو تطبيق مفتوح المصدر لجدولة الجدولة التلقائية والإشعارات (مثل الرسائل القصيرة أو المكالمات الصوتية). إشراك الشخص المناسب تلقائيًا بالطريقة الصحيحة وفي الوقت المناسب! {0}",
+ "goAlertIntegrationKeyInfo": "احصل على مفتاح تكامل API العام للخدمة في هذا التنسيق \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" عادةً قيمة المعلمة الرمزية لعنوان url المنسق.",
+ "goAlert": "المرمى",
+ "backupOutdatedWarning": "مهمل: نظرًا لأنه تمت إضافة الكثير من الميزات وأن ميزة النسخ الاحتياطي هذه لم يتم الحفاظ عليها قليلاً ، فلا يمكنها إنشاء نسخة احتياطية كاملة أو استعادتها.",
+ "backupRecommend": "يرجى النسخ الاحتياطي لحجم الصوت أو مجلد البيانات (./data/) مباشرة بدلاً من ذلك.",
+ "Optional": "اختياري",
+ "squadcast": "القاء فريقي",
+ "SendKey": "Sendkey",
+ "SMSManager API Docs": "مستندات SMSManager API",
+ "Gateway Type": "نوع البوابة",
+ "SMSManager": "smsmanager",
+ "You can divide numbers with": "يمكنك تقسيم الأرقام مع",
+ "or": "أو",
+ "recurringInterval": "فترة",
+ "Recurring": "يتكرر",
+ "strategyManual": "نشط/غير نشط يدويًا",
+ "warningTimezone": "إنه يستخدم المنطقة الزمنية للخادم",
+ "weekdayShortMon": "الاثنين",
+ "weekdayShortTue": "الثلاثاء",
+ "weekdayShortWed": "تزوج",
+ "weekdayShortThu": "الخميس",
+ "weekdayShortFri": "الجمعة",
+ "weekdayShortSat": "جلس",
+ "weekdayShortSun": "شمس",
+ "dayOfWeek": "يوم من الأسبوع",
+ "dayOfMonth": "يوم من الشهر",
+ "lastDay": "بالأمس",
+ "lastDay1": "آخر يوم من الشهر",
+ "lastDay2": "الثاني في اليوم الأخير من الشهر",
+ "lastDay3": "الثالث في اليوم الأخير من الشهر",
+ "lastDay4": "الرابع في اليوم الأخير من الشهر",
+ "No Maintenance": "لا صيانة",
+ "pauseMaintenanceMsg": "هل أنت متأكد من أن تتوقف مؤقتًا؟",
+ "maintenanceStatus-under-maintenance": "تحت الصيانة",
+ "maintenanceStatus-inactive": "غير نشط",
+ "maintenanceStatus-scheduled": "المقرر",
+ "maintenanceStatus-ended": "انتهى",
+ "maintenanceStatus-unknown": "مجهول",
+ "Display Timezone": "عرض المنطقة الزمنية",
+ "Server Timezone": "المنطقة الزمنية الخادم",
+ "statusPageMaintenanceEndDate": "نهاية",
+ "IconUrl": "url url icon",
+ "Enable DNS Cache": "تمكين ذاكرة التخزين المؤقت DNS",
+ "Enable": "يُمكَِن",
+ "Disable": "إبطال",
+ "dnsCacheDescription": "قد لا يعمل في بعض بيئات IPv6 تعطيله إذا واجهت أي مشكلات.",
+ "Single Maintenance Window": "نافذة صيانة واحدة",
+ "Maintenance Time Window of a Day": "نافذة وقت الصيانة لليوم",
+ "Effective Date Range": "نطاق التاريخ السريع",
+ "Schedule Maintenance": "جدولة الصيانة",
+ "Date and Time": "التاريخ و الوقت",
+ "DateTime Range": "نطاق DateTime",
+ "Strategy": "إستراتيجية",
+ "Free Mobile User Identifier": "معرف مستخدم الهاتف المحمول المجاني",
+ "Free Mobile API Key": "مفتاح واجهة برمجة تطبيقات مجانية للهاتف المحمول",
+ "Enable TLS": "تمكين TLS",
+ "Proto Service Name": "اسم خدمة البروتو",
+ "Proto Method": "طريقة البروتو",
+ "Proto Content": "محتوى proto",
+ "Economy": "اقتصاد",
+ "Lowcost": "تكلفة منخفضة",
+ "high": "عالي",
+ "General Monitor Type": "نوع الشاشة العامة",
+ "Passive Monitor Type": "نوع الشاشة السلبي",
+ "Specific Monitor Type": "نوع شاشة محدد",
+ "dataRetentionTimeError": "يجب أن تكون فترة الاستبقاء 0 أو أكبر",
+ "infiniteRetention": "ضبط على 0 للاحتفاظ لا نهائي.",
+ "confirmDeleteTagMsg": "هل أنت متأكد من أنك تريد حذف هذه العلامة؟ لن يتم حذف الشاشات المرتبطة بهذه العلامة.",
+ "Custom Monitor Type": "نوع الشاشة المخصص",
+ "Game": "لعبة",
+ "Don't know how to get the token? Please read the guide:": "لا أعرف كيفية الحصول على الرمز المميز؟ يرجى قراءة الدليل:",
+ "Subject:": "موضوع:",
+ "Valid To:": "صالحة ل:",
+ "Days Remaining:": "الأيام المتبقية:",
+ "Issuer:": "المُصدر:",
+ "Fingerprint:": "بصمة:",
+ "Most likely causes:": "الأسباب المرجحة:",
+ "Help": "يساعد",
+ "Accept characters:": "قبول الأحرف:",
+ "plugin": "البرنامج المساعد | الإضافات",
+ "install": "ثَبَّتَ",
+ "installing": "التثبيت",
+ "uninstall": "الغاء التثبيت",
+ "uninstalling": "إلغاء التثبيت",
+ "loadingError": "لا يمكن جلب البيانات ، يرجى المحاولة مرة أخرى في وقت لاحق.",
+ "Example:": "مثال: {0}",
+ "Google Analytics ID": "معرف Google Analytics",
+ "markdownSupported": "دعم صيغة Markdown",
+ "Edit Tag": "تحرير العلامة",
+ "Server Address": "عنوان المستقبل",
+ "Learn More": "يتعلم أكثر",
+ "Automations can optionally be triggered in Home Assistant:": "يمكن تشغيل الأتمتة اختياريًا في Home Assistant:",
+ "Trigger type:": "نوع الزناد:",
+ "Event type:": "نوع الحدث:",
+ "Event data:": "بيانات الحدث:",
+ "More info on:": "مزيد من المعلومات حول: {0}",
+ "What you can try:": "ماذا تستطيع أن تجرب:",
+ "Packet Size": "حجم الحزمة",
+ "confirmUninstallPlugin": "هل أنت متأكد من أنك تريد إلغاء تثبيت هذا المكون الإضافي؟"
+}
diff --git a/src/lang/ar.json b/src/lang/ar.json
new file mode 100644
index 000000000..cb943a92d
--- /dev/null
+++ b/src/lang/ar.json
@@ -0,0 +1,688 @@
+{
+ "Edit": "تعديل",
+ "Delete": "حذف",
+ "Current": "حالي",
+ "Uptime": "مدة التشغيل",
+ "Monitor": "مراقب | مراقبات",
+ "day": "يوم | أيام",
+ "-day": "-يوم",
+ "hour": "ساعة",
+ "-hour": "-ساعة",
+ "Response": "استجاية",
+ "Ping": "بينغ",
+ "Monitor Type": "نوع المراقب",
+ "Cert Exp.": "انتهاء صَلاحِيَة شهادة الأمان SSL",
+ "Theme - Heartbeat Bar": "موضوع - بار نبضات",
+ "Normal": "طبيعي",
+ "Bottom": "الأسفل",
+ "None": "لا أحد",
+ "Current Password": "كلمة المرور الحالي",
+ "New Password": "كلمة سر جديدة",
+ "Repeat New Password": "كرر كلمة المرور الجديدة",
+ "Update Password": "تطوير كلمة السر",
+ "Disable Auth": "تعطيل المصادقة",
+ "Enable Auth": "تمكين المصادقة",
+ "disableauth.message1": "هل أنت متأكد من أن تعطيل المصادقة ؟",
+ "disableauth.message2": "تم تصميمه للسيناريوهات حيث تنوي تنفيذ مصادقة الطرف الثالث أمام كوما في وقت التشغيل مثل CloudFlare Access Authelia أو آليات المصادقة الأخرى.",
+ "Please use this option carefully!": "الرجاء استخدام هذا الخيار بعناية!",
+ "Logout": "تسجيل خروج",
+ "Leave": "غادر",
+ "I understand, please disable": "أنا أفهم من فضلك تعطيل",
+ "Confirm": "يتأكد",
+ "Yes": "نعم",
+ "No": "رقم",
+ "Username": "اسم المستخدم",
+ "Password": "كلمة المرور",
+ "Remember me": "تذكرنى",
+ "Login": "تسجيل الدخول",
+ "No Monitors, please": "لا شاشات من فضلك",
+ "alertNoFile": "الرجاء تحديد ملف للاستيراد.",
+ "Skip existing": "تخطي الموجود",
+ "Search...": "يبحث…",
+ "Avg. Ping": "متوسط. بينغ",
+ "Avg. Response": "متوسط. إجابة",
+ "Entry Page": "صفحة الدخول",
+ "statusPageNothing": "لا شيء هنا الرجاء إضافة مجموعة أو شاشة.",
+ "No Services": "لا توجد خدمات",
+ "All Systems Operational": "جميع الأنظمة التشغيلية",
+ "Partially Degraded Service": "الخدمة المتدهورة جزئيا",
+ "Degraded Service": "خدمة متدهورة",
+ "Add Group": "أضف مجموعة",
+ "Add a monitor": "إضافة شاشة",
+ "Edit Status Page": "تحرير صفحة الحالة",
+ "Go to Dashboard": "الذهاب إلى لوحة القيادة",
+ "Status Page": "صفحة الحالة",
+ "Application Token": "رمز التطبيق",
+ "Server URL": "عنوان URL الخادم",
+ "Priority": "أولوية",
+ "Read more": "قراءة المزيد",
+ "topic": "عنوان",
+ "Last Updated": "التحديث الاخير",
+ "Unpin": "إلغاء",
+ "Show Tags": "أضهر العلامات",
+ "Add one": "أضف واحدا",
+ "wayToGetCloudflaredURL": "(قم بتنزيل CloudFlared من {0})",
+ "cloudflareWebsite": "موقع CloudFlare",
+ "Message:": ":رسالة",
+ "Don't know how to get the token? Please read the guide:": "لا أعرف كيفية الحصول على الرمز المميز؟ يرجى قراءة الدليل:",
+ "telegramSendSilently": "أرسل بصمت",
+ "telegramSendSilentlyDescription": "ترسل الرسالة بصمت ويتلقى المستخدمون إشعارا بدون صوت.",
+ "Enable": "يُمكَِن",
+ "notificationRegional": "إقليمي",
+ "Clone": "استنسخ",
+ "cloneOf": "مُستنسَخ من {0}",
+ "grpcMethodDescription": "يتم تحويل اسم الطريقة إلى تنسيق Cammelcase مثل Sayhello Check وما إلى ذلك.",
+ "acceptedStatusCodesDescription": "حدد رموز الحالة التي تعتبر استجابة ناجحة.",
+ "deleteNotificationMsg": "هل أنت متأكد من حذف هذا الإشعار لجميع الشاشات؟",
+ "dnsPortDescription": "منفذ خادم DNS. الافتراضيات إلى 53. يمكنك تغيير المنفذ في أي وقت.",
+ "pauseMonitorMsg": "هل أنت متأكد من أن تتوقف مؤقتًا؟",
+ "API Keys": "مفاتيح API",
+ "Expiry": "نهاية الصلاحية",
+ "Expiry date": "تاريخ نهاية الصلاحية",
+ "Continue": "مواصلة",
+ "Add Another": "إضافة آخر",
+ "Add API Key": "أضف مفتاح API",
+ "apiKey-active": "نشط",
+ "apiKey-expired": "منتهي الصلاحية",
+ "Generate": "توليد",
+ "Settings": "الإعدادات",
+ "Dashboard": "لوح التحكم",
+ "Help": "المساعدة",
+ "New Update": "تحديث جديد متوفر",
+ "Language": "اللغة",
+ "Appearance": "المظهر",
+ "Theme": "الحُلة",
+ "General": "العامة",
+ "Version": "الإصدار",
+ "Primary Base URL": "الرابط التشعبي الأساسي",
+ "Check Update On GitHub": "التحقق من التحديث على GitHub",
+ "Add New Monitor": "أضف شاشة جديدة",
+ "Quick Stats": "إحصائيات سريعة",
+ "Pending": "قيد الانتظار",
+ "General Monitor Type": "نوع الشاشة العامة",
+ "Passive Monitor Type": "نوع الشاشة السلبي",
+ "Specific Monitor Type": "نوع شاشة محدد",
+ "markdownSupported": "دعم صيغة Markdown",
+ "pauseDashboardHome": "وقفة",
+ "Pause": "إيقاف مؤقت",
+ "Name": "الاسم",
+ "Status": "الحالة",
+ "DateTime": "الوقت والتاريخ",
+ "Message": "الرسالة",
+ "No important events": "لا توجد أحداث مهمة",
+ "Resume": "استمرار",
+ "Keyword": "كلمة مفتاحية",
+ "Friendly Name": "اسم معروف",
+ "URL": "عنوان URL",
+ "Hostname": "اسم المضيف",
+ "Port": "المنفذ",
+ "Heartbeat Interval": "فاصل نبضات القلب",
+ "Add": "إضافة",
+ "Up": "متصل",
+ "Down": "غير متصل",
+ "Maintenance": "الصيانة",
+ "Unknown": "مجهول",
+ "Retries": "يحاول مجدداً",
+ "Heartbeat Retry Interval": "الفاصل الزمني لإعادة محاكمة نبضات القلب",
+ "Resend Notification if Down X times consecutively": "إعادة تقديم الإخطار إذا انخفض x مرات بالتالي",
+ "Advanced": "متقدم",
+ "checkEverySecond": "تحقق من كل {0} ثانية",
+ "retryCheckEverySecond": "أعد محاولة كل {0} ثانية",
+ "resendEveryXTimes": "إعادة تقديم كل {0} مرات",
+ "resendDisabled": "إعادة الالتزام بالتعطيل",
+ "retriesDescription": "الحد الأقصى لإعادة المحاولة قبل تمييز الخدمة على أنها لأسفل وإرسال إشعار",
+ "ignoreTLSError": "تجاهل خطأ TLS/SSL لمواقع HTTPS",
+ "upsideDownModeDescription": "اقلب الحالة رأسًا على عقب. إذا كانت الخدمة قابلة للوصول إلى أسفل.",
+ "maxRedirectDescription": "الحد الأقصى لعدد إعادة التوجيه لمتابعة. ضبط على 0 لتعطيل إعادة التوجيه.",
+ "Upside Down Mode": "وضع أسفل أسفل",
+ "Max. Redirects": "الأعلى. إعادة التوجيه",
+ "Accepted Status Codes": "رموز الحالة المقبولة",
+ "Push URL": "دفع عنوان URL",
+ "needPushEvery": "يجب عليك استدعاء عنوان URL هذا كل ثانية.",
+ "pushOptionalParams": "المعلمات الاختيارية",
+ "Save": "يحفظ",
+ "Notifications": "إشعارات",
+ "Not available, please setup.": "غير متوفر من فضلك الإعداد.",
+ "Setup Notification": "إشعار الإعداد",
+ "Light": "نور",
+ "Dark": "داكن",
+ "Auto": "آلي",
+ "Timezone": "وحدة زمنية",
+ "Search Engine Visibility": "محرك بحث الرؤية",
+ "Allow indexing": "السماح الفهرسة",
+ "Discourage search engines from indexing site": "تثبيط محركات البحث من موقع الفهرسة",
+ "Change Password": "غير كلمة السر",
+ "add one": "أضف واحدا",
+ "Notification Type": "نوع إعلام",
+ "Email": "بريد إلكتروني",
+ "Test": "امتحان",
+ "Certificate Info": "معلومات الشهادة",
+ "Resolver Server": "خادم Resolver",
+ "Resource Record Type": "نوع سجل الموارد",
+ "Last Result": "اخر نتيجة",
+ "Create your admin account": "إنشاء حساب المسؤول الخاص بك",
+ "Repeat Password": "اعد كلمة السر",
+ "Import Backup": "استيراد النسخ الاحتياطي",
+ "Export Backup": "النسخ الاحتياطي تصدير",
+ "Export": "يصدّر",
+ "Import": "يستورد",
+ "respTime": "resp. الوقت (MS)",
+ "notAvailableShort": "ن/أ",
+ "Default enabled": "التمكين الافتراضي",
+ "Apply on all existing monitors": "تنطبق على جميع الشاشات الحالية",
+ "Create": "خلق",
+ "Clear Data": "امسح البيانات",
+ "Events": "الأحداث",
+ "Heartbeats": "نبضات القلب",
+ "Schedule maintenance": "جدولة الصيانة",
+ "Affected Monitors": "الشاشات المتأثرة",
+ "Pick Affected Monitors...": "اختر الشاشات المتأثرة …",
+ "Start of maintenance": "بداية الصيانة",
+ "All Status Pages": "جميع صفحات الحالة",
+ "Select status pages...": "حدد صفحات الحالة …",
+ "alertWrongFileType": "الرجاء تحديد ملف JSON.",
+ "Clear all statistics": "مسح جميع الإحصاءات",
+ "Overwrite": "الكتابة فوق",
+ "Options": "خيارات",
+ "Keep both": "احتفظ بكليهما",
+ "Verify Token": "تحقق من الرمز المميز",
+ "Setup 2FA": "الإعداد 2FA",
+ "Enable 2FA": "تمكين 2FA",
+ "Disable 2FA": "تعطيل 2FA",
+ "2FA Settings": "2FA إعدادات",
+ "Two Factor Authentication": "توثيق ذو عاملين",
+ "Active": "نشيط",
+ "Inactive": "غير نشط",
+ "Token": "رمز",
+ "Show URI": "أظهر URI",
+ "Tags": "العلامات",
+ "Add New below or Select...": "إضافة جديد أدناه أو تحديد …",
+ "Tag with this name already exist.": "علامة مع هذا الاسم موجود بالفعل.",
+ "Tag with this value already exist.": "علامة مع هذه القيمة موجودة بالفعل.",
+ "color": "اللون",
+ "value (optional)": "القيمة (اختياري)",
+ "Gray": "رمادي",
+ "Red": "أحمر",
+ "Orange": "البرتقالي",
+ "Green": "لون أخضر",
+ "Blue": "أزرق",
+ "Indigo": "النيلي",
+ "Purple": "نفسجي",
+ "webhookAdditionalHeadersDesc": "يحدد رؤوس إضافية مرسلة مع webhook.",
+ "Webhook URL": "Webhook URL",
+ "Pink": "لون القرنفل",
+ "Custom": "العادة",
+ "Status Pages": "صفحات الحالة",
+ "defaultNotificationName": "تنبيه {الإخطار} ({number})",
+ "here": "هنا",
+ "Required": "مطلوب",
+ "Post URL": "بعد عنوان URL",
+ "Content Type": "نوع المحتوى",
+ "webhookJsonDesc": "{0} مفيد لأي خوادم HTTP الحديثة مثل Express.js",
+ "webhookFormDataDesc": "{multipart} مفيد لـ PHP. سيحتاج JSON إلى تحليل {decodefunction}",
+ "webhookAdditionalHeadersTitle": "رؤوس إضافية",
+ "emojiCheatSheet": "ورقة الغش في الرموز التعبيرية",
+ "appriseInstalled": "تم تثبيت Prosise.",
+ "appriseNotInstalled": "الإبرام غير مثبت. {0}",
+ "Method": "طريقة",
+ "Body": "الجسم",
+ "Headers": "الرؤوس",
+ "PushUrl": "دفع عنوان URL",
+ "HeadersInvalidFormat": "رؤوس الطلبات غير صالحة JSON ",
+ "BodyInvalidFormat": "هيئة الطلب غير صالحة JSON ",
+ "Monitor History": "مراقبة التاريخ",
+ "clearDataOlderThan": "الحفاظ على بيانات سجل المراقبة للأيام {0}.",
+ "PasswordsDoNotMatch": "كلمة المرور غير مطابقة.",
+ "records": "السجلات",
+ "One record": "سجل واحد",
+ "steamApiKeyDescription": "لمراقبة خادم لعبة Steam ، تحتاج إلى مفتاح Steam Web-API. يمكنك تسجيل مفتاح API الخاص بك هنا ",
+ "Current User": "المستخدم الحالي",
+ "topicExplanation": "موضوع MQTT لرصد",
+ "successMessage": "نجاح رسالة",
+ "successMessageExplanation": "رسالة MQTT التي ستعتبر نجاحًا",
+ "recent": "الأخيرة",
+ "Done": "فعله",
+ "Info": "معلومات",
+ "Security": "حماية",
+ "Steam API Key": "مفتاح API Steam",
+ "Shrink Database": "تقلص قاعدة البيانات",
+ "Pick a RR-Type...": "اختر نوع RR …",
+ "Pick Accepted Status Codes...": "اختر أكواد الحالة المقبولة …",
+ "Default": "تقصير",
+ "HTTP Options": "خيارات HTTP",
+ "Create Incident": "إنشاء حادث",
+ "Title": "لقب",
+ "Content": "المحتوى",
+ "Style": "أسلوب",
+ "info": "معلومات",
+ "warning": "تحذير",
+ "danger": "خطر",
+ "error": "خطأ",
+ "critical": "شديد الأهمية",
+ "primary": "الأولية",
+ "light": "نور",
+ "dark": "ظلام",
+ "Post": "بريد",
+ "Please input title and content": "الرجاء إدخال العنوان والمحتوى",
+ "Created": "مخلوق",
+ "Switch to Light Theme": "التبديل إلى موضوع الضوء",
+ "Switch to Dark Theme": "التبديل إلى موضوع الظلام",
+ "Hide Tags": "إخفاء العلامات",
+ "Description": "وصف",
+ "No monitors available.": "لا شاشات المتاحة.",
+ "No Monitors": "لا شاشات",
+ "Untitled Group": "مجموعة بلا عنوان",
+ "Services": "خدمات",
+ "Discard": "تجاهل",
+ "Cancel": "يلغي",
+ "Powered by": "مشغل بواسطة",
+ "shrinkDatabaseDescription": "تشغيل فراغ قاعدة البيانات لـ SQLite. إذا تم إنشاء قاعدة البيانات الخاصة بك بعد تمكين 1.10.0 AUTO_VACUUM بالفعل ولا يلزم هذا الإجراء.",
+ "Customize": "يعدل أو يكيف",
+ "Custom Footer": "تذييل مخصص",
+ "Custom CSS": "لغة تنسيق ويب حسب الطلب",
+ "deleteStatusPageMsg": "هل أنت متأكد من حذف صفحة الحالة هذه؟",
+ "Proxies": "وكلاء",
+ "default": "تقصير",
+ "enabled": "تمكين",
+ "setAsDefault": "تعيين كافتراضي",
+ "deleteProxyMsg": "هل أنت متأكد من حذف هذا الوكيل لجميع الشاشات؟",
+ "proxyDescription": "يجب تعيين الوكلاء إلى شاشة للعمل.",
+ "enableProxyDescription": "لن يؤثر هذا الوكيل على طلبات الشاشة حتى يتم تنشيطه. يمكنك التحكم مؤقتًا في تعطيل الوكيل من جميع الشاشات حسب حالة التنشيط.",
+ "setAsDefaultProxyDescription": "سيتم تمكين هذا الوكيل افتراضيًا للشاشات الجديدة. لا يزال بإمكانك تعطيل الوكيل بشكل منفصل لكل شاشة.",
+ "Certificate Chain": "سلسلة الشهادة",
+ "Valid": "صالح",
+ "Invalid": "غير صالح",
+ "User": "المستعمل",
+ "Installed": "المثبتة",
+ "Not installed": "غير مثبت",
+ "Running": "جري",
+ "Not running": "لا يعمل",
+ "Remove Token": "إزالة الرمز المميز",
+ "Start": "بداية",
+ "Stop": "قف",
+ "Add New Status Page": "أضف صفحة حالة جديدة",
+ "Slug": "سبيكة",
+ "Accept characters:": "قبول الأحرف:",
+ "startOrEndWithOnly": "ابدأ أو ينتهي بـ {0} فقط",
+ "No consecutive dashes": "لا شرطات متتالية",
+ "Next": "التالي",
+ "The slug is already taken. Please choose another slug.": "تم أخذ سبيكة بالفعل. الرجاء اختيار سبيكة أخرى.",
+ "No Proxy": "لا الوكيل",
+ "Authentication": "المصادقة",
+ "HTTP Basic Auth": "HTTP الأساسي Auth",
+ "New Status Page": "صفحة حالة جديدة",
+ "Page Not Found": "الصفحة غير موجودة",
+ "Reverse Proxy": "وكيل عكسي",
+ "Backup": "دعم",
+ "About": "عن",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "قد يضيع الاتصال الحالي إذا كنت تتصل حاليًا عبر نفق CloudFlare. هل أنت متأكد تريد إيقافها؟ اكتب كلمة المرور الحالية لتأكيدها.",
+ "HTTP Headers": "رؤوس HTTP",
+ "Trust Proxy": "الوكيل الثقة",
+ "Other Software": "برامج أخرى",
+ "For example: nginx, Apache and Traefik.": "على سبيل المثال: nginx و Apache و Traefik.",
+ "Please read": "يرجى القراءة",
+ "Subject:": "موضوع:",
+ "Valid To:": "صالحة ل:",
+ "Days Remaining:": "الأيام المتبقية:",
+ "Issuer:": "المُصدر:",
+ "Fingerprint:": "بصمة:",
+ "No status pages": "لا صفحات الحالة",
+ "Domain Name Expiry Notification": "اسم النطاق إشعار انتهاء الصلاحية",
+ "Proxy": "الوكيل",
+ "Date Created": "تاريخ الإنشاء",
+ "Footer Text": "نص تذييل",
+ "Show Powered By": "عرض مدعوم من قبل",
+ "Domain Names": "أسماء المجال",
+ "signedInDisp": "وقعت في {0}",
+ "signedInDispDisabled": "معاق المصادقة.",
+ "RadiusSecret": "سر نصف القطر",
+ "RadiusSecretDescription": "السر المشترك بين العميل والخادم",
+ "RadiusCalledStationId": "يسمى معرف المحطة",
+ "RadiusCalledStationIdDescription": "معرف الجهاز المتصل",
+ "RadiusCallingStationId": "معرف محطة الاتصال",
+ "RadiusCallingStationIdDescription": "معرف جهاز الاتصال",
+ "Certificate Expiry Notification": "إشعار انتهاء الصلاحية",
+ "API Username": "اسم المستخدم API",
+ "API Key": "مفتاح API",
+ "Show update if available": "عرض التحديث إذا كان ذلك متاحًا",
+ "Also check beta release": "تحقق أيضًا من الإصدار التجريبي",
+ "Using a Reverse Proxy?": "باستخدام وكيل عكسي؟",
+ "Check how to config it for WebSocket": "تحقق من كيفية تكوينه لـ WebSocket",
+ "Steam Game Server": "خادم لعبة البخار",
+ "Most likely causes:": "الأسباب المرجحة:",
+ "The resource is no longer available.": "لم يعد المورد متاحًا.",
+ "There might be a typing error in the address.": "قد يكون هناك خطأ مطبعي في العنوان.",
+ "What you can try:": "ماذا تستطيع أن تجرب:",
+ "Retype the address.": "اعد كتابة العنوان.",
+ "Go back to the previous page.": "عد للصفحة السابقة.",
+ "Coming Soon": "قريبا",
+ "Connection String": "سلسلة الاتصال",
+ "Query": "استفسار",
+ "settingsCertificateExpiry": "شهادة TLS انتهاء الصلاحية",
+ "certificationExpiryDescription": "شاشات HTTPS تضيء عندما تنتهي شهادة TLS في",
+ "Setup Docker Host": "إعداد مضيف Docker",
+ "Connection Type": "نوع الاتصال",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "هل أنت متأكد من حذف مضيف Docker لجميع الشاشات؟",
+ "socket": "قابس كهرباء",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "حاوية Docker",
+ "Container Name / ID": "اسم الحاوية / معرف",
+ "Docker Host": "مضيف Docker",
+ "Docker Hosts": "مضيفي Docker",
+ "Domain": "اِختِصاص",
+ "Workstation": "محطة العمل",
+ "Packet Size": "حجم الحزمة",
+ "Bot Token": "رمز الروبوت",
+ "wayToGetTelegramToken": "يمكنك الحصول على رمز من {0}.",
+ "Chat ID": "معرف الدردشة",
+ "telegramMessageThreadID": "معرف المواضيع",
+ "supportTelegramChatID": "دعم الدردشة المباشرة / معرف الدردشة للقناة",
+ "wayToGetTelegramChatID": "يمكنك الحصول على معرف الدردشة الخاص بك عن طريق إرسال رسالة إلى الروبوت والانتقال إلى عنوان URL هذا لعرض Chat_id",
+ "YOUR BOT TOKEN HERE": "رمز الروبوت الخاص بك هنا",
+ "chatIDNotFound": "لم يتم العثور على معرف الدردشة ؛ الرجاء إرسال رسالة إلى هذا الروبوت أولاً",
+ "disableCloudflaredNoAuthMsg": "أنت في وضع مصادقة لا توجد كلمة مرور غير مطلوبة.",
+ "trustProxyDescription": "ثق في رؤوس \"X-Forwarded- *\". إذا كنت ترغب في الحصول على عنوان IP الصحيح للعميل وكان Uptime Kuma خلف وكيل مثل Nginx أو Apache ، فيجب عليك تمكين هذا.",
+ "wayToGetLineNotifyToken": "يمكنك الحصول على رمز الوصول من {0}",
+ "Examples": "أمثلة",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "الرمز المميز للوصول منذ فترة طويلة",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "يمكن إنشاء رمز الوصول منذ فترة طويلة عن طريق النقر على اسم ملف التعريف الخاص بك (أسفل اليسار) والتمرير إلى الأسفل ثم انقر فوق إنشاء الرمز المميز. ",
+ "Notification Service": "خدمة الإخطار",
+ "default: notify all devices": "الافتراضي: إخطار جميع الأجهزة",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "يمكن العثور على قائمة بخدمات الإخطار في المساعد المنزلي ضمن \"Developer Tools > Services\" ابحث عن \"notification\" للعثور على اسم جهازك/هاتفك.",
+ "Automations can optionally be triggered in Home Assistant:": "يمكن تشغيل الأتمتة اختياريًا في Home Assistant:",
+ "Trigger type:": "نوع الزناد:",
+ "Event type:": "نوع الحدث:",
+ "Event data:": "بيانات الحدث:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "ثم اختر إجراءً على سبيل المثال قم بتبديل المشهد إلى حيث يكون ضوء RGB أحمر.",
+ "Frontend Version": "إصدار الواجهة الأمامية",
+ "Frontend Version do not match backend version!": "إصدار Frontend لا يتطابق مع الإصدار الخلفي!",
+ "backupOutdatedWarning": "مهمل: نظرًا لأنه تمت إضافة الكثير من الميزات وأن ميزة النسخ الاحتياطي هذه لم يتم الحفاظ عليها قليلاً ، فلا يمكنها إنشاء نسخة احتياطية كاملة أو استعادتها.",
+ "backupRecommend": "يرجى النسخ الاحتياطي لحجم الصوت أو مجلد البيانات (./data/) مباشرة بدلاً من ذلك.",
+ "Optional": "اختياري",
+ "or": "أو",
+ "recurringInterval": "فترة",
+ "Recurring": "يتكرر",
+ "strategyManual": "نشط/غير نشط يدويًا",
+ "warningTimezone": "إنه يستخدم المنطقة الزمنية للخادم",
+ "weekdayShortMon": "الاثنين",
+ "weekdayShortTue": "الثلاثاء",
+ "weekdayShortWed": "تزوج",
+ "weekdayShortThu": "الخميس",
+ "weekdayShortFri": "الجمعة",
+ "No Maintenance": "لا صيانة",
+ "weekdayShortSat": "جلس",
+ "weekdayShortSun": "شمس",
+ "dayOfWeek": "يوم من الأسبوع",
+ "dayOfMonth": "يوم من الشهر",
+ "lastDay": "بالأمس",
+ "lastDay1": "آخر يوم من الشهر",
+ "lastDay2": "الثاني في اليوم الأخير من الشهر",
+ "lastDay3": "الثالث في اليوم الأخير من الشهر",
+ "lastDay4": "الرابع في اليوم الأخير من الشهر",
+ "pauseMaintenanceMsg": "هل أنت متأكد من أن تتوقف مؤقتًا؟",
+ "maintenanceStatus-under-maintenance": "تحت الصيانة",
+ "maintenanceStatus-inactive": "غير نشط",
+ "maintenanceStatus-scheduled": "المقرر",
+ "maintenanceStatus-ended": "انتهى",
+ "maintenanceStatus-unknown": "مجهول",
+ "Display Timezone": "عرض المنطقة الزمنية",
+ "Server Timezone": "المنطقة الزمنية الخادم",
+ "statusPageMaintenanceEndDate": "نهاية",
+ "IconUrl": "url url icon",
+ "Enable DNS Cache": "تمكين ذاكرة التخزين المؤقت DNS",
+ "Disable": "إبطال",
+ "dnsCacheDescription": "قد لا يعمل في بعض بيئات IPv6 تعطيله إذا واجهت أي مشكلات.",
+ "Single Maintenance Window": "نافذة صيانة واحدة",
+ "Maintenance Time Window of a Day": "نافذة وقت الصيانة لليوم",
+ "Effective Date Range": "نطاق التاريخ السريع",
+ "Schedule Maintenance": "جدولة الصيانة",
+ "Date and Time": "التاريخ و الوقت",
+ "DateTime Range": "نطاق DateTime",
+ "loadingError": "لا يمكن جلب البيانات ، يرجى المحاولة مرة أخرى في وقت لاحق.",
+ "plugin": "البرنامج المساعد | الإضافات",
+ "install": "ثَبَّتَ",
+ "installing": "التثبيت",
+ "uninstall": "الغاء التثبيت",
+ "uninstalling": "إلغاء التثبيت",
+ "confirmUninstallPlugin": "هل أنت متأكد من أنك تريد إلغاء تثبيت هذا المكون الإضافي؟",
+ "smtp": "البريد الإلكتروني (SMTP)",
+ "secureOptionNone": "لا شيء / startTls (25 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "تجاهل خطأ TLS",
+ "From Email": "من البريد الإلكترونى",
+ "emailCustomSubject": "موضوع مخصص",
+ "To Email": "للبريد الإلكتروني",
+ "smtpCC": "نسخة",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "يمكنك الحصول على هذا بالانتقال إلى إعدادات الخادم -> عمليات التكامل -> عرض الخطافات على الويب -> خطاف ويب جديد",
+ "Bot Display Name": "اسم عرض الروبوت",
+ "Prefix Custom Message": "بادئة رسالة مخصصة",
+ "Hello @everyone is...": "مرحبًا {'@'} الجميع…",
+ "wayToGetTeamsURL": "يمكنك معرفة كيفية إنشاء عنوان URL webhook {0}.",
+ "wayToGetZohoCliqURL": "يمكنك معرفة كيفية إنشاء عنوان URL webhook {0}.",
+ "needSignalAPI": "تحتاج إلى وجود عميل إشارة مع REST API.",
+ "wayToCheckSignalURL": "يمكنك التحقق من عنوان URL هذا لعرض كيفية إعداد واحد",
+ "Number": "رقم",
+ "Recipients": "المستلمين",
+ "Access Token": "رمز وصول",
+ "Channel access token": "قناة الوصول إلى الرمز",
+ "Line Developers Console": "تحكم المطورين",
+ "lineDevConsoleTo": "وحدة المطورين Line Console - {0}",
+ "Basic Settings": "الإعدادات الأساسية",
+ "confirmClearStatisticsMsg": "هل أنت متأكد من أنك تريد حذف جميع الإحصائيات؟",
+ "importHandleDescription": "اختر 'تخطي موجود' إذا كنت تريد تخطي كل شاشة أو إشعار بنفس الاسم. 'الكتابة فوق' سوف يحذف كل شاشة وإخطار موجود.",
+ "User ID": "معرف المستخدم",
+ "Messaging API": "واجهة برمجة تطبيقات المراسلة",
+ "wayToGetLineChannelToken": "قم أولاً بالوصول إلى {0} إنشاء مزود وقناة (واجهة برمجة تطبيقات المراسلة) ، ثم يمكنك الحصول على رمز الوصول إلى القناة ومعرف المستخدم من عناصر القائمة المذكورة أعلاه.",
+ "Icon URL": "url url icon",
+ "aboutIconURL": "يمكنك توفير رابط لصورة في \"Icon URL\" لتجاوز صورة الملف الشخصي الافتراضي. لن يتم استخدامه إذا تم تعيين رمز رمز رمز.",
+ "aboutMattermostChannelName": "يمكنك تجاوز القناة الافتراضية التي تنشرها WebHook من خلال إدخال اسم القناة في \"Channel Name\" الحقل. يجب تمكين هذا في إعدادات Webhook Mattern. السابق",
+ "dataRetentionTimeError": "يجب أن تكون فترة الاستبقاء 0 أو أكبر",
+ "infiniteRetention": "ضبط على 0 للاحتفاظ لا نهائي.",
+ "confirmDeleteTagMsg": "هل أنت متأكد من أنك تريد حذف هذه العلامة؟ لن يتم حذف الشاشات المرتبطة بهذه العلامة.",
+ "enableGRPCTls": "السماح لإرسال طلب GRPC مع اتصال TLS",
+ "deleteMonitorMsg": "هل أنت متأكد من حذف هذا الشاشة؟",
+ "deleteMaintenanceMsg": "هل أنت متأكد من حذف هذه الصيانة؟",
+ "resolverserverDescription": "CloudFlare هو الخادم الافتراضي. يمكنك تغيير خادم المحوّل في أي وقت.",
+ "rrtypeDescription": "حدد نوع RR الذي تريد مراقبته",
+ "enableDefaultNotificationDescription": "سيتم تمكين هذا الإشعار افتراضيًا للشاشات الجديدة. لا يزال بإمكانك تعطيل الإخطار بشكل منفصل لكل شاشة.",
+ "clearEventsMsg": "هل أنت متأكد من حذف جميع الأحداث لهذا الشاشة؟",
+ "clearHeartbeatsMsg": "هل أنت متأكد من حذف جميع دقات القلب لهذا الشاشة؟",
+ "confirmImportMsg": "هل أنت متأكد من أنك تريد استيراد النسخ الاحتياطي؟ يرجى التحقق من أنك حددت خيار الاستيراد الصحيح.",
+ "twoFAVerifyLabel": "الرجاء إدخال الرمز المميز الخاص بك للتحقق من 2FA",
+ "pushoversounds pushover": "سداد (افتراضي)",
+ "pushoversounds bike": "دراجة هوائية",
+ "pushoversounds bugle": "بوق",
+ "tokenValidSettingsMsg": "الرمز المميز صالح! يمكنك الآن حفظ إعدادات 2FA.",
+ "confirmEnableTwoFAMsg": "هل أنت متأكد من أنك تريد تمكين 2FA؟",
+ "confirmDisableTwoFAMsg": "هل أنت متأكد من أنك تريد تعطيل 2FA؟",
+ "recurringIntervalMessage": "ركض مرة واحدة كل يوم | قم بالتشغيل مرة واحدة كل يوم {0}",
+ "affectedMonitorsDescription": "حدد المراقبين المتأثرة بالصيانة الحالية",
+ "affectedStatusPages": "إظهار رسالة الصيانة هذه على صفحات الحالة المحددة",
+ "atLeastOneMonitor": "حدد شاشة واحدة على الأقل من المتأثرين",
+ "passwordNotMatchMsg": "كلمة المرور المتكررة لا تتطابق.",
+ "notificationDescription": "يجب تعيين الإخطارات إلى شاشة للعمل.",
+ "keywordDescription": "ابحث في الكلمة الرئيسية في استجابة HTML العادية أو JSON. البحث حساس للحالة.",
+ "backupDescription": "يمكنك النسخ الاحتياطي لجميع الشاشات والإشعارات في ملف JSON.",
+ "backupDescription3": "يتم تضمين البيانات الحساسة مثل الرموز الإخطار في ملف التصدير ؛ يرجى تخزين التصدير بشكل آمن.",
+ "endpoint": "نقطة النهاية",
+ "octopushAPIKey": "\"API key\" from HTTP API بيانات اعتماد في لوحة التحكم",
+ "octopushLogin": "\"Login\" من بيانات اعتماد API HTTP في لوحة التحكم",
+ "promosmsLogin": "اسم تسجيل الدخول API",
+ "promosmsPassword": "كلمة مرور API",
+ "pushoversounds cashregister": "ماكينة تسجيل المدفوعات النقدية",
+ "pushoversounds classical": "كلاسيكي",
+ "pushoversounds cosmic": "كونية",
+ "pushoversounds falling": "هبوط",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "واردة",
+ "pushoversounds intermission": "استراحة",
+ "pushoversounds magic": "سحر",
+ "pushoversounds mechanical": "ميكانيكي",
+ "pushoversounds pianobar": "شريط البيانو",
+ "pushoversounds siren": "صفارة إنذار",
+ "pushoversounds spacealarm": "إنذار الفضاء",
+ "pushoversounds tugboat": "قارب السحب",
+ "pushoversounds alien": "إنذار أجنبي (طويل)",
+ "pushoversounds climb": "تسلق (طويل)",
+ "pushoversounds persistent": "مستمر (طويل)",
+ "pushoversounds echo": "صدى مهووس (طويل)",
+ "pushoversounds updown": "صعودا (طويلة)",
+ "pushoversounds vibrate": "يهتز فقط",
+ "pushoversounds none": "لا شيء (صامت)",
+ "pushyAPIKey": "مفتاح API السري",
+ "pushyToken": "رمز الجهاز",
+ "apprise": "إبلاغ (دعم 50+ خدمات الإخطار)",
+ "GoogleChat": "دردشة Google",
+ "wayToGetKookBotToken": "قم بإنشاء تطبيق واحصل على رمز الروبوت الخاص بك على {0}",
+ "wayToGetKookGuildID": "قم بتشغيل 'وضع المطور' في إعداد Kook وانقر بزر الماوس الأيمن على النقابة للحصول على معرفه",
+ "Guild ID": "معرف النقابة",
+ "User Key": "مفتاح المستخدم",
+ "Device": "جهاز",
+ "Message Title": "عنوان الرسالة",
+ "Notification Sound": "صوت الإشعار",
+ "More info on:": "مزيد من المعلومات حول: {0}",
+ "pushoverDesc1": "أولوية الطوارئ (2) لها مهلة افتراضية 30 ثانية بين إعادة المحاولة وستنتهي صلاحيتها بعد ساعة واحدة.",
+ "pushoverDesc2": "إذا كنت ترغب في إرسال إشعارات إلى أجهزة مختلفة ، قم بملء حقل الجهاز.",
+ "SMS Type": "نوع الرسائل القصيرة",
+ "octopushTypePremium": "قسط (سريع - موصى به للتنبيه)",
+ "octopushTypeLowCost": "التكلفة المنخفضة (بطيئة - تم حظرها أحيانًا بواسطة المشغل)",
+ "checkPrice": "تحقق من الأسعار {0}",
+ "apiCredentials": "بيانات اعتماد API",
+ "octopushLegacyHint": "هل تستخدم الإصدار القديم من Octopush (2011-2020) أو الإصدار الجديد؟",
+ "Check octopush prices": "تحقق من أسعار Octopush {0}.",
+ "AccessKeyId": "معرف AccessKey",
+ "SecretAccessKey": "Accesskey Secret",
+ "PhoneNumbers": "أرقام الهواتف",
+ "octopushPhoneNumber": "رقم الهاتف (تنسيق intl على سبيل المثال ",
+ "octopushSMSSender": "اسم مرسل الرسائل القصيرة",
+ "LunaSea Device ID": "معرف جهاز Lunasea",
+ "Apprise URL": "إبلاغ عنوان URL",
+ "Example:": "مثال: {0}",
+ "Read more:": "{0} :قراءة المزيد",
+ "Status:": "{0} :حالة",
+ "Strategy": "إستراتيجية",
+ "Free Mobile User Identifier": "معرف مستخدم الهاتف المحمول المجاني",
+ "Free Mobile API Key": "مفتاح واجهة برمجة تطبيقات مجانية للهاتف المحمول",
+ "Enable TLS": "تمكين TLS",
+ "Proto Service Name": "اسم خدمة البروتو",
+ "Proto Method": "طريقة البروتو",
+ "Proto Content": "محتوى proto",
+ "Economy": "اقتصاد",
+ "Lowcost": "تكلفة منخفضة",
+ "high": "عالي",
+ "SendKey": "Sendkey",
+ "SMSManager API Docs": "مستندات SMSManager API ",
+ "Gateway Type": "نوع البوابة",
+ "You can divide numbers with": "يمكنك تقسيم الأرقام مع",
+ "Base URL": "عنوان URL الأساسي",
+ "goAlertInfo": "الهدف هو تطبيق مفتوح المصدر لجدولة الجدولة التلقائية والإشعارات (مثل الرسائل القصيرة أو المكالمات الصوتية). إشراك الشخص المناسب تلقائيًا بالطريقة الصحيحة وفي الوقت المناسب! {0}",
+ "goAlertIntegrationKeyInfo": "احصل على مفتاح تكامل API العام للخدمة في هذا التنسيق \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" عادةً قيمة المعلمة الرمزية لعنوان url المنسق.",
+ "TemplateCode": "TemplateCode",
+ "SignName": "اسم تسجيل الدخول",
+ "Sms template must contain parameters: ": "يجب أن يحتوي قالب الرسائل القصيرة على معلمات: ",
+ "Bark Endpoint": "نقطة نهاية اللحاء",
+ "Bark Group": "مجموعة اللحاء",
+ "Bark Sound": "صوت اللحاء",
+ "WebHookUrl": "webhookurl",
+ "SecretKey": "Secretkey",
+ "For safety, must use secret key": "للسلامة يجب استخدام المفتاح السري",
+ "Device Token": "رمز الجهاز",
+ "Platform": "منصة",
+ "Android": "ذكري المظهر",
+ "Huawei": "هواوي",
+ "High": "عالٍ",
+ "Retry": "إعادة المحاولة",
+ "Topic": "عنوان",
+ "WeCom Bot Key": "WECOM BOT KEY",
+ "Setup Proxy": "وكيل الإعداد",
+ "Proxy Protocol": "بروتوكول الوكيل",
+ "Proxy Server": "مخدم بروكسي",
+ "Proxy server has authentication": "خادم الوكيل لديه مصادقة",
+ "promosmsTypeEco": "SMS Eco - رخيصة ولكن بطيئة وغالبًا ما تكون محملة. يقتصر فقط على المستفيدين البولنديين.",
+ "promosmsTypeFlash": "SMS Flash - سيتم عرض الرسالة تلقائيًا على جهاز المستلم. يقتصر فقط على المستفيدين البولنديين.",
+ "promosmsTypeFull": "SMS Full - Tier Premium SMS يمكنك استخدام اسم المرسل الخاص بك (تحتاج إلى تسجيل الاسم أولاً). موثوقة للتنبيهات.",
+ "promosmsTypeSpeed": "سرعة الرسائل القصيرة - أولوية قصوى في النظام. سريع وموثوق للغاية ولكنه مكلف (حوالي مرتين من الرسائل القصيرة السعر الكامل).",
+ "promosmsPhoneNumber": "رقم الهاتف (للمستلم البولندي ، يمكنك تخطي رموز المنطقة)",
+ "matrixDesc2": "يوصى بشدة بإنشاء مستخدم جديد ولا تستخدم رمز الوصول إلى مستخدم Matrix الخاص بك لأنه سيتيح الوصول الكامل إلى حسابك وجميع الغرف التي انضمت إليها. بدلاً من ذلك ، قم بإنشاء مستخدم جديد ودعوته فقط إلى الغرفة التي تريد تلقيها الإشعار فيها. يمكنك الحصول على رمز الوصول عن طريق تشغيل {0}",
+ "Channel Name": "اسم القناة",
+ "promosmsSMSSender": "اسم مرسل الرسائل القصيرة",
+ "promosmsAllowLongSMS": "السماح الرسائل القصيرة الطويلة",
+ "Feishu WebHookUrl": "Feishu Webhookurl",
+ "matrixHomeserverURL": "عنوان URL HomeServer (مع HTTP (S)",
+ "Internal Room Id": "معرف الغرفة الداخلية",
+ "matrixDesc1": "يمكنك العثور على معرف الغرفة الداخلي من خلال البحث في القسم المتقدم من إعدادات الغرفة في عميل Matrix الخاص بك. يجب أن تبدو مثل! QMDRCPUIFLWSFJXYE6",
+ "Uptime Kuma URL": "UPTIME KUMA URL",
+ "Icon Emoji": "أيقونة الرموز التعبيرية",
+ "signalImportant": "مهم",
+ "aboutWebhooks": "مزيد من المعلومات حول Webhooks ON",
+ "aboutChannelName": "أدخل اسم القناة في حقل اسم القناة {0} إذا كنت تريد تجاوز قناة WebHook. السابق",
+ "aboutKumaURL": "إذا تركت حقل URL في وقت التشغيل KUMA فارغًا ، فسيتم افتراضيًا إلى صفحة GitHub Project.",
+ "smtpDkimSettings": "إعدادات DKIM",
+ "smtpDkimDesc": "يرجى الرجوع إلى Nodemailer dkim {0} للاستخدام.",
+ "documentation": "توثيق",
+ "smtpDkimDomain": "اسم النطاق",
+ "smtpDkimKeySelector": "المحدد الرئيسي",
+ "smtpDkimPrivateKey": "مفتاح سري",
+ "smtpDkimHashAlgo": "خوارزمية التجزئة (اختياري)",
+ "smtpDkimheaderFieldNames": "مفاتيح الرأس للتوقيع (اختياري)",
+ "smtpDkimskipFields": "مفاتيح الرأس لا توقيع (اختياري)",
+ "wayToGetPagerDutyKey": "يمكنك الحصول على هذا عن طريق الانتقال إلى الخدمة -> دليل الخدمة -> (حدد خدمة) -> تكامل -> إضافة التكامل. هنا يمكنك البحث عن \"Events API V2\". مزيد من المعلومات {0}",
+ "Integration Key": "مفتاح التكامل",
+ "Integration URL": "URL تكامل",
+ "do nothing": "لا تفعل شيئا",
+ "alertaApiEndpoint": "نقطة نهاية API",
+ "alertaEnvironment": "بيئة",
+ "alertaApiKey": "مفتاح API",
+ "alertaAlertState": "حالة التنبيه",
+ "alertaRecoverState": "استعادة الدولة",
+ "auto acknowledged": "",
+ "auto resolve": "",
+ "serwersmsAPIUser": "اسم مستخدم API (بما في ذلك بادئة WebAPI_)",
+ "serwersmsAPIPassword": "كلمة مرور API",
+ "serwersmsPhoneNumber": "رقم الهاتف",
+ "serwersmsSenderName": "اسم مرسل الرسائل القصيرة (مسجل عبر بوابة العملاء)",
+ "smseagleTo": "أرقام الهواتف)",
+ "smseagleGroup": "اسم مجموعة كتب الهاتف (S)",
+ "smseagleContact": "كتاب الاتصال اسم (S)",
+ "smseagleRecipientType": "نوع المستلم",
+ "smseagleRecipient": "المتلقي (المتلقيين) (يجب فصل المتعددة مع فاصلة)",
+ "smseagleToken": "API وصول الرمز المميز",
+ "smseagleUrl": "عنوان URL لجهاز SMSEGLE الخاص بك",
+ "smseagleEncoding": "إرسال Unicode",
+ "smseaglePriority": "أولوية الرسالة (0-9 افتراضي = 0)",
+ "Recipient Number": "رقم المستلم",
+ "From Name/Number": "من الاسم/الرقم",
+ "Leave blank to use a shared sender number.": "اترك فارغًا لاستخدام رقم المرسل المشترك.",
+ "Octopush API Version": "إصدار Octopush API",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "ntfy Topic": "موضوع ntfy",
+ "onebotHttpAddress": "OneBot HTTP عنوان",
+ "onebotMessageType": "نوع رسالة OneBot",
+ "onebotGroupMessage": "مجموعة",
+ "onebotPrivateMessage": "خاص",
+ "onebotUserOrGroupId": "معرف المجموعة/المستخدم",
+ "onebotSafetyTips": "للسلامة يجب ضبط الرمز المميز للوصول",
+ "PushDeer Key": "مفتاح PushDeer",
+ "wayToGetClickSendSMSToken": "يمكنك الحصول على اسم مستخدم API ومفتاح API من {0}.",
+ "Custom Monitor Type": "نوع الشاشة المخصص",
+ "Google Analytics ID": "معرف Google Analytics",
+ "Edit Tag": "تحرير العلامة",
+ "Server Address": "عنوان المستقبل",
+ "Learn More": "يتعلم أكثر",
+ "apiKeyAddedMsg": "تمت إضافة مفتاح API خاص بك. يرجى تدوين ذلك لأنه لن يتم عرضه مرة أخرى.",
+ "No API Keys": "لا توجد مفاتيح API",
+ "apiKey-inactive": "غير نشط",
+ "disableAPIKeyMsg": "هل أنت متأكد أنك تريد تعطيل مفتاح API هذا؟",
+ "deleteAPIKeyMsg": "هل أنت متأكد أنك تريد حذف مفتاح API هذا؟",
+ "Auto Get": "الحصول التلقائي",
+ "Auto resolve or acknowledged": "",
+ "backupDescription2": "ملحوظة",
+ "languageName": "العربية",
+ "Game": "الألعاب",
+ "List": "القائمة",
+ "statusMaintenance": "الصيانة"
+}
diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json
new file mode 100644
index 000000000..913b8e331
--- /dev/null
+++ b/src/lang/bg-BG.json
@@ -0,0 +1,788 @@
+{
+ "languageName": "Български",
+ "checkEverySecond": "Ще се извършва на всеки {0} секунди",
+ "retryCheckEverySecond": "Ще се извършва на всеки {0} секунди",
+ "retriesDescription": "Максимален брой опити преди маркиране на услугата като недостъпна и изпращане на известие",
+ "ignoreTLSError": "Игнорирай TLS/SSL грешки за HTTPS уеб сайтове",
+ "upsideDownModeDescription": "Обръща статуса от достъпен на недостъпен. Ако услугата е достъпна, ще се вижда като НЕДОСТЪПНА.",
+ "maxRedirectDescription": "Максимален брой пренасочвания, които да бъдат следвани. Въведете 0 за да изключите пренасочване.",
+ "acceptedStatusCodesDescription": "Изберете статус кодове, които да се считат за успешен отговор.",
+ "passwordNotMatchMsg": "Повторената парола не съвпада.",
+ "notificationDescription": "Моля, задайте известието към монитор(и), за да функционира.",
+ "keywordDescription": "Търси ключова дума в чист HTML или JSON отговор - чувствителна е към регистъра.",
+ "pauseDashboardHome": "Пауза",
+ "deleteMonitorMsg": "Наистина ли желаете да изтриете този монитор?",
+ "deleteNotificationMsg": "Наистина ли желаете да изтриете това известие за всички монитори?",
+ "resolverserverDescription": "Cloudflare е сървърът по подразбиране, но можете да го промените по всяко време.",
+ "rrtypeDescription": "Изберете ресурсния запис, който желаете да наблюдавате",
+ "pauseMonitorMsg": "Наистина ли желаете да поставите в режим пауза?",
+ "enableDefaultNotificationDescription": "За всеки нов монитор това известие ще бъде активирано по подразбиране. Можете да го изключите за всеки отделен монитор.",
+ "clearEventsMsg": "Наистина ли желаете да изтриете всички събития за този монитор?",
+ "clearHeartbeatsMsg": "Наистина ли желаете да изтриете всички записи за честотни проверки на този монитор?",
+ "confirmClearStatisticsMsg": "Наистина ли желаете да изтриете всички статистически данни?",
+ "importHandleDescription": "Изберете 'Пропусни съществуващите', ако желаете да пропуснете всеки монитор или известие със същото име. 'Презапис' ще изтрие всеки съществуващ монитор и известие.",
+ "confirmImportMsg": "Сигурни ли сте, че желаете импортирането на архива? Моля, уверете се, че сте избрали правилната опция за импортиране.",
+ "twoFAVerifyLabel": "Моля, въведете вашия токен код, за да проверите дали 2FA работи:",
+ "tokenValidSettingsMsg": "Токен кодът е валиден! Вече можете да запазите настройките за 2FA.",
+ "confirmEnableTwoFAMsg": "Сигурни ли сте, че желаете да активирате 2FA?",
+ "confirmDisableTwoFAMsg": "Сигурни ли сте, че желаете да изключите 2FA?",
+ "Settings": "Настройки",
+ "Dashboard": "Табло",
+ "New Update": "Налична е актуализация",
+ "Language": "Език",
+ "Appearance": "Изглед",
+ "Theme": "Тема",
+ "General": "Общи",
+ "Version": "Версия",
+ "Check Update On GitHub": "Проверка за актуализация в GitHub",
+ "List": "Списък",
+ "Add": "Добави",
+ "Add New Monitor": "Добави монитор",
+ "Quick Stats": "Кратка статистика",
+ "Up": "Достъпен",
+ "Down": "Недостъпен",
+ "Pending": "Изчаква",
+ "Unknown": "Неизвестен",
+ "Pause": "Пауза",
+ "Name": "Име",
+ "Status": "Статус",
+ "DateTime": "Дата и час",
+ "Message": "Отговор",
+ "No important events": "Все още няма събития",
+ "Resume": "Възобнови",
+ "Edit": "Редактирай",
+ "Delete": "Изтрий",
+ "Current": "Текущ",
+ "Uptime": "Достъпност",
+ "Cert Exp.": "Вал. сертификат",
+ "day": "ден | дни",
+ "-day": "-дни",
+ "hour": "час",
+ "-hour": "-часa",
+ "Response": "Отговор",
+ "Ping": "Пинг",
+ "Monitor Type": "Монитор тип",
+ "Keyword": "Ключова дума",
+ "Friendly Name": "Псевдоним",
+ "URL": "URL Адрес",
+ "Hostname": "Име на хост",
+ "Port": "Порт",
+ "Heartbeat Interval": "Честота на проверка",
+ "Retries": "Повторни опити",
+ "Heartbeat Retry Interval": "Честота на повторните опити",
+ "Advanced": "Разширени",
+ "Upside Down Mode": "Обърнат режим",
+ "Max. Redirects": "Макс. брой пренасочвания",
+ "Accepted Status Codes": "Допустими статус кодове",
+ "Save": "Запази",
+ "Notifications": "Известия",
+ "Not available, please setup.": "Не са налични. Моля, настройте.",
+ "Setup Notification": "Настрой известие",
+ "Light": "Светла",
+ "Dark": "Тъмна",
+ "Auto": "Автоматично",
+ "Theme - Heartbeat Bar": "Тема - поле проверки",
+ "Normal": "Нормално",
+ "Bottom": "Долу",
+ "None": "Без",
+ "Timezone": "Часова зона",
+ "Search Engine Visibility": "Видимост за търсачки",
+ "Allow indexing": "Разреши индексиране",
+ "Discourage search engines from indexing site": "Не позволявай на търсачките да индексират този сайт",
+ "Change Password": "Промяна на парола",
+ "Current Password": "Текуща парола",
+ "New Password": "Нова парола",
+ "Repeat New Password": "Повторете новата парола",
+ "Update Password": "Актуализирай паролата",
+ "Disable Auth": "Изключи удостоверяване",
+ "Enable Auth": "Активирай удостоверяване",
+ "disableauth.message1": "Сигурни ли сте, че желаете да изключите удостоверяването ?",
+ "disableauth.message2": "Използва се в случаите, когато има настроен алтернативен метод за удостоверяване преди Uptime Kuma, например Cloudflare Access, Authelia или друг механизъм за удостоверяване.",
+ "Please use this option carefully!": "Моля, използвайте с повишено внимание!",
+ "Logout": "Изход от профила",
+ "Leave": "Отказ",
+ "I understand, please disable": "Разбирам. Моля, изключи",
+ "Confirm": "Потвърдете",
+ "Yes": "Да",
+ "No": "Не",
+ "Username": "Потребител",
+ "Password": "Парола",
+ "Remember me": "Запомни ме",
+ "Login": "Вход",
+ "No Monitors, please": "Все още няма монитори. Моля,",
+ "add one": "добавете един.",
+ "Notification Type": "Тип известие",
+ "Email": "Имейл",
+ "Test": "Тест",
+ "Certificate Info": "Информация за сертификат",
+ "Resolver Server": "Преобразуващ (DNS) сървър",
+ "Resource Record Type": "Тип запис",
+ "Last Result": "Последен резултат",
+ "Create your admin account": "Създаване на администриращ акаунт",
+ "Repeat Password": "Повторете паролата",
+ "Import Backup": "Импорт на архив",
+ "Export Backup": "Експорт на архив",
+ "Export": "Експорт",
+ "Import": "Импорт",
+ "respTime": "Време за отговор (ms)",
+ "notAvailableShort": "Няма",
+ "Default enabled": "Активирано по подразбиране",
+ "Apply on all existing monitors": "Приложи върху всички съществуващи монитори",
+ "Create": "Създай",
+ "Clear Data": "Изтрий данни",
+ "Events": "Събития",
+ "Heartbeats": "Проверки",
+ "Auto Get": "Авт. попълване",
+ "backupDescription": "Можете да архивирате всички монитори и всички известия в JSON файл.",
+ "backupDescription2": "PS: Имайте предвид, че данните за история и събития няма да бъдат включени.",
+ "backupDescription3": "Чувствителни данни, като токен кодове за известия, се съдържат в експортирания файл. Моля, бъдете внимателни с неговото съхранение.",
+ "alertNoFile": "Моля, изберете файл за импортиране.",
+ "alertWrongFileType": "Моля, изберете JSON файл.",
+ "Clear all statistics": "Изтрий цялата статистика",
+ "Skip existing": "Пропусни съществуващите",
+ "Overwrite": "Презапиши",
+ "Options": "Опции",
+ "Keep both": "Запази двете",
+ "Verify Token": "Провери токен код",
+ "Setup 2FA": "Настройка 2FA",
+ "Enable 2FA": "Активирай 2FA",
+ "Disable 2FA": "Деактивирай 2FA",
+ "2FA Settings": "Настройка за 2FA",
+ "Two Factor Authentication": "Двуфакторно удостоверяване",
+ "Active": "Активно",
+ "Inactive": "Неактивно",
+ "Token": "Токен код",
+ "Show URI": "Покажи URI",
+ "Tags": "Етикети",
+ "Add New below or Select...": "Добавете нов по-долу или изберете…",
+ "Tag with this name already exist.": "Етикет с това име вече съществува.",
+ "Tag with this value already exist.": "Етикет с тази стойност вече съществува.",
+ "color": "цвят",
+ "value (optional)": "стойност (по желание)",
+ "Gray": "Сиво",
+ "Red": "Червено",
+ "Orange": "Оранжево",
+ "Green": "Зелено",
+ "Blue": "Синьо",
+ "Indigo": "Индиго",
+ "Purple": "Лилаво",
+ "Pink": "Розово",
+ "Search...": "Търси…",
+ "Avg. Ping": "Ср. пинг",
+ "Avg. Response": "Ср. отговор",
+ "Entry Page": "Основна страница",
+ "statusPageNothing": "Все още няма нищо тук. Моля, добавете група или монитор.",
+ "No Services": "Няма Услуги",
+ "All Systems Operational": "Всички услуги са достъпни",
+ "Partially Degraded Service": "Част от услугите са недостъпни",
+ "Degraded Service": "Всички услуги са недостъпни",
+ "Add Group": "Добави група",
+ "Add a monitor": "Добави монитор",
+ "Edit Status Page": "Редактиране на статус страницата",
+ "Go to Dashboard": "Към Таблото",
+ "telegram": "Telegram",
+ "webhook": "Уеб кука",
+ "smtp": "Имейл (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Поддържа 50+ услуги за известяване)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "Status Page": "Статус страница",
+ "Status Pages": "Статус страници",
+ "Primary Base URL": "Базов URL адрес",
+ "Push URL": "Генериран Push URL адрес",
+ "needPushEvery": "Необходимо е да извършвате заявка към този URL адрес на всеки {0} секунди.",
+ "pushOptionalParams": "Допълнителни, но не задължителни параметри: {0}",
+ "defaultNotificationName": "Моето {notification} известие ({number})",
+ "here": "тук",
+ "Required": "Задължително поле",
+ "Bot Token": "Бот токен",
+ "wayToGetTelegramToken": "Можете да получите токен от {0}.",
+ "Chat ID": "Чат ID",
+ "supportTelegramChatID": "Поддържа Direct Chat / Group / Channel's Chat ID",
+ "wayToGetTelegramChatID": "Можете да получите вашето чат ID, като изпратите съобщение на бота, след което е нужно да посетите този URL адрес за да го видите:",
+ "YOUR BOT TOKEN HERE": "ВАШИЯТ БОТ ТОКЕН ТУК",
+ "chatIDNotFound": "Чат ID не е намерено. Моля, първо изпратете съобщение до този бот",
+ "Post URL": "Post URL адрес",
+ "Content Type": "Тип съдържание",
+ "webhookJsonDesc": "{0} е подходящ за всички съвременни http сървъри, като например express.js",
+ "webhookFormDataDesc": "{multipart} е подходящ за PHP, нужно е да анализирате json чрез {decodeFunction}",
+ "secureOptionNone": "Няма (25) / STARTTLS (587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Игнорирай TLS грешките",
+ "From Email": "От имейл адрес",
+ "emailCustomSubject": "Модифициране на тема",
+ "To Email": "Получател имейл адрес",
+ "smtpCC": "Явно копие до имейл адрес:",
+ "smtpBCC": "Скрито копие до имейл адрес:",
+ "Discord Webhook URL": "Discord URL адрес на уеб кука",
+ "wayToGetDiscordURL": "Можете да създадете, от меню \"Настройки на сървъра\" -> \"Интеграции\" -> \"Уеб куки\" -> \"Нова уеб кука\"",
+ "Bot Display Name": "Име на бота, което да се показва",
+ "Prefix Custom Message": "Модифицирано обръщение",
+ "Hello @everyone is...": "Здравейте, {'@'}everyone е…",
+ "Webhook URL": "Уеб кука URL адрес",
+ "wayToGetTeamsURL": "Можете да научите как се създава URL адрес за уеб кука {0}.",
+ "Number": "Номер",
+ "Recipients": "Получатели",
+ "needSignalAPI": "Необходимо е да разполагате със Signal клиент с REST API.",
+ "wayToCheckSignalURL": "Можете да посетите този URL адрес, ако се нуждаете от помощ при настройването:",
+ "signalImportant": "ВАЖНО: Не можете да смесвате \"Групи\" и \"Номера\" в поле \"Получатели\"!",
+ "Application Token": "Токен код за приложението",
+ "Server URL": "URL адрес на сървъра",
+ "Priority": "Приоритет",
+ "Icon Emoji": "Иконка Емотикон",
+ "Channel Name": "Канал име",
+ "Uptime Kuma URL": "Uptime Kuma URL адрес",
+ "aboutWebhooks": "Повече информация относно уеб куки на: {0}",
+ "aboutChannelName": "Въведете името на канала в поле {0} \"Канал име\", ако желаете да заобиколите канала от уеб куката. Например: #other-channel",
+ "aboutKumaURL": "Ако оставите празно полето \"Uptime Kuma URL адрес\", по подразбиране ще се използва GitHub страницата на проекта.",
+ "emojiCheatSheet": "Подсказки за емотикони: {0}",
+ "User Key": "Потребителски ключ",
+ "Device": "Устройство",
+ "Message Title": "Заглавие на съобщението",
+ "Notification Sound": "Звуков сигнал",
+ "More info on:": "Повече информация на: {0}",
+ "pushoverDesc1": "Приоритет Спешно (2) по подразбиране изчаква 30 секунди между повторните опити и изтича след 1 час.",
+ "pushoverDesc2": "Ако желаете да изпратите известия до различни устройства, попълнете полето Устройство.",
+ "SMS Type": "SMS тип",
+ "octopushTypePremium": "Премиум (Бърз - препоръчителен в случай на тревога)",
+ "octopushTypeLowCost": "Евтин (Бавен - понякога бива блокиран от оператора)",
+ "checkPrice": "Тарифни планове на {0}:",
+ "octopushLegacyHint": "Дали използвате съвместима версия на Octopush (2011-2020) или нова версия?",
+ "Check octopush prices": "Тарифни планове на octopush {0}.",
+ "octopushPhoneNumber": "Телефонен номер (в международен формат, например: +33612345678) ",
+ "octopushSMSSender": "SMS подател Име: 3-11 знака - букви, цифри и интервал (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea ID на устройство",
+ "Apprise URL": "Apprise URL адрес",
+ "Example:": "Пример: {0}",
+ "Read more:": "Научете повече: {0}",
+ "Status:": "Статус: {0}",
+ "Read more": "Научете повече",
+ "appriseInstalled": "Apprise е инсталиран.",
+ "appriseNotInstalled": "Apprise не е инсталиран. {0}",
+ "Access Token": "Токен код за достъп",
+ "Channel access token": "Канал токен код",
+ "Line Developers Console": "Line - Конзола за разработчици",
+ "lineDevConsoleTo": "Line - Конзола за разработчици - {0}",
+ "Basic Settings": "Основни настройки",
+ "User ID": "Потребител ID",
+ "Messaging API": "API за съобщаване",
+ "wayToGetLineChannelToken": "Необходимо е първо да посетите {0}, за да създадете (Messaging API) за доставчик и канал, след което можете да вземете токен кода за канал и потребителско ID от споменатите по-горе елементи на менюто.",
+ "Icon URL": "URL адрес за иконка",
+ "aboutIconURL": "Можете да предоставите линк към картинка в поле \"URL Адрес за иконка\" за да отмените картинката на профила по подразбиране. Няма да се използва, ако вече сте настроили емотикон.",
+ "aboutMattermostChannelName": "Можете да замените канала по подразбиране, към който публикува уеб куката, като въведете името на канала в полето \"Канал име\". Трябва да бъде активирано в настройките за уеб кука на Mattermost. Например: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - евтин, но бавен. Често е претоварен. Само за получатели от Полша.",
+ "promosmsTypeFlash": "SMS FLASH - Съобщението автоматично се показва на устройството на получателя. Само за получатели от Полша.",
+ "promosmsTypeFull": "SMS FULL - Високо ниво на SMS услуга. Можете да използвате Вашето име като подател (Необходимо е първо да регистрирате името). Надежден метод за съобщения тип тревога.",
+ "promosmsTypeSpeed": "SMS SPEED - Най-висок приоритет в системата. Много бърза и надеждна, но същевременно скъпа услуга. (Около два пъти по-висока цена в сравнение с SMS FULL).",
+ "promosmsPhoneNumber": "Телефонен номер (за получатели от Полша, можете да пропуснете въвеждането на код за населено място)",
+ "promosmsSMSSender": "SMS Подател име: Предварително регистрирано име или някое от имената по подразбиране: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu URL адрес за уеб кука",
+ "matrixHomeserverURL": "Сървър URL адрес (започва с http(s):// и порт по желание)",
+ "Internal Room Id": "ID на вътрешна стая",
+ "matrixDesc1": "Можете да намерите \"ID на вътрешна стая\" в разширените настройки на стаята във вашия Matrix клиент. Примерен изглед: !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Силно препоръчваме да създадете НОВ потребител и да НЕ използвате токен кодът на вашия личен Matrix потребител, т.к. той позволява пълен достъп до вашия акаунт и всички стаи към които сте се присъединили. Вместо това създайте нов потребител и го поканете само в стаята, където желаете да получавате известията. Токен код за достъп ще получите изпълнявайки {0}",
+ "Method": "Метод",
+ "Body": "Съобщение",
+ "Headers": "Хедъри",
+ "PushUrl": "Push URL адрес",
+ "HeadersInvalidFormat": "Заявените хедъри не са валидни JSON: ",
+ "BodyInvalidFormat": "Заявеното съобщение не е валиден JSON: ",
+ "Monitor History": "История на мониторите",
+ "clearDataOlderThan": "Ще се съхранява за {0} дни.",
+ "records": "записа",
+ "One record": "Един запис",
+ "steamApiKeyDescription": "За да мониторирате Steam Game Server се нуждаете от Steam Web-API ключ. Можете да регистрирате Вашия API ключ тук: ",
+ "clicksendsms": "ClickSend SMS",
+ "apiCredentials": "API удостоверяване",
+ "PasswordsDoNotMatch": "Паролите не съвпадат.",
+ "Current User": "Текущ потребител",
+ "recent": "Скорошни",
+ "shrinkDatabaseDescription": "Инициира \"VACUUM\" за \"SQLite\" база данни. Ако Вашата база данни е създадена след версия 1.10.0, \"AUTO_VACUUM\" функцията е активна и това действие не е нужно.",
+ "Done": "Готово",
+ "Info": "Информация",
+ "Security": "Сигурност",
+ "Steam API Key": "Steam API ключ",
+ "Shrink Database": "Редуцирай базата данни",
+ "Pick a RR-Type...": "Изберете вида на ресурсния запис за мониториране…",
+ "Pick Accepted Status Codes...": "Изберете статус кодове, които да се считат за успешен отговор…",
+ "Default": "По подразбиране",
+ "HTTP Options": "HTTP Опции",
+ "Create Incident": "Създаване на инцидент",
+ "Title": "Заглавие",
+ "Content": "Съдържание",
+ "Style": "Стил",
+ "info": "информация",
+ "warning": "предупреждение",
+ "danger": "опасност",
+ "primary": "основен",
+ "light": "светъл",
+ "dark": "тъмен",
+ "Post": "Публикувай",
+ "Please input title and content": "Моля, въведете заглавие и съдържание",
+ "Created": "Създаден",
+ "Last Updated": "Последно обновен",
+ "Unpin": "Откачи",
+ "Switch to Light Theme": "Превключи към светла тема",
+ "Switch to Dark Theme": "Превключи към тъмна тема",
+ "Show Tags": "Покажи етикети",
+ "Hide Tags": "Скрий етикети",
+ "Description": "Описание",
+ "No monitors available.": "Няма налични монитори.",
+ "Add one": "Добави един",
+ "No Monitors": "Няма монитори",
+ "Untitled Group": "Група без заглавие",
+ "Services": "Услуги",
+ "Discard": "Отмени",
+ "Cancel": "Отмени",
+ "Powered by": "Създадено чрез",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Потребителско име (вкл. webapi_ prefix)",
+ "serwersmsAPIPassword": "API Парола",
+ "serwersmsPhoneNumber": "Телефон номер",
+ "serwersmsSenderName": "SMS Подател име (регистриран през клиентския портал)",
+ "stackfield": "Stackfield",
+ "smtpDkimSettings": "DKIM Настройки",
+ "smtpDkimDesc": "Моля, вижте {0} на Nodemailer DKIM за инструкции.",
+ "documentation": "документацията",
+ "smtpDkimDomain": "Домейн",
+ "smtpDkimKeySelector": "Селектор на ключ",
+ "smtpDkimPrivateKey": "Частен ключ",
+ "smtpDkimHashAlgo": "Хеш алгоритъм (по желание)",
+ "smtpDkimheaderFieldNames": "Хедър ключове за подписване (по желание)",
+ "smtpDkimskipFields": "Хедър ключове, които да не се подписват (по желание)",
+ "PushByTechulus": "Push от Techulus",
+ "GoogleChat": "Google Chat (Само за работното пространство на Google)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "Крайна точка на API",
+ "alertaEnvironment": "Среда",
+ "alertaApiKey": "API Ключ",
+ "alertaAlertState": "Състояние на тревога",
+ "alertaRecoverState": "Състояние на възстановяване",
+ "deleteStatusPageMsg": "Сигурни ли сте, че желаете да изтриете тази статус страница?",
+ "Proxies": "Прокси",
+ "default": "По подразбиране",
+ "enabled": "Активирано",
+ "setAsDefault": "Зададен по подразбиране",
+ "deleteProxyMsg": "Сигурни ли сте, че желаете да изтриете това прокси за всички монитори?",
+ "proxyDescription": "За да функционират трябва да бъдат зададени към монитор.",
+ "enableProxyDescription": "Това прокси няма да има ефект върху заявките за мониторинг, докато не бъде активирано. Можете да контролирате временното деактивиране на проксито от всички монитори чрез статуса на активиране.",
+ "setAsDefaultProxyDescription": "Това прокси ще бъде активно по подразбиране за новите монитори. Можете да го изключвате отделно за всеки един монитор.",
+ "Certificate Chain": "Верига на сертификата",
+ "Valid": "Валиден",
+ "Invalid": "Невалиден",
+ "AccessKeyId": "ID на ключ за достъп",
+ "SecretAccessKey": "Тайна на ключа за достъп",
+ "PhoneNumbers": "Телефонни номера",
+ "TemplateCode": "Шаблон Код",
+ "SignName": "Знак име",
+ "Sms template must contain parameters: ": "SMS шаблонът трябва да съдържа следните параметри: ",
+ "Bark Endpoint": "Bark крайна точка",
+ "WebHookUrl": "URL адрес на уеб кука",
+ "SecretKey": "Таен ключ",
+ "For safety, must use secret key": "За сигурност, трябва да се използва таен ключ",
+ "Device Token": "Токен за устройство",
+ "Platform": "Платформа",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Висок",
+ "Retry": "Повтори",
+ "Topic": "Тема",
+ "WeCom Bot Key": "WeCom бот ключ",
+ "Setup Proxy": "Настрой прокси",
+ "Proxy Protocol": "Прокси протокол",
+ "Proxy Server": "Прокси сървър",
+ "Proxy server has authentication": "Прокси сървърът е с удостоверяване",
+ "User": "Потребител",
+ "Installed": "Инсталиран",
+ "Not installed": "Не е инсталиран",
+ "Running": "Работи",
+ "Not running": "Не работи",
+ "Remove Token": "Премахни токен",
+ "Start": "Стартирай",
+ "Stop": "Спри",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Добави нова статус страница",
+ "Slug": "Слъг",
+ "Accept characters:": "Приеми символи:",
+ "startOrEndWithOnly": "Започва или завършва само с {0}",
+ "No consecutive dashes": "Без последователни тирета",
+ "Next": "Следващ",
+ "The slug is already taken. Please choose another slug.": "Този слъг вече се използва. Моля изберете друг.",
+ "No Proxy": "Без прокси",
+ "Authentication": "Удостоверяване",
+ "HTTP Basic Auth": "HTTP основно удостоверяване",
+ "New Status Page": "Нова статус страница",
+ "Page Not Found": "Страницата не е открита",
+ "Reverse Proxy": "Ревърс прокси",
+ "Backup": "Архивиране",
+ "About": "Относно",
+ "wayToGetCloudflaredURL": "(Свалете \"cloudflared\" от {0})",
+ "cloudflareWebsite": "Cloudflare уеб сайт",
+ "Message:": "Съобщение:",
+ "Don't know how to get the token? Please read the guide:": "Не знаете как да вземете токен? Моля, прочетете ръководството:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Текущата връзка може да прекъсне ако в момента сте свързани чрез \"Cloudflare Tunnel\". Сигурни ли сте, че желаете да го спрете? Моля, въведете Вашата текуща парола за да потвърдите.",
+ "Other Software": "Друг софтуер",
+ "For example: nginx, Apache and Traefik.": "Например: Nginx, Apache и Traefik.",
+ "Please read": "Моля, прочетете",
+ "Subject:": "Тема:",
+ "Valid To:": "Валиден до:",
+ "Days Remaining:": "Оставащи дни:",
+ "Issuer:": "Издател:",
+ "Fingerprint:": "Пръстов отпечатък:",
+ "No status pages": "Няма статус страници",
+ "topic": "Тема",
+ "topicExplanation": "MQTT тема за мониториране",
+ "successMessage": "Съобщение при успех",
+ "successMessageExplanation": "MQTT съобщение, което ще бъде считано за успех",
+ "Customize": "Персонализирай",
+ "Custom Footer": "Персонализиран долен колонтитул",
+ "Custom CSS": "Потребителски CSS",
+ "Domain Name Expiry Notification": "Известие при изтичащ домейн",
+ "Proxy": "Прокси",
+ "Date Created": "Дата на създаване",
+ "onebotHttpAddress": "OneBot HTTP адрес",
+ "onebotMessageType": "OneBot тип съобщение",
+ "onebotGroupMessage": "Група",
+ "onebotPrivateMessage": "Лично",
+ "onebotUserOrGroupId": "Група/Потребител ID",
+ "onebotSafetyTips": "С цел безопасност трябва да зададете токен код за достъп",
+ "PushDeer Key": "PushDeer ключ",
+ "Footer Text": "Текст долен колонтитул",
+ "Show Powered By": "Покажи \"Създадено чрез\"",
+ "Domain Names": "Домейни",
+ "signedInDisp": "Вписан като {0}",
+ "signedInDispDisabled": "Удостоверяването е изключено.",
+ "Certificate Expiry Notification": "Известие за изтичане валидността на сертификата",
+ "API Username": "API Потребител",
+ "API Key": "API Ключ",
+ "Recipient Number": "Номер на получателя",
+ "From Name/Number": "От Име/Номер",
+ "Leave blank to use a shared sender number.": "Оставете празно, за да използвате споделен номер на подател.",
+ "Octopush API Version": "Octopush API версия",
+ "Legacy Octopush-DM": "Octopush-DM старa версия",
+ "endpoint": "крайна точка",
+ "octopushAPIKey": "\"API ключ\" от HTTP API удостоверяване в контролния панел",
+ "octopushLogin": "\"Вписване\" от HTTP API удостоверяване в контролния панел",
+ "promosmsLogin": "API Потребителско име",
+ "promosmsPassword": "API Парола",
+ "pushoversounds pushover": "Pushover (по подразбиране)",
+ "pushoversounds bike": "Велосипед",
+ "pushoversounds bugle": "Тромпет",
+ "pushoversounds cashregister": "Касов апарат",
+ "pushoversounds classical": "Класическа музика",
+ "pushoversounds cosmic": "Космически",
+ "pushoversounds falling": "Падащ",
+ "pushoversounds gamelan": "Игра в мрежа",
+ "pushoversounds incoming": "Входящ",
+ "pushoversounds intermission": "Прекъсване",
+ "pushoversounds magic": "Магия",
+ "pushoversounds mechanical": "Механичен",
+ "pushoversounds pianobar": "Пиано бар",
+ "pushoversounds siren": "Сирена",
+ "pushoversounds spacealarm": "Космическа аларма",
+ "pushoversounds tugboat": "Буксир",
+ "pushoversounds alien": "Извънземна аларма (дълъг)",
+ "pushoversounds climb": "Изкачване (дълъг)",
+ "pushoversounds persistent": "Постоянен (дълъг)",
+ "pushoversounds echo": "Pushover ехо (дълъг)",
+ "pushoversounds updown": "Горе долу (дълъг)",
+ "pushoversounds vibrate": "Само вибрация",
+ "pushoversounds none": "Без (тих)",
+ "pushyAPIKey": "Таен API ключ",
+ "pushyToken": "Токен на устройство",
+ "Show update if available": "Покажи актуализация, ако е налична",
+ "Also check beta release": "Проверявай и за бета версии",
+ "Using a Reverse Proxy?": "Използвате ревърс прокси?",
+ "Check how to config it for WebSocket": "Проверете как да го конфигурирате за WebSocket",
+ "Steam Game Server": "Steam Game сървър",
+ "Most likely causes:": "Най-вероятни причини:",
+ "The resource is no longer available.": "Ресурсът вече не е наличен.",
+ "There might be a typing error in the address.": "Възможно е да е допусната грешка при изписването на адреса.",
+ "What you can try:": "Какво можете да опитате:",
+ "Retype the address.": "Повторно въвеждане на адреса.",
+ "Go back to the previous page.": "Да се върнете към предишната страница.",
+ "Coming Soon": "Очаквайте скоро",
+ "wayToGetClickSendSMSToken": "Можете да получите API потребителско име и API ключ от {0} .",
+ "dnsPortDescription": "DNS порт на сървъра. По подразбиране е 53. Можете да го промените по всяко време.",
+ "error": "грешка",
+ "critical": "критично",
+ "wayToGetPagerDutyKey": "Можете да го получите като посетите Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тук трябва да потърсите \"Events API V2\". Повече информация {0}",
+ "Integration Key": "Ключ за интегриране",
+ "Integration URL": "URL адрес за интеграция",
+ "Auto resolve or acknowledged": "Автоматично разрешаване или потвърждаване",
+ "do nothing": "не прави нищо",
+ "auto acknowledged": "автоматично потвърждаване",
+ "auto resolve": "автоматично разрешаване",
+ "Connection String": "Стринг за връзка",
+ "Query": "Заявка",
+ "settingsCertificateExpiry": "Изтичане валидността на TLS сертификата",
+ "certificationExpiryDescription": "HTTPS мониторите ще задействат известие, ако е наличен изтичащ TLS сертификат, през следващите:",
+ "ntfy Topic": "ntfy Тема",
+ "Domain": "Домейн",
+ "Workstation": "Работна станция",
+ "disableCloudflaredNoAuthMsg": "Тъй като сте в режим \"No Auth mode\", парола не се изисква.",
+ "wayToGetLineNotifyToken": "Можете да получите токен код за достъп от {0}",
+ "resendEveryXTimes": "Изпращай повторно на всеки {0} пъти",
+ "resendDisabled": "Повторното изпращане е изключено",
+ "Resend Notification if Down X times consecutively": "Повторно изпращане на известие, ако е недостъпен X пъти последователно",
+ "Bark Group": "Bark група",
+ "Bark Sound": "Bark звук",
+ "HTTP Headers": "HTTP хедъри",
+ "Trust Proxy": "Доверено Proxy",
+ "HomeAssistant": "Home Assistant",
+ "RadiusSecret": "Radius таен код",
+ "RadiusSecretDescription": "Споделен таен код между клиент и сървър",
+ "RadiusCalledStationId": "Повиквана станция ID",
+ "RadiusCalledStationIdDescription": "Идентификатор на повикваното устройство",
+ "RadiusCallingStationId": "Повикваща станция ID",
+ "RadiusCallingStationIdDescription": "Идентификатор на повикващото устройство",
+ "Setup Docker Host": "Настройка на Docker хост",
+ "Connection Type": "Тип свързване",
+ "Docker Daemon": "Docker демон",
+ "deleteDockerHostMsg": "Сигурни ли сте, че желаете да изтриете този Docker хост за всички монитори?",
+ "socket": "Сокет",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker контейнер",
+ "Container Name / ID": "Име на контейнер / ID",
+ "Docker Host": "Docker хост",
+ "Docker Hosts": "Docker хостове",
+ "trustProxyDescription": "Доверяване на 'X-Forwarded-*' хедърите. В случай, че желаете да получавате реалния IP адрес на клиента и Uptime Kuma е зад системи като Nginx или Apache, трябва да разрешите тази опция.",
+ "Examples": "Примери",
+ "Home Assistant URL": "Home Assistant URL адрес",
+ "Long-Lived Access Token": "Long-Lived токен за достъп",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token можете да създадете, като кликнете върху името на профила си (долу ляво) и превъртите до най-долу, след това кликнете върху Създаване на токен. ",
+ "Notification Service": "Услуга за известяване",
+ "default: notify all devices": "по подразбиране: извести всички устройства",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Списък с услугите за известяване може да бъде намерен в Home Assistant под \"Developer Tools > Services\", там потърсете \"notification\", за да намерите името на вашето устройство/телефон.",
+ "Automations can optionally be triggered in Home Assistant:": "Автоматизациите могат да се задействат при нужда в Home Assistant:",
+ "Trigger type:": "Задействане тип:",
+ "Event type:": "Събитие тип:",
+ "Event data:": "Събитие данни:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "След което изберете действие, например да превключите сцената, където RGB светлината е червена.",
+ "Frontend Version": "Фронтенд версия",
+ "Frontend Version do not match backend version!": "Фронтенд версията не съвпада с Бекенд версията!",
+ "Base URL": "Базов URL адрес",
+ "goAlertInfo": "GoAlert е приложение с отворен код за планиране на повиквания, автоматизирани ескалации и известия (като SMS или гласови повиквания). Автоматично ангажирайте точния човек, по точния начин и в точното време! {0}",
+ "goAlertIntegrationKeyInfo": "Вземете общ API интеграционен ключ за услугата във формат \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обикновено стойността на параметъра token на копирания URL адрес.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Отпаднала: Тъй като са добавени много функции, тази опция за архивиране не е достатъчно поддържана и не може да генерира или възстанови пълен архив.",
+ "backupRecommend": "Вместо това моля, архивирайте директно дяла или папката (./data/).",
+ "Maintenance": "Поддръжка",
+ "statusMaintenance": "Поддръжка",
+ "Schedule maintenance": "Планиране на поддръжка",
+ "Affected Monitors": "Засегнати монитори",
+ "Pick Affected Monitors...": "Изберете засегнатите монитори…",
+ "Start of maintenance": "Стартирай поддръжка",
+ "All Status Pages": "Всички статус страници",
+ "Select status pages...": "Изберете статус страници…",
+ "recurringIntervalMessage": "Изпълнявай ежедневно | Изпълнявай всеки {0} дни",
+ "affectedMonitorsDescription": "Изберете монитори, попадащи в обсега на текущата поддръжка",
+ "affectedStatusPages": "Покажи това съобщение за поддръжка на избрани статус страници",
+ "atLeastOneMonitor": "Изберете поне един засегнат монитор",
+ "deleteMaintenanceMsg": "Сигурни ли сте, че желаете да изтриете тази поддръжка?",
+ "Optional": "По желание",
+ "squadcast": "Squadcast",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API Документация ",
+ "Gateway Type": "Тип на шлюза",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Можете да разделяте числата с",
+ "or": "или",
+ "recurringInterval": "Интервал",
+ "Recurring": "Повтаряне",
+ "strategyManual": "Активен/Неактивен ръчно",
+ "warningTimezone": "Използва се часовата зона на сървъра",
+ "weekdayShortMon": "Пон",
+ "weekdayShortTue": "Вт",
+ "weekdayShortWed": "Ср",
+ "weekdayShortThu": "Чет",
+ "weekdayShortFri": "Пет",
+ "weekdayShortSat": "Съб",
+ "weekdayShortSun": "Нед",
+ "dayOfWeek": "Ден",
+ "dayOfMonth": "Дата",
+ "lastDay": "Последен ден",
+ "lastDay1": "Последен ден от месеца",
+ "lastDay2": "2-ри последен ден на месеца",
+ "lastDay3": "3-ти последен ден на месеца",
+ "lastDay4": "4-ти последен ден на месеца",
+ "No Maintenance": "Няма поддръжка",
+ "pauseMaintenanceMsg": "Сигурни ли сте, че желаете да направите пауза?",
+ "maintenanceStatus-under-maintenance": "В режим поддръжка",
+ "maintenanceStatus-inactive": "Неактивна",
+ "maintenanceStatus-scheduled": "Планирана",
+ "maintenanceStatus-ended": "Приключена",
+ "maintenanceStatus-unknown": "Неизвестна",
+ "Display Timezone": "Покажи часова зона",
+ "Server Timezone": "Часова зона на сървъра",
+ "statusPageMaintenanceEndDate": "Край",
+ "enableGRPCTls": "Разреши изпращане на gRPC заявка с TLS връзка",
+ "grpcMethodDescription": "Името на метода се форматира в \"cammelCase\", например sayHello, check, и т.н.",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "Тел. номер(а)",
+ "smseagleGroup": "Име на група/и от тел. указател",
+ "smseagleContact": "Име(на) от тел. указател",
+ "smseagleRecipientType": "Получател тип",
+ "smseagleRecipient": "Получател(и) (при повече от един разделете със запетая)",
+ "smseagleToken": "API токен за достъп",
+ "smseagleUrl": "Вашият SMSEagle URL на устройството",
+ "smseagleEncoding": "Изпрати като Unicode",
+ "smseaglePriority": "Приоритет на съобщението (0-9, по подразбиране = 0)",
+ "IconUrl": "Икона URL адрес",
+ "webhookAdditionalHeadersTitle": "Допълнителни хедъри",
+ "webhookAdditionalHeadersDesc": "Задава допълнителни хедъри, изпратени с уеб куката.",
+ "Enable DNS Cache": "Активирай DNS кеширане",
+ "Enable": "Активирай",
+ "Disable": "Деактивирай",
+ "dnsCacheDescription": "Възможно е да не работи в IPv6 среда - деактивирайте, ако срещнете проблеми.",
+ "Single Maintenance Window": "Единичен времеви интервал за поддръжка",
+ "Maintenance Time Window of a Day": "Времеви интервал от деня за поддръжка",
+ "Effective Date Range": "Ефективен интервал от дни (по желание)",
+ "Schedule Maintenance": "Планирай поддръжка",
+ "Date and Time": "Дата и час",
+ "DateTime Range": "Изтрий времеви интервал",
+ "Strategy": "Стратегия",
+ "Free Mobile User Identifier": "Free Mobile потребителски идентификатор",
+ "Free Mobile API Key": "Free Mobile API ключ",
+ "Enable TLS": "Активирай TLS",
+ "Proto Service Name": "Proto име на услугата",
+ "Proto Method": "Proto метод",
+ "Proto Content": "Proto съдържание",
+ "Economy": "Икономичен",
+ "Lowcost": "Евтин",
+ "high": "висок",
+ "General Monitor Type": "Общ тип монитор",
+ "Passive Monitor Type": "Пасивет тип монитор",
+ "Specific Monitor Type": "Специфичен тип монитор",
+ "ZohoCliq": "ZohoCliq",
+ "wayToGetZohoCliqURL": "Можете да научите как се създава URL адрес за уеб кука {0}.",
+ "Kook": "Kook",
+ "wayToGetKookBotToken": "Създайте приложение и вземете вашия бот токен на {0}",
+ "wayToGetKookGuildID": "Превключете в 'Developer Mode' в 'Kook' настройките, след което десен клик върху 'guild' за да вземете неговото 'ID'",
+ "Guild ID": "Guild ID",
+ "Help": "Помощ",
+ "Game": "Игра",
+ "Custom": "Потребителски",
+ "infiniteRetention": "Задайте стойност 0 за безкрайно съхранение.",
+ "Monitor": "Монитор | Монитори",
+ "dataRetentionTimeError": "Периодът на съхранение трябва да е 0 или по-голям",
+ "confirmDeleteTagMsg": "Сигурни ли сте, че желаете да изтриете този етикет? Мониторите, свързани с него, няма да бъдат изтрити.",
+ "promosmsAllowLongSMS": "Позволи дълъг SMS",
+ "Packet Size": "Размер на пакет",
+ "Custom Monitor Type": "Потребителски тип монитор",
+ "loadingError": "Данните не могат да бъдат изтеглени. Моля, опитайте отново по-късно.",
+ "plugin": "Плъгин | Плъгини",
+ "install": "Инсталирай",
+ "installing": "Инсталиране",
+ "uninstall": "Деинсталирай",
+ "uninstalling": "Деинсталиране",
+ "confirmUninstallPlugin": "Сигурни ли сте, че желаете да деинсталирате този плъгин?",
+ "markdownSupported": "Поддържа се Markdown синтаксис",
+ "Google Analytics ID": "Google Analytics ID",
+ "Edit Tag": "Редактиране на етикет",
+ "Learn More": "Научете повече",
+ "Server Address": "Сървър адрес",
+ "notificationRegional": "Регионални",
+ "Body Encoding": "Кодировка на тялото",
+ "telegramMessageThreadID": "(По избор) Thread ID на съобщението",
+ "telegramMessageThreadIDDescription": "Незадължителен уникален идентификатор за целевата нишка от съобщения (тема) на форума; само за форумни супергрупи",
+ "telegramProtectContent": "Защита на препращане/записване",
+ "telegramProtectContentDescription": "Ако е активирано, съобщенията от ботове в Telegram ще бъдат защитени от препращане и запазване.",
+ "telegramSendSilentlyDescription": "Изпраща съобщението тихо. Потребителите ще получат известие без звук.",
+ "telegramSendSilently": "Изпрати тихо",
+ "Clone Monitor": "Клониране на монитор",
+ "Clone": "Клонирай",
+ "cloneOf": "Клониран {0}",
+ "Expiry": "Валиден до",
+ "Expiry date": "Дата на изтичане",
+ "Add Another": "Добави друг",
+ "Key Added": "Ключът е добавен",
+ "Add API Key": "Добави API ключ",
+ "No API Keys": "Няма API ключове",
+ "apiKey-active": "Активен",
+ "Expires": "Изтича на",
+ "deleteAPIKeyMsg": "Сигурни ли сте, че желаете да изтриете този API ключ?",
+ "Generate": "Генерирай",
+ "API Keys": "API Ключове",
+ "Don't expire": "Не изтича",
+ "Continue": "Продължи",
+ "apiKeyAddedMsg": "Вашият API ключ е добавен. Моля, запишете го, тъй като той няма да бъде показан отново.",
+ "apiKey-expired": "Изтекъл",
+ "apiKey-inactive": "Неактивен",
+ "disableAPIKeyMsg": "Сигурни ли сте, че желаете да деактивирате този API ключ?",
+ "pagertreeUrgency": "Спешност",
+ "pagertreeSilent": "Тих",
+ "pagertreeLow": "Ниска",
+ "pagertreeHigh": "Висока",
+ "pagertreeResolve": "Автоматично разрешаване",
+ "pagertreeDoNothing": "Не прави нищо",
+ "wayToGetPagerTreeIntegrationURL": "След като създадете интеграция на Uptime Kuma в PagerTree, копирайте крайната точка. За пълни подробности вижте {0}",
+ "pagertreeIntegrationUrl": "URL Адрес за интеграция",
+ "pagertreeMedium": "Средна",
+ "pagertreeCritical": "Критична",
+ "Add New Tag": "Добави нов етикет",
+ "lunaseaTarget": "Цел",
+ "lunaseaDeviceID": "ID на устройството",
+ "lunaseaUserID": "ID на потребител",
+ "twilioAccountSID": "Профил SID",
+ "twilioAuthToken": "Удостоверяващ токен",
+ "twilioFromNumber": "От номер",
+ "twilioToNumber": "Към номер",
+ "sameAsServerTimezone": "Kато часовата зона на сървъра",
+ "startDateTime": "Старт Дата/Час",
+ "endDateTime": "Край Дата/Час",
+ "cronSchedule": "График: ",
+ "invalidCronExpression": "Невалиден \"Cron\" израз: {0}",
+ "cronExpression": "Израз тип \"Cron\"",
+ "statusPageRefreshIn": "Обновяване след: {0}",
+ "ntfyUsernameAndPassword": "Потребителско име и парола",
+ "ntfyAuthenticationMethod": "Метод за удостоверяване",
+ "pushoverMessageTtl": "TTL на съобщението (секунди)",
+ "Open Badge Generator": "Отвори генератора на баджове",
+ "Badge Generator": "Генератор на баджове на {0}",
+ "Badge Type": "Тип бадж",
+ "Badge Duration": "Продължителност на баджа",
+ "Badge Prefix": "Префикс на баджа",
+ "Badge Label Color": "Цвят на етикета на баджа",
+ "Badge Color": "Цвят на баджа",
+ "Badge Label Suffix": "Суфикс на етикета на значката",
+ "Badge Up Color": "Цвят на баджа за достъпен",
+ "Badge Down Color": "Цвят на баджа за недостъпен",
+ "Badge Maintenance Color": "Цвят на баджа за поддръжка",
+ "Badge Warn Color": "Цвят на баджа за предупреждение",
+ "Badge Warn Days": "Дни за показване на баджа",
+ "Badge Style": "Стил на баджа",
+ "Badge value (For Testing only.)": "Стойност на баджа (само за тест.)",
+ "Badge URL": "URL адрес на баджа",
+ "Monitor Setting": "Настройка на монитор {0}",
+ "Show Clickable Link": "Покажи връзка, която може да се кликне",
+ "Show Clickable Link Description": "Ако е отбелязано, всеки който има достъп до тази статус страница, ще може да достъпва URL адреса на монитора.",
+ "Badge Label": "Етикет на баджа",
+ "Badge Suffix": "Суфикс на баджа",
+ "Badge Label Prefix": "Префикс на етикета на значката",
+ "Badge Pending Color": "Цвят на баджа за изчакващ",
+ "Badge Down Days": "Колко дни баджът да не се показва",
+ "Group": "Група",
+ "Monitor Group": "Монитор група",
+ "Cannot connect to the socket server": "Не може да се свърже със сокет сървъра",
+ "Reconnecting...": "Повторно свързване...",
+ "Edit Maintenance": "Редактиране на поддръжка",
+ "Home": "Главна страница",
+ "noGroupMonitorMsg": "Не е налично. Първо създайте групов монитор.",
+ "Close": "Затвори"
+}
diff --git a/src/lang/ca.json b/src/lang/ca.json
new file mode 100644
index 000000000..c30b84faf
--- /dev/null
+++ b/src/lang/ca.json
@@ -0,0 +1,28 @@
+{
+ "Settings": "Paràmetres",
+ "Dashboard": "Tauler",
+ "Help": "Ajuda",
+ "New Update": "Nova actualització",
+ "Language": "Idioma",
+ "Appearance": "Aparença",
+ "Theme": "Tema",
+ "General": "General",
+ "Game": "Joc",
+ "Version": "Versió",
+ "Check Update On GitHub": "Comprovar actualitzacions a GitHub",
+ "List": "Llista",
+ "Home": "Inici",
+ "Add": "Afegir",
+ "Add New Monitor": "Afegir nou monitor",
+ "Quick Stats": "Estadístiques ràpides",
+ "Up": "Funcional",
+ "Down": "Caigut",
+ "Pending": "Pendent",
+ "Maintenance": "Manteniment",
+ "Unknown": "Desconegut",
+ "Cannot connect to the socket server": "No es pot connectar al servidor socket",
+ "Reconnecting...": "S'està tornant a connectar...",
+ "languageName": "Català",
+ "Primary Base URL": "URL Base Primària",
+ "statusMaintenance": "Manteniment"
+}
diff --git a/src/lang/ckb.json b/src/lang/ckb.json
new file mode 100644
index 000000000..9ed5cffa5
--- /dev/null
+++ b/src/lang/ckb.json
@@ -0,0 +1,46 @@
+{
+ "languageName": "کوردی",
+ "Settings": "ڕێکخستنەکان",
+ "Help": "یارمەتی",
+ "New Update": "وەشانی نوێ",
+ "Language": "زمان",
+ "Appearance": "ڕووکار",
+ "Theme": "شێوەی ڕووکار",
+ "General": "گشتی",
+ "Game": "یاری",
+ "Version": "وەشان",
+ "Check Update On GitHub": "سەیری وەشانی نوێ بکە لە Github",
+ "List": "لیست",
+ "Add": "زیادکردن",
+ "Quick Stats": "ئاماری خێرا",
+ "Up": "سەروو",
+ "Down": "خواروو",
+ "Pending": "هەڵپەسێردراو",
+ "statusMaintenance": "چاکردنەوە",
+ "Maintenance": "چاکردنەوە",
+ "Unknown": "نەزانراو",
+ "Passive Monitor Type": "جۆری مۆنیتەری پاسیڤ",
+ "Specific Monitor Type": "جۆری مۆنیتەری تایبەت",
+ "markdownSupported": "ڕستەسازی مارکداون پشتگیری دەکرێت",
+ "pauseDashboardHome": "وچان",
+ "Pause": "وچان",
+ "Name": "ناو",
+ "Status": "دۆخ",
+ "Message": "پەیام",
+ "No important events": "هیچ ڕووداوێکی گرنگ نییە",
+ "Resume": "دەستپێکردنەوە",
+ "Edit": "بژارکردن",
+ "Delete": "سڕینەوە",
+ "Uptime": "کاتی کارکردن",
+ "Cert Exp.": "بەسەرچوونی بڕوانامەی SSL.",
+ "day": "ڕۆژ | ڕۆژەکان",
+ "-day": "-ڕۆژ",
+ "hour": "کاتژمێر",
+ "Dashboard": "داشبۆرد",
+ "Primary Base URL": "بەستەری بنچینەیی سەرەکی",
+ "Add New Monitor": "مۆنیتەرێکی نوێ زیاد بکە",
+ "General Monitor Type": "جۆری مۆنیتەری گشتی",
+ "DateTime": "رێکەوت",
+ "Current": "هەنووکە",
+ "Monitor": "مۆنیتەر | مۆنیتەرەکان"
+}
diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json
new file mode 100644
index 000000000..18523fefc
--- /dev/null
+++ b/src/lang/cs-CZ.json
@@ -0,0 +1,788 @@
+{
+ "languageName": "Čeština",
+ "checkEverySecond": "Kontrolovat každých {0} sekund",
+ "retryCheckEverySecond": "Opakovat každých {0} sekund",
+ "resendEveryXTimes": "Znovu zaslat {0}krát",
+ "resendDisabled": "Opakované zasílání je vypnuté",
+ "retriesDescription": "Maximální počet pokusů před označením služby jako nedostupné a odesláním oznámení",
+ "ignoreTLSError": "Ignorovat TLS/SSL chyby na HTTPS stránkách",
+ "upsideDownModeDescription": "Pomocí této možnosti změníte způsob vyhodnocování stavu. Pokud je služba dosažitelná, je NEDOSTUPNÁ.",
+ "maxRedirectDescription": "Maximální počet přesměrování, která se mají následovat. Nastavením hodnoty 0 zakážete přesměrování.",
+ "enableGRPCTls": "Umožnit odeslání gRPC žádosti během TLS spojení",
+ "grpcMethodDescription": "Název metody se převede do cammelCase formátu jako je sayHello, check, aj.",
+ "acceptedStatusCodesDescription": "Vyberte stavové kódy, které jsou považovány za úspěšnou odpověď.",
+ "Maintenance": "Údržba",
+ "statusMaintenance": "V údržbě",
+ "Schedule maintenance": "Naplánovat údržbu",
+ "Affected Monitors": "Dotčené dohledy",
+ "Pick Affected Monitors...": "Vyberte dotčené dohledy…",
+ "Start of maintenance": "Zahájit údržbu",
+ "All Status Pages": "Všechny stavové stránky",
+ "Select status pages...": "Vyberte stavovou stránku…",
+ "recurringIntervalMessage": "Spustit jednou každý den | Spustit jednou každých {0} dní",
+ "affectedMonitorsDescription": "Vyberte dohledy, které budou ovlivněny touto údržbou",
+ "affectedStatusPages": "Zobrazit tuto zprávu o údržbě na vybraných stavových stránkách",
+ "atLeastOneMonitor": "Vyberte alespoň jeden dotčený dohled",
+ "passwordNotMatchMsg": "Hesla se neshodují.",
+ "notificationDescription": "Aby byla upozornění fungovalo, je nutné ho přiřadit k dohledu.",
+ "keywordDescription": "Vyhledat klíčové slovo v prosté odpovědi HTML nebo JSON. Při hledání se rozlišuje velikost písmen.",
+ "pauseDashboardHome": "Pauza",
+ "deleteMonitorMsg": "Opravdu chcete odstranit tento dohled?",
+ "deleteMaintenanceMsg": "Opravdu chcete odstranit tuto údržbu?",
+ "deleteNotificationMsg": "Opravdu chcete odstranit toto oznámení pro všechny dohledy?",
+ "dnsPortDescription": "Port DNS serveru. Standardně běží na portu 53. V případě potřeby jej můžete kdykoli změnit.",
+ "resolverserverDescription": "Cloudflare je výchozí server. V případě potřeby můžete Resolver server kdykoli změnit.",
+ "rrtypeDescription": "Vyberte typ záznamu o prostředku, který chcete monitorovat",
+ "pauseMonitorMsg": "Opravdu chcete dohled pozastavit?",
+ "enableDefaultNotificationDescription": "Toto oznámení bude standardně aktivní pro nové dohledy. V případě potřeby můžete oznámení stále zakázat na úrovni jednotlivých dohledů.",
+ "clearEventsMsg": "Opravdu chcete odstranit všechny události pro tento dohled?",
+ "clearHeartbeatsMsg": "Opravdu chcete odstranit všechny heartbeaty pro tento dohled?",
+ "confirmClearStatisticsMsg": "Opravdu chcete smazat VŠECHNY statistiky?",
+ "importHandleDescription": "Možnost 'Přeskočit existující' vyberte v případě, že chcete přeskočit všechny dohledy nebo oznámení se stejným názvem. Vybráním možnosti 'Přepsat' dojde k odstranění všech existujících dohledů a oznámení.",
+ "confirmImportMsg": "Opravdu chcete importovat zálohu? Prosím ověřte, zda jste vybrali správnou možnost importu.",
+ "twoFAVerifyLabel": "Prosím, zadejte svůj token pro ověření 2FA:",
+ "tokenValidSettingsMsg": "Token je platný! Nyní můžete uložit nastavení 2FA.",
+ "confirmEnableTwoFAMsg": "Opravdu chcete zapnout 2FA?",
+ "confirmDisableTwoFAMsg": "Opravdu chcete deaktivovat 2FA?",
+ "Settings": "Nastavení",
+ "Dashboard": "Nástěnka",
+ "New Update": "Nová aktualizace",
+ "Language": "Jazyk",
+ "Appearance": "Vzhled",
+ "Theme": "Motiv",
+ "General": "Obecné",
+ "Primary Base URL": "Primární URL adresa",
+ "Version": "Verze",
+ "Check Update On GitHub": "Zkontrolovat aktualizace na GitHubu",
+ "List": "Seznam",
+ "Add": "Přidat",
+ "Add New Monitor": "Přidat nový dohled",
+ "Quick Stats": "Rychlý přehled",
+ "Up": "Běží",
+ "Down": "Nedostupné",
+ "Pending": "Čekám",
+ "Unknown": "Neznámý",
+ "Pause": "Pauza",
+ "Name": "Název",
+ "Status": "Stav",
+ "DateTime": "Časové razítko",
+ "Message": "Zpráva",
+ "No important events": "Žádné důležité události",
+ "Resume": "Pokračovat",
+ "Edit": "Změnit",
+ "Delete": "Vymazat",
+ "Current": "Aktuální",
+ "Uptime": "Doba provozu",
+ "Cert Exp.": "Platnost certifikátu",
+ "Monitor": "Dohled | Dohledů",
+ "day": "den | dny/í",
+ "-day": "-dní",
+ "hour": "hodina",
+ "-hour": "-hodin",
+ "Response": "Odpověď",
+ "Ping": "Ping",
+ "Monitor Type": "Typ dohledu",
+ "Keyword": "Klíčové slovo",
+ "Friendly Name": "Obecný název",
+ "URL": "URL",
+ "Hostname": "Adresa serveru",
+ "Port": "Port",
+ "Heartbeat Interval": "Heartbeat interval",
+ "Retries": "Počet pokusů",
+ "Heartbeat Retry Interval": "Interval opakování heartbeatu",
+ "Resend Notification if Down X times consecutively": "Zaslat oznámení znovu, pokud je služba nedostupná Xkrát za sebou",
+ "Advanced": "Rozšířené",
+ "Upside Down Mode": "Inverzní režim",
+ "Max. Redirects": "Max. přesměrování",
+ "Accepted Status Codes": "Akceptované stavové kódy",
+ "Push URL": "Push URL",
+ "needPushEvery": "Tuto URL adresu byste měli volat každých {0} sekund.",
+ "pushOptionalParams": "Volitelné parametry: {0}",
+ "Save": "Uložit",
+ "Notifications": "Oznámení",
+ "Not available, please setup.": "Není k dispozici, prosím nastavte.",
+ "Setup Notification": "Nastavení oznámení",
+ "Light": "Světlý",
+ "Dark": "Tmavý",
+ "Auto": "Automaticky",
+ "Theme - Heartbeat Bar": "Motiv – Heartbeat panel",
+ "Normal": "Normální",
+ "Bottom": "Dole",
+ "None": "Žádné",
+ "Timezone": "Časové pásmo",
+ "Search Engine Visibility": "Viditelnost pro vyhledávače",
+ "Allow indexing": "Povolit indexování",
+ "Discourage search engines from indexing site": "Zabránit vyhledávačům v indexování stránky",
+ "Change Password": "Změnit heslo",
+ "Current Password": "Aktuální heslo",
+ "New Password": "Nové heslo",
+ "Repeat New Password": "Znovu zadat nové heslo",
+ "Update Password": "Aktualizovat heslo",
+ "Disable Auth": "Deaktivovat ověřování",
+ "Enable Auth": "Povolit ověřování",
+ "disableauth.message1": "Opravdu chcete deaktivovat autentifikaci ?",
+ "disableauth.message2": "Tato možnost je určena pro případy, kdy máte autentifikaci zajištěnou třetí stranou ještě před přístupem do Uptime Kuma, například prostřednictvím Cloudflare Access.",
+ "Please use this option carefully!": "Používejte ji prosím s rozmyslem!",
+ "Logout": "Odhlásit",
+ "Leave": "Odejít",
+ "I understand, please disable": "Rozumím, chci ji deaktivovat",
+ "Confirm": "Potvrzení",
+ "Yes": "Ano",
+ "No": "Ne",
+ "Username": "Uživatelské jméno",
+ "Password": "Heslo",
+ "Remember me": "Zapamatovat si mě",
+ "Login": "Přihlášení",
+ "No Monitors, please": "Žádné dohledy, prosím",
+ "add one": "začněte přidáním nového",
+ "Notification Type": "Typ oznámení",
+ "Email": "E-mail",
+ "Test": "Test",
+ "Certificate Info": "Informace o certifikátu",
+ "Resolver Server": "Server Resolveru",
+ "Resource Record Type": "Typ záznamu o prostředku",
+ "Last Result": "Poslední výsledek",
+ "Create your admin account": "Vytvořit účet administrátora",
+ "Repeat Password": "Znovu zadat heslo",
+ "Import Backup": "Importovat zálohu",
+ "Export Backup": "Exportovat zálohu",
+ "Export": "Exportovat",
+ "Import": "Importovat",
+ "respTime": "Doba odezvy (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Standardně povoleno",
+ "Apply on all existing monitors": "Použít pro všechny existující dohledy",
+ "Create": "Vytvořit",
+ "Clear Data": "Vymazat data",
+ "Events": "Události",
+ "Heartbeats": "Heartbeaty",
+ "Auto Get": "Získat automaticky",
+ "backupDescription": "Všechny dohledy a oznámení můžete zálohovat do souboru ve formátu JSON.",
+ "backupDescription2": "Poznámka: Nezahrnuje historii a data událostí.",
+ "backupDescription3": "Součástí exportovaného souboru jsou citlivá data jako tokeny oznámení; export si prosím bezpečně uložte.",
+ "alertNoFile": "Vyberte soubor, který chcete importovat.",
+ "alertWrongFileType": "Vyberte soubor ve formátu JSON.",
+ "Clear all statistics": "Vymazat všechny statistiky",
+ "Skip existing": "Přeskočit existující",
+ "Overwrite": "Přepsat",
+ "Options": "Možnosti",
+ "Keep both": "Ponechat obojí",
+ "Verify Token": "Ověřit token",
+ "Setup 2FA": "Nastavení 2FA",
+ "Enable 2FA": "Povolit 2FA",
+ "Disable 2FA": "Deaktivovat 2FA",
+ "2FA Settings": "Nastavení 2FA",
+ "Two Factor Authentication": "Dvoufaktorová autentifikace",
+ "Active": "Zapnuto",
+ "Inactive": "Neaktivní",
+ "Token": "Token",
+ "Show URI": "Zobrazit URI",
+ "Tags": "Štítky",
+ "Add New below or Select...": "Níže přidejte nový nebo vyberte existující…",
+ "Tag with this name already exist.": "Štítek s tímto názvem již existuje.",
+ "Tag with this value already exist.": "Štítek touto hodnotou již existuje.",
+ "color": "barva",
+ "value (optional)": "hodnota (volitelné)",
+ "Gray": "Šedá",
+ "Red": "Červená",
+ "Orange": "Oranžová",
+ "Green": "Zelená",
+ "Blue": "Modrá",
+ "Indigo": "Indigo",
+ "Purple": "Purpurová",
+ "Pink": "Růžová",
+ "Custom": "Vlastní",
+ "Search...": "Hledat…",
+ "Avg. Ping": "Průměr Ping",
+ "Avg. Response": "Průměr Odpověď",
+ "Entry Page": "Vstupní stránka",
+ "statusPageNothing": "Nic tady není, přidejte prosím skupinu nebo dohled.",
+ "No Services": "Žádné služby",
+ "All Systems Operational": "Všechny systémy běží",
+ "Partially Degraded Service": "Částečně zhoršená služba",
+ "Degraded Service": "Zhoršená služba",
+ "Add Group": "Přidat skupinu",
+ "Add a monitor": "Přidání dohledu",
+ "Edit Status Page": "Upravit stavovou stránku",
+ "Go to Dashboard": "Přejít na nástěnku",
+ "Status Page": "Stavová stránka",
+ "Status Pages": "Stavová stránka",
+ "defaultNotificationName": "Moje {notification} upozornění ({číslo})",
+ "here": "sem",
+ "Required": "Vyžadováno",
+ "telegram": "Telegram",
+ "ZohoCliq": "ZohoCliq",
+ "Bot Token": "Token bota",
+ "wayToGetTelegramToken": "Token můžete získat od {0}.",
+ "Chat ID": "ID chatu",
+ "supportTelegramChatID": "Podpora přímého chatu / skupiny / ID chatu kanálu",
+ "wayToGetTelegramChatID": "ID chatu můžete získat tak, že robotovi zašlete zprávu a přejdete na tuto adresu URL, kde zobrazíte chat_id:",
+ "YOUR BOT TOKEN HERE": "SEM ZADEJTE TOKEN VAŠEHO CHATBOTA",
+ "chatIDNotFound": "ID chatu nebylo nalezeno; nejprve tomuto robotovi zašlete zprávu",
+ "webhook": "Webhook",
+ "Post URL": "URL adresa příspěvku",
+ "Content Type": "Typ obsahu",
+ "webhookJsonDesc": "{0} je vhodný pro všechny moderní servery HTTP, jako je Express.js",
+ "webhookFormDataDesc": "{multipart} je vhodné pro PHP. JSON bude nutné analyzovat prostřednictvím {decodeFunction}",
+ "webhookAdditionalHeadersTitle": "Dodatečné hlavičky",
+ "webhookAdditionalHeadersDesc": "Nastavte dodatečné hlavičky, které se odešlou společně s webhookem.",
+ "smtp": "E-mail (SMTP)",
+ "secureOptionNone": "Žádné / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignorovat chybu TLS",
+ "From Email": "Odesílatel",
+ "emailCustomSubject": "Vlastní předmět",
+ "To Email": "Příjemce",
+ "smtpCC": "Kopie",
+ "smtpBCC": "Skrytá kopie",
+ "discord": "Discord",
+ "Discord Webhook URL": "URL Webhooku Discord",
+ "wayToGetDiscordURL": "Získáte tak, že přejdete do Nastavení serveru - > Integrace - > Zobrazi webhooky -> Nový webhook",
+ "Bot Display Name": "Zobrazované jméno robota",
+ "Prefix Custom Message": "Předpona vlastní zprávy",
+ "Hello @everyone is...": "Dobrý den, {'@'}všichni jsou…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "URL adresa webhooku",
+ "wayToGetTeamsURL": "Informace o tom, jak vytvořit URL adresu webhooku naleznete na {0}.",
+ "wayToGetZohoCliqURL": "Informace o tom, jak vytvořit URL adresu webhooku naleznete na {0}.",
+ "signal": "Signal",
+ "Number": "Číslo",
+ "Recipients": "Příjemci",
+ "needSignalAPI": "Musíte mít Signal klienta s REST API.",
+ "wayToCheckSignalURL": "Pro zobrazení instrukcí, jak službu nastavit, přejděte na následující adresu:",
+ "signalImportant": "Důležité: v seznamu příjemců není možné současně použít skupiny a čísla!",
+ "gotify": "Gotify",
+ "Application Token": "Token aplikace",
+ "Server URL": "URL adresa serveru",
+ "Priority": "Priorita",
+ "slack": "Slack",
+ "Icon Emoji": "Ikona smajlíka",
+ "Channel Name": "Název kanálu",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Více informací o Webhoocích naleznete na adrese: {0}",
+ "aboutChannelName": "Pro vynechání Webhook kanálu zadejte jeho název do pole Název kanálu {0}. Příklad: #jiny-kanal",
+ "aboutKumaURL": "Pokud ponecháte pole URL adresa Uptime Kuma prázdné, použije se domovská stránka GitHub projektu.",
+ "emojiCheatSheet": "Tahák smajlíků: {0}",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push od Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (podpora více než 50 oznamovacích služeb)",
+ "GoogleChat": "Google Chat (pouze Google Workspace)",
+ "pushbullet": "Pushbullet",
+ "Kook": "Kook",
+ "wayToGetKookBotToken": "Aplikaci vytvoříte a token bota získáte na {0}",
+ "wayToGetKookGuildID": "V nastavení Kook aktivujte 'Vývojářský režim' a kliknutím pravým tlačítkem na guild získejte jeho ID",
+ "Guild ID": "Guild ID",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Klíč uživatele",
+ "Device": "Zařízení",
+ "Message Title": "Nadpis zprávy",
+ "Notification Sound": "Zvuk oznámení",
+ "More info on:": "Více informací naleznete na adrese: {0}",
+ "pushoverDesc1": "Výchozí časový limit pro emergency prioritu (2) je 30 sekund mezi opakovanými pokusy a vyprší po 1 hodině.",
+ "pushoverDesc2": "Pokud chcete odesílat oznámení do různých zařízení, vyplňte pole Zařízení.",
+ "SMS Type": "Typ SMS",
+ "octopushTypePremium": "Premium (rychlé – doporučeno pro upozornění)",
+ "octopushTypeLowCost": "Nízké náklady (pomalé – někdy blokované operátorem)",
+ "checkPrice": "Ceny {0} zjistíte na adrese:",
+ "apiCredentials": "API přihlašovací údaje",
+ "octopushLegacyHint": "Používáte starší verzi Octopush (2011-2020) nebo novou verzi?",
+ "Check octopush prices": "Ceny octopush naleznete na adrese {0}.",
+ "octopushPhoneNumber": "Telefonní číslo (v mezinárodním formátu, např: +42012345678) ",
+ "octopushSMSSender": "Odesílatel SMS: 3-11 alfanumerických znaků a mezera (a-zA-Z0-9)",
+ "LunaSea Device ID": "ID zařízení LunaSea",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Příklad: {0}",
+ "Read more:": "Více informací: {0}",
+ "Status:": "Stav: {0}",
+ "Read more": "Více informací",
+ "appriseInstalled": "Apprise je nainstalován.",
+ "appriseNotInstalled": "Apprise není nainstalován. {0}",
+ "Access Token": "Přístupový token",
+ "Channel access token": "Přístupový token ke kanálu",
+ "Line Developers Console": "Konzole Line Developers",
+ "lineDevConsoleTo": "Konzole Line Developers - {0}",
+ "Basic Settings": "Obecné nastavení",
+ "User ID": "ID uživatele",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Nejprve otevřete {0}, vytvořte poskytovatele a kanál (Messaging API). Poté můžete získat přístupový token ke kanálu a ID uživatele, v sekci uvedené výše.",
+ "Icon URL": "URL adresa ikony",
+ "aboutIconURL": "Pro přepsání výchozího profilového obrázku můžete do pole \"URL adresa ikony\" zadat odkaz na obrázek. Nebude použito, pokud je nastavena ikona smajlíka.",
+ "aboutMattermostChannelName": "Výchozí kanál, do kterého jsou zasílány Webhook příspěvky, můžete přepsat zadáním názvu kanálu do pole \"Název kanálu\". Tato možnost musí být povolena v nastavení Mattermost Webhooku. Příklad: #jiny-kanal",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO – levné, ale pomalé a často přetížené. Omezeno pouze na polské příjemce.",
+ "promosmsTypeFlash": "SMS FLASH –zpráva se automaticky zobrazí na zařízení příjemce. Omezeno pouze na polské příjemce.",
+ "promosmsTypeFull": "SMS FULL – prémiová úroveň SMS. Můžete definovat odesílatele (vyžadována registrace jména). Spolehlivý pro výstrahy.",
+ "promosmsTypeSpeed": "SMS SPEED – nejvyšší priorita v systému. Velmi rychlé a spolehlivé, ale nákladné (přibližně dvojnásobek ceny SMS FULL).",
+ "promosmsPhoneNumber": "Telefonní číslo (polští příjemci mohou vynechat telefonní předvolbu)",
+ "promosmsSMSSender": "Odesílatel SMS: Předem zaregistrovaný název nebo jeden z výchozích: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "promosmsAllowLongSMS": "Povolit dlouhé SMS",
+ "Feishu WebHookUrl": "URL Webhooku Feishu",
+ "matrixHomeserverURL": "URL adresa domácího serveru (s http(s):// a volitelně portem)",
+ "Internal Room Id": "ID interní místnosti",
+ "matrixDesc1": "ID interní místnosti naleznete v Matrix klientovi v rozšířeném nastavení místnosti. Mělo by být ve tvaru !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Důrazně doporučujeme vytvořit nového uživatele a nepoužívat váš vlastní přístupový token uživatele Matrix. Pomocí něj je možné získat přístup k vašemu účtu a všem místnostem, ke kterým jste se připojili. Místo toho vytvořte nového uživatele a pozvěte jej pouze do místnosti, do které chcete oznámení dostávat. Přístupový token můžete získat spuštěním {0}",
+ "Method": "Metoda",
+ "Body": "Tělo",
+ "Headers": "Hlavičky",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Hlavičky žádosti nejsou platný JSON: ",
+ "BodyInvalidFormat": "Text žádosti není platný JSON: ",
+ "Monitor History": "Historie dohledu",
+ "clearDataOlderThan": "Historie dohledu bude uchovávána po dobu {0} dní.",
+ "PasswordsDoNotMatch": "Hesla se neshodují.",
+ "records": "záznamů",
+ "One record": "Jeden záznam",
+ "steamApiKeyDescription": "Pro monitorování Steam Game Serveru je nutné zadat Steam Web-API klíč. Svůj API klíč získáte na následující stránce: ",
+ "Current User": "Aktuálně přihlášený uživatel",
+ "topic": "Téma",
+ "topicExplanation": "MQTT téma, které chcete sledovat",
+ "successMessage": "Zpráva o úspěchu",
+ "successMessageExplanation": "MQTT zpráva považovaná za úspěšnou",
+ "recent": "Poslední",
+ "Done": "Hotovo",
+ "Info": "Informace",
+ "Security": "Bezpečnost",
+ "Steam API Key": "API klíč služby Steam",
+ "Shrink Database": "Zmenšit databázi",
+ "Pick a RR-Type...": "Vyberte typ RR záznamu…",
+ "Pick Accepted Status Codes...": "Vyberte stavové kódy, které chcete akceptovat…",
+ "Default": "Výchozí",
+ "HTTP Options": "Možnosti protokolu HTTP",
+ "Create Incident": "Vytvořit incident",
+ "Title": "Předmět",
+ "Content": "Obsah",
+ "Style": "Styl",
+ "info": "informace",
+ "warning": "upozornění",
+ "danger": "riziko",
+ "error": "chyba",
+ "critical": "kritické",
+ "primary": "primární",
+ "light": "světlý",
+ "dark": "tmavý",
+ "Post": "Publikovat",
+ "Please input title and content": "Zadejte prosím název a obsah",
+ "Created": "Vytvořen",
+ "Last Updated": "Poslední aktualizace",
+ "Unpin": "Odepnout",
+ "Switch to Light Theme": "Přepnout na světlý motiv",
+ "Switch to Dark Theme": "Přepnout na tmavý motiv",
+ "Show Tags": "Zobrazit štítky",
+ "Hide Tags": "Skrýt štítky",
+ "Description": "Popis",
+ "No monitors available.": "Není dostupný žádný dohled.",
+ "Add one": "Přidat jeden",
+ "No Monitors": "Žádný dohled",
+ "Untitled Group": "Skupina bez názvu",
+ "Services": "Služby",
+ "Discard": "Zahodit",
+ "Cancel": "Zrušit",
+ "Powered by": "Poskytuje",
+ "shrinkDatabaseDescription": "Pomocí této možnosti provedete příkaz VACUUM nad SQLite databází. Pokud byla databáze vytvořena po vydání verze 1.10.0, AUTO_VACUUM je již povolena a tato akce není vyžadována.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API uživatelské jméno (včetně předpony webapi_)",
+ "serwersmsAPIPassword": "API heslo",
+ "serwersmsPhoneNumber": "Telefonní číslo",
+ "serwersmsSenderName": "Odesílatel SMS (registrováno prostřednictvím zákaznického portálu)",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "Telefonní číslo(a)",
+ "smseagleGroup": "Název skupiny v adresáři",
+ "smseagleContact": "Název kontaktu v adresáři",
+ "smseagleRecipientType": "Typ příjemce",
+ "smseagleRecipient": "Příjemce(i) (více záznamů oddělte čárkou)",
+ "smseagleToken": "API přístupový token",
+ "smseagleUrl": "URL vašeho SMSEagle zařízení",
+ "smseagleEncoding": "Odeslat v Unicode",
+ "smseaglePriority": "Priorita zprávy (0-9, výchozí = 0)",
+ "stackfield": "Stackfield",
+ "Customize": "Přizpůsobit",
+ "Custom Footer": "Vlastní patička",
+ "Custom CSS": "Vlastní CSS",
+ "smtpDkimSettings": "Nastavení DKIM",
+ "smtpDkimDesc": "Informace o použití naleznete v {0} Nodemailer DKIM.",
+ "documentation": "dokumentaci",
+ "smtpDkimDomain": "Název domény",
+ "smtpDkimKeySelector": "Selektor klíče",
+ "smtpDkimPrivateKey": "Privátní klíč",
+ "smtpDkimHashAlgo": "Hashovací algoritmus (volitelné)",
+ "smtpDkimheaderFieldNames": "Podepisovat tyto hlavičky (volitelné)",
+ "smtpDkimskipFields": "Nepodepisovat tyto hlavičky (volitelné)",
+ "wayToGetPagerDutyKey": "Získat jej můžete v sekci Service -> Service Directory -> (vyberte službu) -> Integrations -> Add integration. Následně vyhledejte \"Events API V2\". Více informace naleznete na adrese {0}",
+ "Integration Key": "Integrační klíč",
+ "Integration URL": "Integrační URL",
+ "Auto resolve or acknowledged": "Automatické řešení nebo potvrzení",
+ "do nothing": "nedělat nic",
+ "auto acknowledged": "automaticky uznáno",
+ "auto resolve": "automatické řešení",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "Prostředí",
+ "alertaApiKey": "API klíč",
+ "alertaAlertState": "Stav upozornění",
+ "alertaRecoverState": "Stav obnovení",
+ "deleteStatusPageMsg": "Opravdu chcete odstranit tuto stavovou stránku?",
+ "Proxies": "Proxy",
+ "default": "Výchozí",
+ "enabled": "Zapnuto",
+ "setAsDefault": "Nastavit jako výchozí",
+ "deleteProxyMsg": "Opravdu chcete odstranit tuto proxy ze všech dohledů?",
+ "proxyDescription": "Pro zajištění funkčnosti musí být proxy přiřazena dohledům.",
+ "enableProxyDescription": "Tato proxy neovlivní žádosti dohledu do doby, než ji aktivujete. Změnou tohoto nastavení dočasně zakážete použití proxy ve všech dohledech.",
+ "setAsDefaultProxyDescription": "Tato proxy se použije pro všechny nové dohledy. V případě potřeby můžete její využívání zakázat v konkrétním dohledu.",
+ "Certificate Chain": "Řetězec certifikátu",
+ "Valid": "Platný",
+ "Invalid": "Neplatný",
+ "AccessKeyId": "ID přístupového klíče",
+ "SecretAccessKey": "Tajemství přístupového klíče",
+ "PhoneNumbers": "Telefonní čísla",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Šablona SMS musí obsahovat parametry: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "Bark Group": "Skupina Bark",
+ "Bark Sound": "Bark zvuk",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "Tajný klíč",
+ "For safety, must use secret key": "Z důvodu bezpečnosti použijte secret key",
+ "Device Token": "Token zařízení",
+ "Platform": "Platforma",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Vysoký",
+ "Retry": "Opakovat",
+ "Topic": "Téma",
+ "WeCom Bot Key": "Klíč WeCom Bota",
+ "Setup Proxy": "Nastavit proxy",
+ "Proxy Protocol": "Protokol proxy",
+ "Proxy Server": "Proxy Server",
+ "Proxy server has authentication": "Proxy server vyžaduje ověření",
+ "User": "Uživatel",
+ "Installed": "Nainstalováno",
+ "Not installed": "Nenainstalováno",
+ "Running": "Běží",
+ "Not running": "Neběží",
+ "Remove Token": "Odstranit token",
+ "Start": "Spustit",
+ "Stop": "Zastavit",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Přidat novou stavovou stránku",
+ "Slug": "Slug",
+ "Accept characters:": "Přípustné znaky:",
+ "startOrEndWithOnly": "Počáteční a koncový znak může být pouze {0}",
+ "No consecutive dashes": "Nesmí se opakovat pomlčky",
+ "Next": "Další",
+ "The slug is already taken. Please choose another slug.": "Slug s tímto názvem již existuje. Prosím, zadejte jiný název.",
+ "No Proxy": "Žádná proxy",
+ "Authentication": "Ověření",
+ "HTTP Basic Auth": "HTTP Basic ověření",
+ "New Status Page": "Nová stavová stránka",
+ "Page Not Found": "Stránka nenalezena",
+ "Reverse Proxy": "Reverzní proxy",
+ "Backup": "Záloha",
+ "About": "O programu",
+ "wayToGetCloudflaredURL": "(Stáhnout cloudflared z {0})",
+ "cloudflareWebsite": "Webová stránka Cloudflare",
+ "Message:": "Zpráva:",
+ "Don't know how to get the token? Please read the guide:": "Nevíte jak získat? Prosím, přečtěte si tuto příručku:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Stávající připojení mohlo být ztraceno, pokud jste připojeni prostřednictvím Cloudflare tunelu. Opravdu jej chcete zastavit? Pro potvrzení zadejte své současné heslo.",
+ "HTTP Headers": "HTTP hlavičky",
+ "Trust Proxy": "Důvěryhodná proxy",
+ "Other Software": "Jiný software",
+ "For example: nginx, Apache and Traefik.": "Například nginx, Apache nebo Traefik.",
+ "Please read": "Prosím, přečtěte si informace na adrese",
+ "Subject:": "Předmět:",
+ "Valid To:": "Platnost do:",
+ "Days Remaining:": "Počet zbývajících dní:",
+ "Issuer:": "Vydavatel:",
+ "Fingerprint:": "Otisk:",
+ "No status pages": "Žádná stavová stránka",
+ "Domain Name Expiry Notification": "Oznámení na blížící se konec platnosti doménového jména",
+ "Proxy": "Proxy",
+ "Date Created": "Datum vytvoření",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "OneBot HTTP adresa",
+ "onebotMessageType": "Typ OneBot zprávy",
+ "onebotGroupMessage": "Skupinová",
+ "onebotPrivateMessage": "Soukromá",
+ "onebotUserOrGroupId": "ID skupiny/uživatele",
+ "onebotSafetyTips": "Z důvodu bezpečnosti je nutné zadat přístupový token",
+ "PushDeer Key": "PushDeer klíč",
+ "Footer Text": "Text v patičce",
+ "Show Powered By": "Zobrazit \"Poskytuje\"",
+ "Domain Names": "Doménová jména",
+ "signedInDisp": "Přihlášen jako {0}",
+ "signedInDispDisabled": "Ověření je vypnuté.",
+ "RadiusSecret": "Tajemství Radius",
+ "RadiusSecretDescription": "Sdílený tajný klíč mezi klientem a serverem",
+ "RadiusCalledStationId": "ID volaného zařízení",
+ "RadiusCalledStationIdDescription": "Identifikátor volaného zařízení",
+ "RadiusCallingStationId": "ID volajícího zařízení",
+ "RadiusCallingStationIdDescription": "Identifikátor volajícího zařízení",
+ "Certificate Expiry Notification": "Oznámení na blížící se konec platnosti certifikátu",
+ "API Username": "Uživatelské jména API",
+ "API Key": "API klíč",
+ "Recipient Number": "Číslo příjemce",
+ "From Name/Number": "Jméno/číslo odesílatele",
+ "Leave blank to use a shared sender number.": "Ponechte prázdné, pokud chcete použít číslo sdíleného příjemce.",
+ "Octopush API Version": "Octopush API verze",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "endpoint": "endpoint",
+ "octopushAPIKey": "\"API key\" ze sekce HTTP API credentials na nástěnce",
+ "octopushLogin": "\"Login\" ze sekce HTTP API credentials na nástěnce",
+ "promosmsLogin": "API Login Name",
+ "promosmsPassword": "API Password",
+ "pushoversounds pushover": "Pushover (výchozí)",
+ "pushoversounds bike": "Kolo",
+ "pushoversounds bugle": "Trumpeta",
+ "pushoversounds cashregister": "Pokladna",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Kosmický",
+ "pushoversounds falling": "Padající",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Příchozí",
+ "pushoversounds intermission": "Přestávka",
+ "pushoversounds magic": "Kouzlo",
+ "pushoversounds mechanical": "Mechanika",
+ "pushoversounds pianobar": "Barové piano",
+ "pushoversounds siren": "Siréna",
+ "pushoversounds spacealarm": "Vesmírný alarm",
+ "pushoversounds tugboat": "Remorkér",
+ "pushoversounds alien": "Mimozemský poplach (dlouhý)",
+ "pushoversounds climb": "Climb (dlouhý)",
+ "pushoversounds persistent": "Persistent (dlouhý)",
+ "pushoversounds echo": "Pushover Echo (dlouhý)",
+ "pushoversounds updown": "Up Down (dlouhý)",
+ "pushoversounds vibrate": "Pouze vibrace",
+ "pushoversounds none": "Žádný (ticho)",
+ "pushyAPIKey": "Tajný API klíč",
+ "pushyToken": "Token zařízení",
+ "Show update if available": "Upozornit na aktualizace, pokud jsou k dispozici",
+ "Also check beta release": "Kontrolovat také dostupnost beta verzí",
+ "Using a Reverse Proxy?": "Používáte reverzní proxy?",
+ "Check how to config it for WebSocket": "Zjistěte, jak ji nakonfigurovat pro WebSockety",
+ "Steam Game Server": "Steam Game Server",
+ "Most likely causes:": "Nejčastější důvody:",
+ "The resource is no longer available.": "Zdroj již není k dispozici.",
+ "There might be a typing error in the address.": "Při zadávání adresy jste udělali chybu.",
+ "What you can try:": "Co můžete vyzkoušet:",
+ "Retype the address.": "Znovu zadat adresu.",
+ "Go back to the previous page.": "Vrátit se na předchozí stránku.",
+ "Coming Soon": "Připravujeme",
+ "wayToGetClickSendSMSToken": "API Username a API Key získáte na adrese {0} .",
+ "Connection String": "Připojovací řetězec",
+ "Query": "Dotaz",
+ "settingsCertificateExpiry": "Platnost TLS certifikátu",
+ "certificationExpiryDescription": "HTTPS dohledy upozorní na vypršení platnosti certifikátu TLS nastavenou dobu dopředu:",
+ "Setup Docker Host": "Nastavit Docker hostitele",
+ "Connection Type": "Typ připojení",
+ "Docker Daemon": "Démon Dockeru",
+ "deleteDockerHostMsg": "Opravdu chcete odstranit tohoto docker hostitele ze všech dohledů?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker kontejner",
+ "Container Name / ID": "ID / název kontejneru",
+ "Docker Host": "Docker hostitel",
+ "Docker Hosts": "Docker hostitelé",
+ "ntfy Topic": "ntfy Téma",
+ "Domain": "Doména",
+ "Workstation": "Pracovní stanice",
+ "disableCloudflaredNoAuthMsg": "Používáte režim bez ověření, heslo není vyžadováno.",
+ "trustProxyDescription": "Důvěřovat 'X-Forwarded-*' hlavičkám. Pokud chcete získat správnou IP adresu klientů a vaše instance Uptime Kuma je za Nginx nebo Apache, měli byste tuto možnost zapnout.",
+ "wayToGetLineNotifyToken": "Přístupový token můžete získat na adrese {0}",
+ "Examples": "Příklady",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "Dlouhodobý přístupový token",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Pro vytvoření dlouhodobého přístupový tokenu klikněte na název svého profilu (v levém dolním rohu) a následně v dolní části stránky klikněte na tlačítko Create Token. ",
+ "Notification Service": "Oznamovací služba",
+ "default: notify all devices": "výchozí: upozornit všechny zařízení",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Seznam dostupných oznamovacích služeb naleznete v Home Assistant v sekci \"Developer Tools > Services\", kde vyhledejte \"notification\" pro zjištění názvu zařízení.",
+ "Automations can optionally be triggered in Home Assistant:": "Automatizaci můžete volitelně aktivovat prostřednictvím Home Assistant:",
+ "Trigger type:": "Typ podmínky spuštění:",
+ "Event type:": "Typ události:",
+ "Event data:": "Data události:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Následně vyberte akci, například přepnutí scény z RGB světla na červenou.",
+ "Frontend Version": "Verze frontendu",
+ "Frontend Version do not match backend version!": "Verze frontendu neodpovídá verzi backendu!",
+ "Base URL": "Primární URL adresa",
+ "goAlertInfo": "GoAlert je aplikace s otevřeným zdrojovým kódem pro plánování hovorů, automatické eskalace a upozornění (jako jsou SMS nebo hlasové hovory). Automaticky zapojte správnou osobu, správným způsobem a ve správný čas! {0}",
+ "goAlertIntegrationKeyInfo": "Obecný API integrační klíč pro danou službu ve formátu \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" se obvykle nachází ve zkopírované URL jako hodnota parametru token.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Zastaralé: Vzhledem k tomu, že bylo přidáno mnoho funkcí a tato funkce zálohování je poněkud neudržovaná, nemůže vytvářet nebo obnovit kompletní zálohu.",
+ "backupRecommend": "Prosím, zálohujte si ručně celý svazek nebo datovou složku (./data/).",
+ "Optional": "Volitelný",
+ "squadcast": "Squadcast",
+ "SendKey": "Klíč k odesílání",
+ "SMSManager API Docs": "Dokumentace API služby SMSManager ",
+ "Gateway Type": "Typ brány",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Čísla můžete oddělit pomocí",
+ "or": "nebo",
+ "recurringInterval": "Interval",
+ "Recurring": "Opakující se",
+ "strategyManual": "Ruční spuštění/vypnutí",
+ "warningTimezone": "Používá se časové pásmo serveru",
+ "weekdayShortMon": "Po",
+ "weekdayShortTue": "Út",
+ "weekdayShortWed": "St",
+ "weekdayShortThu": "Čt",
+ "weekdayShortFri": "Pá",
+ "weekdayShortSat": "So",
+ "weekdayShortSun": "Ne",
+ "dayOfWeek": "Den v týdnu",
+ "dayOfMonth": "Den v měsíci",
+ "lastDay": "Poslední den",
+ "lastDay1": "1. poslední den v měsíci",
+ "lastDay2": "2. poslední den v měsíci",
+ "lastDay3": "3. poslední den v měsíci",
+ "lastDay4": "4. poslední den v měsíci",
+ "No Maintenance": "Žádná údržba",
+ "pauseMaintenanceMsg": "Opravdu chcete údržbu pozastavit?",
+ "maintenanceStatus-under-maintenance": "Údržba",
+ "maintenanceStatus-inactive": "Neaktivní",
+ "maintenanceStatus-scheduled": "Naplánováno",
+ "maintenanceStatus-ended": "Ukončeno",
+ "maintenanceStatus-unknown": "Neznámý",
+ "Display Timezone": "Zobrazit časové pásmo",
+ "Server Timezone": "Časové pásmo serveru",
+ "statusPageMaintenanceEndDate": "Konec",
+ "IconUrl": "Adresa URL ikony",
+ "Enable DNS Cache": "Povolit DNS Cache",
+ "Enable": "Povolit",
+ "Disable": "Zakázat",
+ "dnsCacheDescription": "V některých IPv6 prostředích nemusí fungovat. Pokud narazíte na nějaké problémy, vypněte jej.",
+ "Single Maintenance Window": "Konkrétní časové okno pro údržbu",
+ "Maintenance Time Window of a Day": "Časové okno pro údržbu v daný den",
+ "Effective Date Range": "Časové období (volitelné)",
+ "Schedule Maintenance": "Naplánovat údržbu",
+ "Date and Time": "Datum a čas",
+ "DateTime Range": "Rozsah data a času",
+ "Strategy": "Strategie",
+ "Free Mobile User Identifier": "Identifikátor uživatele Free Mobile",
+ "Free Mobile API Key": "API klíč Free Mobile",
+ "Enable TLS": "Povolit TLS",
+ "Proto Service Name": "Jméno Proto Service",
+ "Proto Method": "Proto metoda",
+ "Proto Content": "Proto obsah",
+ "Economy": "Úsporná",
+ "Lowcost": "Nízkonákladová",
+ "high": "vysoká",
+ "General Monitor Type": "Obecný typ dohledu",
+ "Passive Monitor Type": "Pasivní typ dohledu",
+ "Specific Monitor Type": "Konkrétní typ dohledu",
+ "dataRetentionTimeError": "Doba pro uchování musí být větší nebo rovna 0",
+ "infiniteRetention": "Pro nekonečný záznam zadejte 0.",
+ "confirmDeleteTagMsg": "Opravdu chcete odstranit tento štítek? Provedením této akce nedojde k odstranění dohledů, které jej mají přiřazeny.",
+ "Help": "Nápověda",
+ "Game": "Hra",
+ "Custom Monitor Type": "Vlastní typ dohledu",
+ "loadingError": "Nelze načíst data, zkuste to prosím později.",
+ "confirmUninstallPlugin": "Opravdu chcete tento zásuvný modul odinstalovat?",
+ "plugin": "Zásuvné moduly | Zásuvné moduly",
+ "install": "Instalace",
+ "installing": "Instaluji",
+ "uninstall": "Odinstalace",
+ "uninstalling": "Odinstalování",
+ "Packet Size": "Velikost paketu",
+ "markdownSupported": "Markdown syntaxe podporována",
+ "Google Analytics ID": "ID Google Analytics",
+ "Edit Tag": "Upravit štítek",
+ "Server Address": "Adresa serveru",
+ "Learn More": "Zjistěte více",
+ "notificationRegional": "Místní",
+ "telegramMessageThreadID": "(Nepovinné) ID vlákna zprávy",
+ "telegramMessageThreadIDDescription": "Nepovinný jedinečný identifikátor cílového vlákna zprávy (tématu) fóra; pouze pro nadskupiny fóra",
+ "telegramProtectContentDescription": "Pokud je tato funkce povolena, budou zprávy bota v aplikaci Telegram chráněny před přeposíláním a ukládáním.",
+ "Body Encoding": "Kódování těla zprávy",
+ "telegramProtectContent": "Ochrana přeposílání/ukládání",
+ "telegramSendSilently": "Odeslat potichu",
+ "telegramSendSilentlyDescription": "Zprávu odešle tiše. Uživatelé obdrží oznámení bez zvuku.",
+ "Clone": "Duplikovat",
+ "cloneOf": "Kopie {0}",
+ "Clone Monitor": "Duplikovat dohled",
+ "API Keys": "API klíče",
+ "Expiry": "Platnost",
+ "Don't expire": "Nevyprší",
+ "Continue": "Pokračovat",
+ "Add Another": "Přidat další",
+ "Key Added": "Klíč byl přidán",
+ "Expiry date": "Vyprší dne",
+ "No API Keys": "Žàdné API klíče",
+ "apiKey-active": "Aktivní",
+ "apiKey-expired": "Vypršel",
+ "Expires": "Vyprší",
+ "disableAPIKeyMsg": "Jste si jistý, že chcete deaktivovat tento API klíč?",
+ "Add API Key": "Přidat API klíč",
+ "apiKey-inactive": "Neaktivní",
+ "Generate": "Vygenerovat",
+ "apiKeyAddedMsg": "Váš klíč API byl přidán. Poznamenejte si jej, protože se již nebude zobrazovat.",
+ "deleteAPIKeyMsg": "Opravdu chcete tento klíč API odstranit?",
+ "pagertreeUrgency": "Urgence",
+ "pagertreeSilent": "Potichu",
+ "pagertreeLow": "Slabě",
+ "pagertreeCritical": "Kritické",
+ "pagertreeResolve": "Automatické řešení",
+ "pagertreeDoNothing": "Nedělej nic",
+ "pagertreeIntegrationUrl": "Integrační URL",
+ "pagertreeMedium": "Středně",
+ "pagertreeHigh": "Nahlas",
+ "wayToGetPagerTreeIntegrationURL": "Po vytvoření integrace Uptime Kuma v aplikaci PagerTree zkopírujte koncový bod. Zobrazit všechny podrobnosti {0}",
+ "Add New Tag": "Přidat nový štítek",
+ "lunaseaTarget": "Cíl",
+ "lunaseaDeviceID": "ID zařízení",
+ "lunaseaUserID": "ID uživatele",
+ "statusPageRefreshIn": "Obnovení za: {0}",
+ "twilioAccountSID": "SID účtu",
+ "twilioFromNumber": "Číslo odesílatele",
+ "twilioToNumber": "Číslo příjemce",
+ "twilioAuthToken": "Autorizační token",
+ "sameAsServerTimezone": "Stejné jako časové pásmo serveru",
+ "cronExpression": "Cron výraz",
+ "cronSchedule": "Plán: ",
+ "invalidCronExpression": "Neplatný cron výraz: {0}",
+ "startDateTime": "Počáteční datum/čas",
+ "endDateTime": "Datum/čas konce",
+ "ntfyAuthenticationMethod": "Způsob ověření",
+ "ntfyUsernameAndPassword": "Uživatelské jméno a heslo",
+ "pushoverMessageTtl": "Zpráva TTL (Sekund)",
+ "Show Clickable Link": "Zobrazit klikatelný odkaz",
+ "Show Clickable Link Description": "Pokud je zaškrtnuto, všichni, kdo mají přístup k této stavové stránce, mají přístup k adrese URL monitoru.",
+ "Open Badge Generator": "Otevřít generátor odznaků",
+ "Badge Type": "Typ odznaku",
+ "Badge Duration": "Platnost odznaku",
+ "Badge Label": "Štítek odznaku",
+ "Badge Prefix": "Prefix odznaku",
+ "Monitor Setting": "{0}'s Nastavení dohledu",
+ "Badge Generator": "Generátor odznaků pro {0}",
+ "Badge Label Color": "Barva štítku odznaku",
+ "Badge Color": "Barva odznaku",
+ "Badge Style": "Styl odznaku",
+ "Badge Label Suffix": "Přípona štítku odznaku",
+ "Badge URL": "URL odznaku",
+ "Badge Suffix": "Přípona odznaku",
+ "Badge Label Prefix": "Prefix štítku odznaku",
+ "Badge Up Color": "Barva odznaku při Běží",
+ "Badge Down Color": "Barva odznaku při Nedostupné",
+ "Badge Pending Color": "Barva odznaku při Pauze",
+ "Badge Maintenance Color": "Barva odznaku při Údržbě",
+ "Badge Warn Color": "Barva odznaku při Upozornění",
+ "Reconnecting...": "Obnovení spojení...",
+ "Cannot connect to the socket server": "Nelze se připojit k soketovému serveru",
+ "Edit Maintenance": "Upravit Údržbu",
+ "Home": "Hlavní stránka",
+ "Badge Down Days": "Odznak nedostupných dní",
+ "Group": "Skupina",
+ "Monitor Group": "Sledovaná skupina",
+ "noGroupMonitorMsg": "Není k dispozici. Nejprve vytvořte skupin dohledů.",
+ "Close": "Zavřít",
+ "Badge value (For Testing only.)": "Hodnota odznaku (pouze pro testování)",
+ "Badge Warn Days": "Odznak dní s upozorněním"
+}
diff --git a/src/lang/da-DK.json b/src/lang/da-DK.json
new file mode 100644
index 000000000..2eb00f318
--- /dev/null
+++ b/src/lang/da-DK.json
@@ -0,0 +1,586 @@
+{
+ "languageName": "Danish (Danmark)",
+ "Settings": "Indstillinger",
+ "Dashboard": "Betjeningspanel",
+ "New Update": "Opdatering tilgængelig",
+ "Language": "Sprog",
+ "Appearance": "Udseende",
+ "Theme": "Tema",
+ "General": "Generelt",
+ "Version": "Version",
+ "Check Update On GitHub": "Tjek efter opdateringer på Github",
+ "List": "Liste",
+ "Add": "Tilføj",
+ "Add New Monitor": "Tilføj ny Overvåger",
+ "Quick Stats": "Oversigt",
+ "Up": "Aktiv",
+ "Down": "Inaktiv",
+ "Pending": "Afventer",
+ "Unknown": "Ukendt",
+ "Pause": "Stands",
+ "pauseDashboardHome": "Standset",
+ "Name": "Navn",
+ "Status": "Status",
+ "DateTime": "Dato / Tid",
+ "Message": "Beskeder",
+ "No important events": "Ingen vigtige begivenheder",
+ "Resume": "Fortsæt",
+ "Edit": "Rediger",
+ "Delete": "Slet",
+ "Current": "Aktuelt",
+ "Uptime": "Oppetid",
+ "Cert Exp.": "Certifikatets udløb.",
+ "day": "Dag | Dage",
+ "-day": "-Dage",
+ "hour": "Timer",
+ "-hour": "-Timer",
+ "checkEverySecond": "Tjek hvert {0} sekund",
+ "Response": "Respons",
+ "Ping": "Ping",
+ "Monitor Type": "Overvåger type",
+ "Keyword": "Nøgleord",
+ "Friendly Name": "Visningsnavn",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Hjerteslag interval",
+ "Retries": "Gentagelser",
+ "retriesDescription": "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.",
+ "Advanced": "Avanceret",
+ "ignoreTLSError": "Ignorere TLS/SSL web fejl",
+ "Upside Down Mode": "Omvendt tilstand",
+ "upsideDownModeDescription": "Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.",
+ "Max. Redirects": "Maks. Omdirigeringer",
+ "maxRedirectDescription": "Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.",
+ "Accepted Status Codes": "Tilladte HTTP-Statuskoder",
+ "acceptedStatusCodesDescription": "Vælg de statuskoder, der stadig skal vurderes som vellykkede.",
+ "Save": "Gem",
+ "Notifications": "Underretninger",
+ "Not available, please setup.": "Ikke tilgængelige, opsæt venligst.",
+ "Setup Notification": "Opsæt underretninger",
+ "Light": "Lys",
+ "Dark": "Mørk",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Tema - Tidslinje",
+ "Normal": "Normal",
+ "Bottom": "Bunden",
+ "None": "Ingen",
+ "Timezone": "Tidszone",
+ "Search Engine Visibility": "Søgemaskine synlighed",
+ "Allow indexing": "Tillad indeksering",
+ "Discourage search engines from indexing site": "Frabed søgemaskiner at indeksere webstedet",
+ "Change Password": "Ændre adgangskode",
+ "Current Password": "Nuværende adgangskode",
+ "New Password": "Ny adgangskode",
+ "Repeat New Password": "Gentag den nye adgangskode",
+ "passwordNotMatchMsg": "Adgangskoderne er ikke ens.",
+ "Update Password": "Opdater adgangskode",
+ "Disable Auth": "Deaktiver autentificering",
+ "Enable Auth": "Aktiver autentificering",
+ "Logout": "Log ud",
+ "notificationDescription": "Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.",
+ "Leave": "Verlassen",
+ "I understand, please disable": "Jeg er indforstået, deaktiver venligst",
+ "Confirm": "Bekræft",
+ "Yes": "Ja",
+ "No": "Nej",
+ "Username": "Brugernavn",
+ "Password": "Adgangskode",
+ "Remember me": "Husk mig",
+ "Login": "Log ind",
+ "No Monitors, please": "Ingen Overvågere",
+ "add one": "tilføj en",
+ "Notification Type": "Underretningstype",
+ "Email": "E-Mail",
+ "Test": "Test",
+ "Certificate Info": "Certifikatoplysninger",
+ "keywordDescription": "Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.",
+ "deleteMonitorMsg": "Er du sikker på, at du vil slette overvågeren?",
+ "deleteNotificationMsg": "Er du sikker på, at du vil slette denne underretning for alle overvågere?",
+ "resolverserverDescription": "Cloudflare er standardserveren, den kan til enhver tid ændres.",
+ "Resolver Server": "Navne-server",
+ "rrtypeDescription": "Vælg den type RR, du vil overvåge.",
+ "Last Result": "Seneste resultat",
+ "pauseMonitorMsg": "Er du sikker på, at du vil standse Overvågeren?",
+ "Create your admin account": "Opret din administratorkonto",
+ "Repeat Password": "Gentag adgangskoden",
+ "Resource Record Type": "Resource Record Type",
+ "respTime": "Resp. Tid (ms)",
+ "notAvailableShort": "N/A",
+ "Create": "Opret",
+ "clearEventsMsg": "Er du sikker på vil slette alle events for denne Overvåger?",
+ "clearHeartbeatsMsg": "Er du sikker på vil slette alle hjerteslag for denne Overvåger?",
+ "confirmClearStatisticsMsg": "Vil du helt sikkert slette ALLE statistikker?",
+ "Clear Data": "Ryd Data",
+ "Events": "Events",
+ "Heartbeats": "Hjerteslag",
+ "Auto Get": "Auto-hent",
+ "enableDefaultNotificationDescription": "For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.",
+ "Default enabled": "Standard aktiveret",
+ "Also apply to existing monitors": "Anvend også på eksisterende overvågere",
+ "Export": "Eksport",
+ "Import": "Import",
+ "backupDescription": "Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.",
+ "backupDescription2": "PS: Historik og hændelsesdata er ikke inkluderet.",
+ "backupDescription3": "Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.",
+ "alertNoFile": "Vælg en fil der skal importeres.",
+ "alertWrongFileType": "Vælg venligst en JSON-fil.",
+ "twoFAVerifyLabel": "Indtast venligst dit token for at bekræfte, at 2FA fungerer",
+ "tokenValidSettingsMsg": "Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.",
+ "confirmEnableTwoFAMsg": "Er du sikker på at du vil aktivere 2FA?",
+ "confirmDisableTwoFAMsg": "Er du sikker på at du vil deaktivere 2FA?",
+ "Apply on all existing monitors": "Anvend på alle eksisterende overvågere",
+ "Verify Token": "Verificere Token",
+ "Setup 2FA": "Opsæt 2FA",
+ "Enable 2FA": "Aktiver 2FA",
+ "Disable 2FA": "Deaktiver 2FA",
+ "2FA Settings": "2FA Indstillinger",
+ "Two Factor Authentication": "To-Faktor Autentificering",
+ "Active": "Aktive",
+ "Inactive": "Inaktive",
+ "Token": "Token",
+ "Show URI": "Vis URI",
+ "Clear all statistics": "Ryd alle Statistikker",
+ "retryCheckEverySecond": "Prøv igen hvert {0} sekund.",
+ "importHandleDescription": "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.",
+ "confirmImportMsg": "Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.",
+ "Heartbeat Retry Interval": "Hjerteslag gentagelsesinterval",
+ "Import Backup": "Importer Backup",
+ "Export Backup": "Eksporter Backup",
+ "Skip existing": "Spring over eksisterende",
+ "Overwrite": "Overskriv",
+ "Options": "Valgmuligheder",
+ "Keep both": "Behold begge",
+ "Tags": "Etiketter",
+ "Add New below or Select...": "Tilføj Ny nedenfor eller Vælg…",
+ "Tag with this name already exist.": "Et Tag med dette navn findes allerede.",
+ "Tag with this value already exist.": "Et Tag med denne værdi findes allerede.",
+ "color": "farve",
+ "value (optional)": "værdi (valgfri)",
+ "Gray": "Grå",
+ "Red": "Rød",
+ "Orange": "Orange",
+ "Green": "Grøn",
+ "Blue": "Blå",
+ "Indigo": "Indigo",
+ "Purple": "Lilla",
+ "Pink": "Pink",
+ "Search...": "Søg…",
+ "Avg. Ping": "Gns. ping",
+ "Avg. Response": "Gns. respons",
+ "Entry Page": "Entry Side",
+ "statusPageNothing": "Intet her, tilføj venligst en Gruppe eller en Overvåger.",
+ "No Services": "Ingen Tjenester",
+ "All Systems Operational": "Alle Systemer i Drift",
+ "Partially Degraded Service": "Delvist forringet service",
+ "Degraded Service": "Forringet service",
+ "Add Group": "Tilføj Gruppe",
+ "Add a monitor": "Tilføj en Overvåger",
+ "Edit Status Page": "Rediger Statusside",
+ "Go to Dashboard": "Gå til Betjeningspanel",
+ "Status Page": "Statusside",
+ "Status Pages": "Statusside",
+ "telegram": "Telegram",
+ "webhook": "Webhook",
+ "smtp": "Email (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Understøtter 50+ Notifikationstjenester)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "Primary Base URL": "Primær Basis-URL",
+ "Push URL": "Push URL",
+ "needPushEvery": "Du bør kalde denne webadresse hvert {0} sekund.",
+ "pushOptionalParams": "Valgfrie parametre: {0}",
+ "defaultNotificationName": "Min {notification} Advarsel ({number})",
+ "here": "her",
+ "Required": "Påkrævet",
+ "Bot Token": "Bot Token",
+ "wayToGetTelegramToken": "Du kan få et token fra {0}.",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID",
+ "wayToGetTelegramChatID": "Du kan få dit chat-ID ved at sende en besked til bot'en og gå til denne URL for at se chat_id'et:",
+ "YOUR BOT TOKEN HERE": "DIT BOT TOKEN HER",
+ "chatIDNotFound": "Chat-ID blev ikke fundet; send venligst en besked til denne bot først ",
+ "Post URL": "Post URL",
+ "Content Type": "Indholdstype",
+ "webhookJsonDesc": "{0} er god til alle moderne HTTP-servere som f.eks Express.js",
+ "webhookFormDataDesc": "{multipart} er god til PHP. JSON'en skal parses med {decodeFunction}",
+ "secureOptionNone": "Ingen / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignorer TLS-fejl",
+ "From Email": "Afsender Email",
+ "emailCustomSubject": "Brugerdefineret Emne",
+ "To Email": "Modtager Email",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "Du kan få dette ved at gå til Serverindstillinger -> Integrationer -> Opret webhook",
+ "Bot Display Name": "Bot Visningsnavn",
+ "Prefix Custom Message": "Præfiks Brugerdefineret Besked",
+ "Hello @everyone is...": "Hello {'@'}everyone is...",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Du kan lære, hvordan du laver en webhook URL {0}.",
+ "Number": "Nummer",
+ "Recipients": "Modtagere",
+ "needSignalAPI": "Du skal have en Signal-klient med REST API.",
+ "wayToCheckSignalURL": "Du kan tjekke denne URL for at se, hvordan du konfigurerer en:",
+ "signalImportant": "VIGTIGT: Du kan ikke blande grupper og numre i modtagere!",
+ "Application Token": "Program Token",
+ "Server URL": "Server URL",
+ "Priority": "Prioritet",
+ "Icon Emoji": "Icon Emoji",
+ "Channel Name": "Kanalnavn",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Mere info om Webhooks på: {0}",
+ "aboutChannelName": "Indtast kanalnavnet i {0} Kanalnavn feltet, hvis du vil omgå Webhook-kanalen. Eks: #anden-kanal",
+ "aboutKumaURL": "Hvis du efterlader Uptime Kuma URL-feltet tomt, vil det som standard gå til projektets GitHub-siden.",
+ "emojiCheatSheet": "Emoji cheat sheet: {0}",
+ "clicksendsms": "ClickSend SMS",
+ "User Key": "Bruger-Nøgle",
+ "Device": "Enhed",
+ "Message Title": "Besked Titel",
+ "Notification Sound": "Notifikationslyd",
+ "More info on:": "Mere info på: {0}",
+ "pushoverDesc1": "Nødprioritet (2) har som standard 30 sekunders timeout mellem genforsøg og udløber efter 1 time.",
+ "pushoverDesc2": "Hvis du vil sende meddelelser til forskellige enheder, skal du udfylde feltet Enhed.",
+ "SMS Type": "SMS Type",
+ "octopushTypePremium": "Premium (Hurtig - anbefales til advarsel)",
+ "octopushTypeLowCost": "Lavpris (Langsom - nogle gange blokeret af operatøren)",
+ "checkPrice": "Tjek {0} priser:",
+ "apiCredentials": "API legitimationsoplysninger",
+ "octopushLegacyHint": "Bruger du den ældre version af Octopush (2011-2020) eller den nye version?",
+ "Check octopush prices": "Tjek octopush priser {0}.",
+ "octopushPhoneNumber": "Telefonnummer (intl format, f.eks : +4512345678) ",
+ "octopushSMSSender": "SMS Afsender Navn : 3-11 alfanumeriske tegn og mellemrum (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Enhed-ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Eksempel: {0}",
+ "Read more:": "Læs mere: {0}",
+ "Status:": "Status: {0}",
+ "Read more": "Læs mere",
+ "appriseInstalled": "Apprise er installeret.",
+ "appriseNotInstalled": "Apprise er ikke installeret. {0}",
+ "Access Token": "Access Token",
+ "Channel access token": "kanaladgangstoken",
+ "Line Developers Console": "Line Udviklerkonsol",
+ "lineDevConsoleTo": "Line Udviklerkonsol - {0}",
+ "Basic Settings": "Basisindstillinger",
+ "User ID": "Bruger-ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.",
+ "Icon URL": "Ikon URL",
+ "aboutIconURL": "Du kan angive et link til et billede i \"Ikon URL\" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.",
+ "aboutMattermostChannelName": "Du kan tilsidesætte standardkanalen, som Webhoo'en sender til ved at indtaste kanalnavnet i feltet \"Kanalnavn\". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.",
+ "promosmsTypeFlash": "SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.",
+ "promosmsTypeFull": "SMS FULL - Premium-niveau af SMS, Du kan bruge dit \"Sender Name\" (Du skal først registrere navn). Pålidelig til advarsler.",
+ "promosmsTypeSpeed": "SMS SPEED - Højeste prioritet i systemet. Meget hurtig og pålidelig, men dyr (ca. to gange af SMS FULL pris).",
+ "promosmsPhoneNumber": "Telefonnummer (polske numre behøver ikke angive områdenumre)",
+ "promosmsSMSSender": "SMS Sender Name : Forudregistreret navn eller en af standarderne: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "Hjemmeserver-URL (med http(s):// og eventuel port)",
+ "Internal Room Id": "Intern Rum-ID",
+ "matrixDesc1": "Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}",
+ "Method": "Metode",
+ "Body": "Body",
+ "Headers": "Headers",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "\"request headers\"-erne er ikke gyldige JSON: ",
+ "BodyInvalidFormat": "\"request body\"-en er ikke gyldige JSON: ",
+ "Monitor History": "Overvåger Historik",
+ "clearDataOlderThan": "Gem overvågningshistorikdata i {0} dage.",
+ "PasswordsDoNotMatch": "Adgangskoderne stemmer ikke overens.",
+ "records": "forekomster",
+ "One record": "Én forekomst",
+ "steamApiKeyDescription": "For at overvåge en Steam Game Server skal du bruge en Steam Web-API nøgle. Du kan registrere din API-nøgle her: ",
+ "Current User": "Nuværende Bruger",
+ "recent": "Seneste",
+ "Done": "Færdig",
+ "Info": "Info",
+ "Security": "Sikkerhed",
+ "Steam API Key": "Steam API-nøgle",
+ "Shrink Database": "Krymp Database",
+ "Pick a RR-Type...": "Vælg en RR-Type…",
+ "Pick Accepted Status Codes...": "Vælg accepterede statuskoder…",
+ "Default": "Standard",
+ "HTTP Options": "HTTP Valgmuligheder",
+ "Create Incident": "Opret Annoncering",
+ "Title": "Titel",
+ "Content": "Indhold",
+ "Style": "Type",
+ "info": "info",
+ "warning": "advarsel",
+ "danger": "fare",
+ "primary": "primær",
+ "light": "lys",
+ "dark": "mørk",
+ "Post": "Udgiv",
+ "Please input title and content": "Indtast venligst titel og indhold",
+ "Created": "Oprettet",
+ "Last Updated": "Sidst Opdateret",
+ "Unpin": "Frigør",
+ "Switch to Light Theme": "Skift til Lys Tema",
+ "Switch to Dark Theme": "Skift til Mørkt Tema",
+ "Show Tags": "Vis Etiketter",
+ "Hide Tags": "Skjul Etiketter",
+ "Description": "Beskrivelse",
+ "No monitors available.": "No monitors available.",
+ "Add one": "Tilføj en",
+ "No Monitors": "Ingen Overvågere",
+ "Untitled Group": "Unavngivet Gruppe",
+ "Services": "Tjenester",
+ "Discard": "Kassér",
+ "Cancel": "Annullér",
+ "Powered by": "Drevet af",
+ "shrinkDatabaseDescription": "Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Brugernavn (inkl. webapi_ prefix)",
+ "serwersmsAPIPassword": "API Adgangskode",
+ "serwersmsPhoneNumber": "Telefonnummer",
+ "serwersmsSenderName": "SMS Afsender Navn (registreret via kundeportal)",
+ "statusMaintenance": "Vedligeholdelse",
+ "Maintenance": "Vedligeholdelse",
+ "No Maintenance": "Ingen vedligeholdelse",
+ "Examples": "Eksempler",
+ "High": "Høj",
+ "Recipient Number": "Modtager Nummer",
+ "From Name/Number": "Fra Navn/Nummer",
+ "Help": "Hjælp",
+ "Please use this option carefully!": "Brug venligst denne funktion med forsigtighed!",
+ "disableauth.message1": "Er du sikker på, at du vil deaktivere authentication ?",
+ "successMessage": "Succesmeddelelse",
+ "error": "fejl",
+ "critical": "kritisk",
+ "Customize": "Tilpas",
+ "Custom Footer": "Brugerdefineret Footer",
+ "Custom CSS": "Brugerdefineret CSS",
+ "deleteStatusPageMsg": "Er du sikker på, at du vil slette denne statusside?",
+ "Proxies": "Proxies",
+ "default": "Standard",
+ "enabled": "Aktiveret",
+ "setAsDefault": "Indstil som standard",
+ "Certificate Chain": "Certificate Chain",
+ "Days Remaining:": "Dage tilbage:",
+ "No status pages": "Ingen statussider",
+ "Proxy": "Proxy",
+ "default: notify all devices": "standard: underretter alle enheder",
+ "Automations can optionally be triggered in Home Assistant:": "Automatiseringer kan valgfrit udløses i Home Assistant:",
+ "Trigger type:": "Trigger type:",
+ "Event type:": "Event type:",
+ "Event data:": "Event data:",
+ "Frontend Version": "Frontend Version",
+ "or": "eller",
+ "Notification Service": "Notifikationstjeneste",
+ "Domain": "Domæne",
+ "Google Analytics ID": "Google Analytics ID",
+ "Edit Tag": "Ændre Tag",
+ "Learn More": "Lær mere",
+ "Schedule maintenance": "Planlæg vedligeholdelse",
+ "Invalid": "Ugyldig",
+ "User": "Bruger",
+ "Installed": "Installeret",
+ "Not installed": "Ikke installeret",
+ "Running": "Køre",
+ "Not running": "Køre ikke",
+ "Remove Token": "Fjern Token",
+ "Start": "Start",
+ "Stop": "Stop",
+ "Add New Status Page": "Tilføj ny statusside",
+ "Next": "Næste",
+ "No Proxy": "Ingen proxy",
+ "New Status Page": "Ny statusside",
+ "Page Not Found": "Side blev ikke fundet",
+ "Reverse Proxy": "Reverse Proxy",
+ "Backup": "Backup",
+ "About": "Om",
+ "cloudflareWebsite": "Cloudflare hjemmeside",
+ "Message:": "Besked:",
+ "HTTP Headers": "HTTP Headers",
+ "Trust Proxy": "Trust Proxy",
+ "For example: nginx, Apache and Traefik.": "For eksempel: nginx, Apache og Traefik.",
+ "Please read": "Læs venligst",
+ "Show Powered By": "Vis Powered By",
+ "Domain Names": "Domænenavne",
+ "signedInDisp": "Logget ind som {0}",
+ "Certificate Expiry Notification": "Meddelelse om udløbsdato for certifikatet",
+ "API Username": "API Brugernavn",
+ "API Key": "API Key",
+ "Steam Game Server": "Steam Game Server",
+ "What you can try:": "Hvad du kan prøve:",
+ "Go back to the previous page.": "Gå tilbage til forrige side.",
+ "Coming Soon": "Kommer snart",
+ "settingsCertificateExpiry": "Udløb af TLS-certifikat",
+ "Setup Docker Host": "Opsæt Docker Host",
+ "Connection Type": "Forbindelsestype",
+ "Docker Daemon": "Docker Daemon",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Container",
+ "Container Name / ID": "Container Navn / ID",
+ "Packet Size": "Pakke størrelse",
+ "Home Assistant URL": "Home Assistant URL",
+ "Frontend Version do not match backend version!": "Frontend versionen stemmer ikke overens med backend versionen!",
+ "Optional": "Valgfri",
+ "HomeAssistant": "Home Assistant",
+ "disableauth.message2": "Den er beregnet til scenarier hvor du har tænkt dig at implementere tredjepartsgodkendelse foran Uptime Kuma, f.eks. Cloudflare Access, Authelia eller andre godkendelsesmekanismer.",
+ "deleteProxyMsg": "Er du sikker på, at du vil slette denne proxy for alle monitors?",
+ "Valid": "Gyldig",
+ "Don't know how to get the token? Please read the guide:": "Ved du ikke, hvordan du får fat i din Token? Læs venligst guiden:",
+ "Subject:": "Emne:",
+ "Footer Text": "Footer tekst",
+ "Using a Reverse Proxy?": "Bruger du en Reverse Proxy?",
+ "deleteDockerHostMsg": "Er du sikker på, at du vil slette denne docker host for alle monitors?",
+ "Docker Host": "Docker Host",
+ "Docker Hosts": "Docker Hosts",
+ "loadingError": "Kan ikke hente dataene, prøv igen senere.",
+ "Custom": "Brugerdefineret",
+ "Monitor": "Overvåger | Overvågere",
+ "Specific Monitor Type": "Specifik monitor-type",
+ "topic": "Emne",
+ "Fingerprint:": "Fingerprint:",
+ "Issuer:": "Udsteder:",
+ "dayOfWeek": "Ugedag",
+ "dayOfMonth": "Dag i måneden",
+ "lastDay": "Sidste dag",
+ "lastDay1": "Sidste dag i måneden",
+ "weekdayShortThu": "Tor",
+ "weekdayShortFri": "Fre",
+ "weekdayShortSat": "Lør",
+ "weekdayShortSun": "Søn",
+ "weekdayShortWed": "Ons",
+ "lastDay2": "Anden sidste dag i måneden",
+ "lastDay3": "Tredje sidste dag i måneden",
+ "lastDay4": "Fjerde sidste dag i måneden",
+ "maintenanceStatus-under-maintenance": "Under vedligeholdelse",
+ "maintenanceStatus-inactive": "Inaktiv",
+ "maintenanceStatus-scheduled": "Planlagt",
+ "maintenanceStatus-ended": "Afsluttet",
+ "maintenanceStatus-unknown": "Ukendt",
+ "Display Timezone": "Vis tidszone",
+ "Server Timezone": "Serverens tidszone",
+ "IconUrl": "Ikon URL",
+ "Enable DNS Cache": "Aktiver DNS Cache",
+ "Enable": "Aktiver",
+ "Disable": "Deaktiver",
+ "dnsCacheDescription": "Det fungerer muligvis ikke i alle IPv6-miljøer, så deaktiver det, hvis du støder på problemer.",
+ "Maintenance Time Window of a Day": "Tidsvindue for vedligeholdelse af en dag",
+ "Schedule Maintenance": "Planlæg vedligeholdelse",
+ "Date and Time": "Dato og klokkeslæt",
+ "plugin": "Plugin | Plugins",
+ "install": "Installer",
+ "uninstall": "Afinstaller",
+ "uninstalling": "Afinstallerer",
+ "confirmUninstallPlugin": "Er du sikker på, at du vil afinstallere dette plugin?",
+ "installing": "Installerer",
+ "markdownSupported": "Markdown syntax understøttet",
+ "Affected Monitors": "Berørte monitors",
+ "All Status Pages": "Alle statussider",
+ "Pick Affected Monitors...": "Vælg berørte monitors…",
+ "Select status pages...": "Vælg statusside…",
+ "proxyDescription": "Proxyer skal være tilknyttet en monitor for at fungere.",
+ "Accept characters:": "Accepter tegn:",
+ "Authentication": "Godkendelse",
+ "wayToGetCloudflaredURL": "(Download cloudflared fra {0})",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Den aktuelle forbindelse kan gå tabt, hvis du er forbundet via Cloudflare Tunnel. Er du sikker på, at du vil stoppe det? Indtast din nuværende adgangskode for at bekræfte den.",
+ "Other Software": "Anden software",
+ "Date Created": "Dato oprettet",
+ "signedInDispDisabled": "Auth Deaktiveret.",
+ "certificationExpiryDescription": "HTTPS Monitors sender en notifikation, når TLS-certifikatet udløber om:",
+ "Also check beta release": "Se også betaudgivelsen",
+ "Show update if available": "Vis opdatering, hvis tilgængelig",
+ "wayToGetZohoCliqURL": "Du kan lære, hvordan du opretter et webhook URL {0}.",
+ "recurringInterval": "Interval",
+ "weekdayShortMon": "Man",
+ "weekdayShortTue": "Tir",
+ "dnsPortDescription": "DNS server port. Standardværdien er 53. Du kan altid ændre porten.",
+ "Valid To:": "Gyldig til:",
+ "Domain Name Expiry Notification": "Notifikation om udløb af domænenavn",
+ "Custom Monitor Type": "Brugerdefineret overvågningstype",
+ "API Keys": "API Nøgler",
+ "Don't expire": "Udløb aldrig",
+ "Continue": "Fortsæt",
+ "Add Another": "Tilføj en mere",
+ "Key Added": "Nøgle tilføjet",
+ "Add API Key": "Tilføj API Nøgle",
+ "No API Keys": "Ingen API nøgler",
+ "apiKey-active": "Aktiv",
+ "apiKey-expired": "Udløbet",
+ "apiKey-inactive": "Inaktiv",
+ "disableAPIKeyMsg": "Er du sikker på du vil deaktivere denne API nøgle?",
+ "Generate": "Generér",
+ "Game": "Spil",
+ "General Monitor Type": "Generel Overvågningstype",
+ "Clone Monitor": "Duplikér overvågning",
+ "Clone": "Duplikér",
+ "cloneOf": "Kopi af {0}",
+ "promosmsLogin": "API Login Navn",
+ "pushoversounds siren": "Sirene",
+ "pushoversounds none": "Ingen (lydløs)",
+ "smtpDkimSettings": "DKIM Indstillinger",
+ "documentation": "dokumentation",
+ "smtpDkimDomain": "Domænenavn",
+ "smtpDkimPrivateKey": "Privat nøgle",
+ "alertaApiEndpoint": "API Slutpunkt",
+ "alertaApiKey": "API Nøgle",
+ "smseagleEncoding": "Send som Unicode",
+ "onebotHttpAddress": "OneBot HTTP Adresse",
+ "onebotMessageType": "OneBot Meddelelse Type",
+ "onebotGroupMessage": "Gruppe",
+ "onebotPrivateMessage": "Privat",
+ "onebotUserOrGroupId": "Gruppe/Bruger ID",
+ "promosmsPassword": "API Adgangskode",
+ "recurringIntervalMessage": "Kør hver dag | Kør hver {0}. dag",
+ "smseagleTo": "Telefon numre",
+ "pagertreeIntegrationUrl": "Integration URL",
+ "pagertreeSilent": "Lydløs",
+ "pagertreeLow": "Lav",
+ "pagertreeMedium": "Mellem",
+ "pagertreeHigh": "Høj",
+ "pagertreeCritical": "Kritisk",
+ "pushoversounds vibrate": "Kun Vibration",
+ "Server Address": "Server Adresse",
+ "pauseMaintenanceMsg": "Er du sikker på du vil pause?",
+ "Recurring": "Tilbagevendende",
+ "Enable TLS": "Aktivér TLS",
+ "high": "høj",
+ "Base URL": "Base URL",
+ "Platform": "Platform",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "Retry": "Forsøg igen",
+ "Topic": "Emne",
+ "Setup Proxy": "Opsæt Proxy",
+ "Proxy Server": "Proxy Server",
+ "wayToGetClickSendSMSToken": "Du kan få API brugernavn og API nøgle fra {0} .",
+ "PushDeer Key": "PushDeer Nøgle",
+ "The resource is no longer available.": "Denne ressource er ikke længere tilgængelig.",
+ "Proxy Protocol": "Proxy Protokol",
+ "Integration Key": "Integration Nøgle",
+ "Integration URL": "Integration URL",
+ "do nothing": "gør intet",
+ "Passive Monitor Type": "Passiv Overvågningstype",
+ "Most likely causes:": "Mest sandsynlige årsager:",
+ "statusPageMaintenanceEndDate": "Slut",
+ "pushoversounds magic": "Magisk",
+ "pushoversounds mechanical": "Mekanisk",
+ "pushyAPIKey": "Hemmelig API Nøgle",
+ "Expiry date": "Udløbsdato",
+ "Expires": "Udløber",
+ "deleteAPIKeyMsg": "Er du sikker på du vil slette denne API nøgle?",
+ "pagertreeDoNothing": "Gør intet",
+ "Start of maintenance": "Start på vedligeholdelse",
+ "Add New Tag": "Tilføj nyt tag"
+}
diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json
new file mode 100644
index 000000000..95e685f32
--- /dev/null
+++ b/src/lang/de-CH.json
@@ -0,0 +1,785 @@
+{
+ "languageName": "Deutsch (Schweiz)",
+ "Settings": "Einstellungen",
+ "Dashboard": "Dashboard",
+ "New Update": "Update verfügbar",
+ "Language": "Sprache",
+ "Appearance": "Erscheinungsbild",
+ "Theme": "Erscheinungsbild",
+ "General": "Allgemein",
+ "Version": "Version",
+ "Check Update On GitHub": "Auf GitHub nach Updates suchen",
+ "List": "Liste",
+ "Home": "Home",
+ "Add": "Hinzufügen",
+ "Add New Monitor": "Neuen Monitor hinzufügen",
+ "Quick Stats": "Übersicht",
+ "Up": "Aktiv",
+ "Down": "Inaktiv",
+ "Pending": "Ausstehend",
+ "Unknown": "Unbekannt",
+ "Cannot connect to the socket server": "Es kann keine Verbindung zum Socket-Server hergestellt werden",
+ "Reconnecting...": "Die Verbindung wird wiederhergestellt...",
+ "Pause": "Pausieren",
+ "pauseDashboardHome": "Pausiert",
+ "Name": "Name",
+ "Status": "Status",
+ "DateTime": "Datum / Uhrzeit",
+ "Message": "Nachricht",
+ "No important events": "Keine wichtigen Ereignisse",
+ "Resume": "Fortsetzen",
+ "Edit": "Bearbeiten",
+ "Delete": "Löschen",
+ "Current": "Aktuell",
+ "Uptime": "Verfügbarkeit",
+ "Cert Exp.": "Zertifikatsablauf",
+ "day": "Tag | Tage",
+ "-day": "-Tage",
+ "hour": "Stunde",
+ "-hour": "-Stunden",
+ "checkEverySecond": "Überprüfe alle {0} Sekunden",
+ "Response": "Antwortzeit",
+ "Ping": "Ping",
+ "Monitor Type": "Monitor-Typ",
+ "Keyword": "Suchwort",
+ "Friendly Name": "Anzeigename",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Prüfintervall",
+ "Retries": "Wiederholungen",
+ "retriesDescription": "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.",
+ "Advanced": "Erweitert",
+ "ignoreTLSError": "Ignoriere TLS-/SSL-Fehler von Webseiten",
+ "Upside Down Mode": "Umgekehrter Modus",
+ "upsideDownModeDescription": "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.",
+ "Max. Redirects": "Max. Weiterleitungen",
+ "maxRedirectDescription": "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.",
+ "Accepted Status Codes": "Erlaubte HTTP-Statuscodes",
+ "acceptedStatusCodesDescription": "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.",
+ "Save": "Speichern",
+ "Notifications": "Benachrichtigungen",
+ "Not available, please setup.": "Nicht verfügbar, bitte einrichten.",
+ "Setup Notification": "Benachrichtigung einrichten",
+ "Light": "Hell",
+ "Dark": "Dunkel",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste",
+ "Normal": "Normal",
+ "Bottom": "Unten",
+ "None": "Keine",
+ "Timezone": "Zeitzone",
+ "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen",
+ "Allow indexing": "Indizierung zulassen",
+ "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren",
+ "Change Password": "Passwort ändern",
+ "Current Password": "Aktuelles Passwort",
+ "New Password": "Neues Passwort",
+ "Repeat New Password": "Neues Passwort wiederholen",
+ "passwordNotMatchMsg": "Passwörter stimmen nicht überein.",
+ "Update Password": "Passwort aktualisieren",
+ "Disable Auth": "Authentifizierung deaktivieren",
+ "Enable Auth": "Authentifizierung aktivieren",
+ "disableauth.message1": "Bist du sicher das du die Authentifizierung deaktivieren möchtest?",
+ "disableauth.message2": "Dies ist für Szenarien gedacht, in denen man eine externe Authentifizierung vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.",
+ "Please use this option carefully!": "Bitte mit Vorsicht nutzen!",
+ "Logout": "Ausloggen",
+ "notificationDescription": "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.",
+ "Leave": "Verlassen",
+ "I understand, please disable": "Ich verstehe, bitte deaktivieren",
+ "Confirm": "Bestätigen",
+ "Yes": "Ja",
+ "No": "Nein",
+ "Username": "Benutzername",
+ "Password": "Passwort",
+ "Remember me": "Angemeldet bleiben",
+ "Login": "Einloggen",
+ "No Monitors, please": "Keine Monitore, bitte",
+ "add one": "hinzufügen",
+ "Notification Type": "Benachrichtigungsdienst",
+ "Email": "E-Mail",
+ "Test": "Test",
+ "Certificate Info": "Zertifikatsinformation",
+ "keywordDescription": "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Gross-/Kleinschreibung unterschieden.",
+ "deleteMonitorMsg": "Bist du sicher, dass du den Monitor löschen möchtest?",
+ "deleteNotificationMsg": "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?",
+ "resolverserverDescription": "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.",
+ "Resolver Server": "Auflösungsserver",
+ "rrtypeDescription": "Wähle den RR Typ aus, welchen du überwachen möchtest",
+ "Last Result": "Letztes Ergebnis",
+ "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?",
+ "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?",
+ "clearHeartbeatsMsg": "Bist du sicher, dass du alle Statistiken für diesen Monitor löschen möchtest?",
+ "Clear Data": "Lösche Daten",
+ "Events": "Ereignisse",
+ "Heartbeats": "Statistiken",
+ "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?",
+ "Create your admin account": "Erstelle dein Admin-Konto",
+ "Repeat Password": "Passwort erneut eingeben",
+ "Resource Record Type": "Ressourcen Record Typ",
+ "Export": "Export",
+ "Import": "Import",
+ "respTime": "Antw.-Zeit (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Standardmässig aktiviert",
+ "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden",
+ "enableDefaultNotificationDescription": "Für jeden neuen Monitor wird diese Benachrichtigung standardmässig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.",
+ "Create": "Erstellen",
+ "Auto Get": "Auto Get",
+ "backupDescription": "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.",
+ "backupDescription2": "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.",
+ "backupDescription3": "Sensible Daten wie Benachrichtigungs-Token sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.",
+ "alertNoFile": "Bitte wähle eine Datei zum Importieren aus.",
+ "alertWrongFileType": "Bitte wähle eine JSON-Datei aus.",
+ "Clear all statistics": "Lösche alle Statistiken",
+ "importHandleDescription": "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.",
+ "Skip existing": "Vorhandene überspringen",
+ "Overwrite": "Überschreiben",
+ "Options": "Optionen",
+ "confirmImportMsg": "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.",
+ "Keep both": "Beide behalten",
+ "twoFAVerifyLabel": "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert:",
+ "Verify Token": "Token verifizieren",
+ "Setup 2FA": "2FA einrichten",
+ "Enable 2FA": "2FA aktivieren",
+ "Disable 2FA": "2FA deaktivieren",
+ "2FA Settings": "2FA-Einstellungen",
+ "confirmEnableTwoFAMsg": "Bist du sicher, dass du 2FA aktivieren möchtest?",
+ "confirmDisableTwoFAMsg": "Bist du sicher, dass du 2FA deaktivieren möchtest?",
+ "tokenValidSettingsMsg": "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.",
+ "Two Factor Authentication": "Zwei-Faktor-Authentifizierung",
+ "Active": "Aktiv",
+ "Inactive": "Inaktiv",
+ "Token": "Token",
+ "Show URI": "URI anzeigen",
+ "Tags": "Tags",
+ "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen…",
+ "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.",
+ "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.",
+ "color": "Farbe",
+ "value (optional)": "Wert (optional)",
+ "Gray": "Grau",
+ "Red": "Rot",
+ "Orange": "Orange",
+ "Green": "Grün",
+ "Blue": "Blau",
+ "Indigo": "Indigo",
+ "Purple": "Lila",
+ "Pink": "Pink",
+ "Search...": "Suchen…",
+ "Heartbeat Retry Interval": "Überprüfungsintervall",
+ "Resend Notification if Down X times consecutively": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander",
+ "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen",
+ "resendEveryXTimes": "Erneut versenden alle {0} mal",
+ "resendDisabled": "Erneut versenden deaktiviert",
+ "Import Backup": "Backup importieren",
+ "Export Backup": "Backup exportieren",
+ "Avg. Ping": "Ping ø",
+ "Avg. Response": "Antwortzeit ø",
+ "Entry Page": "Einstiegsseite",
+ "statusPageNothing": "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.",
+ "No Services": "Keine Dienste",
+ "All Systems Operational": "Alle Systeme betriebsbereit",
+ "Partially Degraded Service": "Teilweise beeinträchtigter Dienst",
+ "Degraded Service": "Eingeschränkter Dienst",
+ "Add Group": "Gruppe hinzufügen",
+ "Add a monitor": "Monitor hinzufügen",
+ "Edit Status Page": "Bearbeite Status-Seite",
+ "Go to Dashboard": "Gehe zum Dashboard",
+ "Status Page": "Status-Seite",
+ "Status Pages": "Status-Seiten",
+ "telegram": "Telegram",
+ "webhook": "Webhook",
+ "smtp": "E-Mail (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)",
+ "GoogleChat": "Google Chat (nur Google Workspace)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "Primary Base URL": "Primär URL",
+ "Push URL": "Push URL",
+ "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen.",
+ "pushOptionalParams": "Optionale Parameter: {0}",
+ "defaultNotificationName": "Mein {notification} Alarm ({number})",
+ "here": "hier",
+ "Required": "Erforderlich",
+ "Bot Token": "Bot Token",
+ "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's",
+ "wayToGetTelegramChatID": "Du kannst die Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id: zu sehen.",
+ "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN",
+ "chatIDNotFound": "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot",
+ "Post URL": "Post URL",
+ "Content Type": "Content Type",
+ "webhookJsonDesc": "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet",
+ "webhookFormDataDesc": "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden",
+ "secureOptionNone": "Keine / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "TLS-Fehler ignorieren",
+ "From Email": "Absender E-Mail",
+ "emailCustomSubject": "Benutzerdefinierter Betreff",
+ "To Email": "Empfänger E-Mail",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Notifikationen -> Webhooks -> Neuer Webhook",
+ "Bot Display Name": "Bot-Anzeigename",
+ "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix",
+ "Hello @everyone is...": "Hallo {'@'}everyone ist…",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.",
+ "Number": "Nummer",
+ "Recipients": "Empfänger",
+ "needSignalAPI": "Es wird ein Signal Client mit REST-API benötigt.",
+ "wayToCheckSignalURL": "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:",
+ "signalImportant": "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!",
+ "Application Token": "Anwendungstoken",
+ "Server URL": "Server URL",
+ "Priority": "Priorität",
+ "Icon Emoji": "Icon Emoji",
+ "Channel Name": "Kanalname",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Weitere Informationen zu Webhooks auf: {0}",
+ "aboutChannelName": "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel",
+ "aboutKumaURL": "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird standardmässig die GitHub Projekt Seite verwendet.",
+ "emojiCheatSheet": "Emoji Cheat Sheet: {0}",
+ "User Key": "Benutzerschlüssel",
+ "Device": "Gerät",
+ "Message Title": "Nachrichtentitel",
+ "Notification Sound": "Benachrichtigungston",
+ "More info on:": "Mehr Infos auf: {0}",
+ "pushoverDesc1": "Notfallpriorität (2) hat standardmässig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.",
+ "pushoverDesc2": "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.",
+ "pushoverMessageTtl": "Message TTL (Sekunden)",
+ "SMS Type": "SMS Typ",
+ "octopushTypePremium": "Premium (Schnell - zur Benachrichtigung empfohlen)",
+ "octopushTypeLowCost": "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)",
+ "checkPrice": "Prüfe {0} Preise:",
+ "octopushLegacyHint": "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?",
+ "Check octopush prices": "Vergleiche die Oktopush Preise {0}.",
+ "octopushPhoneNumber": "Telefonnummer (Internationales Format, z.B : +49612345678) ",
+ "octopushSMSSender": "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Geräte ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Beispiel: {0}",
+ "Read more:": "Weiterlesen: {0}",
+ "Status:": "Status: {0}",
+ "Read more": "Weiterlesen",
+ "appriseInstalled": "Apprise ist installiert.",
+ "appriseNotInstalled": "Apprise ist nicht installiert. {0}",
+ "Access Token": "Access Token",
+ "Channel access token": "Channel Access Token",
+ "Line Developers Console": "Line Developers Console",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "Grundeinstellungen",
+ "User ID": "User ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.",
+ "Icon URL": "Icon URL",
+ "aboutIconURL": "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.",
+ "aboutMattermostChannelName": "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.",
+ "promosmsTypeFlash": "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.",
+ "promosmsTypeFull": "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.",
+ "promosmsTypeSpeed": "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).",
+ "promosmsPhoneNumber": "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)",
+ "promosmsSMSSender": "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu Webhook URL",
+ "matrixHomeserverURL": "Heimserver URL (mit http(s):// und optionalen Ports)",
+ "Internal Room Id": "Interne Raum-ID",
+ "matrixDesc1": "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}",
+ "Method": "Methode",
+ "Body": "Body",
+ "Headers": "Headers",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Der Header ist kein gültiges JSON: ",
+ "BodyInvalidFormat": "Der Body ist kein gültiges JSON: ",
+ "Monitor History": "Monitor Verlauf",
+ "clearDataOlderThan": "Bewahre die Aufzeichnungsdaten für {0} Tage auf.",
+ "PasswordsDoNotMatch": "Passwörter stimmen nicht überein.",
+ "records": "Einträge",
+ "One record": "Ein Eintrag",
+ "steamApiKeyDescription": "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ",
+ "Current User": "Aktueller Benutzer",
+ "recent": "Letzte",
+ "Done": "Fertig",
+ "Info": "Info",
+ "Security": "Sicherheit",
+ "Steam API Key": "Steam API Key",
+ "Shrink Database": "Datenbank verkleinern",
+ "Pick a RR-Type...": "Wähle ein RR-Typ aus…",
+ "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus…",
+ "Default": "Standard",
+ "HTTP Options": "HTTP Optionen",
+ "Create Incident": "Vorfall erstellen",
+ "Title": "Titel",
+ "Content": "Inhalt",
+ "Style": "Stil",
+ "info": "info",
+ "warning": "warnung",
+ "danger": "gefahr",
+ "primary": "primär",
+ "light": "hell",
+ "dark": "dunkel",
+ "Post": "Eintrag",
+ "Please input title and content": "Bitte Titel und Inhalt eingeben",
+ "Created": "Erstellt",
+ "Last Updated": "Zuletzt aktualisiert",
+ "Unpin": "Loslösen",
+ "Switch to Light Theme": "Zu hellem Thema wechseln",
+ "Switch to Dark Theme": "Zum dunklen Thema wechseln",
+ "Show Tags": "Tags anzeigen",
+ "Hide Tags": "Tags ausblenden",
+ "Description": "Beschreibung",
+ "No monitors available.": "Keine Monitore verfügbar.",
+ "Add one": "Hinzufügen",
+ "No Monitors": "Keine Monitore",
+ "Untitled Group": "Gruppe ohne Titel",
+ "Services": "Dienste",
+ "Discard": "Verwerfen",
+ "Cancel": "Abbrechen",
+ "Powered by": "Erstellt mit",
+ "shrinkDatabaseDescription": "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)",
+ "serwersmsAPIPassword": "API Passwort",
+ "serwersmsPhoneNumber": "Telefonnummer",
+ "serwersmsSenderName": "Name des SMS-Absenders (über Kundenportal registriert)",
+ "stackfield": "Stackfield",
+ "clicksendsms": "ClickSend SMS",
+ "apiCredentials": "API Zugangsdaten",
+ "smtpDkimSettings": "DKIM Einstellungen",
+ "smtpDkimDesc": "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.",
+ "documentation": "Dokumentation",
+ "smtpDkimDomain": "Domain Name",
+ "smtpDkimKeySelector": "Schlüssel Auswahl",
+ "smtpDkimPrivateKey": "Privater Schlüssel",
+ "smtpDkimHashAlgo": "Hash-Algorithmus (Optional)",
+ "smtpDkimheaderFieldNames": "Zu validierende Header-Schlüssel (optional)",
+ "smtpDkimskipFields": "Zu ignorierende Header Schlüssel (optional)",
+ "PushByTechulus": "Push by Techulus",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpunkt",
+ "alertaEnvironment": "Umgebung",
+ "alertaApiKey": "API Schlüssel",
+ "alertaAlertState": "Alarmstatus",
+ "alertaRecoverState": "Wiederherstellungsstatus",
+ "deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?",
+ "Proxies": "Proxies",
+ "default": "Standard",
+ "enabled": "Aktiviert",
+ "setAsDefault": "Als Standard setzen",
+ "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?",
+ "proxyDescription": "Proxies müssen einem Monitor zugewiesen werden, um zu funktionieren.",
+ "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.",
+ "setAsDefaultProxyDescription": "Dieser Proxy wird standardmässig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.",
+ "Certificate Chain": "Zertifikatskette",
+ "Valid": "Gültig",
+ "Invalid": "Ungültig",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "Telefonnummern",
+ "TemplateCode": "Vorlagencode",
+ "SignName": "Signaturname",
+ "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ",
+ "Bark Endpoint": "Bark Endpunkt",
+ "WebHookUrl": "Webhook URL",
+ "SecretKey": "Geheimer Schlüssel",
+ "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden",
+ "Device Token": "Gerätetoken",
+ "Platform": "Platform",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Hoch",
+ "Retry": "Wiederholungen",
+ "Topic": "Thema",
+ "WeCom Bot Key": "WeCom Bot Schlüssel",
+ "Setup Proxy": "Proxy einrichten",
+ "Proxy Protocol": "Proxy Protokoll",
+ "Proxy Server": "Proxy-Server",
+ "Proxy server has authentication": "Proxy-Server hat Authentifizierung",
+ "User": "Benutzer",
+ "Installed": "Installiert",
+ "Not installed": "Nicht installiert",
+ "Running": "Läuft",
+ "Not running": "Gestoppt",
+ "Remove Token": "Token entfernen",
+ "Start": "Start",
+ "Stop": "Stop",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Neue Status-Seite hinzufügen",
+ "Slug": "Slug",
+ "Accept characters:": "Akzeptierte Zeichen:",
+ "startOrEndWithOnly": "Nur mit {0} anfangen und enden",
+ "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche",
+ "Next": "Weiter",
+ "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.",
+ "No Proxy": "Kein Proxy",
+ "Authentication": "Authentifizierung",
+ "HTTP Basic Auth": "HTTP Basisauthentifizierung",
+ "New Status Page": "Neue Status-Seite",
+ "Page Not Found": "Seite nicht gefunden",
+ "Reverse Proxy": "Reverse Proxy",
+ "Backup": "Sicherung",
+ "About": "Über",
+ "wayToGetCloudflaredURL": "(Lade Cloudflare von {0} herunter)",
+ "cloudflareWebsite": "Cloudflare Website",
+ "Message:": "Nachricht:",
+ "Don't know how to get the token? Please read the guide:": "Du weisst nicht, wie man den Token bekommt? Lies die Anleitung dazu:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.",
+ "Other Software": "Andere Software",
+ "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.",
+ "Please read": "Bitte lesen",
+ "Subject:": "Betreff:",
+ "Valid To:": "Gültig bis:",
+ "Days Remaining:": "Tage verbleibend:",
+ "Issuer:": "Aussteller:",
+ "Fingerprint:": "Fingerabdruck:",
+ "No status pages": "Keine Status-Seiten",
+ "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens",
+ "Customize": "Anpassen",
+ "Custom Footer": "Eigener Footer",
+ "Custom CSS": "Eigenes CSS",
+ "Footer Text": "Fusszeile",
+ "Show Powered By": "Zeige 'Powered By'",
+ "Date Created": "Erstellt am",
+ "Domain Names": "Domainnamen",
+ "signedInDisp": "Angemeldet als {0}",
+ "signedInDispDisabled": "Authentifizierung deaktiviert.",
+ "dnsPortDescription": "DNS server port. Standard ist 53. Der Port kann jederzeit geändert werden.",
+ "topic": "Thema",
+ "topicExplanation": "MQTT Thema für den monitor",
+ "successMessage": "Erfolgsnachricht",
+ "successMessageExplanation": "MQTT Nachricht, die als Erfolg angesehen wird",
+ "error": "Fehler",
+ "critical": "kritisch",
+ "wayToGetPagerDutyKey": "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}",
+ "Integration Key": "Schlüssel der Integration",
+ "Integration URL": "URL der Integration",
+ "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen",
+ "do nothing": "nichts tun",
+ "auto acknowledged": "automatisch bestätigen",
+ "auto resolve": "automatisch lösen",
+ "Bark Group": "Bark Gruppe",
+ "Bark Sound": "Bark Klang",
+ "HTTP Headers": "HTTP Kopfzeilen",
+ "Trust Proxy": "Vertrauenswürdiger Proxy",
+ "Proxy": "Proxy",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "OneBot HTTP Adresse",
+ "onebotMessageType": "OneBot Nachrichtentyp",
+ "onebotGroupMessage": "Gruppe",
+ "onebotPrivateMessage": "Privat",
+ "onebotUserOrGroupId": "Gruppe/Nutzer ID",
+ "onebotSafetyTips": "Zur Sicherheit ein access token setzen",
+ "PushDeer Key": "PushDeer Schlüssel",
+ "RadiusSecret": "Radius Geheimnis",
+ "RadiusSecretDescription": "Geteiltes Geheimnis zwischen Client und Server",
+ "RadiusCalledStationId": "ID der angesprochenen Station",
+ "RadiusCalledStationIdDescription": "Identifikation des angesprochenen Geräts",
+ "RadiusCallingStationId": "ID der ansprechenden Station",
+ "RadiusCallingStationIdDescription": "Identifikation des ansprechenden Geräts",
+ "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat",
+ "API Username": "API Nutzername",
+ "API Key": "API Schlüssel",
+ "Recipient Number": "Empfängernummer",
+ "From Name/Number": "Von Name/Nummer",
+ "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.",
+ "Octopush API Version": "Octopush API Version",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "endpoint": "Endpunkt",
+ "octopushAPIKey": "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel",
+ "octopushLogin": "\"Login\" der HTTP API Zugangsdaten im control panel",
+ "promosmsLogin": "API Login Name",
+ "promosmsPassword": "API Password",
+ "pushoversounds pushover": "Pushover (Standard)",
+ "pushoversounds bike": "Fahrrad",
+ "pushoversounds bugle": "Signalhorn",
+ "pushoversounds cashregister": "Kasse",
+ "pushoversounds classical": "Klassisch",
+ "pushoversounds cosmic": "Kosmisch",
+ "pushoversounds falling": "Abfallend",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Eingang",
+ "pushoversounds intermission": "Pause",
+ "pushoversounds magic": "Magisch",
+ "pushoversounds mechanical": "Mechanisch",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Sirene",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Schlepper Horn",
+ "pushoversounds alien": "Ausserirdisch (lang)",
+ "pushoversounds climb": "Ansteigende (lang)",
+ "pushoversounds persistent": "Hartnäckig (lang)",
+ "pushoversounds echo": "Pushover Echo (lang)",
+ "pushoversounds updown": "Auf und Ab (lang)",
+ "pushoversounds vibrate": "Nur vibrieren",
+ "pushoversounds none": "Nichts (Stille)",
+ "pushyAPIKey": "Geheimer API Schlüssel",
+ "pushyToken": "Gerätetoken",
+ "Show update if available": "Verfügbare Updates anzeigen",
+ "Also check beta release": "Auch nach beta Versionen schauen",
+ "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?",
+ "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird",
+ "Steam Game Server": "Steam Spielserver",
+ "Most likely causes:": "Wahrscheinliche Ursachen:",
+ "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.",
+ "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.",
+ "What you can try:": "Was du versuchen kannst:",
+ "Retype the address.": "Schreibe die Adresse erneut.",
+ "Go back to the previous page.": "Gehe zur vorigen Seite.",
+ "Coming Soon": "Kommt bald",
+ "wayToGetClickSendSMSToken": "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.",
+ "Connection String": "Verbindungstext",
+ "Query": "Abfrage",
+ "settingsCertificateExpiry": "TLS Zertifikatsablauf",
+ "certificationExpiryDescription": "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:",
+ "Setup Docker Host": "Docker Host einrichten",
+ "Connection Type": "Verbindungstyp",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "Bist du sicher diesen docker host für alle Monitore zu löschen?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Container",
+ "Container Name / ID": "Container Name / ID",
+ "Docker Host": "Docker Host",
+ "Docker Hosts": "Docker Hosts",
+ "ntfy Topic": "ntfy Thema",
+ "Domain": "Domain",
+ "Workstation": "Workstation",
+ "disableCloudflaredNoAuthMsg": "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.",
+ "trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige Client IP erhalten möchte und Uptime Kuma hinter einem Proxy wie Nginx oder Apache läuft, sollte dies aktiviert werden.",
+ "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}",
+ "Examples": "Beispiele",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "Lange gültiges Access Token",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ",
+ "Notification Service": "Benachrichtigungsdienst",
+ "default: notify all devices": "standard: Alle Geräte benachrichtigen",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.",
+ "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:",
+ "Trigger type:": "Auslöser:",
+ "Event type:": "Ereignistyp:",
+ "Event data:": "Ereignis daten:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.",
+ "Frontend Version": "Frontend Version",
+ "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!",
+ "Maintenance": "Wartung",
+ "statusMaintenance": "Wartung",
+ "Schedule maintenance": "Geplante Wartung",
+ "Affected Monitors": "Betroffene Monitore",
+ "Pick Affected Monitors...": "Wähle betroffene Monitore…",
+ "Start of maintenance": "Beginn der Wartung",
+ "All Status Pages": "Alle Status Seiten",
+ "Select status pages...": "Wähle Status Seiten…",
+ "recurringIntervalMessage": "einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt",
+ "affectedMonitorsDescription": "Wähle alle Monitore die von der Wartung betroffen sind",
+ "affectedStatusPages": "Zeige diese Nachricht auf ausgewählten Status Seiten",
+ "atLeastOneMonitor": "Wähle mindestens einen Monitor",
+ "deleteMaintenanceMsg": "Möchtest du diese Wartung löschen?",
+ "Base URL": "Basis URL",
+ "goAlertInfo": "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Engagiere automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt! {0}",
+ "goAlertIntegrationKeyInfo": "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Veraltet: Da viele Funktionen hinzugefügt wurden und die Backupfunktion nicht mehr gepflegt wird, kann keine vollständige Sicherung erstellt oder wiederhergestellt werden.",
+ "backupRecommend": "Bitte Backup das Volume oder den Ordner (./ data /) selbst.",
+ "Optional": "Optional",
+ "squadcast": "Squadcast",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API Dokumente ",
+ "Gateway Type": "Gateway Typ",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Du kannst Zahlen teilen mit",
+ "or": "oder",
+ "recurringInterval": "Intervall",
+ "Recurring": "Wiederkehrend",
+ "strategyManual": "Aktiv/Inaktiv Manuell",
+ "warningTimezone": "Es wird die Zeitzone des Servers genutzt",
+ "weekdayShortMon": "Mo",
+ "weekdayShortTue": "Di",
+ "weekdayShortWed": "Mi",
+ "weekdayShortThu": "Do",
+ "weekdayShortFri": "Fr",
+ "weekdayShortSat": "Sa",
+ "weekdayShortSun": "So",
+ "dayOfWeek": "Tag der Woche",
+ "dayOfMonth": "Tag im Monat",
+ "lastDay": "Letzter Tag",
+ "lastDay1": "Letzter Tag im Monat",
+ "lastDay2": "Vorletzer Tag im Monat",
+ "lastDay3": "3. letzter Tag im Monat",
+ "lastDay4": "4. letzter Tag im Monat",
+ "No Maintenance": "Keine Wartung",
+ "pauseMaintenanceMsg": "Möchtest du wirklich pausieren?",
+ "maintenanceStatus-under-maintenance": "Unter Wartung",
+ "maintenanceStatus-inactive": "Inaktiv",
+ "maintenanceStatus-scheduled": "Geplant",
+ "maintenanceStatus-ended": "Ende",
+ "maintenanceStatus-unknown": "Unbekannt",
+ "Display Timezone": "Zeitzone anzeigen",
+ "Server Timezone": "Server Zeitzone",
+ "telegramMessageThreadID": "(Optional) Nachrichten Thread ID",
+ "telegramMessageThreadIDDescription": "Optionale eindeutige Kennung für den Ziel-Thread (Thema) des Forums; nur für Forum-Supergroups",
+ "Enable": "Aktivieren",
+ "telegramProtectContent": "Schütze gegen Weiterleiten/Speichern der Nachricht",
+ "telegramProtectContentDescription": "Die Bot-Nachrichten in Telegram sind gegen Weiterleitung und Speichern geschützt.",
+ "Disable": "Deaktivieren",
+ "plugin": "Plugin | Plugins",
+ "installing": "Installiere",
+ "uninstall": "Deinstallieren",
+ "uninstalling": "Deinstalliere",
+ "confirmUninstallPlugin": "Möchtest du dieses Plugin wirklich deinstallieren?",
+ "notificationRegional": "Regional",
+ "Single Maintenance Window": "Einmaliges Wartungsfenster",
+ "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert es möglicherweise nicht. Deaktiviere es, wenn Probleme auftreten.",
+ "Maintenance Time Window of a Day": "Wartungszeitfenster eines Tages",
+ "Effective Date Range": "Gültigkeitsbereich (Optional)",
+ "Schedule Maintenance": "Wartung planen",
+ "Date and Time": "Datum und Uhrzeit",
+ "DateTime Range": "Datums- und Zeitbereich",
+ "telegramSendSilently": "Stumm senden",
+ "telegramSendSilentlyDescription": "Sende die Nachricht stumm. Nutzer bekommen eine Benachrichtigung ohne Ton.",
+ "markdownSupported": "Markdown-Syntax unterstützt",
+ "webhookAdditionalHeadersTitle": "Zusätzliche Header",
+ "webhookAdditionalHeadersDesc": "Legt zusätzliche Kopfzeilen fest, die mit dem Webhook gesendet werden.",
+ "Packet Size": "Paketgrösse",
+ "IconUrl": "Symbol URL",
+ "Enable DNS Cache": "DNS Cache aktivieren",
+ "Help": "Hilfe",
+ "Game": "Spiel",
+ "General Monitor Type": "Allgemeiner Monitortyp",
+ "Passive Monitor Type": "Passiver Monitortyp",
+ "Specific Monitor Type": "Spezifischer Monitortyp",
+ "Monitor": "Überwachung | Monitore",
+ "Custom": "Benutzerdefiniert",
+ "statusPageMaintenanceEndDate": "Ende",
+ "loadingError": "Die Daten konnten nicht abgerufen werden, bitte später noch einmal versuchen.",
+ "install": "Installieren",
+ "Body Encoding": "Body Encoding",
+ "Custom Monitor Type": "Benutzerdefinierter Monitortyp",
+ "Expiry": "Ablauf",
+ "Expiry date": "Ablaufdatum",
+ "Don't expire": "Nicht ablaufen",
+ "Add Another": "Hinzufügen",
+ "Key Added": "Schlüssel hinzugefügt",
+ "apiKeyAddedMsg": "API Schlüssel wurde hinzugefügt. Bitte notiere den Schlüssel, da er nicht erneut angezeigt wird.",
+ "Add API Key": "API Schlüssel hinzufügen",
+ "No API Keys": "Kein API Schlüssel",
+ "apiKey-active": "Aktiv",
+ "apiKey-expired": "Abgelaufen",
+ "apiKey-inactive": "Inaktiv",
+ "Expires": "Läuft ab",
+ "disableAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel deaktivieren willst?",
+ "deleteAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel löschen willst?",
+ "Generate": "Generieren",
+ "infiniteRetention": "Für unendliche Speicherung auf 0 setzen.",
+ "dataRetentionTimeError": "Aufbewahrungsfrist muss grösser oder gleich 0 sein",
+ "Clone Monitor": "Monitor klonen",
+ "Clone": "Klonen",
+ "cloneOf": "Klon von {0}",
+ "wayToGetZohoCliqURL": "Wie eine Webhook URL erstellt werden kann, erfährst du {0}.",
+ "enableGRPCTls": "Senden von gRPC Anforderungen mit TLS Verbindung zulassen",
+ "grpcMethodDescription": "Der Name der Methode wird in das \"cammelCase\" Format konvertiert (z.B. sayHello, check, etc.)",
+ "wayToGetKookGuildID": "Schalte den „Entwicklermodus“ in den Kook-Einstellungen ein und klicke mit der rechten Maustaste auf die Gilde, um die ID zu erhalten",
+ "Guild ID": "Gilde ID",
+ "Lowcost": "Kostengünstig",
+ "high": "hoch",
+ "Google Analytics ID": "Google Analytics ID",
+ "Enable TLS": "TLS aktivieren",
+ "Free Mobile API Key": "Kostenloser Mobile API Schlüssel",
+ "Proto Service Name": "Proto Dienst Name",
+ "Proto Method": "Proto Methode",
+ "Proto Content": "Proto Inhalt",
+ "Economy": "Economy",
+ "pagertreeIntegrationUrl": "Integrations-URL",
+ "pagertreeUrgency": "Dringlichkeit",
+ "pagertreeSilent": "Stumm",
+ "pagertreeLow": "Niedrig",
+ "pagertreeMedium": "Mittel",
+ "pagertreeHigh": "Hoch",
+ "pagertreeCritical": "Kritisch",
+ "pagertreeResolve": "Automatisch auflösen",
+ "pagertreeDoNothing": "Nichts tun",
+ "wayToGetPagerTreeIntegrationURL": "Nachdem du die Uptime Kuma Integration in PagerTree erstellt hast, kopiere den Endpunkt. Siehe details {0}",
+ "Server Address": "Serveradresse",
+ "Learn More": "Erfahre mehr",
+ "Edit Tag": "Tag editieren",
+ "promosmsAllowLongSMS": "Lange SMS erlauben",
+ "smseagleRecipientType": "Empfängertyp",
+ "smseagleToken": "API Zugriffstoken",
+ "smseagleTo": "Telefonnummer(n)",
+ "smseagleUrl": "Ihre SMSEagle Geräte URL",
+ "smseagleEncoding": "Als Unicode senden",
+ "smseaglePriority": "Nachrichtenpriorität (0-9, Standard = 0)",
+ "smseagleContact": "Telefonbuch Kontaktname(n)",
+ "confirmDeleteTagMsg": "Möchtest du dieses Tag wirklich löschen? Monitore, die mit diesem Tag verknüpft sind, werden nicht gelöscht.",
+ "wayToGetKookBotToken": "Erstelle eine Anwendung und erhalte den Bot-Token unter {0}",
+ "Strategy": "Strategie",
+ "Free Mobile User Identifier": "Kostenlose mobile Benutzerkennung",
+ "smseagleGroup": "Telefonbuch Gruppenname(n)",
+ "smseagleRecipient": "Empfänger (mehrere müssen durch Komma getrennt werden)",
+ "API Keys": "API Schlüssel",
+ "Continue": "Weiter",
+ "Add New Tag": "Neuen Tag hinzufügen",
+ "lunaseaTarget": "Ziel",
+ "lunaseaDeviceID": "Geräte-ID",
+ "lunaseaUserID": "Benutzer-ID",
+ "ntfyAuthenticationMethod": "Authentifizierungsmethode",
+ "ntfyUsernameAndPassword": "Benutzername und Passwort",
+ "twilioAccountSID": "Account SID",
+ "twilioFromNumber": "Absender",
+ "twilioToNumber": "Empfänger",
+ "twilioAuthToken": "Auth Token",
+ "statusPageRefreshIn": "Aktualisierung in: {0}",
+ "sameAsServerTimezone": "Gleiche Zeitzone wie Server",
+ "startDateTime": "Start Datum/Uhrzeit",
+ "endDateTime": "Ende Datum/Uhrzeit",
+ "cronExpression": "Cron-Ausdruck",
+ "cronSchedule": "Zeitplan: ",
+ "invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}",
+ "Open Badge Generator": "Open Badge Generator",
+ "Badge Generator": "{0}'s Badge Generator",
+ "Badge Type": "Badge Typ",
+ "Badge Duration": "Badge Dauer",
+ "Badge Label": "Badge Label",
+ "Badge Prefix": "Badge Präfix",
+ "Badge Suffix": "Badge Suffix",
+ "Badge Label Color": "Badge Label Farbe",
+ "Badge Color": "Badge Farbe",
+ "Badge Label Prefix": "Badge Label Präfix",
+ "Badge Up Color": "Badge Up Farbe",
+ "Badge Maintenance Color": "Badge Wartung Farbe",
+ "Badge Warn Color": "Badge Warnung Farbe",
+ "Badge Warn Days": "Badge Warnung Tage",
+ "Badge Style": "Badge Stil",
+ "Badge URL": "Badge URL",
+ "Badge Pending Color": "Badge Pending Farbe",
+ "Badge Down Days": "Badge Down Tage",
+ "Monitor Setting": "{0}'s Monitor Einstellung",
+ "Show Clickable Link": "Klickbaren Link anzeigen",
+ "Badge Label Suffix": "Badge Label Suffix",
+ "Badge value (For Testing only.)": "Badge Wert (nur für Tests)",
+ "Show Clickable Link Description": "Wenn diese Option aktiviert ist, kann jeder, der Zugriff auf diese Statusseite hat, auf die Monitor URL zugreifen.",
+ "Badge Down Color": "Badge Down Farbe",
+ "Edit Maintenance": "Wartung bearbeiten",
+ "Group": "Gruppe",
+ "Monitor Group": "Monitor Gruppe",
+ "noGroupMonitorMsg": "Nicht verfügbar. Erstelle zunächst einen Gruppenmonitor.",
+ "Close": "Schliessen"
+}
diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json
new file mode 100644
index 000000000..44fc298fb
--- /dev/null
+++ b/src/lang/de-DE.json
@@ -0,0 +1,788 @@
+{
+ "languageName": "Deutsch (Deutschland)",
+ "Settings": "Einstellungen",
+ "Dashboard": "Dashboard",
+ "New Update": "Aktualisierung verfügbar",
+ "Language": "Sprache",
+ "Appearance": "Erscheinungsbild",
+ "Theme": "Erscheinungsbild",
+ "General": "Allgemein",
+ "Version": "Version",
+ "Check Update On GitHub": "Auf GitHub nach Updates suchen",
+ "List": "Liste",
+ "Home": "Home",
+ "Add": "Hinzufügen",
+ "Add New Monitor": "Neuen Monitor hinzufügen",
+ "Quick Stats": "Übersicht",
+ "Up": "Aktiv",
+ "Down": "Inaktiv",
+ "Pending": "Ausstehend",
+ "Unknown": "Unbekannt",
+ "Cannot connect to the socket server": "Es kann keine Verbindung zum Socket-Server hergestellt werden",
+ "Reconnecting...": "Die Verbindung wird wiederhergestellt...",
+ "Pause": "Pausieren",
+ "pauseDashboardHome": "Pausiert",
+ "Name": "Name",
+ "Status": "Status",
+ "DateTime": "Datum / Uhrzeit",
+ "Message": "Nachricht",
+ "No important events": "Keine wichtigen Ereignisse",
+ "Resume": "Fortsetzen",
+ "Edit": "Bearbeiten",
+ "Delete": "Löschen",
+ "Current": "Aktuell",
+ "Uptime": "Verfügbarkeit",
+ "Cert Exp.": "Zertifikatsablauf",
+ "day": "Tag | Tage",
+ "-day": "-Tage",
+ "hour": "Stunde",
+ "-hour": "-Stunden",
+ "checkEverySecond": "Überprüfe alle {0} Sekunden",
+ "Response": "Antwortzeit",
+ "Ping": "Ping",
+ "Monitor Type": "Monitor-Typ",
+ "Keyword": "Suchwort",
+ "Friendly Name": "Anzeigename",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Prüfintervall",
+ "Retries": "Wiederholungen",
+ "retriesDescription": "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.",
+ "Advanced": "Erweitert",
+ "ignoreTLSError": "Ignoriere TLS-/SSL-Fehler von Webseiten",
+ "Upside Down Mode": "Umgekehrter Modus",
+ "upsideDownModeDescription": "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.",
+ "Max. Redirects": "Max. Weiterleitungen",
+ "maxRedirectDescription": "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.",
+ "Accepted Status Codes": "Erlaubte HTTP-Statuscodes",
+ "acceptedStatusCodesDescription": "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.",
+ "Save": "Speichern",
+ "Notifications": "Benachrichtigungen",
+ "Not available, please setup.": "Nicht verfügbar, bitte einrichten.",
+ "Setup Notification": "Benachrichtigung einrichten",
+ "Light": "Hell",
+ "Dark": "Dunkel",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste",
+ "Normal": "Normal",
+ "Bottom": "Unten",
+ "None": "Keine",
+ "Timezone": "Zeitzone",
+ "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen",
+ "Allow indexing": "Indizierung zulassen",
+ "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren",
+ "Change Password": "Passwort ändern",
+ "Current Password": "Aktuelles Passwort",
+ "New Password": "Neues Passwort",
+ "Repeat New Password": "Neues Passwort wiederholen",
+ "passwordNotMatchMsg": "Passwörter stimmen nicht überein.",
+ "Update Password": "Passwort aktualisieren",
+ "Disable Auth": "Authentifizierung deaktivieren",
+ "Enable Auth": "Authentifizierung aktivieren",
+ "disableauth.message1": "Bist du sicher das du die Authentifizierung deaktivieren möchtest?",
+ "disableauth.message2": "Dies ist für Szenarien gedacht, in denen man eine externe Authentifizierung vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.",
+ "Please use this option carefully!": "Bitte mit Vorsicht nutzen!",
+ "Logout": "Ausloggen",
+ "notificationDescription": "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.",
+ "Leave": "Verlassen",
+ "I understand, please disable": "Ich verstehe, bitte deaktivieren",
+ "Confirm": "Bestätigen",
+ "Yes": "Ja",
+ "No": "Nein",
+ "Username": "Benutzername",
+ "Password": "Passwort",
+ "Remember me": "Angemeldet bleiben",
+ "Login": "Einloggen",
+ "No Monitors, please": "Keine Monitore, bitte",
+ "add one": "hinzufügen",
+ "Notification Type": "Benachrichtigungsdienst",
+ "Email": "E-Mail",
+ "Test": "Test",
+ "Certificate Info": "Zertifikatsinformation",
+ "keywordDescription": "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Groß-/Kleinschreibung unterschieden.",
+ "deleteMonitorMsg": "Bist du sicher, dass du den Monitor löschen möchtest?",
+ "deleteNotificationMsg": "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?",
+ "resolverserverDescription": "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.",
+ "Resolver Server": "Auflösungsserver",
+ "rrtypeDescription": "Wähle den RR-Typ aus, welchen du überwachen möchtest.",
+ "Last Result": "Letztes Ergebnis",
+ "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?",
+ "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?",
+ "clearHeartbeatsMsg": "Bist du sicher, dass du alle Statistiken für diesen Monitor löschen möchtest?",
+ "Clear Data": "Lösche Daten",
+ "Events": "Ereignisse",
+ "Heartbeats": "Statistiken",
+ "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?",
+ "Create your admin account": "Erstelle dein Admin-Konto",
+ "Repeat Password": "Passwort erneut eingeben",
+ "Resource Record Type": "Ressourcen Record Typ",
+ "Export": "Export",
+ "Import": "Import",
+ "respTime": "Antw.-Zeit (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Standardmäßig aktiviert",
+ "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden",
+ "enableDefaultNotificationDescription": "Für jeden neuen Monitor wird diese Benachrichtigung standardmäßig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.",
+ "Create": "Erstellen",
+ "Auto Get": "Auto Get",
+ "backupDescription": "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.",
+ "backupDescription2": "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.",
+ "backupDescription3": "Sensible Daten wie Benachrichtigungstoken sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.",
+ "alertNoFile": "Bitte wähle eine Datei zum Importieren aus.",
+ "alertWrongFileType": "Bitte wähle eine JSON-Datei aus.",
+ "Clear all statistics": "Lösche alle Statistiken",
+ "importHandleDescription": "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.",
+ "Skip existing": "Vorhandene überspringen",
+ "Overwrite": "Überschreiben",
+ "Options": "Optionen",
+ "confirmImportMsg": "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.",
+ "Keep both": "Beide behalten",
+ "twoFAVerifyLabel": "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert:",
+ "Verify Token": "Token verifizieren",
+ "Setup 2FA": "2FA einrichten",
+ "Enable 2FA": "2FA aktivieren",
+ "Disable 2FA": "2FA deaktivieren",
+ "2FA Settings": "2FA-Einstellungen",
+ "confirmEnableTwoFAMsg": "Bist du sicher, dass du 2FA aktivieren möchtest?",
+ "confirmDisableTwoFAMsg": "Bist du sicher, dass du 2FA deaktivieren möchtest?",
+ "tokenValidSettingsMsg": "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.",
+ "Two Factor Authentication": "Zwei-Faktor-Authentifizierung",
+ "Active": "Aktiv",
+ "Inactive": "Inaktiv",
+ "Token": "Token",
+ "Show URI": "URI anzeigen",
+ "Tags": "Tags",
+ "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen…",
+ "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.",
+ "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.",
+ "color": "Farbe",
+ "value (optional)": "Wert (optional)",
+ "Gray": "Grau",
+ "Red": "Rot",
+ "Orange": "Orange",
+ "Green": "Grün",
+ "Blue": "Blau",
+ "Indigo": "Indigo",
+ "Purple": "Lila",
+ "Pink": "Pink",
+ "Search...": "Suchen…",
+ "Heartbeat Retry Interval": "Überprüfungsintervall",
+ "Resend Notification if Down X times consecutively": "Benachrichtigung erneut senden, wenn inaktiv X Mal hintereinander",
+ "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen",
+ "resendEveryXTimes": "Erneut versenden alle {0} mal",
+ "resendDisabled": "Erneut versenden deaktiviert",
+ "Import Backup": "Backup importieren",
+ "Export Backup": "Backup exportieren",
+ "Avg. Ping": "Durchschn. Ping",
+ "Avg. Response": "Durchschn. Antwort",
+ "Entry Page": "Einstiegsseite",
+ "statusPageNothing": "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.",
+ "No Services": "Keine Dienste",
+ "All Systems Operational": "Alle Systeme betriebsbereit",
+ "Partially Degraded Service": "Teilweise beeinträchtigter Dienst",
+ "Degraded Service": "Eingeschränkter Dienst",
+ "Add Group": "Gruppe hinzufügen",
+ "Add a monitor": "Monitor hinzufügen",
+ "Edit Status Page": "Statusseite bearbeiten",
+ "Go to Dashboard": "Gehe zum Dashboard",
+ "Status Page": "Status-Seite",
+ "Status Pages": "Status-Seiten",
+ "telegram": "Telegram",
+ "webhook": "Webhook",
+ "smtp": "E-Mail (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)",
+ "GoogleChat": "Google Chat (nur Google Workspace)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "Primary Base URL": "Primäre Basis-URL",
+ "Push URL": "Push URL",
+ "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen.",
+ "pushOptionalParams": "Optionale Parameter: {0}",
+ "defaultNotificationName": "Mein {notification} Alarm ({number})",
+ "here": "hier",
+ "Required": "Erforderlich",
+ "Bot Token": "Bot Token",
+ "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's",
+ "wayToGetTelegramChatID": "Du kannst deine Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id: zu sehen.",
+ "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN",
+ "chatIDNotFound": "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot",
+ "Post URL": "Post URL",
+ "Content Type": "Content Type",
+ "webhookJsonDesc": "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet",
+ "webhookFormDataDesc": "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden",
+ "secureOptionNone": "Keine / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "TLS-Fehler ignorieren",
+ "From Email": "Absender E-Mail",
+ "emailCustomSubject": "Benutzerdefinierter Betreff",
+ "To Email": "Empfänger E-Mail",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> WebHooks anzeigen -> Neuer WebHook",
+ "Bot Display Name": "Bot-Anzeigename",
+ "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix",
+ "Hello @everyone is...": "Hallo {'@'}everyone ist…",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.",
+ "Number": "Nummer",
+ "Recipients": "Empfänger",
+ "needSignalAPI": "Es wird ein Signal Client mit REST-API benötigt.",
+ "wayToCheckSignalURL": "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:",
+ "signalImportant": "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!",
+ "Application Token": "Anwendungs Token",
+ "Server URL": "Server URL",
+ "Priority": "Priorität",
+ "Icon Emoji": "Icon Emoji",
+ "Channel Name": "Kanalname",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Weitere Informationen zu Webhooks auf: {0}",
+ "aboutChannelName": "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel",
+ "aboutKumaURL": "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird standardmäßig die GitHub Projekt Seite verwendet.",
+ "emojiCheatSheet": "Emoji Cheat Sheet: {0}",
+ "User Key": "Benutzerschlüssel",
+ "Device": "Gerät",
+ "Message Title": "Nachrichtentitel",
+ "Notification Sound": "Benachrichtigungston",
+ "More info on:": "Mehr Infos auf: {0}",
+ "pushoverDesc1": "Notfallpriorität (2) hat standardmäßig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.",
+ "pushoverDesc2": "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.",
+ "pushoverMessageTtl": "Message TTL (Sekunden)",
+ "SMS Type": "SMS Typ",
+ "octopushTypePremium": "Premium (Schnell - zur Benachrichtigung empfohlen)",
+ "octopushTypeLowCost": "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)",
+ "checkPrice": "Prüfe {0} Preise:",
+ "octopushLegacyHint": "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?",
+ "Check octopush prices": "Vergleiche die Oktopush Preise {0}.",
+ "octopushPhoneNumber": "Telefonnummer (Internationales Format, z.B : +49612345678) ",
+ "octopushSMSSender": "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Geräte ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Beispiel: {0}",
+ "Read more:": "Weiterlesen: {0}",
+ "Status:": "Status: {0}",
+ "Read more": "Weiterlesen",
+ "appriseInstalled": "Apprise ist installiert.",
+ "appriseNotInstalled": "Apprise ist nicht installiert. {0}",
+ "Access Token": "Zugriffstoken",
+ "Channel access token": "Channel access token",
+ "Line Developers Console": "Zeile Entwickler Konsole",
+ "lineDevConsoleTo": "Line Entwicklerkonsole - {0}",
+ "Basic Settings": "Grundeinstellungen",
+ "User ID": "User ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.",
+ "Icon URL": "Icon URL",
+ "aboutIconURL": "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.",
+ "aboutMattermostChannelName": "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.",
+ "promosmsTypeFlash": "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.",
+ "promosmsTypeFull": "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.",
+ "promosmsTypeSpeed": "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).",
+ "promosmsPhoneNumber": "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)",
+ "promosmsSMSSender": "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu Webhook URL",
+ "matrixHomeserverURL": "Heimserver URL (mit http(s):// und optionalen Ports)",
+ "Internal Room Id": "Interne Raum-ID",
+ "matrixDesc1": "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}",
+ "Method": "Methode",
+ "Body": "Body",
+ "Headers": "Header",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Der Header ist kein gültiges JSON: ",
+ "BodyInvalidFormat": "Der Body ist kein gültiges JSON: ",
+ "Monitor History": "Monitor Verlauf",
+ "clearDataOlderThan": "Bewahre die Monitor-Verlaufsdaten für {0} Tage auf.",
+ "PasswordsDoNotMatch": "Passwörter stimmen nicht überein.",
+ "records": "Einträge",
+ "One record": "Ein Eintrag",
+ "steamApiKeyDescription": "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ",
+ "Current User": "Aktueller Benutzer",
+ "recent": "Letzte",
+ "Done": "Fertig",
+ "Info": "Info",
+ "Security": "Sicherheit",
+ "Steam API Key": "Steam API-Schlüssel",
+ "Shrink Database": "Datenbank verkleinern",
+ "Pick a RR-Type...": "Wähle ein RR-Typ aus…",
+ "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus…",
+ "Default": "Standard",
+ "HTTP Options": "HTTP Optionen",
+ "Create Incident": "Vorfall erstellen",
+ "Title": "Titel",
+ "Content": "Inhalt",
+ "Style": "Stil",
+ "info": "info",
+ "warning": "warnung",
+ "danger": "gefahr",
+ "primary": "primär",
+ "light": "hell",
+ "dark": "dunkel",
+ "Post": "Eintrag",
+ "Please input title and content": "Bitte Titel und Inhalt eingeben",
+ "Created": "Erstellt",
+ "Last Updated": "Zuletzt aktualisiert",
+ "Unpin": "Loslösen",
+ "Switch to Light Theme": "Zu hellem Thema wechseln",
+ "Switch to Dark Theme": "Zum dunklen Thema wechseln",
+ "Show Tags": "Tags anzeigen",
+ "Hide Tags": "Tags ausblenden",
+ "Description": "Beschreibung",
+ "No monitors available.": "Keine Monitore verfügbar.",
+ "Add one": "Hinzufügen",
+ "No Monitors": "Keine Monitore",
+ "Untitled Group": "Gruppe ohne Titel",
+ "Services": "Dienste",
+ "Discard": "Verwerfen",
+ "Cancel": "Abbrechen",
+ "Powered by": "Erstellt mit",
+ "shrinkDatabaseDescription": "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)",
+ "serwersmsAPIPassword": "API Passwort",
+ "serwersmsPhoneNumber": "Telefonnummer",
+ "serwersmsSenderName": "Name des SMS-Absenders (über Kundenportal registriert)",
+ "stackfield": "Stackfield",
+ "clicksendsms": "ClickSend SMS",
+ "apiCredentials": "API Zugangsdaten",
+ "smtpDkimSettings": "DKIM Einstellungen",
+ "smtpDkimDesc": "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.",
+ "documentation": "Dokumentation",
+ "smtpDkimDomain": "Domain Name",
+ "smtpDkimKeySelector": "Schlüssel Auswahl",
+ "smtpDkimPrivateKey": "Privater Schlüssel",
+ "smtpDkimHashAlgo": "Hash-Algorithmus (Optional)",
+ "smtpDkimheaderFieldNames": "Zu validierende Header-Schlüssel (optional)",
+ "smtpDkimskipFields": "Zu ignorierende Header Schlüssel (optional)",
+ "PushByTechulus": "Push by Techulus",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpunkt",
+ "alertaEnvironment": "Umgebung",
+ "alertaApiKey": "API Schlüssel",
+ "alertaAlertState": "Alarmstatus",
+ "alertaRecoverState": "Wiederherstellungsstatus",
+ "deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?",
+ "Proxies": "Proxies",
+ "default": "Standard",
+ "enabled": "Aktiviert",
+ "setAsDefault": "Als Standard setzen",
+ "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?",
+ "proxyDescription": "Proxies müssen einem Monitor zugewiesen werden, um zu funktionieren.",
+ "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.",
+ "setAsDefaultProxyDescription": "Dieser Proxy wird standardmäßig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.",
+ "Certificate Chain": "Zertifikatskette",
+ "Valid": "Gültig",
+ "Invalid": "Ungültig",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "Geheimer Zugangsschlüssel",
+ "PhoneNumbers": "Telefonnummern",
+ "TemplateCode": "Vorlagencode",
+ "SignName": "Signaturname",
+ "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ",
+ "Bark Endpoint": "Bark Endpunkt",
+ "WebHookUrl": "Webhook URL",
+ "SecretKey": "Geheimer Schlüssel",
+ "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden",
+ "Device Token": "Gerätetoken",
+ "Platform": "Platform",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Hoch",
+ "Retry": "Wiederholungen",
+ "Topic": "Thema",
+ "WeCom Bot Key": "WeCom Bot Schlüssel",
+ "Setup Proxy": "Proxy einrichten",
+ "Proxy Protocol": "Proxy Protokoll",
+ "Proxy Server": "Proxy-Server",
+ "Proxy server has authentication": "Proxy-Server hat Authentifizierung",
+ "User": "Benutzer",
+ "Installed": "Installiert",
+ "Not installed": "Nicht installiert",
+ "Running": "Läuft",
+ "Not running": "Gestoppt",
+ "Remove Token": "Token entfernen",
+ "Start": "Start",
+ "Stop": "Stop",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Neue Status-Seite hinzufügen",
+ "Slug": "Slug",
+ "Accept characters:": "Akzeptierte Zeichen:",
+ "startOrEndWithOnly": "Nur mit {0} anfangen und enden",
+ "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche",
+ "Next": "Weiter",
+ "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.",
+ "No Proxy": "Kein Proxy",
+ "Authentication": "Authentifizierung",
+ "HTTP Basic Auth": "HTTP Basisauthentifizierung",
+ "New Status Page": "Neue Status-Seite",
+ "Page Not Found": "Seite nicht gefunden",
+ "Reverse Proxy": "Reverse Proxy",
+ "Backup": "Sicherung",
+ "About": "Über",
+ "wayToGetCloudflaredURL": "(Lade cloudflared von {0} herunter)",
+ "cloudflareWebsite": "Cloudflare Website",
+ "Message:": "Nachricht:",
+ "Don't know how to get the token? Please read the guide:": "Du weißt nicht, wie man den Token bekommt? Lies die Anleitung dazu:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.",
+ "Other Software": "Andere Software",
+ "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.",
+ "Please read": "Bitte lesen",
+ "Subject:": "Betreff:",
+ "Valid To:": "Gültig bis:",
+ "Days Remaining:": "Tage verbleibend:",
+ "Issuer:": "Aussteller:",
+ "Fingerprint:": "Fingerabdruck:",
+ "No status pages": "Keine Status-Seiten",
+ "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens",
+ "Customize": "Anpassen",
+ "Custom Footer": "Eigener Footer",
+ "Custom CSS": "Eigenes CSS",
+ "Footer Text": "Fußzeile",
+ "Show Powered By": "Zeige 'Powered By'",
+ "Date Created": "Erstellt am",
+ "Domain Names": "Domainnamen",
+ "signedInDisp": "Angemeldet als {0}",
+ "signedInDispDisabled": "Authentifizierung deaktiviert.",
+ "dnsPortDescription": "DNS server port. Standard ist 53. Der Port kann jederzeit geändert werden.",
+ "topic": "Thema",
+ "topicExplanation": "MQTT Thema für den monitor",
+ "successMessage": "Erfolgsnachricht",
+ "successMessageExplanation": "MQTT Nachricht, die als Erfolg angesehen wird",
+ "error": "Fehler",
+ "critical": "kritisch",
+ "wayToGetPagerDutyKey": "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}",
+ "Integration Key": "Schlüssel der Integration",
+ "Integration URL": "URL der Integration",
+ "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen",
+ "do nothing": "nichts tun",
+ "auto acknowledged": "automatisch bestätigen",
+ "auto resolve": "automatisch lösen",
+ "Bark Group": "Bark Gruppe",
+ "Bark Sound": "Bark Klang",
+ "HTTP Headers": "HTTP Kopfzeilen",
+ "Trust Proxy": "Vertrauenswürdiger Proxy",
+ "Proxy": "Proxy",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "OneBot HTTP Adresse",
+ "onebotMessageType": "OneBot Nachrichtentyp",
+ "onebotGroupMessage": "Gruppe",
+ "onebotPrivateMessage": "Privat",
+ "onebotUserOrGroupId": "Gruppe/Nutzer ID",
+ "onebotSafetyTips": "Zur Sicherheit ein access token setzen",
+ "PushDeer Key": "PushDeer Schlüssel",
+ "RadiusSecret": "Radius Geheimnis",
+ "RadiusSecretDescription": "Geteiltes Geheimnis zwischen Client und Server",
+ "RadiusCalledStationId": "ID der angesprochenen Station",
+ "RadiusCalledStationIdDescription": "Identifikation des angesprochenen Geräts",
+ "RadiusCallingStationId": "ID der ansprechenden Station",
+ "RadiusCallingStationIdDescription": "Identifikation des ansprechenden Geräts",
+ "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat",
+ "API Username": "API Nutzername",
+ "API Key": "API Schlüssel",
+ "Recipient Number": "Empfängernummer",
+ "From Name/Number": "Von Name/Nummer",
+ "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.",
+ "Octopush API Version": "Octopush API Version",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "endpoint": "Endpunkt",
+ "octopushAPIKey": "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel",
+ "octopushLogin": "\"Login\" der HTTP API Zugangsdaten im control panel",
+ "promosmsLogin": "API Login Name",
+ "promosmsPassword": "API Password",
+ "pushoversounds pushover": "Pushover (Standard)",
+ "pushoversounds bike": "Fahrrad",
+ "pushoversounds bugle": "Signalhorn",
+ "pushoversounds cashregister": "Kasse",
+ "pushoversounds classical": "Klassisch",
+ "pushoversounds cosmic": "Kosmisch",
+ "pushoversounds falling": "Abfallend",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Eingang",
+ "pushoversounds intermission": "Pause",
+ "pushoversounds magic": "Magisch",
+ "pushoversounds mechanical": "Mechanisch",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Sirene",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Schlepper Horn",
+ "pushoversounds alien": "Außerirdisch (lang)",
+ "pushoversounds climb": "Ansteigende (lang)",
+ "pushoversounds persistent": "Hartnäckig (lang)",
+ "pushoversounds echo": "Pushover Echo (lang)",
+ "pushoversounds updown": "Auf und Ab (lang)",
+ "pushoversounds vibrate": "Nur vibrieren",
+ "pushoversounds none": "Nichts (Stille)",
+ "pushyAPIKey": "Geheimer API Schlüssel",
+ "pushyToken": "Gerätetoken",
+ "Show update if available": "Verfügbare Updates anzeigen",
+ "Also check beta release": "Auch nach Beta Versionen schauen",
+ "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?",
+ "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird",
+ "Steam Game Server": "Steam Spielserver",
+ "Most likely causes:": "Wahrscheinliche Ursachen:",
+ "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.",
+ "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.",
+ "What you can try:": "Was du versuchen kannst:",
+ "Retype the address.": "Schreibe die Adresse erneut.",
+ "Go back to the previous page.": "Gehe zur vorigen Seite.",
+ "Coming Soon": "Kommt bald",
+ "wayToGetClickSendSMSToken": "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.",
+ "Connection String": "Verbindungstext",
+ "Query": "Abfrage",
+ "settingsCertificateExpiry": "TLS Zertifikatsablauf",
+ "certificationExpiryDescription": "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:",
+ "Setup Docker Host": "Docker Host einrichten",
+ "Connection Type": "Verbindungstyp",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "Bist du sicher diesen docker host für alle Monitore zu löschen?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Container",
+ "Container Name / ID": "Container-Bezeichnung / ID",
+ "Docker Host": "Docker-Host",
+ "Docker Hosts": "Docker-Hosts",
+ "ntfy Topic": "ntfy Thema",
+ "Domain": "Domain",
+ "Workstation": "Workstation",
+ "disableCloudflaredNoAuthMsg": "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.",
+ "trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige Client IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx oder Apache läuft, sollte dies aktiviert werden.",
+ "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}",
+ "Examples": "Beispiele",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "Lange gültiges Access Token",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ",
+ "Notification Service": "Benachrichtigungsdienst",
+ "default: notify all devices": "standard: Alle Geräte benachrichtigen",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.",
+ "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:",
+ "Trigger type:": "Auslöser:",
+ "Event type:": "Ereignistyp:",
+ "Event data:": "Ereignis daten:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.",
+ "Frontend Version": "Frontend-Version",
+ "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!",
+ "Maintenance": "Wartung",
+ "statusMaintenance": "Wartung",
+ "Schedule maintenance": "Geplante Wartung",
+ "Affected Monitors": "Betroffene Monitore",
+ "Pick Affected Monitors...": "Wähle betroffene Monitore…",
+ "Start of maintenance": "Beginn der Wartung",
+ "All Status Pages": "Alle Status Seiten",
+ "Select status pages...": "Statusseiten auswählen…",
+ "recurringIntervalMessage": "Einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt",
+ "affectedMonitorsDescription": "Wähle Monitore aus, die von der aktuellen Wartung betroffen sind",
+ "affectedStatusPages": "Diese Wartungsmeldung auf ausgewählten Statusseiten anzeigen",
+ "atLeastOneMonitor": "Wähle mindestens einen Monitor",
+ "deleteMaintenanceMsg": "Möchtest du diese Wartung löschen?",
+ "Base URL": "Basis URL",
+ "goAlertInfo": "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Engagiere automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt! {0}",
+ "goAlertIntegrationKeyInfo": "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Veraltet: Da viele Funktionen hinzugefügt wurden und diese Sicherungsfunktion nicht mehr gepflegt wird, kann keine vollständige Sicherung erstellen oder wiederherstellen werden.",
+ "backupRecommend": "Bitte sichere stattdessen das Volume oder den Datenordner (./data/) direkt.",
+ "Optional": "Optional",
+ "squadcast": "Squadcast",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API Dokumente",
+ "Gateway Type": "Gateway Typ",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Du kannst Zahlen teilen mit",
+ "or": "oder",
+ "recurringInterval": "Intervall",
+ "Recurring": "Wiederkehrend",
+ "Single Maintenance Window": "Einmaliges Wartungsfenster",
+ "Maintenance Time Window of a Day": "Zeitfenster für die Wartung",
+ "Effective Date Range": "Bereich der Wirksamkeitsdaten (Optional)",
+ "strategyManual": "Aktiv/Inaktiv Manuell",
+ "warningTimezone": "Es wird die Zeitzone des Servers verwendet",
+ "weekdayShortMon": "Mo",
+ "weekdayShortTue": "Di",
+ "weekdayShortWed": "Mi",
+ "weekdayShortThu": "Do",
+ "weekdayShortFri": "Fr",
+ "weekdayShortSat": "Sa",
+ "weekdayShortSun": "So",
+ "dayOfWeek": "Tag der Woche",
+ "dayOfMonth": "Tag im Monat",
+ "lastDay": "Letzter Tag",
+ "lastDay1": "Letzter Tag im Monat",
+ "lastDay2": "Vorletzer Tag im Monat",
+ "lastDay3": "3. letzter Tag im Monat",
+ "lastDay4": "4. letzter Tag im Monat",
+ "No Maintenance": "Keine Wartung",
+ "Schedule Maintenance": "Wartung planen",
+ "Edit Maintenance": "Wartung bearbeiten",
+ "pauseMaintenanceMsg": "Möchtest du wirklich pausieren?",
+ "maintenanceStatus-under-maintenance": "Unter Wartung",
+ "maintenanceStatus-inactive": "Inaktiv",
+ "maintenanceStatus-scheduled": "Geplant",
+ "maintenanceStatus-ended": "Ende",
+ "maintenanceStatus-unknown": "Unbekannt",
+ "Display Timezone": "Zeitzone anzeigen",
+ "Server Timezone": "Server Zeitzone",
+ "Date and Time": "Datum und Zeit",
+ "DateTime Range": "Datums- und Zeitbereich",
+ "Strategy": "Strategie",
+ "statusPageMaintenanceEndDate": "Ende",
+ "Help": "Hilfe",
+ "Game": "Spiel",
+ "Custom": "Benutzerdefiniert",
+ "Enable DNS Cache": "DNS-Cache aktivieren",
+ "Enable": "Aktivieren",
+ "Disable": "Deaktivieren",
+ "Custom Monitor Type": "Benutzerdefinierter Monitortyp",
+ "webhookAdditionalHeadersDesc": "Legt zusätzliche Header fest, die mit der Webhook gesendet wurden.",
+ "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert es möglicherweise nicht. Deaktiviere es, wenn Probleme auftreten.",
+ "loadingError": "Die Daten konnten nicht abgerufen werden, bitte später noch einmal versuchen.",
+ "confirmUninstallPlugin": "Möchtest du dieses Plugin wirklich deinstallieren?",
+ "grpcMethodDescription": "Der Name der Methode wird in das \"cammelCase\"-Format konvertiert (z.B. sayHello, check, etc.)",
+ "Passive Monitor Type": "Passiver Monitortyp",
+ "Specific Monitor Type": "Spezifischer Monitortyp",
+ "webhookAdditionalHeadersTitle": "Zusätzliche Header",
+ "Packet Size": "Paketgröße",
+ "IconUrl": "Symbol-URL",
+ "wayToGetZohoCliqURL": "Wie eine Webhook URL erstellt werden kann, erfährst du {0}.",
+ "dataRetentionTimeError": "Aufbewahrungszeit muss 0 oder größer sein",
+ "infiniteRetention": "Für unendliche Aufbewahrung auf 0 setzen.",
+ "confirmDeleteTagMsg": "Möchtest du dieses Tag wirklich löschen? Monitore, die mit diesem Tag verknüpft sind, werden nicht gelöscht.",
+ "enableGRPCTls": "Senden von gRPC-Anforderungen mit TLS-Verbindung zulassen",
+ "ZohoCliq": "ZohoCliq",
+ "Monitor": "Überwachung | Monitore",
+ "plugin": "Plugin | Plugins",
+ "install": "Installieren",
+ "installing": "Installiere",
+ "uninstall": "Deinstallieren",
+ "uninstalling": "Deinstallation",
+ "markdownSupported": "Markdown-Syntax unterstützt",
+ "wayToGetKookBotToken": "Erstelle eine Anwendung und erhalte den Bot-Token unter {0}",
+ "wayToGetKookGuildID": "Schalte den „Entwicklermodus“ in den Kook-Einstellungen ein und klicke mit der rechten Maustaste auf die Gilde, um die ID zu erhalten",
+ "Guild ID": "Guild-ID",
+ "Free Mobile User Identifier": "Kostenlose mobile Benutzerkennung",
+ "Free Mobile API Key": "Kostenloser Mobile API-Schlüssel",
+ "Enable TLS": "Aktiviere TLS",
+ "Proto Service Name": "Name des Proto-Dienstes",
+ "Proto Method": "Proto-Methode",
+ "Proto Content": "Proto-Inhalt",
+ "Economy": "Wirtschaft",
+ "Lowcost": "Kostengünstig",
+ "high": "hoch",
+ "promosmsAllowLongSMS": "Erlaube lange SMS",
+ "General Monitor Type": "Allgemeiner Monitortyp",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "Telefonnummer(n)",
+ "smseagleGroup": "Telefonbuch Gruppenname(n)",
+ "smseagleContact": "Telefonbuch Kontaktname(n)",
+ "smseagleRecipientType": "Empfängertyp",
+ "smseagleRecipient": "Empfänger (mehrere müssen durch Komma getrennt werden)",
+ "smseagleToken": "API-Zugriffstoken",
+ "smseagleUrl": "Ihre SMSEagle-Geräte-URL",
+ "Kook": "Kook",
+ "smseagleEncoding": "Als Unicode senden",
+ "smseaglePriority": "Nachrichtenpriorität (0-9, Standard = 0)",
+ "Google Analytics ID": "Google Analytics ID",
+ "Edit Tag": "bearbeite Tag",
+ "Server Address": "Server Adresse",
+ "Learn More": "Erfahre mehr",
+ "Body Encoding": "Körperkodierung",
+ "Add API Key": "API Schlüssel hinzufügen",
+ "apiKey-active": "Aktiv",
+ "apiKey-expired": "Abgelaufen",
+ "apiKey-inactive": "Inaktiv",
+ "Expires": "Läuft ab",
+ "deleteAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel löschen willst?",
+ "Generate": "Generieren",
+ "API Keys": "API Schlüssel",
+ "Expiry": "Ablauf",
+ "Expiry date": "Ablaufdatum",
+ "Don't expire": "Nicht ablaufen",
+ "Continue": "Weiter",
+ "Add Another": "Hinzufügen",
+ "Clone Monitor": "Duplikat von",
+ "Clone": "Duplizieren",
+ "cloneOf": "Duplikat von {0}",
+ "pagertreeIntegrationUrl": "Integrations URL",
+ "pagertreeUrgency": "Dringlichkeit",
+ "pagertreeSilent": "Leise",
+ "pagertreeLow": "Niedrig",
+ "pagertreeMedium": "Medium",
+ "pagertreeHigh": "Hoch",
+ "pagertreeCritical": "Kritisch",
+ "pagertreeResolve": "Automatisch Auflösen",
+ "No API Keys": "Keine API Schlüssel",
+ "disableAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel deaktivieren willst?",
+ "pagertreeDoNothing": "Nichts tun",
+ "wayToGetPagerTreeIntegrationURL": "Nachdem du die Uptime Kuma Integration in PagerTree erstellt hast, kopiere den Endpunkt. Siehe details {0}",
+ "telegramProtectContent": "Schütze gegen Weiterleiten/Speichern der Nachricht",
+ "telegramProtectContentDescription": "Die Bot-Nachrichten in Telegram sind gegen Weiterleitung und Speichern geschützt.",
+ "notificationRegional": "Regional",
+ "Key Added": "Schlüssel hinzugefügt",
+ "apiKeyAddedMsg": "API Schlüssel wurde hinzugefügt. Bitte notiere den Schlüssel, da er nicht erneut angezeigt wird.",
+ "telegramMessageThreadID": "(Optional) Nachrichten Thread ID",
+ "telegramMessageThreadIDDescription": "Optionale eindeutige Kennung für den Ziel-Thread (Thema) des Forums; nur für Forum-Supergroups",
+ "telegramSendSilently": "Stumm Senden",
+ "telegramSendSilentlyDescription": "Sende die Nachricht stumm. Nutzer bekommen eine Benachrichtigung ohne Ton.",
+ "Add New Tag": "Neuen Tag hinzufügen",
+ "lunaseaDeviceID": "Geräte-ID",
+ "lunaseaTarget": "Ziel",
+ "lunaseaUserID": "Benutzer-ID",
+ "ntfyAuthenticationMethod": "Authentifizierungsmethode",
+ "ntfyUsernameAndPassword": "Benutzername und Passwort",
+ "twilioAccountSID": "Account SID",
+ "twilioFromNumber": "Absender",
+ "twilioToNumber": "Empfänger",
+ "twilioAuthToken": "Auth Token",
+ "statusPageRefreshIn": "Aktualisierung in: {0}",
+ "sameAsServerTimezone": "Gleiche Zeitzone wie Server",
+ "startDateTime": "Start Datum/Uhrzeit",
+ "endDateTime": "Ende Datum/Uhrzeit",
+ "cronExpression": "Cron-Ausdruck",
+ "cronSchedule": "Zeitplan: ",
+ "invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}",
+ "Show Clickable Link": "Klickbaren Link anzeigen",
+ "Open Badge Generator": "Open Badge Generator",
+ "Badge Generator": "{0}'s Badge Generator",
+ "Badge Type": "Badge Typ",
+ "Badge Duration": "Badge Dauer",
+ "Badge Label": "Badge Label",
+ "Show Clickable Link Description": "Wenn diese Option aktiviert ist, kann jeder, der Zugriff auf diese Statusseite hat, auf die Monitor-URL zugreifen.",
+ "Badge Label Color": "Badge Label Farbe",
+ "Badge Color": "Badge Farbe",
+ "Badge Label Prefix": "Badge Label Präfix",
+ "Badge Label Suffix": "Badge Label Suffix",
+ "Badge Maintenance Color": "Badge Wartung Farbe",
+ "Badge Warn Color": "Badge Warnung Farbe",
+ "Badge Style": "Badge Stil",
+ "Badge value (For Testing only.)": "Badge Wert (nur für Tests)",
+ "Badge URL": "Badge URL",
+ "Badge Up Color": "Badge Up Farbe",
+ "Badge Down Color": "Badge Down Farbe",
+ "Badge Pending Color": "Badge Pending Farbe",
+ "Badge Down Days": "Badge Down Tage",
+ "Monitor Setting": "{0}'s Monitor Einstellung",
+ "Badge Prefix": "Badge Präfix",
+ "Badge Suffix": "Badge Suffix",
+ "Badge Warn Days": "Badge Warnung Tage",
+ "Group": "Gruppe",
+ "Monitor Group": "Monitor Gruppe",
+ "noGroupMonitorMsg": "Nicht verfügbar. Erstelle zunächst einen Gruppenmonitor.",
+ "Close": "Schließen"
+}
diff --git a/src/lang/el-GR.json b/src/lang/el-GR.json
new file mode 100644
index 000000000..bf53d0b74
--- /dev/null
+++ b/src/lang/el-GR.json
@@ -0,0 +1,701 @@
+{
+ "languageName": "Ελληνικά",
+ "checkEverySecond": "Έλεγχος κάθε {0} δευτερόλεπτα",
+ "retryCheckEverySecond": "Επανάληψη κάθε {0} δευτερόλεπτα",
+ "resendEveryXTimes": "Επανάληψη αποστολής ειδοποίησης κάθε {0} φορές",
+ "resendDisabled": "Η επανάληψη αποστολής ειδοποίησης είναι απενεργοποιημένη",
+ "retriesDescription": "Μέγιστες επαναλήψεις προτού η υπηρεσία επισημανθεί ως κατω και σταλεί μια ειδοποίηση",
+ "ignoreTLSError": "Παράβλεψη σφάλματος TLS/SSL για ιστότοπους HTTPS",
+ "upsideDownModeDescription": "Αναποδογυρίστε την κατάσταση. Εάν η υπηρεσία είναι προσβάσιμη, είναι ΚΑΤΩ.",
+ "maxRedirectDescription": "Μέγιστος αριθμός redirect που θα ακολουθήσουν. Ρυθμίστε το 0 για να απενεργοποιήσετε τα redirect.",
+ "acceptedStatusCodesDescription": "Επιλέξτε κωδικούς κατάστασης που θεωρούνται επιτυχή.",
+ "passwordNotMatchMsg": "Ο κωδικός δεν ταιριάζει.",
+ "notificationDescription": "Οι ειδοποιήσεις πρέπει να εκχωρηθούν σε μια παρακολούθηση για να λειτουργήσουν.",
+ "keywordDescription": "Αναζήτηση λέξης-κλειδιού σε απλή απόκριση HTML ή JSON. Η αναζήτηση είναι διάκριση πεζών-κεφαλαίων.",
+ "pauseDashboardHome": "Παύση",
+ "deleteMonitorMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την παρακολούθηση;",
+ "deleteNotificationMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την ειδοποίηση για όλες τις παρακολούθησης?",
+ "dnsPortDescription": "Θύρα διακομιστή DNS. Προεπιλογή σε 53. Μπορείτε να αλλάξετε τη θύρα ανά πάσα στιγμή.",
+ "resolverserverDescription": "Το Cloudflare είναι ο προεπιλεγμένος διακομιστής. Μπορείτε να αλλάξετε τον διακομιστή επίλυσης ανά πάσα στιγμήhe default server. You can change the resolver server anytime.",
+ "rrtypeDescription": "Επιλέξτε τον τύπο RR που θέλετε να παρακολουθήσετε",
+ "pauseMonitorMsg": "Είστε βέβαιοι ότι θέλετε να κάνετε παύση;",
+ "enableDefaultNotificationDescription": "Αυτή η ειδοποίηση θα είναι ενεργοποιημένη από προεπιλογή για νέες παρακολούθησης. Μπορείτε ακόμα να απενεργοποιήσετε την ειδοποίηση ξεχωριστά για κάθε παρακολούθηση.",
+ "clearEventsMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλα τα συμβάντα για αυτήν την παρακολούθηση;",
+ "clearHeartbeatsMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλους τους καρδιακούς παλμούς για αυτήν την παρακολούθηση;",
+ "confirmClearStatisticsMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε ΟΛΑ τα στατιστικά στοιχεία;?",
+ "importHandleDescription": "Επιλέξτε «Παράλειψη υπάρχοντος» εάν θέλετε να παραλείψετε κάθε παρακολούθηση ή ειδοποίηση με το ίδιο όνομα. Το 'Overwrite' θα διαγράψει κάθε υπάρχουσα παρακολούθηση και ειδοποίηση.",
+ "confirmImportMsg": "Είστε βέβαιοι ότι θέλετε να εισαγάγετε το αντίγραφο ασφαλείας; Επαληθεύστε ότι έχετε επιλέξει τη σωστή επιλογή.",
+ "twoFAVerifyLabel": "Εισαγάγετε το 2FA κωδικό για να επαληθεύσετε:",
+ "tokenValidSettingsMsg": "Ο κωδικός 2FA είναι έγκυρος! Τώρα μπορείτε να αποθηκεύσετε τις ρυθμίσεις 2FA.",
+ "confirmEnableTwoFAMsg": "Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε το 2FA;",
+ "confirmDisableTwoFAMsg": "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε το 2FA;",
+ "Settings": "Ρυθμίσεις",
+ "Dashboard": "Πίνακας",
+ "New Update": "Νέα αναβάθμιση",
+ "Language": "Γλώσσα",
+ "Appearance": "Εμφάνιση",
+ "Theme": "Θέμα",
+ "General": "Γενικά",
+ "Primary Base URL": "Κύρια βασική διεύθυνση URL",
+ "Version": "Εκδοχή",
+ "Check Update On GitHub": "Ελέγξτε για Ενημέρωση στο GitHub",
+ "List": "Λίστα",
+ "Add": "Προσθήκη",
+ "Add New Monitor": "Προσθήκη νέας παρακολούθησης",
+ "Quick Stats": "Γρήγορα στατιστικά",
+ "Up": "Πάνω",
+ "Down": "Κάτω",
+ "Pending": "Εκκρεμεί",
+ "Unknown": "Άγνωστο",
+ "Pause": "Παύση",
+ "Name": "Ονομα",
+ "Status": "Κατάσταση",
+ "DateTime": "ΗμερομηνίαΏρα",
+ "Message": "Μήνυμα",
+ "No important events": "Δεν υπάρχουν σημαντικά γεγονότα",
+ "Resume": "Συνέχιση",
+ "Edit": "Επεξεργασία",
+ "Delete": "Διαγράφη",
+ "Current": "Τρέχον",
+ "Uptime": "Χρόνος λειτουργίας",
+ "Cert Exp.": "Λήξη Πιστοπ.",
+ "day": "ημέρα | ημέρες",
+ "-day": "-ημέρα",
+ "hour": "ώρα",
+ "-hour": "-ώρα",
+ "Response": "Απάντηση",
+ "Ping": "Ping",
+ "Monitor Type": "Τύπος παρακολούθησης",
+ "Keyword": "Λέξη-κλειδί",
+ "Friendly Name": "Φιλικό όνομα",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Διάστημα καρδιακών παλμών",
+ "Retries": "Επαναλήψεις",
+ "Heartbeat Retry Interval": "Διάστημα επανάληψης παλμών καρδιάς",
+ "Resend Notification if Down X times consecutively": "Αποστολή νέας ειδοποίησης εάν κατω X φορές κατά συνέχεια",
+ "Advanced": "Προχωρημένα",
+ "Upside Down Mode": "Ανάποδη λειτουργία",
+ "Max. Redirects": "Μέγιστη. Ανακατευθύνσεις",
+ "Accepted Status Codes": "Αποδεκτοί Κωδικοί Κατάστασης",
+ "Push URL": "Push URL",
+ "needPushEvery": "Θα πρέπει να καλείτε αυτήν τη διεύθυνση URL κάθε {0} δευτερόλεπτα.",
+ "pushOptionalParams": "Προαιρετικές παράμετροι: {0}",
+ "Save": "Αποθηκεύση",
+ "Notifications": "Ειδοποιήσεις",
+ "Not available, please setup.": "Μη διαθέσιμο, παρακαλώ ρυθμίστε.",
+ "Setup Notification": "Δημιουργία ειδοποίησης",
+ "Light": "Φωτεινό",
+ "Dark": "Σκοτεινό",
+ "Auto": "Αυτόματο",
+ "Theme - Heartbeat Bar": "Θέμα - Μπάρα καρδιακών παλμών",
+ "Normal": "Κανονικό",
+ "Bottom": "Κάτω μέρος",
+ "None": "Τίποτα",
+ "Timezone": "Ζώνη ώρας",
+ "Search Engine Visibility": "Ορατότητα μηχανών αναζήτησης",
+ "Allow indexing": "Να επιτρέπεται η ευρετηρίαση",
+ "Discourage search engines from indexing site": "Αποθαρρύνετε τις μηχανές αναζήτησης από την ευρετηρίαση ιστότοπου",
+ "Change Password": "Αλλαγή κωδικού πρόσβασης",
+ "Current Password": "Τρέχων κωδικός πρόσβασης",
+ "New Password": "Νέος κωδικός πρόσβασης",
+ "Repeat New Password": "Επαναλάβετε τον νέο κωδικό πρόσβασης",
+ "Update Password": "Ενημέρωση κωδικού πρόσβασης",
+ "Disable Auth": "Απενεργοποίηση ελέγχου ταυτότητας",
+ "Enable Auth": "Ενεργοποίηση ελέγχου ταυτότητας",
+ "disableauth.message1": "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε τον έλεγχο ταυτότητας ;",
+ "disableauth.message2": "Έχει σχεδιαστεί για σενάρια όπου σκοπεύετε να εφαρμόσετε έλεγχο ταυτότητας τρίτου μέρους μπροστά από το Uptime Kuma, όπως το Cloudflare Access, Authelia ή άλλους μηχανισμούς ελέγχου ταυτότητας.",
+ "Please use this option carefully!": "Χρησιμοποιήστε αυτή την επιλογή προσεκτικά!",
+ "Logout": "Αποσύνδεση",
+ "Leave": "Φύγετε",
+ "I understand, please disable": "Καταλαβαίνω, απενεργοποιήστε",
+ "Confirm": "Επιβεβαίωση",
+ "Yes": "Ναί",
+ "No": "Οχι",
+ "Username": "Όνομα χρήστη",
+ "Password": "Κωδικός πρόσβασης",
+ "Remember me": "Θυμήσου με",
+ "Login": "Σύνδεση",
+ "No Monitors, please": "Δεν υπάρχουν παρακολούθησης παρακαλώ",
+ "add one": "προσθέστε ένα",
+ "Notification Type": "Είδος ειδοποίησης",
+ "Email": "Email",
+ "Test": "Δοκιμή",
+ "Certificate Info": "Πληροφορίες πιστοποιητικού",
+ "Resolver Server": "Διακομιστής επίλυσης",
+ "Resource Record Type": "Τύπος εγγραφής πόρων",
+ "Last Result": "Τελευταίο Αποτέλεσμα",
+ "Create your admin account": "Δημιουργήστε τον λογαριασμό διαχειριστή σας",
+ "Repeat Password": "Επαναλάβετε τον κωδικό πρόσβασης",
+ "Import Backup": "Εισαγωγή αντιγράφων ασφαλείας",
+ "Export Backup": "Εξαγωγή αντιγράφων ασφαλείας",
+ "Export": "Εξαγωγή",
+ "Import": "Εισαγωγή",
+ "respTime": "Χρόν. Aπό (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Προεπιλογή ενεργοποιημένη",
+ "Apply on all existing monitors": "Εφαρμόστε σε όλες τις υπάρχουσες παρακολούθησης",
+ "Create": "Δημιουργία",
+ "Clear Data": "Καθαρισμός δεδομένων",
+ "Events": "Γεγονότα",
+ "Heartbeats": "Παλμοι καρδιας",
+ "Auto Get": "Αυτόματη λήψη",
+ "backupDescription": "Μπορείτε να δημιουργήσετε αντίγραφα ασφαλείας γία ολλες της παρακολούθησης και ειδοποιήσης σε ένα αρχείο JSON.",
+ "backupDescription2": "Σημείωση: δεν περιλαμβάνονται δεδομένα ιστορικού και συμβάντων.",
+ "backupDescription3": "Στο αρχείο εξαγωγής περιλαμβάνονται ευαίσθητα δεδομένα, όπως token ειδοποιήσεων. Aποθηκεύστε την εξαγωγή με ασφάλεια.",
+ "alertNoFile": "Επιλέξτε ένα αρχείο για εισαγωγή.",
+ "alertWrongFileType": "Επιλέξτε ένα αρχείο JSON.",
+ "Clear all statistics": "Εκκαθάριση όλων των στατιστικών",
+ "Skip existing": "Παράβλεψη υπάρχοντος",
+ "Overwrite": "Αντικατάσταση",
+ "Options": "Επιλογές",
+ "Keep both": "Κράτα και τα δύο",
+ "Verify Token": "Επαλήθευση Token",
+ "Setup 2FA": "Ρύθμιση 2FA",
+ "Enable 2FA": "Ενεργοποίηση 2FA",
+ "Disable 2FA": "Απενεργοποίηση 2FA",
+ "2FA Settings": "Ρυθμίσεις 2FA",
+ "Two Factor Authentication": "Έλεγχος ταυτότητας δύο παραγόντων",
+ "Active": "Ενεργός",
+ "Inactive": "Ανενεργό",
+ "Token": "Token",
+ "Show URI": "Εμφάνιση URI",
+ "Tags": "Ετικέτες",
+ "Add New below or Select...": "Προσθήκη νέου παρακάτω ή Επιλέξτε…",
+ "Tag with this name already exist.": "Υπάρχει ήδη η ετικέτα με αυτό το όνομα.",
+ "Tag with this value already exist.": "Υπάρχει ήδη ετικέτα με αυτό το value.",
+ "color": "χρώμα",
+ "value (optional)": "τιμή (προαιρετικό)",
+ "Gray": "Γκρί",
+ "Red": "Κόκκινο",
+ "Orange": "Πορτοκάλι",
+ "Green": "Πράσινο",
+ "Blue": "Μπλε",
+ "Indigo": "Indigo",
+ "Purple": "Μωβ",
+ "Pink": "Ροζ",
+ "Search...": "Αναζήτηση…",
+ "Avg. Ping": "Μέσo.Ping",
+ "Avg. Response": "Μέσo. Aπάντηση",
+ "Entry Page": "Σελίδα εισαγωγής",
+ "statusPageNothing": "Δεν υπάρχει τίποτα εδώ, προσθέστε μια ομάδα ή μια παρακολούθηση.",
+ "No Services": "Δεν υπάρχουν υπηρεσίες",
+ "All Systems Operational": "Όλα τα συστήματα λειτουργούν",
+ "Partially Degraded Service": "Μερικώς υποβαθμισμένη υπηρεσία",
+ "Degraded Service": "Υποβαθμισμένη υπηρεσία",
+ "Add Group": "Προσθήκη γρουπ",
+ "Add a monitor": "Προσθήκη παρακολούθησης",
+ "Edit Status Page": "Επεξεργασία σελίδας κατάστασης",
+ "Go to Dashboard": "Μεταβείτε στον Πίνακα ελέγχου",
+ "Status Page": "Σελίδα κατάστασης",
+ "Status Pages": "Σελίδες κατάστασης",
+ "defaultNotificationName": "Η ειδοποίηση μου {notification} ({number})",
+ "here": "εδώ",
+ "Required": "Απαιτείται",
+ "telegram": "Telegram",
+ "ZohoCliq": "ZohoCliq",
+ "Bot Token": "Διακριτικό Bot",
+ "wayToGetTelegramToken": "Μπορείτε να πάρετε ένα διακριτικό από {0}.",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID",
+ "wayToGetTelegramChatID": "Μπορείτε να λάβετε το αναγνωριστικό συνομιλίας σας στέλνοντας ένα μήνυμα στο bot και μεταβαίνοντας σε αυτήν τη διεύθυνση URL για να προβάλετε το chat_id:",
+ "YOUR BOT TOKEN HERE": "ΤΟ BOT ΣΑΣ ΔΙΑΚΡΙΤΙΚΌ ΕΔΩ",
+ "chatIDNotFound": "Το Chat ID δεν βρέθηκε. Στείλτε πρώτα ένα μήνυμα σε αυτό το bot",
+ "webhook": "Webhook",
+ "Post URL": "Post URL",
+ "Content Type": "Τύπος περιεχομένου",
+ "webhookJsonDesc": "{0} είναι καλό για οποιονδήποτε σύγχρονο διακομιστή HTTP όπως το Express.js",
+ "webhookFormDataDesc": "{multipart} είναι καλό για την PHP. Το JSON θα πρέπει να αναλυθεί με {decodeFunction}",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "None / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Παράβλεψη σφάλματος TLS",
+ "From Email": "Από Email",
+ "emailCustomSubject": "Προσαρμοσμένο θέμα",
+ "To Email": "Προς Email",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "Μπορείτε να το αποκτήσετε μεταβαίνοντας στις Ρυθμίσεις διακομιστή -> Ενσωματώσεις -> Προβολή των Webhooks -> Νέο Webhook",
+ "Bot Display Name": "Εμφανιζόμενο όνομα bot",
+ "Prefix Custom Message": "Προσαρμοσμένο μήνυμα",
+ "Hello @everyone is...": "Γεια {'@'}everyone είναι…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Μπορείτε να μάθετε πώς να δημιουργείτε μια διεύθυνση URL webhook {0}.",
+ "wayToGetZohoCliqURL": "Μπορείτε να μάθετε πώς να δημιουργείτε μια διεύθυνση URL webhook {0}.",
+ "signal": "Signal",
+ "Number": "Αριθμός",
+ "Recipients": "Αποδέκτες",
+ "needSignalAPI": "Πρέπει να έχετε ένα signal client με REST API..",
+ "wayToCheckSignalURL": "Μπορείτε να ελέγξετε αυτό το URL για να δείτε πώς να ρυθμίσετε ένα:",
+ "signalImportant": "ΣΗΜΑΝΤΙΚΟ: Δεν μπορείτε να συνδυάσετε ομάδες και αριθμούς στους παραλήπτες!",
+ "gotify": "Gotify",
+ "Application Token": "Token εφαρμογής",
+ "Server URL": "URL διακομιστή",
+ "Priority": "Προτεραιότητα",
+ "slack": "Slack",
+ "Icon Emoji": "Εικονίδιο Emoji",
+ "Channel Name": "Όνομα καναλιού",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Περισσότερες πληροφορίες σχετικά με τα Webhooks στο: {0}",
+ "aboutChannelName": "Εισαγάγετε το όνομα του καναλιού στο {0} Όνομα καναλιού εάν θέλετε να παρακάμψετε το κανάλι Webhook. Π.χ.: #other-channel",
+ "aboutKumaURL": "Εάν αφήσετε κενό το πεδίο URL Uptime Kuma, θα είναι προεπιλεγμένο στη σελίδα Project GitHub..",
+ "emojiCheatSheet": "Φύλλο εξαπάτησης emoji: {0}",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push by Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Support 50+ Notification services)",
+ "GoogleChat": "Google Chat (Google Workspace only)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Κλειδί χρήστη",
+ "Device": "Συσκευή",
+ "Message Title": "Τίτλος μηνύματος",
+ "Notification Sound": "Ήχος ειδοποίησης",
+ "More info on:": "Περισσότερες πληροφορίες στο: {0}",
+ "pushoverDesc1": "Η προτεραιότητα έκτακτης ανάγκης (2) έχει προεπιλεγμένο χρονικό όριο 30 δευτερολέπτων μεταξύ των επαναλήψεων και θα λήξει μετά από 1 ώρα.",
+ "pushoverDesc2": "Εάν θέλετε να στέλνετε ειδοποιήσεις σε διαφορετικές συσκευές, συμπληρώστε το πεδίο Συσκευή.",
+ "SMS Type": "Τύπος SMS",
+ "octopushTypePremium": "Premium (Γρήγορη - συνιστάται για ειδοποίηση)",
+ "octopushTypeLowCost": "Χαμηλό κόστος (Αργό - μερικές φορές μπλοκάρεται από τον χειριστή)",
+ "checkPrice": "Ελέγξτε τις τιμές {0}:",
+ "apiCredentials": "API credentials",
+ "octopushLegacyHint": "Χρησιμοποιείτε την παλαιού τύπου έκδοση του Octopush (2011-2020) ή τη νέα έκδοση;",
+ "Check octopush prices": "Ελέγξτε τις τιμές OctoPush {0}.",
+ "octopushPhoneNumber": "Αριθμός τηλεφώνου (διεθνής μορφή, π.χ.: +30694345678) ",
+ "octopushSMSSender": "Όνομα αποστολέα SMS: 3-11 αλφαριθμητικοί χαρακτήρες και διάστημα (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Device ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Παράδειγμα: {0}",
+ "Read more:": "Διαβάστε περισσότερα: {0}",
+ "Status:": "Κατάσταση: {0}",
+ "Read more": "Διαβάστε περισσότερα",
+ "appriseInstalled": "Το Apprise έχει εγκατασταθεί.",
+ "appriseNotInstalled": "Το Apprise δεν έχει εγκατασταθεί. {0}",
+ "Access Token": "Access Token",
+ "Channel access token": "Channel Access Token",
+ "Line Developers Console": "Line Developers Console",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "Βασικές ρυθμίσεις",
+ "User ID": "User ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Πρώτα αποκτήστε πρόσβαση στο {0}, δημιουργήστε έναν πάροχο και ένα κανάλι (Messanging API) και, στη συνέχεια, μπορείτε να λάβετε το channel access token και το user ID από τα παραπάνω στοιχεία μενού.",
+ "Icon URL": "Διεύθυνση URL εικονιδίου",
+ "aboutIconURL": "Μπορείτε να παρέχετε έναν σύνδεσμο προς μια εικόνα στο \"Icon URL\" για να παρακάμψετε την προεπιλεγμένη εικόνα προφίλ. Δεν θα χρησιμοποιηθεί εάν έχει οριστεί το εικονίδιο Emoji.",
+ "aboutMattermostChannelName": "Μπορείτε να παρακάμψετε το προεπιλεγμένο κανάλι στο οποίο δημοσιεύει το Webhook εισάγοντας το όνομα του καναλιού στο πεδίο \"Όνομα καναλιού\". Αυτό πρέπει να ενεργοποιηθεί στις ρυθμίσεις του Mattermost Webhook. Π.χ.: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - φθηνό αλλά αργό και συχνά υπερφορτωμένο. Περιορίζεται μόνο σε Πολωνούς παραλήπτες.",
+ "promosmsTypeFlash": "SMS FLASH - Το μήνυμα θα εμφανίζεται αυτόματα στη συσκευή του παραλήπτη. Περιορίζεται μόνο σε Πολωνούς παραλήπτες.",
+ "promosmsTypeFull": "SMS FULL - Premium επίπεδο SMS, Μπορείτε να χρησιμοποιήσετε το Όνομα Αποστολέα σας (Πρέπει πρώτα να καταχωρήσετε το όνομα). Αξιόπιστο για ειδοποιήσεις.",
+ "promosmsTypeSpeed": "SMS SPEED - Υψηλότερη προτεραιότητα στο σύστημα. Πολύ γρήγορο και αξιόπιστο αλλά ακριβό (περίπου διπλάσια τιμή SMS FULL).",
+ "promosmsPhoneNumber": "Αριθμός τηλεφώνου (για πολωνούς παραλήπτες Μπορείτε να παραλείψετε τους κωδικούς περιοχής)",
+ "promosmsSMSSender": "Όνομα αποστολέα SMS: Προεγγεγραμμένο όνομα ή ένα από τα προεπιλεγμένα: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "Homeserver URL (με http(s):// και προαιρετικά θύρα)",
+ "Internal Room Id": "Internal Room ID",
+ "matrixDesc1": "Μπορείτε να βρείτε το internal room ID ανατρέχοντας στην ενότητα για προχωρημένους των ρυθμίσεων δωματίου στο πρόγραμμα-πελάτη Matrix. Θα πρέπει να μοιάζει με !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Συνιστάται ανεπιφύλακτα να δημιουργήσετε έναν νέο χρήστη και να μην χρησιμοποιήσετε το διακριτικό πρόσβασης του χρήστη Matrix, καθώς θα επιτρέψει την πλήρη πρόσβαση στον λογαριασμό σας και σε όλα τα δωμάτια στα οποία συμμετέχετε. Αντίθετα, δημιουργήστε έναν νέο χρήστη και προσκαλέστε τον μόνο στο δωμάτιο στο οποίο θέλετε να λαμβάνετε την ειδοποίηση. Μπορείτε να λάβετε το access token εκτελώντας {0}",
+ "Method": "Μέθοδος",
+ "Body": "Σώμα",
+ "Headers": "Κεφαλίδες",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Οι κεφαλίδες του αιτήματος δεν αποτελούν έγκυρο JSON: ",
+ "BodyInvalidFormat": "Το περιεχόμενο/σώμα του αιτήματος δεν αποτελεί έγκυρο JSON: ",
+ "Monitor History": "Ιστορικο Παρακολούθησης",
+ "clearDataOlderThan": "Διατηρήστε τα δεδομένα ιστορικού παρακολούθησης για {0} ημέρες.",
+ "PasswordsDoNotMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.",
+ "records": "εγγραφές",
+ "One record": "Μία εγγραφή",
+ "steamApiKeyDescription": "Για την παρακολούθηση ενός διακομιστή παιχνιδιών Steam χρειάζεστε ένα κλειδί Steam Web-API. Μπορείτε να καταχωρήσετε το κλειδί API σας εδώ: ",
+ "Current User": "Τρέχων χρήστης",
+ "topic": "Θέμα",
+ "topicExplanation": "Θέμα MQTT προς παρακολούθηση",
+ "successMessage": "Μήνυμα επιτυχίας",
+ "successMessageExplanation": "Μήνυμα MQTT που θα θεωρηθεί επιτυχές",
+ "recent": "Πρόσφατος",
+ "Done": "Ολοκληρώθηκε",
+ "Info": "Πληροφορίες",
+ "Security": "Ασφάλεια",
+ "Steam API Key": "Steam API Key",
+ "Shrink Database": "Συρρίκνωση βάσης δεδομένων",
+ "Pick a RR-Type...": "Επιλέξτε έναν τύπο RR…",
+ "Pick Accepted Status Codes...": "Επιλέξτε Αποδεκτούς κωδικούς κατάστασης…",
+ "Default": "Προκαθορισμένο",
+ "HTTP Options": "Επιλογές HTTP",
+ "Create Incident": "Δημιουργία περιστατικού",
+ "Title": "Τίτλος",
+ "Content": "Περιεχόμενο",
+ "Style": "Στυλ",
+ "info": "πληροφορίες",
+ "warning": "προειδοποίηση",
+ "danger": "κίνδυνος",
+ "error": "σφάλμα",
+ "critical": "κριτικό",
+ "primary": "κύριο",
+ "light": "φωτεινό",
+ "dark": "σκοτεινό",
+ "Post": "Δημοσίευση",
+ "Please input title and content": "Παρακαλούμε εισαγάγετε τίτλο και περιεχόμενο",
+ "Created": "Δημιουργήθηκε",
+ "Last Updated": "Τελευταία ενημέρωση",
+ "Unpin": "Ξεκαρφιτσώστε",
+ "Switch to Light Theme": "Μετάβαση σε Ανιχτό θέμα",
+ "Switch to Dark Theme": "Μετάβαση σε Σκούρο θέμα",
+ "Show Tags": "Εμφάνιση ετικετών",
+ "Hide Tags": "Απόκρυψη ετικετών",
+ "Description": "Περιγραφή",
+ "No monitors available.": "Δεν υπάρχουν διαθέσιμες παρακολουθήσεις.",
+ "Add one": "Προσθέστε ένα",
+ "No Monitors": "Χωρίς παρακολουθήσεις",
+ "Untitled Group": "Ομάδα χωρίς τίτλο",
+ "Services": "Υπηρεσίες",
+ "Discard": "Απορρίψει",
+ "Cancel": "Ακυρο",
+ "Powered by": "Με την υποστήριξη του",
+ "shrinkDatabaseDescription": "Ενεργοποίηση βάσης δεδομένων VACUUM για SQLite. Εάν η βάση δεδομένων σας έχει δημιουργηθεί μετά την έκδοση 1.10.0, το AUTO_VACUUM είναι ήδη ενεργοποιημένο και αυτή η ενέργεια δεν χρειάζεται.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Username (incl. webapi_ prefix)",
+ "serwersmsAPIPassword": "API κωδικός πρόσβασης",
+ "serwersmsPhoneNumber": "Αριθμός τηλεφώνου",
+ "serwersmsSenderName": "Όνομα αποστολέα SMS (καταχωρήθηκε μέσω της πύλης πελατών)",
+ "stackfield": "Stackfield",
+ "Customize": "Προσαρμογή",
+ "Custom Footer": "Προσαρμογή Footer",
+ "Custom CSS": "Προσαρμογή CSS",
+ "smtpDkimSettings": "Ρυθμίσεις DKIM",
+ "smtpDkimDesc": "Ανατρέξτε στο Nodemailer DKIM {0} για χρήση.",
+ "documentation": "documentation",
+ "smtpDkimDomain": "Domain Name",
+ "smtpDkimKeySelector": "Key Selector",
+ "smtpDkimPrivateKey": "Private Key",
+ "smtpDkimHashAlgo": "Hash Algorithm (Optional)",
+ "smtpDkimheaderFieldNames": "Header Keys to sign (Optional)",
+ "smtpDkimskipFields": "Header Keys not to sign (Optional)",
+ "wayToGetPagerDutyKey": "Μπορείτε να το λάβετε μεταβαίνοντας στο Service -> Service Directory -> (Επιλέξτε μια υπηρεσία) -> Integrations -> Add integration. Εδώ μπορείτε να κάνετε αναζήτηση για \"Events API V2\". Περισσότερες πληροφορίες {0}",
+ "Integration Key": "Integration Key",
+ "Integration URL": "Integration URL",
+ "Auto resolve or acknowledged": "Αυτόματη επίλυση ή αναγνώριση",
+ "do nothing": "μην κάνεις τίποτα",
+ "auto acknowledged": "αυτόματη αναγνώριση",
+ "auto resolve": "αυτόματη επίλυση",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "Environment",
+ "alertaApiKey": "API Key",
+ "alertaAlertState": "Alert State",
+ "alertaRecoverState": "Recover State",
+ "deleteStatusPageMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη σελίδα κατάστασης?",
+ "Proxies": "Proxies",
+ "default": "Προκαθορισμένο",
+ "enabled": "Ενεργοποιημένο",
+ "setAsDefault": "Ορίσετε ως προεπιλογή",
+ "deleteProxyMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το proxy για όλες τις παρακολουθήσεις;",
+ "proxyDescription": "Πρέπει να εκχωρηθούν proxies σε μια οθπαρακολουθή για να λειτουργήσουν..",
+ "enableProxyDescription": "Το proxy δεν θα επηρεάσει τα αιτήματα της παρακολουθήσεις μέχρι να ενεργοποιηθεί. Μπορείτε να ελέγξετε την προσωρινή απενεργοποίηση του proxy από όλες τις παρακολουθήσεις βάσει κατάστασης ενεργοποίησης.",
+ "setAsDefaultProxyDescription": "Αυτός το proxy θα είναι ενεργοποιημένο από προεπιλογή για νέες παρακολουθήσεις. Μπορείτε ακόμα να απενεργοποιήσετε το proxy ξεχωριστά για κάθε οθόνη.",
+ "Certificate Chain": "Αλυσίδα Πιστοποιητικών",
+ "Valid": "Εγκυρο",
+ "Invalid": "Μη έγκυρο",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "PhoneNumbers",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Το πρότυπο SMS πρέπει να περιέχει παραμέτρους: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "Bark Group": "Bark Ομάδα",
+ "Bark Sound": "Bark Ήχος",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "Για ασφάλεια, πρέπει να χρησιμοποιήσετε secret key",
+ "Device Token": "Device Token",
+ "Platform": "Platform",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "High",
+ "Retry": "Ξαναδοκιμάσετε",
+ "Topic": "Θέμα",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "Setup Proxy": "Ρύθμιση Proxy",
+ "Proxy Protocol": "Πρωτόκολλο Proxy",
+ "Proxy Server": "Proxy Server",
+ "Proxy server has authentication": "Το Proxy διαθέτει έλεγχο ταυτότητας",
+ "User": "Χρήστης",
+ "Installed": "Εγκατεστημένο",
+ "Not installed": "Μη εγκατεστημενο",
+ "Running": "Τρέχη",
+ "Not running": "Δεν τρεχη",
+ "Remove Token": "Κατάργηση Token",
+ "Start": "Αρχή",
+ "Stop": "Στάση",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Προσθήκη νέας σελίδας κατάστασης",
+ "Slug": "Slug",
+ "Accept characters:": "Αποδοχή χαρακτήρων:",
+ "startOrEndWithOnly": "Ξεκινήστε ή τελειώστε μόνο με {0}",
+ "No consecutive dashes": "Χωρίς διαδοχικές παύλες",
+ "Next": "Επόμενο",
+ "The slug is already taken. Please choose another slug.": "Ο slug έχει ήδη πιαστεί. Επιλέξτε άλλο slug.",
+ "No Proxy": "Οχι Proxy",
+ "Authentication": "Authentication",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "Νέας Σελίδα κατάστασης",
+ "Page Not Found": "Η σελίδα δεν βρέθηκε",
+ "Reverse Proxy": "Αντίστροφο Proxy",
+ "Backup": "Αντιγράφων ασφαλείας",
+ "About": "Σχετικά με το Uptime Kuma",
+ "wayToGetCloudflaredURL": "(Λήψη cloudflared από {0})",
+ "cloudflareWebsite": "Ιστοσελίδα Cloudflare",
+ "Message:": "Μήνυμα:",
+ "Don't know how to get the token? Please read the guide:": "Δεν ξέρετε πώς να αποκτήσετε το token; Διαβάστε τον οδηγό:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Η τρέχουσα σύνδεση μπορεί να χαθεί εάν αυτή τη στιγμή συνδέεστε μέσω του Cloudflare Tunnel. Θέλετε σίγουρα να το σταματήσετε; Πληκτρολογήστε τον τρέχοντα κωδικό πρόσβασής σας για να τον επιβεβαιώσετε.",
+ "HTTP Headers": "Κεφαλίδες HTTP",
+ "Trust Proxy": "Εμπιστοσύνη του Proxy",
+ "Other Software": "Other Software",
+ "For example: nginx, Apache and Traefik.": "Για παράδειγμα: nginx, Apache και Traefik.",
+ "Please read": "Παρακαλώ διαβάστε",
+ "Subject:": "Θέμα:",
+ "Valid To:": "Εγκυρο για:",
+ "Days Remaining:": "Ημέρες που απομένουν:",
+ "Issuer:": "Εκδότης:",
+ "Fingerprint:": "Δακτυλικό αποτύπωμα:",
+ "No status pages": "Δεν υπάρχουν σελίδες κατάστασης",
+ "Domain Name Expiry Notification": "Ειδοποίηση λήξης ονόματος τομέα",
+ "Proxy": "Proxy",
+ "Date Created": "Ημερομηνία Δημιουργίας",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "OneBot HTTP Address",
+ "onebotMessageType": "OneBot Message Type",
+ "onebotGroupMessage": "Group",
+ "onebotPrivateMessage": "Private",
+ "onebotUserOrGroupId": "Group/User ID",
+ "onebotSafetyTips": "Για ασφάλεια, πρέπει να ορίσετε το acess token",
+ "PushDeer Key": "PushDeer Key",
+ "Footer Text": "Κείμενο υποσέλιδου",
+ "Show Powered By": "Εμφάνιση Powered By",
+ "Domain Names": "Ονόματα Τομέα",
+ "signedInDisp": "Συνδεθήκατε ως {0}",
+ "signedInDispDisabled": "Εξουσιοδότηση είναι απενεργοποιημένη.",
+ "RadiusSecret": "Radius Secret",
+ "RadiusSecretDescription": "Shared Secret μεταξύ client και το server",
+ "RadiusCalledStationId": "Called Station Id",
+ "RadiusCalledStationIdDescription": "Identifier της καλούμενης συσκευής",
+ "RadiusCallingStationId": "Calling Station Id",
+ "RadiusCallingStationIdDescription": "Identifier oτης συσκευής κλήσης",
+ "Certificate Expiry Notification": "Ειδοποίηση Λήξης Πιστοποιητικού",
+ "API Username": "API Username",
+ "API Key": "API Key",
+ "Recipient Number": "Αριθμός Παραλήπτη",
+ "From Name/Number": "Από Όνομα/Αριθμός",
+ "Leave blank to use a shared sender number.": "Αφήστε το κενό για να χρησιμοποιήσετε έναν κοινόχρηστο αριθμό αποστολέα.",
+ "Octopush API Version": "Octopush API Version",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "endpoint": "endpoint",
+ "octopushAPIKey": "\"API key\" από το HTTP API credentials στον πίνακα ελέγχου",
+ "octopushLogin": "\"Login\" από το HTTP API credentials στον πίνακα ελέγχου",
+ "promosmsLogin": "API Login Name",
+ "promosmsPassword": "API Password",
+ "pushoversounds pushover": "Pushover (default)",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Vibrate Only",
+ "pushoversounds none": "None (silent)",
+ "pushyAPIKey": "Μυστικό API Key",
+ "pushyToken": "Τoken Συσκευής",
+ "Show update if available": "Εμφάνιση ενημέρωσης εάν είναι διαθέσιμη",
+ "Also check beta release": "Ελέγξτε επίσης την έκδοση beta",
+ "Using a Reverse Proxy?": "Χρησιμοποιείτε reverse proxy;",
+ "Check how to config it for WebSocket": "Ελέγξτε πώς να το ρυθμίσετε για το WebSocket",
+ "Steam Game Server": "Διακομιστής παιχνιδιών Steam",
+ "Most likely causes:": "Πιο πιθανές αιτίες:",
+ "The resource is no longer available.": "Ο πόρος δεν είναι πλέον διαθέσιμος.",
+ "There might be a typing error in the address.": "Μπορεί να υπάρχει σφάλμα πληκτρολόγησης στη διεύθυνση.",
+ "What you can try:": "Τι μπορείτε να δοκιμάσετε:",
+ "Retype the address.": "Πληκτρολογήστε ξανά τη διεύθυνση.",
+ "Go back to the previous page.": "Επιστρέψτε στην προηγούμενη σελίδα.",
+ "Coming Soon": "Ερχεται σύντομα",
+ "wayToGetClickSendSMSToken": "Μπορείτε να πάρετε το API Username και API Key απο {0} .",
+ "Connection String": "Connection String",
+ "Query": "Query",
+ "settingsCertificateExpiry": "Λήξη πιστοποιητικού TLS",
+ "certificationExpiryDescription": "Οι παρακολουθήσεις HTTPS ενεργοποιούν ειδοποίηση όταν λήξει το πιστοποιητικό TLS σε:",
+ "Setup Docker Host": "Ρύθμιση Docker Host",
+ "Connection Type": "Τύπος σύνδεσης",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον κεντρικό υπολογιστή βάσης για όλες τις παρακολουθήσεις;",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Container",
+ "Container Name / ID": "Container Name / ID",
+ "Docker Host": "Docker Host",
+ "Docker Hosts": "Docker Hosts",
+ "ntfy Topic": "ntfy Topic",
+ "Domain": "Domain",
+ "Workstation": "Workstation",
+ "disableCloudflaredNoAuthMsg": "Βρίσκεστε σε λειτουργία No Auth, δεν απαιτείται κωδικός πρόσβασης.",
+ "trustProxyDescription": "Εμπιστευτείτε τις κεφαλίδες 'X-Forwarded-*'. Εάν θέλετε να λάβετε τη σωστή IP πελάτη και το Uptime Kuma σας βρίσκεται πίσω κάποιος proxy όπως το Nginx ή το Apache, θα πρέπει να το ενεργοποιήσετε.",
+ "wayToGetLineNotifyToken": "Μπορείτε να λάβετε ένα access token από το {0}",
+ "Examples": "Παραδείγματα",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "Μακράς-Διάρκειας Κλειδί Τόκεν",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token μπορεί να δημιουργηθεί κάνοντας κλικ στο όνομα του προφίλ σας (κάτω αριστερά) και κάνοντας κύλιση προς τα κάτω και, στη συνέχεια, κάντε κλικ στο Create Token. ",
+ "Notification Service": "Υπηρεσία ειδοποιήσεων",
+ "default: notify all devices": "προεπιλογή: ειδοποίηση όλων των συσκευών",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Μπορείτε να βρείτε μια λίστα με τις Υπηρεσίες ειδοποιήσεων στον Home assistant στην περιοχή \"Developer Tools > Services\" αναζήτηση για \"notification\" για να βρείτε το όνομα της συσκευής/τηλεφώνου σας.",
+ "Automations can optionally be triggered in Home Assistant:": "Οι αυτοματισμοί μπορούν προαιρετικά να ενεργοποιηθούν στο Home Assistant:",
+ "Trigger type:": "Τύπος ενεργοποίησης:",
+ "Event type:": "Τύπος συμβάντος:",
+ "Event data:": "Δεδομένα συμβάντος:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Στη συνέχεια, επιλέξτε μια ενέργεια, για παράδειγμα αλλάξτε τη σκηνή στο σημείο όπου ένα φως RGB είναι κόκκινο.",
+ "Frontend Version": "Έκδοση Frontend",
+ "Frontend Version do not match backend version!": "Η Frontend έκδοση δεν ταιριάζει με την έκδοση backend!",
+ "Base URL": "Βασική διεύθυνση URL",
+ "goAlertInfo": "Το GoAlert είναι μια εφαρμογή ανοιχτού κώδικα για προγραμματισμό κλήσεων, αυτοματοποιημένες κλιμακώσεις και ειδοποιήσεις (όπως SMS ή φωνητικές κλήσεις). Αλληλεπιδράστε αυτόματα με το σωστό άτομο, με τον σωστό τρόπο και τη σωστή στιγμή! {0}",
+ "goAlertIntegrationKeyInfo": "Λάβετε το generic API integration key για την υπηρεσία σε αυτήν τη μορφή \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" συνήθως την τιμή της παραμέτρου διακριτικού της αντιγραμμένης διεύθυνσης URL.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Καταργήθηκε: Επειδή προστέθηκαν πολλές δυνατότητες και αυτή η δυνατότητα δημιουργίας αντιγράφων ασφαλείας δεν διατηρείται, δεν μπορεί να δημιουργήσει ή να επαναφέρει ένα πλήρες αντίγραφο ασφαλείας.",
+ "backupRecommend": "Παρακαλούμε δημιουργήστε αντίγραφα ασφαλείας του volume ή του φακέλου δεδομένων (./data/) απευθείας.",
+ "Maintenance": "Συντήρηση",
+ "General Monitor Type": "Επόπτης Γενικού Τύπου",
+ "maintenanceStatus-under-maintenance": "Υπό Συντήρηση",
+ "dnsCacheDescription": "Μπορεί να μη λειτουργεί σε κάποια IPv6 περιβάλλοντα, απενεργοποιήστε αν συναντήσετε προβλήματα.",
+ "uninstalling": "Γίνεται απεγκατάσταση",
+ "confirmUninstallPlugin": "Θέλετε σίγουρα να απεγκαταστήσετε αυτό το πρόσθετο;",
+ "smseagle": "SMSEagle",
+ "smseagleRecipientType": "Τύπος παραλήπτη",
+ "smseagleUrl": "Το URL της SMSEagle συσκευής σας",
+ "Start of maintenance": "Έναρξη συντήρησης",
+ "All Status Pages": "Όλες οι Σελίδες Κατάστασης",
+ "Select status pages...": "Επιλέξτε σελίδες κατάστασης…",
+ "Optional": "Προαιρετικό",
+ "weekdayShortMon": "Δευ",
+ "weekdayShortTue": "Τρι",
+ "weekdayShortWed": "Τετ",
+ "weekdayShortThu": "Πεμ",
+ "weekdayShortFri": "Παρ",
+ "weekdayShortSat": "Σαβ",
+ "Help": "Βοήθεια",
+ "Game": "Παιχνίδι",
+ "Specific Monitor Type": "Επόπτης Συγκεκριμένου Τύπου",
+ "Passive Monitor Type": "Επόπτης Παθητικού Τύπου",
+ "Monitor": "Επόπτης | Επόπτες",
+ "Schedule maintenance": "Προγραμματισμός συντήρησης",
+ "Affected Monitors": "Επηρεαζόμενοι Επόπτες",
+ "Pick Affected Monitors...": "Διαλέξτε Επηρεαζόμενους Επόπτες…",
+ "webhookAdditionalHeadersTitle": "Επιπρόσθετες Κεφαλίδες",
+ "webhookAdditionalHeadersDesc": "Ορίζει επιπρόσθετες κεφαλίδες που θα σταλθούν με το webhook.",
+ "weekdayShortSun": "Κυρ",
+ "dayOfWeek": "Ημέρα της Εβδομάδας",
+ "dayOfMonth": "Ημέρα του Μήνα",
+ "lastDay1": "Τελευταία Μέρα του Μήνα",
+ "lastDay2": "2η Τελευταία Μέρα του Μήνα",
+ "lastDay3": "3η Τελευταία Μέρα του Μήνα",
+ "lastDay4": "4η Τελευταία Μέρα του Μήνα",
+ "lastDay": "Τελευταία Μέρα",
+ "No Maintenance": "Όχι Συντήρηση",
+ "pauseMaintenanceMsg": "Είστε σίγουροι για την παύση;",
+ "maintenanceStatus-inactive": "Ανενεργό",
+ "maintenanceStatus-scheduled": "Προγραμματισμένο",
+ "maintenanceStatus-ended": "Ολοκληρωμένο",
+ "maintenanceStatus-unknown": "Άγνωστο",
+ "Display Timezone": "Προβολή Ζώνης Ώρας",
+ "Server Timezone": "Ζώνη Ώρας του Server",
+ "statusPageMaintenanceEndDate": "Λήξη",
+ "Custom": "Προσαρμοσμένο",
+ "Economy": "Οικονομία",
+ "loadingError": "Αδύνατη συλλογή δεδομένων, προσπαθήστε ξανά αργότερα.",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "API βιβλιογραφία του SMSManager ",
+ "Kook": "Kook",
+ "statusMaintenance": "Συντήρηση",
+ "markdownSupported": "Υποστήριξη markdown συντακτικού",
+ "Packet Size": "Μέγεθος Πακέτου",
+ "or": "ή",
+ "recurringInterval": "Χρονικό Διάστημα",
+ "Recurring": "Επαναλαμβανόμενο",
+ "strategyManual": "Ενεργό/Ανενεργό Χειροκίνητα",
+ "warningTimezone": "Χρησιμοποιεί την ζώνη ώρας του server",
+ "squadcast": "Squadcast",
+ "IconUrl": "URL εικονιδίου",
+ "Enable DNS Cache": "Ενεργοποίηση DNS Cache",
+ "Enable": "Ενεργοποίηση",
+ "Disable": "Απενεργοποίηση",
+ "Single Maintenance Window": "Μονό Παράθυρο Συντήρησης",
+ "Maintenance Time Window of a Day": "Ημερίσιο πρόγραμμα Συντήρησης",
+ "Effective Date Range": "Ημερομηνιακό Διάστημα Εφαρμογής",
+ "Schedule Maintenance": "Προγραμματισμός Συντήρησης",
+ "Date and Time": "Ημερομηνία και Ώρα",
+ "DateTime Range": "Ημερομηνιακό Πλαίσιο",
+ "plugin": "Πρόσθετο | Πρόσθετα",
+ "install": "Εγκατάσταση",
+ "installing": "Γίνεται εγκατάσταση",
+ "uninstall": "Απεγκατάσταση",
+ "dataRetentionTimeError": "Η περίοδος διατήρησης πρέπει να είναι 0 ή μεγαλύτερο",
+ "infiniteRetention": "Ορίστε 0 για μόνιμη διατήρηση.",
+ "confirmDeleteTagMsg": "Θέλετε σίγουρα να διαγράψετε αυτήν την ετικέτα; Οι επόπτες που σχετίζονται με αυτήν την ετικέτα δεν θα διαγραφούν.",
+ "enableGRPCTls": "Επιτρέψτε την αποστολή gRPC αιτημάτων μέσω TLS συνδέσεων",
+ "grpcMethodDescription": "Το όνομα της μεθόδου μετατρέπεται σε cammelCase μορφή όπως π.χ. sayHello, check, κλπ.",
+ "deleteMaintenanceMsg": "Θέλετε σίγουρα να διαγράψετε αυτή την συντήρηση;",
+ "recurringIntervalMessage": "Εκτέλεση μια φορά την ημέρα | Εκτέλεση μία φορά ανά {0} ημέρες",
+ "affectedMonitorsDescription": "Επιλέξτε τους επόπτες που επηρεάζονται από την τωρινή συντήρηση",
+ "affectedStatusPages": "Προβολή αυτού του μηνύματος συντήρησης σε επιλεγμένες σελίδες κατάστασης",
+ "atLeastOneMonitor": "Επιλέξτε τουλάχιστον έναν επηρεασμένο επόπτη",
+ "wayToGetKookBotToken": "Δημιουργήστε εφαρμογή και πάρτε το bot token στο {0}",
+ "wayToGetKookGuildID": "Ενεργοποιήστε την 'Λειτουργία Προγραμματιστή' στις ρυθμίσεις Kook, και κάντε δεξί κλικ στο guild για να πάρετε το ID του",
+ "Guild ID": "Guild ID",
+ "Strategy": "Στρατηγική",
+ "Enable TLS": "Ενεργοποίηση TLS",
+ "Proto Service Name": "Όνομα Υπηρεσίας Proto",
+ "Proto Method": "Μέθοδος Proto",
+ "Proto Content": "Περιεχόμενο Proto",
+ "Lowcost": "Χαμηλό κόστος",
+ "high": "υψηλό",
+ "Gateway Type": "Τύπος Πύλης",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Μπορείτε να διαιρέσετε αριθμούς με",
+ "promosmsAllowLongSMS": "Επέτρεψε SMS μεγάλου μεγέθους",
+ "smseagleTo": "Αριθμός(οί) τηλεφώνου",
+ "smseagleGroup": "Όνομα/Ονόματα γκρουπ καταλόγων",
+ "smseagleContact": "Όνομα/Ονόματα επαφών καταλόγου",
+ "smseagleRecipient": "Παραλήπτης(ες) (πολλαπλοί πρέπει να διαχωρίζονται με κόμμα)",
+ "smseagleToken": "API Κλειδί τόκεν",
+ "smseagleEncoding": "Αποστολή ως Unicode",
+ "Custom Monitor Type": "Προσαρμοσμένος Τύπος Επόπτη",
+ "Edit Tag": "Επεξεργασία Ετικέτας",
+ "Server Address": "Διεύθυνση Διακομιστή",
+ "Learn More": "Μάθετε περισσότερα",
+ "Free Mobile User Identifier": "Free Mobile User Identifier",
+ "Free Mobile API Key": "Free Mobile API Key",
+ "smseaglePriority": "Προτεραιότητα μηνύματος (0-9, προεπιλογή = 0)",
+ "statusPageRefreshIn": "Ανανέωση σε {0}",
+ "Add New Tag": "Πρόσθεσε νέα ετικέτα"
+}
diff --git a/src/lang/en.json b/src/lang/en.json
new file mode 100644
index 000000000..dc23e2ad8
--- /dev/null
+++ b/src/lang/en.json
@@ -0,0 +1,761 @@
+{
+ "languageName": "English",
+ "Settings": "Settings",
+ "Dashboard": "Dashboard",
+ "Help": "Help",
+ "New Update": "New Update",
+ "Language": "Language",
+ "Appearance": "Appearance",
+ "Theme": "Theme",
+ "General": "General",
+ "Game": "Game",
+ "Primary Base URL": "Primary Base URL",
+ "Version": "Version",
+ "Check Update On GitHub": "Check Update On GitHub",
+ "List": "List",
+ "Home": "Home",
+ "Add": "Add",
+ "Add New Monitor": "Add New Monitor",
+ "Quick Stats": "Quick Stats",
+ "Up": "Up",
+ "Down": "Down",
+ "Pending": "Pending",
+ "statusMaintenance": "Maintenance",
+ "Maintenance": "Maintenance",
+ "Unknown": "Unknown",
+ "Cannot connect to the socket server": "Cannot connect to the socket server",
+ "Reconnecting...": "Reconnecting...",
+ "General Monitor Type": "General Monitor Type",
+ "Passive Monitor Type": "Passive Monitor Type",
+ "Specific Monitor Type": "Specific Monitor Type",
+ "markdownSupported": "Markdown syntax supported",
+ "pauseDashboardHome": "Pause",
+ "Pause": "Pause",
+ "Name": "Name",
+ "Status": "Status",
+ "DateTime": "DateTime",
+ "Message": "Message",
+ "No important events": "No important events",
+ "Resume": "Resume",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Current": "Current",
+ "Uptime": "Uptime",
+ "Cert Exp.": "Cert Exp.",
+ "Monitor": "Monitor | Monitors",
+ "day": "day | days",
+ "-day": "-day",
+ "hour": "hour",
+ "-hour": "-hour",
+ "Response": "Response",
+ "Ping": "Ping",
+ "Monitor Type": "Monitor Type",
+ "Keyword": "Keyword",
+ "Invert Keyword": "Invert Keyword",
+ "Friendly Name": "Friendly Name",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Heartbeat Interval",
+ "Retries": "Retries",
+ "Heartbeat Retry Interval": "Heartbeat Retry Interval",
+ "Resend Notification if Down X times consecutively": "Resend Notification if Down X times consecutively",
+ "Advanced": "Advanced",
+ "checkEverySecond": "Check every {0} seconds",
+ "retryCheckEverySecond": "Retry every {0} seconds",
+ "resendEveryXTimes": "Resend every {0} times",
+ "resendDisabled": "Resend disabled",
+ "retriesDescription": "Maximum retries before the service is marked as down and a notification is sent",
+ "ignoreTLSError": "Ignore TLS/SSL error for HTTPS websites",
+ "upsideDownModeDescription": "Flip the status upside down. If the service is reachable, it is DOWN.",
+ "maxRedirectDescription": "Maximum number of redirects to follow. Set to 0 to disable redirects.",
+ "Upside Down Mode": "Upside Down Mode",
+ "Max. Redirects": "Max. Redirects",
+ "Accepted Status Codes": "Accepted Status Codes",
+ "Push URL": "Push URL",
+ "needPushEvery": "You should call this URL every {0} seconds.",
+ "pushOptionalParams": "Optional parameters: {0}",
+ "Save": "Save",
+ "Notifications": "Notifications",
+ "Not available, please setup.": "Not available, please setup.",
+ "Setup Notification": "Setup Notification",
+ "Light": "Light",
+ "Dark": "Dark",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
+ "Normal": "Normal",
+ "Bottom": "Bottom",
+ "None": "None",
+ "Timezone": "Timezone",
+ "Search Engine Visibility": "Search Engine Visibility",
+ "Allow indexing": "Allow indexing",
+ "Discourage search engines from indexing site": "Discourage search engines from indexing site",
+ "Change Password": "Change Password",
+ "Current Password": "Current Password",
+ "New Password": "New Password",
+ "Repeat New Password": "Repeat New Password",
+ "Update Password": "Update Password",
+ "Disable Auth": "Disable Auth",
+ "Enable Auth": "Enable Auth",
+ "disableauth.message1": "Are you sure want to disable authentication ?",
+ "disableauth.message2": "It is designed for scenarios where you intend to implement third-party authentication in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms.",
+ "Please use this option carefully!": "Please use this option carefully!",
+ "Logout": "Logout",
+ "Leave": "Leave",
+ "I understand, please disable": "I understand, please disable",
+ "Confirm": "Confirm",
+ "Yes": "Yes",
+ "No": "No",
+ "Username": "Username",
+ "Password": "Password",
+ "Remember me": "Remember me",
+ "Login": "Login",
+ "No Monitors, please": "No Monitors, please",
+ "add one": "add one",
+ "Notification Type": "Notification Type",
+ "Email": "Email",
+ "Test": "Test",
+ "Certificate Info": "Certificate Info",
+ "Resolver Server": "Resolver Server",
+ "Resource Record Type": "Resource Record Type",
+ "Last Result": "Last Result",
+ "Create your admin account": "Create your admin account",
+ "Repeat Password": "Repeat Password",
+ "Import Backup": "Import Backup",
+ "Export Backup": "Export Backup",
+ "Export": "Export",
+ "Import": "Import",
+ "respTime": "Resp. Time (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Default enabled",
+ "Apply on all existing monitors": "Apply on all existing monitors",
+ "Create": "Create",
+ "Clear Data": "Clear Data",
+ "Events": "Events",
+ "Heartbeats": "Heartbeats",
+ "Auto Get": "Auto Get",
+ "Schedule maintenance": "Schedule maintenance",
+ "Affected Monitors": "Affected Monitors",
+ "Pick Affected Monitors...": "Pick Affected Monitors…",
+ "Start of maintenance": "Start of maintenance",
+ "All Status Pages": "All Status Pages",
+ "Select status pages...": "Select status pages…",
+ "alertNoFile": "Please select a file to import.",
+ "alertWrongFileType": "Please select a JSON file.",
+ "Clear all statistics": "Clear all Statistics",
+ "Skip existing": "Skip existing",
+ "Overwrite": "Overwrite",
+ "Options": "Options",
+ "Keep both": "Keep both",
+ "Verify Token": "Verify Token",
+ "Setup 2FA": "Setup 2FA",
+ "Enable 2FA": "Enable 2FA",
+ "Disable 2FA": "Disable 2FA",
+ "2FA Settings": "2FA Settings",
+ "Two Factor Authentication": "Two Factor Authentication",
+ "Active": "Active",
+ "Inactive": "Inactive",
+ "Token": "Token",
+ "Show URI": "Show URI",
+ "Tags": "Tags",
+ "Add New Tag": "Add New Tag",
+ "Add New below or Select...": "Add New below or Select…",
+ "Tag with this name already exist.": "Tag with this name already exists.",
+ "Tag with this value already exist.": "Tag with this value already exists.",
+ "color": "Color",
+ "value (optional)": "value (optional)",
+ "Gray": "Gray",
+ "Red": "Red",
+ "Orange": "Orange",
+ "Green": "Green",
+ "Blue": "Blue",
+ "Indigo": "Indigo",
+ "Purple": "Purple",
+ "Pink": "Pink",
+ "Custom": "Custom",
+ "Search...": "Search…",
+ "Avg. Ping": "Avg. Ping",
+ "Avg. Response": "Avg. Response",
+ "Entry Page": "Entry Page",
+ "statusPageNothing": "Nothing here, please add a group or a monitor.",
+ "statusPageRefreshIn": "Refresh in: {0}",
+ "No Services": "No Services",
+ "All Systems Operational": "All Systems Operational",
+ "Partially Degraded Service": "Partially Degraded Service",
+ "Degraded Service": "Degraded Service",
+ "Add Group": "Add Group",
+ "Add a monitor": "Add a monitor",
+ "Edit Status Page": "Edit Status Page",
+ "Go to Dashboard": "Go to Dashboard",
+ "Status Page": "Status Page",
+ "Status Pages": "Status Pages",
+ "defaultNotificationName": "My {notification} Alert ({number})",
+ "here": "here",
+ "Required": "Required",
+ "Post URL": "Post URL",
+ "Content Type": "Content Type",
+ "webhookJsonDesc": "{0} is good for any modern HTTP servers such as Express.js",
+ "webhookFormDataDesc": "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}",
+ "webhookAdditionalHeadersTitle": "Additional Headers",
+ "webhookAdditionalHeadersDesc": "Sets additional headers sent with the webhook.",
+ "Webhook URL": "Webhook URL",
+ "Application Token": "Application Token",
+ "Server URL": "Server URL",
+ "Priority": "Priority",
+ "emojiCheatSheet": "Emoji cheat sheet: {0}",
+ "Read more": "Read more",
+ "appriseInstalled": "Apprise is installed.",
+ "appriseNotInstalled": "Apprise is not installed. {0}",
+ "Method": "Method",
+ "Body": "Body",
+ "Headers": "Headers",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "The request headers are not valid JSON: ",
+ "BodyInvalidFormat": "The request body is not valid JSON: ",
+ "Monitor History": "Monitor History",
+ "clearDataOlderThan": "Keep monitor history data for {0} days.",
+ "PasswordsDoNotMatch": "Passwords do not match.",
+ "records": "records",
+ "One record": "One record",
+ "steamApiKeyDescription": "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ",
+ "Current User": "Current User",
+ "topic": "Topic",
+ "topicExplanation": "MQTT topic to monitor",
+ "successMessage": "Success Message",
+ "successMessageExplanation": "MQTT message that will be considered as success",
+ "recent": "Recent",
+ "Done": "Done",
+ "Info": "Info",
+ "Security": "Security",
+ "Steam API Key": "Steam API Key",
+ "Shrink Database": "Shrink Database",
+ "Pick a RR-Type...": "Pick a RR-Type…",
+ "Pick Accepted Status Codes...": "Pick Accepted Status Codes…",
+ "Default": "Default",
+ "HTTP Options": "HTTP Options",
+ "Create Incident": "Create Incident",
+ "Title": "Title",
+ "Content": "Content",
+ "Style": "Style",
+ "info": "info",
+ "warning": "warning",
+ "danger": "danger",
+ "error": "error",
+ "critical": "critical",
+ "primary": "primary",
+ "light": "light",
+ "dark": "dark",
+ "Post": "Post",
+ "Please input title and content": "Please input title and content",
+ "Created": "Created",
+ "Last Updated": "Last Updated",
+ "Unpin": "Unpin",
+ "Switch to Light Theme": "Switch to Light Theme",
+ "Switch to Dark Theme": "Switch to Dark Theme",
+ "Show Tags": "Show Tags",
+ "Hide Tags": "Hide Tags",
+ "Description": "Description",
+ "No monitors available.": "No monitors available.",
+ "Add one": "Add one",
+ "No Monitors": "No Monitors",
+ "Untitled Group": "Untitled Group",
+ "Services": "Services",
+ "Discard": "Discard",
+ "Cancel": "Cancel",
+ "Powered by": "Powered by",
+ "shrinkDatabaseDescription": "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.",
+ "Customize": "Customize",
+ "Custom Footer": "Custom Footer",
+ "Custom CSS": "Custom CSS",
+ "deleteStatusPageMsg": "Are you sure want to delete this status page?",
+ "Proxies": "Proxies",
+ "default": "Default",
+ "enabled": "Enabled",
+ "setAsDefault": "Set As Default",
+ "deleteProxyMsg": "Are you sure want to delete this proxy for all monitors?",
+ "proxyDescription": "Proxies must be assigned to a monitor to function.",
+ "enableProxyDescription": "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.",
+ "setAsDefaultProxyDescription": "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.",
+ "Certificate Chain": "Certificate Chain",
+ "Valid": "Valid",
+ "Invalid": "Invalid",
+ "User": "User",
+ "Installed": "Installed",
+ "Not installed": "Not installed",
+ "Running": "Running",
+ "Not running": "Not running",
+ "Remove Token": "Remove Token",
+ "Start": "Start",
+ "Stop": "Stop",
+ "Add New Status Page": "Add New Status Page",
+ "Slug": "Slug",
+ "Accept characters:": "Accept characters:",
+ "startOrEndWithOnly": "Start or end with {0} only",
+ "No consecutive dashes": "No consecutive dashes",
+ "Next": "Next",
+ "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.",
+ "No Proxy": "No Proxy",
+ "Authentication": "Authentication",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "New Status Page",
+ "Page Not Found": "Page Not Found",
+ "Reverse Proxy": "Reverse Proxy",
+ "Backup": "Backup",
+ "About": "About",
+ "wayToGetCloudflaredURL": "(Download cloudflared from {0})",
+ "cloudflareWebsite": "Cloudflare Website",
+ "Message:": "Message:",
+ "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.",
+ "HTTP Headers": "HTTP Headers",
+ "Trust Proxy": "Trust Proxy",
+ "Other Software": "Other Software",
+ "For example: nginx, Apache and Traefik.": "For example: nginx, Apache and Traefik.",
+ "Please read": "Please read",
+ "Subject:": "Subject:",
+ "Valid To:": "Valid To:",
+ "Days Remaining:": "Days Remaining:",
+ "Issuer:": "Issuer:",
+ "Fingerprint:": "Fingerprint:",
+ "No status pages": "No status pages",
+ "Domain Name Expiry Notification": "Domain Name Expiry Notification",
+ "Proxy": "Proxy",
+ "Date Created": "Date Created",
+ "Footer Text": "Footer Text",
+ "Show Powered By": "Show Powered By",
+ "Domain Names": "Domain Names",
+ "signedInDisp": "Signed in as {0}",
+ "signedInDispDisabled": "Auth Disabled.",
+ "RadiusSecret": "Radius Secret",
+ "RadiusSecretDescription": "Shared Secret between client and server",
+ "RadiusCalledStationId": "Called Station Id",
+ "RadiusCalledStationIdDescription": "Identifier of the called device",
+ "RadiusCallingStationId": "Calling Station Id",
+ "RadiusCallingStationIdDescription": "Identifier of the calling device",
+ "Certificate Expiry Notification": "Certificate Expiry Notification",
+ "API Username": "API Username",
+ "API Key": "API Key",
+ "Show update if available": "Show update if available",
+ "Also check beta release": "Also check beta release",
+ "Using a Reverse Proxy?": "Using a Reverse Proxy?",
+ "Check how to config it for WebSocket": "Check how to config it for WebSocket",
+ "Steam Game Server": "Steam Game Server",
+ "Most likely causes:": "Most likely causes:",
+ "The resource is no longer available.": "The resource is no longer available.",
+ "There might be a typing error in the address.": "There might be a typing error in the address.",
+ "What you can try:": "What you can try:",
+ "Retype the address.": "Retype the address.",
+ "Go back to the previous page.": "Go back to the previous page.",
+ "Coming Soon": "Coming Soon",
+ "Connection String": "Connection String",
+ "Query": "Query",
+ "settingsCertificateExpiry": "TLS Certificate Expiry",
+ "certificationExpiryDescription": "HTTPS Monitors trigger notification when TLS certificate expires in:",
+ "Setup Docker Host": "Setup Docker Host",
+ "Connection Type": "Connection Type",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "Are you sure want to delete this docker host for all monitors?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Container",
+ "Container Name / ID": "Container Name / ID",
+ "Docker Host": "Docker Host",
+ "Docker Hosts": "Docker Hosts",
+ "Domain": "Domain",
+ "Workstation": "Workstation",
+ "Packet Size": "Packet Size",
+ "Bot Token": "Bot Token",
+ "wayToGetTelegramToken": "You can get a token from {0}.",
+ "Chat ID": "Chat ID",
+ "telegramMessageThreadID": "(Optional) Message Thread ID",
+ "telegramMessageThreadIDDescription": "Optional Unique identifier for the target message thread (topic) of the forum; for forum supergroups only",
+ "telegramSendSilently": "Send Silently",
+ "telegramSendSilentlyDescription": "Sends the message silently. Users will receive a notification with no sound.",
+ "telegramProtectContent": "Protect Forwarding/Saving",
+ "telegramProtectContentDescription": "If enabled, the bot messages in Telegram will be protected from forwarding and saving.",
+ "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID",
+ "wayToGetTelegramChatID": "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:",
+ "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE",
+ "chatIDNotFound": "Chat ID is not found; please send a message to this bot first",
+ "disableCloudflaredNoAuthMsg": "You are in No Auth mode, a password is not required.",
+ "trustProxyDescription": "Trust 'X-Forwarded-*' headers. If you want to get the correct client IP and your Uptime Kuma is behind a proxy such as Nginx or Apache, you should enable this.",
+ "wayToGetLineNotifyToken": "You can get an access token from {0}",
+ "Examples": "Examples",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "Long-Lived Access Token",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ",
+ "Notification Service": "Notification Service",
+ "default: notify all devices": "default: notify all devices",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.",
+ "Automations can optionally be triggered in Home Assistant:": "Automations can optionally be triggered in Home Assistant:",
+ "Trigger type:": "Trigger type:",
+ "Event type:": "Event type:",
+ "Event data:": "Event data:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Then choose an action, for example switch the scene to where an RGB light is red.",
+ "Frontend Version": "Frontend Version",
+ "Frontend Version do not match backend version!": "Frontend Version do not match backend version!",
+ "backupOutdatedWarning": "Deprecated: Since a lot of features were added and this backup feature is a bit unmaintained, it cannot generate or restore a complete backup.",
+ "backupRecommend": "Please backup the volume or the data folder (./data/) directly instead.",
+ "Optional": "Optional",
+ "or": "or",
+ "sameAsServerTimezone": "Same as Server Timezone",
+ "startDateTime": "Start Date/Time",
+ "endDateTime": "End Date/Time",
+ "cronExpression": "Cron Expression",
+ "cronSchedule": "Schedule: ",
+ "invalidCronExpression": "Invalid Cron Expression: {0}",
+ "recurringInterval": "Interval",
+ "Recurring": "Recurring",
+ "strategyManual": "Active/Inactive Manually",
+ "warningTimezone": "It is using the server's timezone",
+ "weekdayShortMon": "Mon",
+ "weekdayShortTue": "Tue",
+ "weekdayShortWed": "Wed",
+ "weekdayShortThu": "Thu",
+ "weekdayShortFri": "Fri",
+ "weekdayShortSat": "Sat",
+ "weekdayShortSun": "Sun",
+ "dayOfWeek": "Day of Week",
+ "dayOfMonth": "Day of Month",
+ "lastDay": "Last Day",
+ "lastDay1": "Last Day of Month",
+ "lastDay2": "2nd Last Day of Month",
+ "lastDay3": "3rd Last Day of Month",
+ "lastDay4": "4th Last Day of Month",
+ "No Maintenance": "No Maintenance",
+ "pauseMaintenanceMsg": "Are you sure want to pause?",
+ "maintenanceStatus-under-maintenance": "Under Maintenance",
+ "maintenanceStatus-inactive": "Inactive",
+ "maintenanceStatus-scheduled": "Scheduled",
+ "maintenanceStatus-ended": "Ended",
+ "maintenanceStatus-unknown": "Unknown",
+ "Display Timezone": "Display Timezone",
+ "Server Timezone": "Server Timezone",
+ "statusPageMaintenanceEndDate": "End",
+ "IconUrl": "Icon URL",
+ "Enable DNS Cache": "Enable DNS Cache",
+ "Enable": "Enable",
+ "Disable": "Disable",
+ "chromeExecutable": "Chrome/Chromium Executable",
+ "chromeExecutableAutoDetect": "Auto Detect",
+ "chromeExecutableDescription": "For Docker users, if Chromium is not yet installed, it may take a few minutes to install and display the test result. It takes 1GB of disk space.",
+ "dnsCacheDescription": "It may be not working in some IPv6 environments, disable it if you encounter any issues.",
+ "Single Maintenance Window": "Single Maintenance Window",
+ "Maintenance Time Window of a Day": "Maintenance Time Window of a Day",
+ "Effective Date Range": "Effective Date Range (Optional)",
+ "Schedule Maintenance": "Schedule Maintenance",
+ "Edit Maintenance": "Edit Maintenance",
+ "Date and Time": "Date and Time",
+ "DateTime Range": "DateTime Range",
+ "loadingError": "Cannot fetch the data, please try again later.",
+ "plugin": "Plugin | Plugins",
+ "install": "Install",
+ "installing": "Installing",
+ "uninstall": "Uninstall",
+ "uninstalling": "Uninstalling",
+ "confirmUninstallPlugin": "Are you sure want to uninstall this plugin?",
+ "notificationRegional": "Regional",
+ "Clone Monitor": "Clone Monitor",
+ "Clone": "Clone",
+ "cloneOf": "Clone of {0}",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "None / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignore TLS Error",
+ "From Email": "From Email",
+ "emailCustomSubject": "Custom Subject",
+ "To Email": "To Email",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> View Webhooks -> New Webhook",
+ "Bot Display Name": "Bot Display Name",
+ "Prefix Custom Message": "Prefix Custom Message",
+ "Hello @everyone is...": "Hello {'@'}everyone is…",
+ "wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.",
+ "wayToGetZohoCliqURL": "You can learn how to create a webhook URL {0}.",
+ "needSignalAPI": "You need to have a signal client with REST API.",
+ "wayToCheckSignalURL": "You can check this URL to view how to set one up:",
+ "Number": "Number",
+ "Recipients": "Recipients",
+ "Access Token": "Access Token",
+ "Channel access token": "Channel access token",
+ "Line Developers Console": "Line Developers Console",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "Basic Settings",
+ "User ID": "User ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.",
+ "Icon URL": "Icon URL",
+ "aboutIconURL": "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.",
+ "aboutMattermostChannelName": "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel",
+ "dataRetentionTimeError": "Retention period must be 0 or greater",
+ "infiniteRetention": "Set to 0 for infinite retention.",
+ "confirmDeleteTagMsg": "Are you sure you want to delete this tag? Monitors associated with this tag will not be deleted.",
+ "enableGRPCTls": "Allow to send gRPC request with TLS connection",
+ "grpcMethodDescription": "Method name is convert to cammelCase format such as sayHello, check, etc.",
+ "acceptedStatusCodesDescription": "Select status codes which are considered as a successful response.",
+ "deleteMonitorMsg": "Are you sure want to delete this monitor?",
+ "deleteMaintenanceMsg": "Are you sure want to delete this maintenance?",
+ "deleteNotificationMsg": "Are you sure want to delete this notification for all monitors?",
+ "dnsPortDescription": "DNS server port. Defaults to 53. You can change the port at any time.",
+ "resolverserverDescription": "Cloudflare is the default server. You can change the resolver server anytime.",
+ "rrtypeDescription": "Select the RR type you want to monitor",
+ "pauseMonitorMsg": "Are you sure want to pause?",
+ "enableDefaultNotificationDescription": "This notification will be enabled by default for new monitors. You can still disable the notification separately for each monitor.",
+ "clearEventsMsg": "Are you sure want to delete all events for this monitor?",
+ "clearHeartbeatsMsg": "Are you sure want to delete all heartbeats for this monitor?",
+ "confirmClearStatisticsMsg": "Are you sure you want to delete ALL statistics?",
+ "importHandleDescription": "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.",
+ "confirmImportMsg": "Are you sure you want to import the backup? Please verify you've selected the correct import option.",
+ "twoFAVerifyLabel": "Please enter your token to verify 2FA:",
+ "tokenValidSettingsMsg": "Token is valid! You can now save the 2FA settings.",
+ "confirmEnableTwoFAMsg": "Are you sure you want to enable 2FA?",
+ "confirmDisableTwoFAMsg": "Are you sure you want to disable 2FA?",
+ "recurringIntervalMessage": "Run once every day | Run once every {0} days",
+ "affectedMonitorsDescription": "Select monitors that are affected by current maintenance",
+ "affectedStatusPages": "Show this maintenance message on selected status pages",
+ "atLeastOneMonitor": "Select at least one affected monitor",
+ "passwordNotMatchMsg": "The repeat password does not match.",
+ "notificationDescription": "Notifications must be assigned to a monitor to function.",
+ "keywordDescription": "Search keyword in plain HTML or JSON response. The search is case-sensitive.",
+ "invertKeywordDescription": "Look for the keyword to be absent rather than present.",
+ "backupDescription": "You can backup all monitors and notifications into a JSON file.",
+ "backupDescription2": "Note: history and event data is not included.",
+ "backupDescription3": "Sensitive data such as notification tokens are included in the export file; please store export securely.",
+ "endpoint": "endpoint",
+ "octopushAPIKey": "\"API key\" from HTTP API credentials in control panel",
+ "octopushLogin": "\"Login\" from HTTP API credentials in control panel",
+ "promosmsLogin": "API Login Name",
+ "promosmsPassword": "API Password",
+ "pushoversounds pushover": "Pushover (default)",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Vibrate Only",
+ "pushoversounds none": "None (silent)",
+ "pushyAPIKey": "Secret API Key",
+ "pushyToken": "Device token",
+ "apprise": "Apprise (Support 50+ Notification services)",
+ "GoogleChat": "Google Chat (Google Workspace only)",
+ "wayToGetKookBotToken": "Create application and get your bot token at {0}",
+ "wayToGetKookGuildID": "Switch on 'Developer Mode' in Kook setting, and right click the guild to get its ID",
+ "Guild ID": "Guild ID",
+ "User Key": "User Key",
+ "Device": "Device",
+ "Message Title": "Message Title",
+ "Notification Sound": "Notification Sound",
+ "More info on:": "More info on: {0}",
+ "pushoverDesc1": "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.",
+ "pushoverDesc2": "If you want to send notifications to different devices, fill out Device field.",
+ "pushoverMessageTtl": "Message TTL (Seconds)",
+ "SMS Type": "SMS Type",
+ "octopushTypePremium": "Premium (Fast - recommended for alerting)",
+ "octopushTypeLowCost": "Low Cost (Slow - sometimes blocked by operator)",
+ "checkPrice": "Check {0} prices:",
+ "apiCredentials": "API credentials",
+ "octopushLegacyHint": "Do you use the legacy version of Octopush (2011-2020) or the new version?",
+ "Check octopush prices": "Check octopush prices {0}.",
+ "octopushPhoneNumber": "Phone number (intl format, eg : +33612345678) ",
+ "octopushSMSSender": "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Device ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Example: {0}",
+ "Read more:": "Read more: {0}",
+ "Status:": "Status: {0}",
+ "Strategy": "Strategy",
+ "Free Mobile User Identifier": "Free Mobile User Identifier",
+ "Free Mobile API Key": "Free Mobile API Key",
+ "Enable TLS": "Enable TLS",
+ "Proto Service Name": "Proto Service Name",
+ "Proto Method": "Proto Method",
+ "Proto Content": "Proto Content",
+ "Economy": "Economy",
+ "Lowcost": "Lowcost",
+ "high": "high",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API Docs ",
+ "Gateway Type": "Gateway Type",
+ "You can divide numbers with": "You can divide numbers with",
+ "Base URL": "Base URL",
+ "goAlertInfo": "GoAlert is a An open source application for on-call scheduling, automated escalations and notifications (like SMS or voice calls). Automatically engage the right person, the right way, and at the right time! {0}",
+ "goAlertIntegrationKeyInfo": "Get generic API integration key for the service in this format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" usually the value of token parameter of copied URL.",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "PhoneNumbers",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Sms template must contain parameters: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "Bark Group": "Bark Group",
+ "Bark Sound": "Bark Sound",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "For safety, must use secret key",
+ "Device Token": "Device Token",
+ "Platform": "Platform",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "High",
+ "Retry": "Retry",
+ "Topic": "Topic",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "Setup Proxy": "Setup Proxy",
+ "Proxy Protocol": "Proxy Protocol",
+ "Proxy Server": "Proxy Server",
+ "Proxy server has authentication": "Proxy server has authentication",
+ "promosmsTypeEco": "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.",
+ "promosmsTypeFlash": "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.",
+ "promosmsTypeFull": "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.",
+ "promosmsTypeSpeed": "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).",
+ "promosmsPhoneNumber": "Phone number (for Polish recipient You can skip area codes)",
+ "promosmsSMSSender": "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "promosmsAllowLongSMS": "Allow long SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "Homeserver URL (with http(s):// and optionally port)",
+ "Internal Room Id": "Internal Room ID",
+ "matrixDesc1": "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}",
+ "Channel Name": "Channel Name",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "Icon Emoji": "Icon Emoji",
+ "signalImportant": "IMPORTANT: You cannot mix groups and numbers in recipients!",
+ "aboutWebhooks": "More info about Webhooks on: {0}",
+ "aboutChannelName": "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel",
+ "aboutKumaURL": "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.",
+ "smtpDkimSettings": "DKIM Settings",
+ "smtpDkimDesc": "Please refer to the Nodemailer DKIM {0} for usage.",
+ "documentation": "documentation",
+ "smtpDkimDomain": "Domain Name",
+ "smtpDkimKeySelector": "Key Selector",
+ "smtpDkimPrivateKey": "Private Key",
+ "smtpDkimHashAlgo": "Hash Algorithm (Optional)",
+ "smtpDkimheaderFieldNames": "Header Keys to sign (Optional)",
+ "smtpDkimskipFields": "Header Keys not to sign (Optional)",
+ "wayToGetPagerDutyKey": "You can get this by going to Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Here you can search for \"Events API V2\". More info {0}",
+ "Integration Key": "Integration Key",
+ "Integration URL": "Integration URL",
+ "Auto resolve or acknowledged": "Auto resolve or acknowledged",
+ "do nothing": "do nothing",
+ "auto acknowledged": "auto acknowledged",
+ "auto resolve": "auto resolve",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "Environment",
+ "alertaApiKey": "API Key",
+ "alertaAlertState": "Alert State",
+ "alertaRecoverState": "Recover State",
+ "serwersmsAPIUser": "API Username (incl. webapi_ prefix)",
+ "serwersmsAPIPassword": "API Password",
+ "serwersmsPhoneNumber": "Phone number",
+ "serwersmsSenderName": "SMS Sender Name (registered via customer portal)",
+ "smseagleTo": "Phone number(s)",
+ "smseagleGroup": "Phonebook group name(s)",
+ "smseagleContact": "Phonebook contact name(s)",
+ "smseagleRecipientType": "Recipient type",
+ "smseagleRecipient": "Recipient(s) (multiple must be separated with comma)",
+ "smseagleToken": "API Access token",
+ "smseagleUrl": "Your SMSEagle device URL",
+ "smseagleEncoding": "Send as Unicode",
+ "smseaglePriority": "Message priority (0-9, default = 0)",
+ "Recipient Number": "Recipient Number",
+ "From Name/Number": "From Name/Number",
+ "Leave blank to use a shared sender number.": "Leave blank to use a shared sender number.",
+ "Octopush API Version": "Octopush API Version",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "ntfy Topic": "ntfy Topic",
+ "onebotHttpAddress": "OneBot HTTP Address",
+ "onebotMessageType": "OneBot Message Type",
+ "onebotGroupMessage": "Group",
+ "onebotPrivateMessage": "Private",
+ "onebotUserOrGroupId": "Group/User ID",
+ "onebotSafetyTips": "For safety, must set access token",
+ "PushDeer Key": "PushDeer Key",
+ "wayToGetClickSendSMSToken": "You can get API Username and API Key from {0} .",
+ "Custom Monitor Type": "Custom Monitor Type",
+ "Google Analytics ID": "Google Analytics ID",
+ "Edit Tag": "Edit Tag",
+ "Server Address": "Server Address",
+ "Learn More": "Learn More",
+ "Body Encoding": "Body Encoding",
+ "API Keys": "API Keys",
+ "Expiry": "Expiry",
+ "Expiry date": "Expiry date",
+ "Don't expire": "Don't expire",
+ "Continue": "Continue",
+ "Add Another": "Add Another",
+ "Key Added": "Key Added",
+ "apiKeyAddedMsg": "Your API key has been added. Please make a note of it as it will not be shown again.",
+ "Add API Key": "Add API Key",
+ "No API Keys": "No API Keys",
+ "apiKey-active": "Active",
+ "apiKey-expired": "Expired",
+ "apiKey-inactive": "Inactive",
+ "Expires": "Expires",
+ "disableAPIKeyMsg": "Are you sure you want to disable this API key?",
+ "deleteAPIKeyMsg": "Are you sure you want to delete this API key?",
+ "Generate": "Generate",
+ "pagertreeIntegrationUrl": "Integration URL",
+ "pagertreeUrgency": "Urgency",
+ "pagertreeSilent": "Silent",
+ "pagertreeLow": "Low",
+ "pagertreeMedium": "Medium",
+ "pagertreeHigh": "High",
+ "pagertreeCritical": "Critical",
+ "pagertreeResolve": "Auto Resolve",
+ "pagertreeDoNothing": "Do Nothing",
+ "wayToGetPagerTreeIntegrationURL": "After creating the Uptime Kuma integration in PagerTree, copy the Endpoint. See full details {0}",
+ "lunaseaTarget": "Target",
+ "lunaseaDeviceID": "Device ID",
+ "lunaseaUserID": "User ID",
+ "ntfyAuthenticationMethod": "Authentication Method",
+ "ntfyUsernameAndPassword": "Username and Password",
+ "twilioAccountSID": "Account SID",
+ "twilioAuthToken": "Auth Token",
+ "twilioFromNumber": "From Number",
+ "twilioToNumber": "To Number",
+ "Monitor Setting": "{0}'s Monitor Setting",
+ "Show Clickable Link": "Show Clickable Link",
+ "Show Clickable Link Description": "If checked everyone who have access to this status page can have access to monitor URL.",
+ "Open Badge Generator": "Open Badge Generator",
+ "Badge Generator": "{0}'s Badge Generator",
+ "Badge Type": "Badge Type",
+ "Badge Duration": "Badge Duration",
+ "Badge Label": "Badge Label",
+ "Badge Prefix": "Badge Prefix",
+ "Badge Suffix": "Badge Suffix",
+ "Badge Label Color": "Badge Label Color",
+ "Badge Color": "Badge Color",
+ "Badge Label Prefix": "Badge Label Prefix",
+ "Badge Label Suffix": "Badge Label Suffix",
+ "Badge Up Color": "Badge Up Color",
+ "Badge Down Color": "Badge Down Color",
+ "Badge Pending Color": "Badge Pending Color",
+ "Badge Maintenance Color": "Badge Maintenance Color",
+ "Badge Warn Color": "Badge Warn Color",
+ "Badge Warn Days": "Badge Warn Days",
+ "Badge Down Days": "Badge Down Days",
+ "Badge Style": "Badge Style",
+ "Badge value (For Testing only.)": "Badge value (For Testing only.)",
+ "Badge URL": "Badge URL",
+ "Group": "Group",
+ "Monitor Group": "Monitor Group",
+ "noGroupMonitorMsg": "Not Available. Create a Group Monitor First.",
+ "Close": "Close"
+}
diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json
new file mode 100644
index 000000000..ba68dad1c
--- /dev/null
+++ b/src/lang/es-ES.json
@@ -0,0 +1,757 @@
+{
+ "languageName": "Español",
+ "checkEverySecond": "Comprobar cada {0} segundos",
+ "retriesDescription": "Número máximo de intentos antes de que el servicio se marque como CAÍDO y una notificación sea enviada",
+ "ignoreTLSError": "Ignorar error TLS/SSL para sitios web HTTPS",
+ "upsideDownModeDescription": "Invertir el estado. Si el servicio es alcanzable, está CAÍDO.",
+ "maxRedirectDescription": "Número máximo de direcciones a seguir. Establecer a 0 para deshabilitar.",
+ "acceptedStatusCodesDescription": "Seleccionar los códigos de estado que se consideran como respuesta exitosa.",
+ "passwordNotMatchMsg": "La contraseña repetida no coincide.",
+ "notificationDescription": "Por favor asigna una notificación a el/los monitor(es) para hacerlos funcional(es).",
+ "keywordDescription": "Buscar palabra clave en HTML plano o respuesta JSON. La búsqueda es sensible a mayúsculas.",
+ "pauseDashboardHome": "Pausado",
+ "deleteMonitorMsg": "¿Seguro que quieres eliminar este monitor?",
+ "deleteNotificationMsg": "¿Seguro que quieres eliminar esta notificación para todos los monitores?",
+ "resolverserverDescription": "Cloudflare es el servidor por defecto, puedes cambiar el servidor de resolución en cualquier momento.",
+ "rrtypeDescription": "Selecciona el tipo de registro que quieres monitorizar",
+ "pauseMonitorMsg": "¿Seguro que quieres pausar?",
+ "Settings": "Ajustes",
+ "Dashboard": "Panel",
+ "New Update": "Nueva actualización",
+ "Language": "Idioma",
+ "Appearance": "Apariencia",
+ "Theme": "Tema",
+ "General": "General",
+ "Version": "Versión",
+ "Check Update On GitHub": "Comprobar actualizaciones en GitHub",
+ "List": "Lista",
+ "Add": "Añadir",
+ "Add New Monitor": "Añadir nuevo monitor",
+ "Quick Stats": "Estadísticas rápidas",
+ "Up": "Funcional",
+ "Down": "Caído",
+ "Pending": "Pendiente",
+ "Unknown": "Desconocido",
+ "Pause": "Pausar",
+ "Name": "Nombre",
+ "Status": "Estado",
+ "DateTime": "Fecha y hora",
+ "Message": "Mensaje",
+ "No important events": "No hay eventos importantes",
+ "Resume": "Reanudar",
+ "Edit": "Editar",
+ "Delete": "Eliminar",
+ "Current": "Actual",
+ "Uptime": "Tiempo activo",
+ "Cert Exp.": "Caducidad cert.",
+ "day": "día | días",
+ "-day": "-día",
+ "hour": "hora",
+ "-hour": "-hora",
+ "Response": "Respuesta",
+ "Ping": "Ping",
+ "Monitor Type": "Tipo de monitor",
+ "Keyword": "Palabra clave",
+ "Friendly Name": "Nombre sencillo",
+ "URL": "URL",
+ "Hostname": "Nombre del host",
+ "Port": "Puerto",
+ "Heartbeat Interval": "Intervalo de latido",
+ "Retries": "Reintentos",
+ "Advanced": "Avanzado",
+ "Upside Down Mode": "Modo invertido",
+ "Max. Redirects": "Redirecciones máximas",
+ "Accepted Status Codes": "Códigos de estado aceptados",
+ "Save": "Guardar",
+ "Notifications": "Notificaciones",
+ "Not available, please setup.": "No disponible, por favor configúralo.",
+ "Setup Notification": "Configurar notificación",
+ "Light": "Claro",
+ "Dark": "Oscuro",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Tema - Barra de intervalo de latido",
+ "Normal": "Normal",
+ "Bottom": "Abajo",
+ "None": "Ninguno",
+ "Timezone": "Zona horaria",
+ "Search Engine Visibility": "Visibilidad motor de búsqueda",
+ "Allow indexing": "Permitir indexación",
+ "Discourage search engines from indexing site": "Disuadir a los motores de búsqueda de indexar el sitio",
+ "Change Password": "Cambiar contraseña",
+ "Current Password": "Contraseña actual",
+ "New Password": "Nueva contraseña",
+ "Repeat New Password": "Repetir nueva contraseña",
+ "Update Password": "Actualizar contraseña",
+ "Disable Auth": "Deshabilitar autenticación",
+ "Enable Auth": "Habilitar autenticación",
+ "disableauth.message1": "Seguro que deseas deshabilitar la autenticación ?",
+ "disableauth.message2": "Es para quien implementa autenticación de terceros ante Uptime Kuma como por ejemplo Cloudflare Access.",
+ "Please use this option carefully!": "¡Utilice esta opción con cuidado!",
+ "Logout": "Cerrar sesión",
+ "Leave": "Salir",
+ "I understand, please disable": "Entiendo, por favor deshabilitar",
+ "Confirm": "Confirmar",
+ "Yes": "Sí",
+ "No": "No",
+ "Username": "Usuario",
+ "Password": "Contraseña",
+ "Remember me": "Recordarme",
+ "Login": "Acceso",
+ "No Monitors, please": "Sin monitores, por favor",
+ "add one": "añade uno",
+ "Notification Type": "Tipo de notificación",
+ "Email": "Email",
+ "Test": "Test",
+ "Certificate Info": "Información del certificado",
+ "Resolver Server": "Servidor de resolución",
+ "Resource Record Type": "Tipo de registro",
+ "Last Result": "Último resultado",
+ "Create your admin account": "Crea tu cuenta de administrador",
+ "Repeat Password": "Repetir contraseña",
+ "respTime": "Tiempo de resp. (ms)",
+ "notAvailableShort": "N/A",
+ "Create": "Crear",
+ "clearEventsMsg": "¿Estás seguro de que deseas eliminar todos los eventos de este monitor?",
+ "clearHeartbeatsMsg": "¿Estás seguro de que deseas eliminar todos los latidos de este monitor?",
+ "confirmClearStatisticsMsg": "¿Estás seguro de que deseas eliminar TODAS las estadísticas?",
+ "Clear Data": "Borrar datos",
+ "Events": "Eventos",
+ "Heartbeats": "Latidos",
+ "Auto Get": "Obtener automáticamente",
+ "enableDefaultNotificationDescription": "Para cada nuevo monitor, esta notificación estará habilitada de forma predeterminada. Aún puedes deshabilitar la notificación por separado para cada monitor.",
+ "Default enabled": "Habilitado por defecto",
+ "Also apply to existing monitors": "También se aplica a monitores existentes",
+ "Export": "Exportar",
+ "Import": "Importar",
+ "backupDescription": "Puedes hacer una copia de seguridad de todos los monitores y todas las notificaciones en un archivo JSON.",
+ "backupDescription2": "PD: el historial y los datos de eventos no están incluidos.",
+ "backupDescription3": "Los datos confidenciales, como los tokens de notificación, se incluyen en el archivo de exportación. Guárdalo con cuidado.",
+ "alertNoFile": "Selecciona un archivo para importar.",
+ "alertWrongFileType": "Selecciona un archivo JSON.",
+ "twoFAVerifyLabel": "Ingresa tu token para verificar que 2FA está funcionando:",
+ "tokenValidSettingsMsg": "¡El token es válido! Ahora puedes guardar la configuración de 2FA.",
+ "confirmEnableTwoFAMsg": "¿Estás seguro de que quieres habilitar 2FA?",
+ "confirmDisableTwoFAMsg": "¿Estás seguro de que quieres desactivar 2FA?",
+ "Apply on all existing monitors": "Aplicar en todos los monitores existentes",
+ "Verify Token": "Verificar token",
+ "Setup 2FA": "Configurar 2FA",
+ "Enable 2FA": "Habilitar 2FA",
+ "Disable 2FA": "Desactivar 2FA",
+ "2FA Settings": "Ajustes 2FA",
+ "Two Factor Authentication": "Autenticación de dos factores",
+ "Active": "Activo",
+ "Inactive": "Inactivo",
+ "Token": "Token",
+ "Show URI": "Mostrar URI",
+ "Clear all statistics": "Borrar todas las estadísticas",
+ "retryCheckEverySecond": "Reintentar cada {0} segundos",
+ "importHandleDescription": "Elige 'Omitir existente' si deseas omitir todos los monitores o notificaciones con el mismo nombre. 'Sobrescribir' eliminará todos los monitores y notificaciones existentes.",
+ "confirmImportMsg": "¿Estás seguro de importar la copia de seguridad? Asegúrate de haber seleccionado la opción de importación correcta.",
+ "Heartbeat Retry Interval": "Intervalo de reintento de latido",
+ "Import Backup": "Importar copia de seguridad",
+ "Export Backup": "Exportar copia de seguridad",
+ "Skip existing": "Omitir existente",
+ "Overwrite": "Sobrescribir",
+ "Options": "Opciones",
+ "Keep both": "Manténer ambos",
+ "Tags": "Etiquetas",
+ "Add New below or Select...": "Agregar nuevo a continuación o seleccionar…",
+ "Tag with this name already exist.": "Una etiqueta con este nombre ya existe.",
+ "Tag with this value already exist.": "Una etiqueta con este valor ya existe.",
+ "color": "Color",
+ "value (optional)": "valor (opcional)",
+ "Gray": "Gris",
+ "Red": "Rojo",
+ "Orange": "Naranja",
+ "Green": "Verde",
+ "Blue": "Azul",
+ "Indigo": "Índigo",
+ "Purple": "Morado",
+ "Pink": "Rosa",
+ "Search...": "Buscar…",
+ "Avg. Ping": "Ping promedio",
+ "Avg. Response": "Respuesta promedio",
+ "Entry Page": "Página de entrada",
+ "statusPageNothing": "No hay nada aquí, agrega un grupo o un monitor.",
+ "No Services": "Sin servicio",
+ "All Systems Operational": "Todos los sistemas están operativos",
+ "Partially Degraded Service": "Servicio parcialmente degradado",
+ "Degraded Service": "Servicio degradado",
+ "Add Group": "Agregar grupo",
+ "Add a monitor": "Agregar un monitor",
+ "Edit Status Page": "Editar página de estado",
+ "Go to Dashboard": "Ir al panel de control",
+ "Status Page": "Página de estado",
+ "Status Pages": "Páginas de estado",
+ "telegram": "Telegram",
+ "webhook": "Webhook",
+ "smtp": "Email (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Señal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Admite más de 50 servicios de notificación)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "Monitor History": "Historial de monitor",
+ "clearDataOlderThan": "Mantener los datos del historial del monitor durante {0} días.",
+ "records": "registros",
+ "One record": "Un registro",
+ "steamApiKeyDescription": "Para monitorear un servidor de juegos de Steam, necesitas una clave Steam Web-API. Puedes registrar tu clave API aquí: ",
+ "Custom Monitor Type": "Monitor Tipo Personalizado",
+ "Primary Base URL": "URL Base Primaria",
+ "Passive Monitor Type": "Monitor Tipo Pasivo",
+ "pushOptionalParams": "Parámetros opcionales: {0}",
+ "Schedule maintenance": "Programar mantenimiento",
+ "Pick Affected Monitors...": "Seleccionar Monitores Afectados…",
+ "Start of maintenance": "Inicio del mantenimiento",
+ "All Status Pages": "Todas las Páginas de Estado",
+ "Select status pages...": "Seleccionar páginas de estado…",
+ "Style": "Estilo",
+ "info": "información",
+ "warning": "advertencia",
+ "danger": "peligro",
+ "critical": "crítico",
+ "primary": "primario",
+ "Content": "Contenido",
+ "recent": "Reciente",
+ "Done": "Terminado",
+ "Create Incident": "Crear Incidente",
+ "Title": "Título",
+ "Info": "Información",
+ "Security": "Seguridad",
+ "Current User": "Usuario Actual",
+ "topic": "Asunto",
+ "Shrink Database": "Reducir Base de Datos",
+ "dark": "oscuro",
+ "light": "claro",
+ "Last Updated": "Última Actualización",
+ "Show Tags": "Mostrar Etiquetas",
+ "Switch to Light Theme": "Cambiar a Tema Claro",
+ "Add one": "Añadir uno",
+ "Description": "Descripción",
+ "Cancel": "Cancelar",
+ "No Monitors": "Sin Monitores",
+ "Untitled Group": "Grupo sin título",
+ "Services": "Servicios",
+ "Discard": "Descartar",
+ "Add New Status Page": "Añadir Nueva Página de Estado",
+ "Start": "Iniciar",
+ "Stop": "Parar",
+ "Remove Token": "Eliminar Token",
+ "Powered by": "Potenciado por",
+ "Customize": "Personalizar",
+ "Custom Footer": "Pie Personalizado",
+ "Custom CSS": "CSS Personalizado",
+ "Backup": "Respaldo",
+ "Go back to the previous page.": "Volver a la página anterior.",
+ "Query": "Consulta",
+ "Examples": "Ejemplos",
+ "weekdayShortMon": "Lun",
+ "weekdayShortWed": "Mie",
+ "weekdayShortSat": "Sab",
+ "Ignore TLS Error": "Ignorar Error TLS",
+ "secureOptionNone": "Ninguno / STARTTLS (25, 587)",
+ "Schedule Maintenance": "Programar Mantenimiento",
+ "Date and Time": "Fecha y Hora",
+ "Enable": "Habilitar",
+ "Disable": "Deshabilitar",
+ "maintenanceStatus-inactive": "Inactivo",
+ "maintenanceStatus-scheduled": "Programado",
+ "maintenanceStatus-unknown": "Desconocido",
+ "Display Timezone": "Mostrar Zona Horaria",
+ "Server Timezone": "Servidor de Zona Horaria",
+ "statusPageMaintenanceEndDate": "Finaliza",
+ "Enable DNS Cache": "Habilitar Cache DNS",
+ "No Maintenance": "Sin Mantenimiento",
+ "weekdayShortSun": "Dom",
+ "dayOfWeek": "Día de la Semana",
+ "dayOfMonth": "Día del Mes",
+ "lastDay": "Último día",
+ "lastDay1": "Último Día del Mes",
+ "pauseMaintenanceMsg": "¿Seguro que quiere pausar?",
+ "maintenanceStatus-under-maintenance": "En Mantenimiento",
+ "DateTime Range": "Rango de Fecha y Hora",
+ "infiniteRetention": "Poner a 0 para retención infinita.",
+ "confirmDeleteTagMsg": "¿Estas seguro que quieres eliminar esta etiqueta? Los monitores asociados a esta etiqueta no serán eliminados.",
+ "Example:": "Ejemplo: {0}",
+ "Strategy": "Estrategia",
+ "Read more:": "Leer más: {0}",
+ "onebotGroupMessage": "Grupo",
+ "Affected Monitors": "Monitores Afectados",
+ "Custom": "Personalizado",
+ "Headers": "Encabezados",
+ "PhoneNumbers": "Números de Teléfono",
+ "No monitors available.": "Sin monitores disponibles.",
+ "error": "error",
+ "deleteProxyMsg": "¿Seguro que quieres eliminar este proxy para todos los monitores?",
+ "Hide Tags": "Ocultar Etiquetas",
+ "Created": "Creado",
+ "Switch to Dark Theme": "Cambiar a Tema Oscuro",
+ "More info on:": "Más información en: {0}",
+ "weekdayShortTue": "Mar",
+ "PasswordsDoNotMatch": "Las contraseñas no coinciden.",
+ "statusMaintenance": "Mantenimiento",
+ "Maintenance": "Mantenimiento",
+ "General Monitor Type": "Monitor Tipo General",
+ "Specific Monitor Type": "Monitor Tipo Específico",
+ "Monitor": "Monitor | Monitores",
+ "Resend Notification if Down X times consecutively": "Reenviar Notificación si Caído X veces consecutivamente",
+ "resendEveryXTimes": "Reenviar cada {0} veces",
+ "resendDisabled": "Reenvío deshabilitado",
+ "needPushEvery": "Debe llamar a esta URL cada {0} segundos.",
+ "here": "aquí",
+ "Content Type": "Tipo de Contenido",
+ "Required": "Requerido",
+ "defaultNotificationName": "Mi {notification} Alerta ({number})",
+ "Server URL": "URL del servidor",
+ "Priority": "Prioridad",
+ "Read more": "Leer más",
+ "Body": "Cuerpo",
+ "webhookAdditionalHeadersTitle": "Encabezados Adicionales",
+ "Method": "Método",
+ "Default": "Predeterminado",
+ "uninstalling": "Desinstalando",
+ "install": "Instalar",
+ "installing": "Instalando",
+ "uninstall": "Desinstalar",
+ "confirmUninstallPlugin": "¿Estas seguro que quieres desinstalar este complemento?",
+ "Recipients": "Destinatarios",
+ "User ID": "ID de Usuario",
+ "deleteMaintenanceMsg": "¿Seguro que quieres eliminar este mantenimiento?",
+ "promosmsLogin": "Nombre de inicio de sesión de la API",
+ "SMS Type": "Tipo de SMS",
+ "Device": "Dispositivo",
+ "Message Title": "Título del Mensaje",
+ "Notification Sound": "Sonido de Notificación",
+ "documentation": "documentación",
+ "onebotUserOrGroupId": "Grupo/ID de Usuario",
+ "Game": "Juego",
+ "or": "ó",
+ "Status:": "Estado: {0}",
+ "Help": "Ayuda",
+ "HTTP Options": "Opciones HTTP",
+ "weekdayShortThu": "Jue",
+ "weekdayShortFri": "Vie",
+ "maintenanceStatus-ended": "Finalizado",
+ "BodyInvalidFormat": "El cuerpo de la solicitud no es JSON válido: ",
+ "topicExplanation": "Tema MQTT para monitorear",
+ "successMessageExplanation": "Mensaje MQTT que será considerado como éxito",
+ "Steam API Key": "API Key de Steam",
+ "Please input title and content": "Por favor introduzca título y contenido",
+ "Footer Text": "Texto del Pié",
+ "Show Powered By": "Mostrar Potenciado Por",
+ "Domain Names": "Nombres de Dominio",
+ "signedInDisp": "Iniciada sesión como {0}",
+ "RadiusSecretDescription": "Secreto Compartido entre cliente y servidor",
+ "RadiusCalledStationId": "Id de la Estación Llamada",
+ "RadiusCalledStationIdDescription": "Identificador del dispositivo llamado",
+ "RadiusCallingStationId": "Id de Estación Llamante",
+ "Certificate Expiry Notification": "Notificación de Caducidad del Certificado",
+ "API Username": "Nombre Usuario API",
+ "API Key": "Clave API",
+ "Show update if available": "Mostrar actualización si está disponible",
+ "Also check beta release": "Comprobar también lanzamientos beta",
+ "Steam Game Server": "Servidor de Juegos de Steam",
+ "Most likely causes:": "Las causas más probables:",
+ "There might be a typing error in the address.": "Debe haber un error de escritura en la dirección.",
+ "What you can try:": "Lo que puedes intentar:",
+ "Retype the address.": "Reescriba la dirección.",
+ "Coming Soon": "Próximamente",
+ "Connection String": "Cadena de Conexión",
+ "settingsCertificateExpiry": "Caducidad del certificado TLS",
+ "certificationExpiryDescription": "Los monitores HTTPS activan una notificación cuando el certificado TLS caduca en:",
+ "Setup Docker Host": "Configurar Host de Docker",
+ "Connection Type": "Tipo de Conexión",
+ "Docker Daemon": "Demonio Docker",
+ "deleteDockerHostMsg": "¿Estas seguro que quieres eliminar este host de docker para todos los monitores?",
+ "Date Created": "Fecha de Creación",
+ "signedInDispDisabled": "Autenticación Deshabilitada.",
+ "RadiusCallingStationIdDescription": "Identificador del dispositivo llamante",
+ "Using a Reverse Proxy?": "¿Usando un Proxy Inverso?",
+ "Check how to config it for WebSocket": "Compruebe cómo configurarlo para WebSocket",
+ "The resource is no longer available.": "El recurso ya no está disponible.",
+ "Push URL": "URL Push",
+ "Webhook URL": "URL Webhook",
+ "Application Token": "Token de Aplicación",
+ "appriseNotInstalled": "Apprise no está instalado. {0}",
+ "PushUrl": "URL Push",
+ "HeadersInvalidFormat": "Los encabezados de solicitud no son JSON válido: ",
+ "Post URL": "URL Post",
+ "emojiCheatSheet": "Hoja de trucos Emoji: {0}",
+ "webhookJsonDesc": "{0} es bueno para cualquier servidor HTTP moderno como Express.js",
+ "webhookFormDataDesc": "{multipart} es bueno para PHP. El JSON deberá analizarse con {decodeFunction}",
+ "webhookAdditionalHeadersDesc": "Establece encabezados adicionales enviados con el webhook.",
+ "appriseInstalled": "Apprise está instalado.",
+ "successMessage": "Mensaje de éxito",
+ "Pick Accepted Status Codes...": "Seleccione Códigos de Estado Aceptados…",
+ "Post": "Post",
+ "shrinkDatabaseDescription": "Activar ASPIRADORA para SQLite. Si tu base de datos fue creada después 1.10.0, AUTO_ASPIRADORA ya está habilitada y esta acción no es necesaria.",
+ "deleteStatusPageMsg": "¿Estas seguro que quieres eliminar esta página de estado?",
+ "default": "Predeterminado",
+ "enabled": "Habilitado",
+ "setAsDefault": "Establecer Por Defecto",
+ "proxyDescription": "Proxies deben ser asignados a un monitor para que funcionen.",
+ "warningTimezone": "Está usando la zona horaria del servidor",
+ "trustProxyDescription": "Confiar en los encabezados 'X-Forwarded-*'. Si desea obtener la IP de cliente correcta y su Uptime Kuma está detrás de un proxy como Nginx o Apache, debe habilitar esto.",
+ "enableProxyDescription": "Este proxy no afectará las solicitudes de monitoreo hasta que se active. Puede controlar deshabilitar temporalmente el proxy de todos los monitores por estado de activación.",
+ "setAsDefaultProxyDescription": "Este proxy estará habilitado de forma predeterminada para los nuevos monitores. Todavía puede deshabilitar el proxy por separado para cada monitor.",
+ "Certificate Chain": "Cadena de certificado",
+ "Valid": "Válido",
+ "Invalid": "Inválido",
+ "User": "Usuario",
+ "Installed": "Instalado",
+ "Not installed": "No instalado",
+ "Running": "Funcionando",
+ "Not running": "No funcionando",
+ "Slug": "Slug",
+ "Accept characters:": "Aceptar caracteres:",
+ "Proxies": "Proxys",
+ "startOrEndWithOnly": "Empezar o terminar sólo con {0}",
+ "No consecutive dashes": "Sin guiones consecutivos",
+ "Next": "Siguiente",
+ "The slug is already taken. Please choose another slug.": "Este slug ya está en uso. Por favor, elige otro slug.",
+ "No Proxy": "Sin Proxy",
+ "Authentication": "Autenticación",
+ "HTTP Basic Auth": "Autenticación básica HTTP",
+ "New Status Page": "Nueva Página de Estado",
+ "Page Not Found": "Página No Encontrada",
+ "Reverse Proxy": "Proxy Inverso",
+ "About": "Acerca de",
+ "wayToGetCloudflaredURL": "(Descargar cloudflared de {0})",
+ "cloudflareWebsite": "Web de Cloudflare",
+ "Message:": "Mensaje:",
+ "Don't know how to get the token? Please read the guide:": "No sabes como obtener el token? Por favor, lee la guía:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La conexión actual puede perderse si actualmente se está conectando a través del Tunel Cloudflare. ¿Seguro que quieres detenerlo? Escriba su contraseña actual para confirmarlo.",
+ "HTTP Headers": "Encabezados HTTP",
+ "Trust Proxy": "Proxy de Confianza",
+ "Other Software": "Otro Software",
+ "For example: nginx, Apache and Traefik.": "Por ejemplo: nginx, Apache y Traefik.",
+ "Please read": "Por favor lee",
+ "Subject:": "Asunto:",
+ "Valid To:": "Válido Para:",
+ "Days Remaining:": "Días Restantes:",
+ "Issuer:": "Emisor:",
+ "Fingerprint:": "Huella:",
+ "No status pages": "Sin páginas de estado",
+ "Domain Name Expiry Notification": "Notificación de Caducidad de Nombre de Dominio",
+ "Proxy": "Proxy",
+ "RadiusSecret": "Secreto de Radius",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Contenedor de Docker",
+ "Container Name / ID": "Nombre / ID de Contenedor",
+ "Docker Host": "Host Docker",
+ "Docker Hosts": "Hosts Docker",
+ "Domain": "Dominio",
+ "Workstation": "Puesto de Trabajo",
+ "Packet Size": "Tamaño del Paquete",
+ "ZohoCliq": "ZohoCliq",
+ "Bot Token": "Token de Bot",
+ "wayToGetTelegramToken": "Puedes conseguir un token desde {0}.",
+ "Chat ID": "ID de Chat",
+ "supportTelegramChatID": "Chat Directo de Soporte / Grupo / ID de Chat del Canal",
+ "wayToGetTelegramChatID": "Puedes obtener tu ID de chat enviando un mensaje al bot y visitando esta URL para ver el chat_id:",
+ "YOUR BOT TOKEN HERE": "TU TOKEN DE BOT AQUÍ",
+ "chatIDNotFound": "ID de Chat no encontrada; por favor, primero envía un mensaje a este bot",
+ "disableCloudflaredNoAuthMsg": "Estas en modo No Autenticado, no es necesaria una contraseña.",
+ "wayToGetLineNotifyToken": "Puede obtener un token de acceso desde {0}",
+ "Home Assistant URL": "URL de Asistente de Hogar",
+ "Long-Lived Access Token": "Token de acceso de larga duración",
+ "Notification Service": "Servicio de Notificaciones",
+ "default: notify all devices": "predeterminado: notificar todos los dispositivos",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Puede encontrar una lista de Servicios de notificación en Asistente de Hogar en \"Herramientas para desarrolladores > Servicios\", busque \"notificación\" para encontrar el nombre de su dispositivo/teléfono.",
+ "Automations can optionally be triggered in Home Assistant:": "Las automatizaciones se pueden activar opcionalmente en Asistente de Hogar:",
+ "Trigger type:": "Tipo de disparador:",
+ "Event type:": "Tipo de Evento:",
+ "Event data:": "Datos del Evento:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Luego elija una acción, por ejemplo, cambie la escena a donde una luz RGB es roja.",
+ "Frontend Version": "Versión de Interfaz",
+ "Frontend Version do not match backend version!": "La Versión de Interfaz no coincide con la versión backend!",
+ "backupRecommend": "Por favor, haz copia de seguridad del volumen o el archivo de datos (./data/) directamente en su lugar.",
+ "recurringInterval": "Intervalo",
+ "Recurring": "Periódico",
+ "strategyManual": "Activo/Inactivo Manualmente",
+ "lastDay2": "Penúltimo Día del Mes",
+ "lastDay3": "Antepenúltimo día del mes",
+ "lastDay4": "Trasantepenúltimo Día del Mes",
+ "IconUrl": "URL de Icono",
+ "dnsCacheDescription": "Es posible que no funcione en algunos entornos IPv6; desactívelo si encuentra algún problema.",
+ "Single Maintenance Window": "Ventana de Mantenimiento Único",
+ "secureOptionTLS": "TLS (465)",
+ "aboutMattermostChannelName": "Puedes sobreescribir el canal por defecto en el cual el Webhook publica introduciendo el nombre del canal en el campo \"Nombre del Canal\". Esto tiene que estar habilitado en la configuración de Mattermost Webhook. Ejemplo: #otro-canal",
+ "dataRetentionTimeError": "El periodo de retención debe ser 0 o mayor",
+ "Enable TLS": "Habilita TLS",
+ "Lowcost": "Bajo coste",
+ "You can divide numbers with": "Puedes dividir números con",
+ "Base URL": "URL Base",
+ "Proto Service Name": "Nombre de Servicio Proto",
+ "Proto Method": "Método Proto",
+ "Proto Content": "Contenido Proto",
+ "Economy": "Económico",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Platform": "Plataforma",
+ "onebotPrivateMessage": "Privado",
+ "onebotMessageType": "Tipo de Mensaje OneBot",
+ "smseagleRecipientType": "Tipo de destinatario",
+ "smseagleRecipient": "Destinatario(s) (multiples deben separarse por comas)",
+ "smseagleEncoding": "Enviar como Unicode",
+ "smseaglePriority": "Prioridad del mensaje (0-9, predeterminado = 0)",
+ "stackfield": "Stackfield",
+ "Leave blank to use a shared sender number.": "Dejar en blanco para usar un número de remitente compartido.",
+ "Octopush API Version": "Versión API Octopush",
+ "From Name/Number": "De Nombre/Número",
+ "Recipient Number": "Número de Destinatario",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "El token de acceso de larga duración se puede crear haciendo clic en el nombre de su perfil (abajo a la izquierda) y desplazándose hasta la parte inferior y luego haciendo clic en Crear token. ",
+ "backupOutdatedWarning": "Obsoleto: dado que se agregaron muchas funciones y esta función de copia de seguridad no se mantiene desde hace un tiempo, no puede generar ni restaurar una copia de seguridad completa.",
+ "Optional": "Opcional",
+ "loadingError": "No se pueden obtener los datos, inténtelo de nuevo más tarde.",
+ "pushoverDesc2": "Si quieres enviar notificaciones a diferentes dispositivos, rellena el campo Dispositivo.",
+ "octopushLegacyHint": "Utilizas la versión anterior de Octopush (2011-2020) o la nueva versión?",
+ "Sms template must contain parameters: ": "La plantilla SMS debería contener parámetros: ",
+ "For safety, must use secret key": "Por seguridad, deberías usar key secreta",
+ "signalImportant": "IMPORTANTE: No puedes mezclar grupos y números en destinatarios!",
+ "aboutWebhooks": "Más información sobre Webhooks en: {0}",
+ "smtpDkimHashAlgo": "Algoritmo Hash (Opcional)",
+ "promosmsPhoneNumber": "Número de teléfono (para destinatarios Polacos puedes omitir los códigos de área)",
+ "promosmsTypeFlash": "SMS FLASH - Mensaje se mostrará automáticamente en el dispositivo del destinatario. Limitado sólo a destinatarios Polacos.",
+ "promosmsSMSSender": "Nombre de Remitente SMS: Nombre pre-registrado o uno de los predeterminados: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "matrixDesc1": "Puedes encontrar la ID de sala interna mirando en la sección avanzado de los ajustes de sala en tu cliente Matrix. Debería ser algo como !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Es altamente recomendable crear un nuevo usuario y no usar el token de acceso propio de tu usuario porque otorgaría acceso completo a tu cuenta y todas las salas que hayas entrado. En su lugar, crea un usuario nuevo e invítalo a la sala donde quieres recibir las notificaciones. Puedes obtener el token de acceso ejecutando {0}",
+ "plugin": "Complemento | Complementos",
+ "From Email": "Desde el Email",
+ "emailCustomSubject": "Asunto Personalizado",
+ "To Email": "Al Email",
+ "smtpCC": "CC",
+ "smtpBCC": "CCO",
+ "Discord Webhook URL": "URL Webhook de Discord",
+ "wayToGetDiscordURL": "Puede obtener esto yendo a Configuración del servidor -> Integraciones -> Ver Webhooks -> Crear Webhook",
+ "Bot Display Name": "Nombre para mostrar del Bot",
+ "Hello @everyone is...": "Hola {'@'}todos están…",
+ "wayToGetTeamsURL": "Puedes aprender cómo crear una URL webhook {0}.",
+ "wayToGetZohoCliqURL": "Puedes aprender cómo crear una URL webhook {0}.",
+ "needSignalAPI": "Necesitas tener un cliente de señal con API REST.",
+ "wayToCheckSignalURL": "Puedes revisar esta URL para ver cómo configurar uno:",
+ "Number": "Número",
+ "Access Token": "Token de Acceso",
+ "Channel access token": "Token de acceso al canal",
+ "Line Developers Console": "Consola de Desarrolladores de Line",
+ "lineDevConsoleTo": "Consola de Desarrolladores de Line - {0}",
+ "Basic Settings": "Configuración Básica",
+ "Messaging API": "API de Mensajería",
+ "wayToGetLineChannelToken": "Primero accede al {0}, crea un proveedor y un canal (API de Mensajería), entonces puedes obtener el token de acceso al cana y el ID de usuario de los elementos de menú anteriormente mencionados.",
+ "Icon URL": "URL de Icono",
+ "aboutIconURL": "Puede proporcionar un enlace a una imagen en \"URL de icono\" para anular la imagen de perfil predeterminada. No se utilizará si se establece Icono Emoji.",
+ "enableGRPCTls": "Permite enviar solicitudes gRPC con conexión TLS",
+ "grpcMethodDescription": "Nombre del método es convertido a formato cammelCase tal como digoHola, verificandoTodo, etc.",
+ "dnsPortDescription": "Puerto servidor DNS. Por defecto al 53. Puedes cambiar el puerto en cualquier momento.",
+ "recurringIntervalMessage": "Ejecutar una vez al día | Ejecutar una vez cada {0} días",
+ "affectedMonitorsDescription": "Selecciona los monitores que se ven afectados por el mantenimiento actual",
+ "affectedStatusPages": "Muestra este mensaje de mantenimiento en las páginas de estado seleccionadas",
+ "atLeastOneMonitor": "Selecciona al menos un monitor afectado",
+ "endpoint": "punto final",
+ "promosmsPassword": "Contraseña API",
+ "pushoversounds pushover": "Pushover (predeterminado)",
+ "pushoversounds bike": "Bicicleta",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Caja Registradora",
+ "pushoversounds classical": "Clásica",
+ "pushoversounds cosmic": "Cósmico",
+ "pushoversounds falling": "Descendente",
+ "pushoversounds gamelan": "Gamelán",
+ "pushoversounds incoming": "Entrante",
+ "pushoversounds intermission": "Intermedio",
+ "pushoversounds magic": "Mágico",
+ "pushoversounds mechanical": "Mecánica",
+ "pushoversounds pianobar": "Bar Piano",
+ "pushoversounds siren": "Sirena",
+ "pushoversounds spacealarm": "Alarma Espacial",
+ "pushoversounds tugboat": "Remolcador",
+ "pushoversounds alien": "Alarma Alienígena (largo)",
+ "pushoversounds climb": "Escalada (largo)",
+ "pushoversounds persistent": "Persistente (largo)",
+ "pushoversounds echo": "Pushover Eco (largo)",
+ "pushoversounds updown": "Arriba Abajo (largo)",
+ "pushoversounds vibrate": "Sólo Vibración",
+ "pushoversounds none": "Ninguno (silencio)",
+ "pushyAPIKey": "Key de Api Secreta",
+ "pushyToken": "Token de Dispositivo",
+ "PushByTechulus": "Push con Techulus",
+ "clicksendsms": "SMS con ClickSend",
+ "GoogleChat": "Chat de Google (sólo Google Workspace)",
+ "Kook": "Kook",
+ "wayToGetKookBotToken": "Crea aplicación y obtén tu token de bot en {0}",
+ "wayToGetKookGuildID": "Activa 'Modo Desarrollador' en los ajustes de Kook, y haz click derecho en la unión para obtener su ID",
+ "Guild ID": "ID de Gremio",
+ "User Key": "Key de Usuario",
+ "octopushTypePremium": "Premium (Rápido - recomendado para alertas)",
+ "octopushTypeLowCost": "Bajo Coste (Lento - algunas veces bloqueado por operador)",
+ "checkPrice": "Consultar {0} precios:",
+ "apiCredentials": "Credenciales de API",
+ "Check octopush prices": "Consulta los precios de octopush {0}.",
+ "octopushPhoneNumber": "Número de teléfono (en formato internacional, ejemplo: +33612345678) ",
+ "octopushSMSSender": "Nombre de Remitente del SMS: 3-11 caracteres alfanuméricos y espacio (a-zA-Z0-9)",
+ "LunaSea Device ID": "ID Dispositivo LunaSea",
+ "goAlert": "GoAlert",
+ "pushoverDesc1": "La prioridad Emergencia (2) tiene predeterminado un tiempo muerto entre reintentos de 30 segundos y expirará después de 1 hora.",
+ "AccessKeyId": "ID de Key de Acceso",
+ "SecretAccessKey": "Secrreto de Key de Acceso",
+ "TemplateCode": "Código de Plantilla",
+ "Bark Group": "Grupo de Bark",
+ "Bark Sound": "Sonido de Bark",
+ "SecretKey": "Clave Secreta",
+ "Huawei": "Huawei",
+ "Retry": "Reintentar",
+ "Proxy Server": "Servidor Proxy",
+ "Proxy Protocol": "Protocolo Proxy",
+ "Setup Proxy": "Configurar Proxy",
+ "Proxy server has authentication": "El servidor Proxy tiene autenticación",
+ "promosmsAllowLongSMS": "Permitir SMS largo",
+ "Uptime Kuma URL": "URL de Uptime Kuma",
+ "Icon Emoji": "Icono Emoji",
+ "aboutKumaURL": "Si dejas vacío el campo URL Uptime Kuma, predeterminará la página GitHub del Proyecto.",
+ "smtpDkimSettings": "Ajustes DKIM",
+ "smtpDkimDomain": "Nombre de Dominio",
+ "smtpDkimKeySelector": "Selector de Clave",
+ "smtpDkimPrivateKey": "Clave Privada",
+ "Integration Key": "Key de Integración",
+ "Integration URL": "URL de Integración",
+ "Device Token": "Token de Dispositivo",
+ "WeCom Bot Key": "Clave de Bot WeCom",
+ "promosmsTypeEco": "SMS ECO - barato pero lento y a veces sobrecargado. Limitado sólo a destinatarios Polacos.",
+ "promosmsTypeSpeed": "SMS SPEED - La mayor prioridad en el sistema. Muy rápido y confiable pero costoso (alrededor del doble del precio de SMS FULL).",
+ "matrixHomeserverURL": "URL Servidor Casero (con http(s):// y opcionalmente el puerto)",
+ "Internal Room Id": "ID de Sala Interna",
+ "Channel Name": "Nombre del canal",
+ "aboutChannelName": "Introduce el nombre del canal en {0} campo Nombre del Canal si quieres evitar el canal Webhook. Ejemplo: #otro-canal",
+ "smtpDkimDesc": "Por favor, remitir a DKIM Nodemailer {0} para descubrir como se usa.",
+ "smtpDkimheaderFieldNames": "Keys de encabezado para firmar (Opcional)",
+ "smtpDkimskipFields": "Keys de encabezado para no firmar (Opcional)",
+ "Auto resolve or acknowledged": "Resolución automática o reconocida",
+ "promosmsTypeFull": "SMS FULL - Nivel Premium de SMS, puedes usar tu Nombre de Remitente (Tienes que registrarlo primero). Confiable para alertas.",
+ "do nothing": "no hacer nada",
+ "alerta": "Alerta",
+ "serwersmsAPIPassword": "Contraseña de API",
+ "serwersmsPhoneNumber": "Número de teléfono",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "Número(s) de teléfono",
+ "serwersmsSenderName": "Nombre de remitente de SMS (registrado a través del portal de cliente)",
+ "auto resolve": "resolución automática",
+ "auto acknowledged": "Auto reconocida",
+ "alertaEnvironment": "Entorno",
+ "PushDeer Key": "Key de PushDeer",
+ "onebotSafetyTips": "Por seguridad, deberías colocara el token de acceso",
+ "wayToGetClickSendSMSToken": "Puedes obtener Nombre de Usuario API y la Key API en {0}.",
+ "Apprise URL": "URL Apprise",
+ "gorush": "Gorush",
+ "squadcast": "Squadcast",
+ "Maintenance Time Window of a Day": "Ventana de tiempo de mantenimiento de un día",
+ "Effective Date Range": "Rango de Fecha Efectivo",
+ "Free Mobile User Identifier": "Identificador de Usuario de Free Mobile",
+ "Gateway Type": "Tipo de Puerta de Enlace",
+ "SMSManager": "SMSManager",
+ "goAlertInfo": "GoAlert es una aplicación de código abierto para la programación de guardias, escaladas automatizadas y notificaciones (como SMS o llamadas de voz). ¡Involucre automáticamente a la persona adecuada, de la manera correcta y en el momento adecuado! {0}",
+ "Free Mobile API Key": "Clave API de Free Mobile",
+ "high": "alto",
+ "SMSManager API Docs": "Documentación API de SMSManager ",
+ "smseagleContact": "Nombre(s) de contacto de Guía Telefónica",
+ "smseagleToken": "Token de Acceso a la API",
+ "smseagleUrl": "URL del dispositivo SMSEagle",
+ "Legacy Octopush-DM": "Octopush-DM heredado",
+ "HomeAssistant": "Home Assistant",
+ "goAlertIntegrationKeyInfo": "Obtenga la clave de integración API genérica para el servicio en este formato \"aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\", generalmente el valor del parámetro token de la URL copiada.",
+ "Topic": "Tema",
+ "matrix": "Matrix",
+ "Feishu WebHookUrl": "WebHookURL de Feishu",
+ "wayToGetPagerDutyKey": "Puede obtener esto yendo a Servicio -> Directorio de servicios -> (Seleccione un servicio) -> Integraciones -> Agregar integración. Aquí puede buscar \"API de eventos V2\". Más información {0}",
+ "alertaApiKey": "Clave API",
+ "alertaAlertState": "Estado de Alerta",
+ "alertaRecoverState": "Estado de Recuperación",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "Nombre de usuario de API (inc. webapi_ prefix)",
+ "smseagleGroup": "Nombre(s) de grupo de Guía Telefónica",
+ "Unpin": "Dejar de Fijar",
+ "Prefix Custom Message": "Prefijo personalizado",
+ "markdownSupported": "Sintaxis de Markdown soportada",
+ "Server Address": "Dirección del Servidor",
+ "Learn More": "Aprende Más",
+ "Pick a RR-Type...": "Seleccione un Tipo RR",
+ "onebotHttpAddress": "Dirección HTTP OneBot",
+ "SendKey": "Clave de Envío",
+ "octopushAPIKey": "\"Clave API\" desde credenciales API HTTP en panel de control",
+ "octopushLogin": "\"Inicio de Sesión\" a partir de las credenciales API HTTP en el panel de control",
+ "ntfy Topic": "Tema ntfy",
+ "Google Analytics ID": "ID Analíticas de Google",
+ "Edit Tag": "Editar Etiqueta",
+ "SignName": "Firma",
+ "Bark Endpoint": "Endpoint Bark",
+ "WebHookUrl": "WebHookUrl",
+ "High": "Alto",
+ "alertaApiEndpoint": "Endpoint API",
+ "Body Encoding": "Codificación del cuerpo",
+ "Expiry date": "Fecha de expiración",
+ "Expiry": "Expiración",
+ "API Keys": "Claves API",
+ "Key Added": "Clave añadida",
+ "Add Another": "Añadir otro",
+ "Continue": "Continuar",
+ "Don't expire": "No caduca",
+ "apiKey-inactive": "Inactivo",
+ "apiKey-expired": "Expirado",
+ "apiKey-active": "Activo",
+ "No API Keys": "No hay claves API",
+ "Add API Key": "Añadir clave API",
+ "apiKeyAddedMsg": "Su clave API ha sido añadida. Anótala, ya que no se volverá a mostrar.",
+ "Clone": "Clonar",
+ "cloneOf": "Clon de {0}",
+ "pagertreeDoNothing": "No hacer nada",
+ "pagertreeResolve": "Resolución automática",
+ "pagertreeCritical": "Crítico",
+ "pagertreeHigh": "Alto",
+ "pagertreeMedium": "Medio",
+ "pagertreeLow": "Bajo",
+ "pagertreeSilent": "Silencio",
+ "pagertreeUrgency": "Urgencia",
+ "pagertreeIntegrationUrl": "URL de integración",
+ "lunaseaTarget": "Objetivo",
+ "wayToGetPagerTreeIntegrationURL": "Después de crear la integración Uptime Kuma en PagerTree, copie el Endpoint. Ver todos los detalles {0}",
+ "Generate": "Generar",
+ "deleteAPIKeyMsg": "¿Está seguro de que desea eliminar esta clave API?",
+ "telegramMessageThreadID": "(Opcional) ID del hilo de mensajes",
+ "telegramMessageThreadIDDescription": "Opcional Identificador único para el hilo de mensajes de destino (asunto) del foro; solo para supergrupos de foros",
+ "telegramProtectContent": "Proteger Forwarding/Saving",
+ "telegramProtectContentDescription": "Si se activa, los mensajes del bot en Telegram estarán protegidos contra el reenvío y el guardado.",
+ "notificationRegional": "Regional",
+ "Clone Monitor": "Clonar Monitor",
+ "telegramSendSilently": "Enviar en silencio",
+ "telegramSendSilentlyDescription": "Envía el mensaje en silencio. Los usuarios recibirán una notificación sin sonido.",
+ "Add New Tag": "Añadir nueva etiqueta",
+ "lunaseaUserID": "ID Usuario",
+ "lunaseaDeviceID": "ID Dispositivo",
+ "disableAPIKeyMsg": "¿Está seguro de que desea desactivar esta clave API?",
+ "Expires": "Expira",
+ "twilioAccountSID": "SID de Cuenta",
+ "twilioFromNumber": "Desde el numero",
+ "twilioToNumber": "Hasta el numero",
+ "startDateTime": "Fecha/Hora Inicio",
+ "sameAsServerTimezone": "Igual a Zona horaria del Servidor",
+ "endDateTime": "Fecha/Hora Fin",
+ "cronExpression": "Expresión Cron",
+ "cronSchedule": "Cronograma: ",
+ "invalidCronExpression": "Expresión Cron invalida:{0}",
+ "statusPageRefreshIn": "Reinicio en: {0}",
+ "twilioAuthToken": "Token de Autentificación",
+ "ntfyUsernameAndPassword": "Nombre de Usuario y Contraseña",
+ "ntfyAuthenticationMethod": "Método de Autentificación",
+ "Cannot connect to the socket server": "No se puede conectar al servidor socket",
+ "Reconnecting...": "Reconectando..."
+}
diff --git a/src/lang/et-EE.json b/src/lang/et-EE.json
new file mode 100644
index 000000000..c9304743f
--- /dev/null
+++ b/src/lang/et-EE.json
@@ -0,0 +1,318 @@
+{
+ "languageName": "eesti",
+ "retryCheckEverySecond": "Kontrolli {0} sekundilise vahega",
+ "retriesDescription": "Mitu korda tuleb kontrollida, mille järel märkida 'maas' ja saata välja teavitus",
+ "ignoreTLSError": "Eira TLS/SSL viga HTTPS veebisaitidel",
+ "upsideDownModeDescription": "Käitle teenuse saadavust rikkena, teenuse kättesaamatust töötavaks.",
+ "maxRedirectDescription": "Suurim arv ümbersuunamisi, millele järgida. 0 ei luba ühtegi.",
+ "acceptedStatusCodesDescription": "Vali välja HTTP koodid, mida arvestada kõlblikuks.",
+ "passwordNotMatchMsg": "Salasõnad ei kattu.",
+ "notificationDescription": "Teavitusteenuse kasutamiseks seo see seirega.",
+ "keywordDescription": "Jälgi võtmesõna HTML või JSON vastustes. (tõstutundlik)",
+ "pauseDashboardHome": "Seisatud",
+ "deleteMonitorMsg": "Kas soovid eemaldada seire?",
+ "deleteNotificationMsg": "Kas soovid eemaldada selle teavitusteenuse kõikidelt seiretelt?",
+ "resolverserverDescription": "Cloudflare on vaikimisi pöördserver.",
+ "rrtypeDescription": "Vali kirje tüüp, mida soovid jälgida.",
+ "pauseMonitorMsg": "Kas soovid peatada seire?",
+ "Settings": "Seaded",
+ "Status Page": "Ülevaade",
+ "Status Pages": "Ülevaated",
+ "Dashboard": "Töölaud",
+ "New Update": "Uuem tarkvara versioon on saadaval",
+ "Language": "Keel",
+ "Appearance": "Välimus",
+ "Theme": "Teema",
+ "General": "Üldine",
+ "Version": "Versioon",
+ "Check Update On GitHub": "Otsi uuendusi GitHub'ist",
+ "List": "Nimekiri",
+ "Add": "Lisa",
+ "Add New Monitor": "Lisa seire",
+ "Add a monitor": "Lisa seire",
+ "Quick Stats": "Ülevaade",
+ "Up": "Töökorras",
+ "Down": "Rikkis",
+ "Pending": "Määramisel",
+ "Unknown": "Kahtlast",
+ "Pause": "Seiska",
+ "Name": "Nimi",
+ "Status": "Olek",
+ "DateTime": "Kuupäev",
+ "Message": "Tulemus",
+ "No important events": "Märkimisväärsed juhtumid puuduvad",
+ "Resume": "Taasta",
+ "Edit": "Muuda",
+ "Delete": "Eemalda",
+ "Current": "Hetkeseisund",
+ "Uptime": "Eluiga",
+ "Cert Exp.": "Sert. aegumine",
+ "day": "päev | päeva",
+ "-day": "-päev",
+ "hour": "tund",
+ "-hour": "-tund",
+ "Response": "Reaktsiooniaeg",
+ "Ping": "Ping",
+ "Monitor Type": "Seire tüüp",
+ "Keyword": "Võtmesõna",
+ "Friendly Name": "Sõbralik nimi",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Tukse sagedus",
+ "Retries": "Korduskatsed",
+ "Advanced": "Rohkem",
+ "Upside Down Mode": "Tagurpidi seire",
+ "Max. Redirects": "Max. ümbersuunamine",
+ "Accepted Status Codes": "Kõlblikud HTTP koodid",
+ "Save": "Salvesta",
+ "Notifications": "Teavitused",
+ "Not available, please setup.": "Ühtegi teavitusteenust pole saadaval.",
+ "Setup Notification": "Lisa teavitusteenus",
+ "Light": "hele",
+ "Dark": "tume",
+ "Auto": "automaatne",
+ "Theme - Heartbeat Bar": "Teemasäte — tuksete riba",
+ "Normal": "tavaline",
+ "Bottom": "all",
+ "None": "puudub",
+ "Timezone": "Ajatsoon",
+ "Search Engine Visibility": "Otsimootorite ligipääs",
+ "Allow indexing": "Luba indekseerimine",
+ "Discourage search engines from indexing site": "Keela selle saidi indekseerimine otsimootorite poolt",
+ "Change Password": "Muuda parooli",
+ "Current Password": "Praegune parool",
+ "New Password": "Uus parool",
+ "Repeat New Password": "Korda uut parooli",
+ "Update Password": "Uuenda parooli",
+ "Disable Auth": "Lülita autentimine välja",
+ "Enable Auth": "Lülita autentimine sisse",
+ "disableauth.message1": "Kas soovid lülitada autentimise välja ?",
+ "disableauth.message2": "Kastuamiseks välise autentimispakkujaga , näiteks Cloudflare Access.",
+ "Please use this option carefully!": "Palun kasuta seda valikut vastutustundlikult!",
+ "Logout": "Logi välja",
+ "Leave": "Lahku",
+ "I understand, please disable": "Olen tutvunud riskidega, lülita välja",
+ "Confirm": "Kinnita",
+ "Yes": "Jah",
+ "No": "Ei",
+ "Username": "Kasutajanimi",
+ "Password": "Parool",
+ "Remember me": "Mäleta mind",
+ "Login": "Logi sisse",
+ "No Monitors, please": "Seired puuduvad, palun",
+ "add one": "Lisa esimene",
+ "Notification Type": "Teavituse tüüp",
+ "Email": "e-posti aadress",
+ "Test": "Saada prooviteavitus",
+ "Certificate Info": "Sertifikaadi teave",
+ "Resolver Server": "Server, mis vastab DNS päringutele.",
+ "Resource Record Type": "DNS kirje tüüp",
+ "Last Result": "Viimane",
+ "Create your admin account": "Admininstraatori konto loomine",
+ "Repeat Password": "korda salasõna",
+ "respTime": "Reageerimisaeg (ms)",
+ "notAvailableShort": "N/A",
+ "enableDefaultNotificationDescription": "Kõik järgnevalt lisatud seired kasutavad seda teavitusteenuset. Seiretelt võib teavitusteenuse ühekaupa eemaldada.",
+ "clearEventsMsg": "Kas soovid seire kõik sündmused kustutada?",
+ "clearHeartbeatsMsg": "Kas soovid seire kõik tuksed kustutada?",
+ "confirmClearStatisticsMsg": "Kas soovid TERVE ajaloo kustutada?",
+ "Export": "Eksport",
+ "Import": "Import",
+ "Default enabled": "Kasuta vaikimisi",
+ "Apply on all existing monitors": "Kõik praegused seired hakkavad kasutama seda teavitusteenust",
+ "Create": "Loo konto",
+ "Clear Data": "Eemalda andmed",
+ "Events": "Sündmused",
+ "Heartbeats": "Tuksed",
+ "Auto Get": "Hangi automaatselt",
+ "backupDescription": "Varunda kõik seired ja teavitused JSON faili.",
+ "backupDescription2": "PS: Varukoopia EI sisalda seirete ajalugu ja sündmustikku.",
+ "backupDescription3": "Varukoopiad sisaldavad teavitusteenusete pääsuvõtmeid.",
+ "alertNoFile": "Palun lisa fail, mida importida.",
+ "alertWrongFileType": "Palun lisa JSON-formaadis fail.",
+ "twoFAVerifyLabel": "2FA kinnitamiseks sisesta pääsukood",
+ "tokenValidSettingsMsg": "Kood õige. Akna võib sulgeda.",
+ "confirmEnableTwoFAMsg": "Kas soovid 2FA sisse lülitada?",
+ "confirmDisableTwoFAMsg": "Kas soovid 2FA välja lülitada?",
+ "Verify Token": "Kontrolli",
+ "Setup 2FA": "Kaksikautentimise seadistamine",
+ "Enable 2FA": "Seadista 2FA",
+ "Disable 2FA": "Lülita 2FA välja",
+ "2FA Settings": "2FA seaded",
+ "Two Factor Authentication": "Kaksikautentimine",
+ "Active": "Aktiivne",
+ "Inactive": "Mitteaktiivne",
+ "Token": "Kaksikautentimise kood",
+ "Show URI": "Näita URId",
+ "Clear all statistics": "Tühjenda ajalugu",
+ "importHandleDescription": "'kombineeri' täiendab varukoopiast ja kirjutab üle samanimelised seireid ja teavitusteenused; 'lisa praegustele' jätab olemasolevad puutumata; 'asenda' kustutab ja asendab kõik seired ja teavitusteenused.",
+ "confirmImportMsg": "Käkerdistest hoidumiseks lae enne taastamist alla uus varukoopia. Kas soovid taastada üles laetud?",
+ "Heartbeat Retry Interval": "Korduskatsete intervall",
+ "Import Backup": "Varukoopia importimine",
+ "Export Backup": "Varukoopia eksportimine",
+ "Skip existing": "lisa praegustele",
+ "Overwrite": "Asenda",
+ "Options": "Mestimisviis",
+ "Keep both": "Kombineeri",
+ "Tags": "Sildid",
+ "Add New below or Select...": "Leia või lisa all uus…",
+ "Tag with this name already exist.": "Selle nimega silt on juba olemas.",
+ "Tag with this value already exist.": "Selle väärtusega silt on juba olemas.",
+ "color": "värvus",
+ "value (optional)": "väärtus (fakultatiivne)",
+ "Gray": "hall",
+ "Red": "punane",
+ "Orange": "oranž",
+ "Green": "roheline",
+ "Blue": "sinine",
+ "Indigo": "indigo",
+ "Purple": "lilla",
+ "Pink": "roosa",
+ "Search...": "Otsi…",
+ "Avg. Ping": "Keskmine ping",
+ "Avg. Response": "Keskmine reaktsiooniaeg",
+ "Entry Page": "Avaleht",
+ "statusPageNothing": "Kippu ega kõppu; siia saab lisada seireid või -gruppe.",
+ "No Services": "Teenused puuduvad",
+ "All Systems Operational": "Kõik töökorras",
+ "Partially Degraded Service": "Teenuse töö osaliselt häiritud",
+ "Degraded Service": "Teenuse töö häiritud",
+ "Add Group": "Lisa grupp",
+ "Edit Status Page": "Muuda lehte",
+ "Go to Dashboard": "Töölauale",
+ "checkEverySecond": "Kontrolli peale tõrget {0} sekundilise vahega",
+ "telegram": "Telegram",
+ "webhook": "Webhook",
+ "smtp": "elektronpost (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (vahendab üle 65 teavitusteenust)",
+ "pushbullet": "Pushbullet",
+ "line": "LINE",
+ "mattermost": "Mattermost",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API otsik",
+ "alertaEnvironment": "Keskkond",
+ "alertaApiKey": "API võti",
+ "alertaAlertState": "Häireseisund",
+ "alertaRecoverState": "Taasta algolek",
+ "Game": "Mäng",
+ "Primary Base URL": "Peamine baas URL",
+ "Passive Monitor Type": "Passiivne monitori tüüp",
+ "Specific Monitor Type": "Spetsiifiline monitori tüüp",
+ "resendDisabled": "Uuesti saatmine keelatud",
+ "Push URL": "Lükka URL",
+ "needPushEvery": "Sa peaksid kutsuma seda URL-i iga {0} sekundi tagant.",
+ "pushOptionalParams": "Valikulised parameetrid: {0}",
+ "Schedule maintenance": "Planeeri hooldus",
+ "All Status Pages": "Kõik staatuse lehed",
+ "Select status pages...": "Vali staatuse lehed…",
+ "Custom": "Kohandatud",
+ "here": "siin",
+ "Required": "Nõutud",
+ "Post URL": "Postita URL",
+ "Affected Monitors": "Mõjutatud monitorid",
+ "Pick Affected Monitors...": "Vali mõjutatud monitorid…",
+ "Start of maintenance": "Hoolduse algus",
+ "Content Type": "Sisu tüüp",
+ "webhookJsonDesc": "{0} on hea iga modernse HTTP serveri jaoks nagu Express.js",
+ "webhookAdditionalHeadersTitle": "Täiendavad päised",
+ "setAsDefault": "Lisa vaikimisi",
+ "deleteProxyMsg": "Kas Sa oled kindel, et soovid kustutada seda puhverserverit kõkidel monitoridel?",
+ "proxyDescription": "Puhverserverid tuleb lisada monitorile selle töötamiseks.",
+ "setAsDefaultProxyDescription": "See puhverserver aktiveeritakse vaikimisi uutel monitoridel. Sa saad keelata seda puhverserverit igal monitoril eraldi.",
+ "Certificate Chain": "Sertifikaadi kett",
+ "Valid": "Kehtiv",
+ "Invalid": "Kehtetu",
+ "User": "Kasutaja",
+ "Installed": "Paigaldatud",
+ "Not installed": "Ei ole installeeritud",
+ "Running": "Töötab",
+ "resendEveryXTimes": "Saada uuesti {0} korda",
+ "statusMaintenance": "Hooldus",
+ "Webhook URL": "",
+ "Server URL": "Serveri URL",
+ "Priority": "Tähtsus",
+ "emojiCheatSheet": "Emotikoni spikker: {0}",
+ "appriseInstalled": "Apprise on installitud.",
+ "appriseNotInstalled": "Apprise ei ole installitud. {0}",
+ "Method": "Meetod",
+ "Body": "Keha",
+ "Headers": "Päis",
+ "PushUrl": "Lükka URL",
+ "Monitor History": "Monitori ajalugu",
+ "PasswordsDoNotMatch": "Paroolid ei ühti.",
+ "records": "",
+ "Current User": "Praegune kasutaja",
+ "topic": "Teema",
+ "successMessage": "Edukas sõnum",
+ "recent": "Hiljutine",
+ "Info": "Info",
+ "Security": "Turvalisus",
+ "Steam API Key": "Steam API võti",
+ "Pick a RR-Type...": "Vali RR-tüüp…",
+ "Default": "Vaikimisi",
+ "HTTP Options": "HTTP valikud",
+ "Create Incident": "Loo intsident",
+ "Title": "Pealkiri",
+ "Content": "Sisu",
+ "Style": "Stiil",
+ "info": "info",
+ "warning": "hoiatus",
+ "danger": "oht",
+ "error": "viga",
+ "critical": "kriitiline",
+ "primary": "peamine",
+ "dark": "tume",
+ "light": "hele",
+ "Post": "Postita",
+ "Please input title and content": "Palun lisa pealkiri ja sisu",
+ "Created": "Loodud",
+ "Last Updated": "Viimati uuendatud",
+ "Unpin": "Vabastada",
+ "Switch to Dark Theme": "Vaheta tumedale teemale",
+ "Hide Tags": "Peida tagid",
+ "Show Tags": "Näita tagid",
+ "Description": "Kirjeldus",
+ "No monitors available.": "Ühtegi monitori ei ole saadaval.",
+ "Add one": "Lisa üks",
+ "No Monitors": "Ei ole monitore",
+ "Untitled Group": "Nimetamata grupp",
+ "Services": "Teenused",
+ "Cancel": "Tühista",
+ "Customize": "Kohanda",
+ "Custom Footer": "Kohandatud jalus",
+ "Custom CSS": "Kohandatud CSS",
+ "Proxies": "Puhverserverid",
+ "default": "Vaikimisi",
+ "enabled": "Lubatud",
+ "Not running": "Ei tööta",
+ "Start": "Alusta",
+ "Stop": "Peata",
+ "Add New Status Page": "Lisa uus staatuse leht",
+ "Shrink Database": "Vähenda andmebaasi",
+ "Help": "Abi",
+ "Maintenance": "Hooldus",
+ "General Monitor Type": "Üldine monitori tüüp",
+ "webhookAdditionalHeadersDesc": "Lisab täiendavad päised saadetud webhookiga.",
+ "Read more": "Loe rohkem",
+ "HeadersInvalidFormat": "",
+ "clearDataOlderThan": "Hoia monitori ajalugu alles {0} päeva.",
+ "steamApiKeyDescription": "Steam Game Serveri monitoorimiseks on vaja sul Steam Web-API võtit. Sa saad registreerida enda API võtme siin: ",
+ "Done": "Tehtud",
+ "Pick Accepted Status Codes...": "Vali vastu võetud staatuse koodid…",
+ "Switch to Light Theme": "Vaheta heledale teemale",
+ "Discard": "Loobu",
+ "deleteStatusPageMsg": "Kas Sa oled kindel, et soovid kustutada seda staatuse lehte?",
+ "Resend Notification if Down X times consecutively": "Saada teavitus uuesti kui monitor on rikkis X korda järjest"
+}
diff --git a/src/lang/eu.json b/src/lang/eu.json
new file mode 100644
index 000000000..638c24ce2
--- /dev/null
+++ b/src/lang/eu.json
@@ -0,0 +1,575 @@
+{
+ "languageName": "Euskara",
+ "checkEverySecond": "Egiaztatu {0} segunduro",
+ "retryCheckEverySecond": "Errepikatu {0} segunduro",
+ "retriesDescription": "Zerbitzua erorita markatu eta jakinarazpena bidali aurretik egindako saiakera kopuru maximoa",
+ "ignoreTLSError": "Ezikusiarena egin TLS/SSL erroreei HTTPS webguneetan",
+ "upsideDownModeDescription": "Alderantzizkatu erortze egoera. Zerbitzua martxan badago, ERORITA markatuko du.",
+ "maxRedirectDescription": "Jarraitu beharreko berbideratze kopuru maximoa. Jarri 0 berbideratzeak desgaitzeko.",
+ "acceptedStatusCodesDescription": "Hautatu erantzun ona kontsideratzen diren egoera kodeak.",
+ "passwordNotMatchMsg": "Errepikatutako pasahitza ez dator bat.",
+ "notificationDescription": "Jakinarazpenak monitorizazio funtzio bati asignatu behar zaizkio.",
+ "keywordDescription": "Bilatu gako-hitza HTML edo JSON erantzunean. Bilaketan maiuskulak kontuan hartzen dira.",
+ "pauseDashboardHome": "Gelditu",
+ "deleteMonitorMsg": "Ziur zaude monitorizazio hau ezabatu nahi duzula?",
+ "deleteNotificationMsg": "Ziur zaude jakinarazpen hau monitorizazio guztientzat ezabatu nahi duzula?",
+ "dnsPortDescription": "DNS zerbitzari portua. Defektuz 53. Nahi duzunean aldatu dezakezu portua.",
+ "resolverserverDescription": "Cloudflare zerbitzari lehenetsia da. Edozein unetan alda dezakezu ebazteko zerbitzaria.",
+ "rrtypeDescription": "Hautatu kontrolatu nahi duzun RR mota",
+ "enableDefaultNotificationDescription": "Jakinarazpen hau monitore berrientzat gaituko da defektuz. Baina monitorizazio bakoitzarentzat jakinarazpena desgaitu dezakezu.",
+ "pauseMonitorMsg": "Ziur zaude gelditu egin nahi duzula?",
+ "clearEventsMsg": "Ziur zaude monitorizazio honen gertaera guztiak ezabatu nahi dituzula?",
+ "clearHeartbeatsMsg": "Ziur zaude monitorizazio honen pultsu guztiak ezabatu nahi dituzula?",
+ "confirmClearStatisticsMsg": "Ziur zaude estatistika GUZTIAK ezabatu nahi dituzula?",
+ "importHandleDescription": "Aukeratu 'existitzen bada', izen bereko monitore edo jakinarazpen bakoitza saltatu nahi baduzu. Lehendik dauden kontrol eta jakinarazpen guztiak ezabatuko ditu 'Gainidatzi' aukerak.",
+ "confirmImportMsg": "Ziur zaude segurtasun-kopia inportatu nahi duzula? Egiaztatu inportatzeko aukera zuzena hautatu duzula.",
+ "twoFAVerifyLabel": "Sartu zure tokena 2FA egiaztatzeko:",
+ "tokenValidSettingsMsg": "Tokenak balio du! Orain 2FA konfigurazioa gorde dezakezu.",
+ "confirmEnableTwoFAMsg": "Ziur zaude 2FA gaitu nahi duzula?",
+ "confirmDisableTwoFAMsg": "Ziur zaude 2FA desgaitu nahi duzula?",
+ "Settings": "Ezarpenak",
+ "Dashboard": "Arbela",
+ "New Update": "Eguneraketa berria",
+ "Language": "Hizkuntza",
+ "Appearance": "Itxura",
+ "Theme": "Gaia",
+ "General": "Orokorra",
+ "Primary Base URL": "Oinarrizkoa URL",
+ "Version": "Bertsioa",
+ "Check Update On GitHub": "Egiaztatu eguneraketa GitHuben",
+ "List": "Zerrenda",
+ "Add": "Gehitu",
+ "Add New Monitor": "Gehitu monitorizazio berria",
+ "Quick Stats": "Estatistika azkarrak",
+ "Up": "Erabilgarri",
+ "Down": "Erorita",
+ "Pending": "Zain",
+ "Unknown": "Ezezaguna",
+ "Pause": "Gelditu",
+ "Name": "Izena",
+ "Status": "Egoera",
+ "DateTime": "Data eta ordua",
+ "Message": "Mezua",
+ "No important events": "Gertaera garrantzitsurik ez",
+ "Resume": "Jarraitu",
+ "Edit": "Editatu",
+ "Delete": "Ezabatu",
+ "Current": "Unekoa",
+ "Uptime": "Martxan",
+ "Cert Exp.": "Ziurtagiri iraun.",
+ "day": "egun | egun",
+ "-day": "-egun",
+ "hour": "ordua",
+ "-hour": "-ordu",
+ "Response": "Erantzuna",
+ "Ping": "Ping",
+ "Monitor Type": "Monitorizazio mota",
+ "Keyword": "Gakohitza",
+ "Friendly Name": "Izen xumea",
+ "URL": "URLa",
+ "Hostname": "Ostalari izena",
+ "Port": "Portua",
+ "Heartbeat Interval": "Pultsu interbaloak",
+ "Retries": "Errepikapenak",
+ "Heartbeat Retry Interval": "Pultsu errepikatze interbaloak",
+ "Advanced": "Aurreratua",
+ "Upside Down Mode": "Alderantzizkako modua",
+ "Max. Redirects": "Birbideratze max.",
+ "Accepted Status Codes": "Onartutako egoera kodeak",
+ "Push URL": "Push URLa",
+ "needPushEvery": "URL hau {0} segunduro deitu beharko zenuke.",
+ "pushOptionalParams": "Hautazko parametroak: {0}",
+ "Save": "Gorde",
+ "Notifications": "Jakinarazpenak",
+ "Not available, please setup.": "Ez dago eskuragarri, ezarri mesedez.",
+ "Setup Notification": "Ezarri jakinarazpenak",
+ "Light": "Argia",
+ "Dark": "Iluna",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Gaia - Pultsu barra",
+ "Normal": "Normala",
+ "Bottom": "Behean",
+ "None": "Bat ere ez",
+ "Timezone": "Timezone",
+ "Search Engine Visibility": "Bilatzaile ikurgarritasuna",
+ "Allow indexing": "Onartu indexatzea",
+ "Discourage search engines from indexing site": "Discourage search engines from indexing site",
+ "Change Password": "Aldatu pasahitza",
+ "Current Password": "Uneko pasahitza",
+ "New Password": "Pasahitz berria",
+ "Repeat New Password": "Errepikatu pasahitz berria",
+ "Update Password": "Eguneratu pasahitza",
+ "Disable Auth": "Desgaitu Auth",
+ "Enable Auth": "Gaitu Auth",
+ "disableauth.message1": "Ziur zaude autentifikazioa desgaitu nahi duzula?",
+ "disableauth.message2": "Egoera jakin batzuetarako diseinatuta dago, Uptime Kumaren aurrean hirugarrengo autentifikazio batzuek jartzeko (Cloudflare Access, Authelia edo beste autentifikazio-mekanismo batzuk).",
+ "Please use this option carefully!": "Mesedez, kontuz erabili aukera hau!",
+ "Logout": "Saioa amaitu",
+ "Leave": "Utzi",
+ "I understand, please disable": "Ulertzen dut, mesedez desgaitu",
+ "Confirm": "Baieztatu",
+ "Yes": "Bai",
+ "No": "Ez",
+ "Username": "Erabiltzailea",
+ "Password": "Pasahitza",
+ "Remember me": "Gogora nazazu",
+ "Login": "Saioa hasi",
+ "No Monitors, please": "Monitorizaziorik ez, mesedez",
+ "add one": "gehitu bat",
+ "Notification Type": "Jakinarazpen mota",
+ "Email": "Emaila",
+ "Test": "Testa",
+ "Certificate Info": "Ziurtagiri informazioa",
+ "Resolver Server": "Ebazpen-zerbitzaria",
+ "Resource Record Type": "Baliabideen erregistro mota",
+ "Last Result": "Azken emaitza",
+ "Create your admin account": "Sortu zure admin kontua",
+ "Repeat Password": "Errepikatu pasahitza",
+ "Import Backup": "segurtasun-kopia inportatu",
+ "Export Backup": "segurtasun-kopia esportatu",
+ "Export": "Esportatu",
+ "Import": "Inportatu",
+ "respTime": "Erantz. denbora (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Lehenetsia gaituta",
+ "Apply on all existing monitors": "Aplikatu existitzen diren monitorizazio guztietan",
+ "Create": "Sortu",
+ "Clear Data": "Garbitu datuak",
+ "Events": "Gertaerak",
+ "Heartbeats": "Pultsuak",
+ "Auto Get": "Auto Get",
+ "backupDescription": "Monitore eta jakinarazpen guztien segurtasun-kopiak egin ditzakezu JSON fitxategi batean.",
+ "backupDescription2": "Oharra: ez dira historia eta gertaeren datuak sartzen.",
+ "backupDescription3": "Datu sentikorrak, hala nola jakinarazpen tokenak, esportazio-fitxategian sartzen dira; mesedez, gorde esportazioa modu seguruan.",
+ "alertNoFile": "Mesedez hautatu inportatzeko fitxategia.",
+ "alertWrongFileType": "Mesedez hautatu JSON fitxategia.",
+ "Clear all statistics": "Garbitu estatistika guztiak",
+ "Skip existing": "Saltatu existitzen bada",
+ "Overwrite": "Gainidatzi",
+ "Options": "Aukerak",
+ "Keep both": "Biak mantendu",
+ "Verify Token": "Egiaztatu Tokena",
+ "Setup 2FA": "Ezarri 2FA",
+ "Enable 2FA": "Gaitu 2FA",
+ "Disable 2FA": "Desgaitu 2FA",
+ "2FA Settings": "2FA ezarpenak",
+ "Two Factor Authentication": "Bi aldetako autentifikazioa (2FA)",
+ "Active": "Aktibo",
+ "Inactive": "Inaktibo",
+ "Token": "Tokena",
+ "Show URI": "Erakutsi URIa",
+ "Tags": "Etiketak",
+ "Add New below or Select...": "Gehitu beste bat behean edo hautatu…",
+ "Tag with this name already exist.": "Izen hau duen etiketa dagoeneko badago.",
+ "Tag with this value already exist.": "Balio hau duen etiketa dagoeneko badago.",
+ "color": "kolorea",
+ "value (optional)": "balioa (hautazkoa)",
+ "Gray": "Grisa",
+ "Red": "Gorria",
+ "Orange": "Naranja",
+ "Green": "Berdea",
+ "Blue": "Urdina",
+ "Indigo": "Indigo",
+ "Purple": "Morea",
+ "Pink": "Arrosa",
+ "Search...": "Bilatu…",
+ "Avg. Ping": "Batazbesteko Pinga",
+ "Avg. Response": "Batazbesteko erantzuna",
+ "Entry Page": "Sarrera orria",
+ "statusPageNothing": "Ezer ere ez hemen, mesedez gehitu taldea edo monitorizazioa.",
+ "No Services": "Zerbitzurik ez",
+ "All Systems Operational": "Sistema guztiak martxan",
+ "Partially Degraded Service": "Zerbitzu partzialki degradatua",
+ "Degraded Service": "Zerbitzu degradatua",
+ "Add Group": "Gehitu taldea",
+ "Add a monitor": "Gehitu monitorizazioa",
+ "Edit Status Page": "Editatu egoera orria",
+ "Go to Dashboard": "Joan arbelera",
+ "Status Page": "Egoera orria",
+ "Status Pages": "Egoera orriak",
+ "defaultNotificationName": "Nire {notification} Alerta ({number})",
+ "here": "Hemen",
+ "Required": "Beharrezkoa",
+ "telegram": "Telegram",
+ "ZohoCliq": "ZohoCliq",
+ "Bot Token": "Bot Tokena",
+ "wayToGetTelegramToken": "You can get a token from {0}.",
+ "Chat ID": "Txat IDa",
+ "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID",
+ "wayToGetTelegramChatID": "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:",
+ "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE",
+ "chatIDNotFound": "Chat ID is not found; please send a message to this bot first",
+ "webhook": "Webhook",
+ "Post URL": "Bidalketa URLa",
+ "Content Type": "Eduki mota",
+ "webhookJsonDesc": "{0} is good for any modern HTTP servers such as Express.js",
+ "webhookFormDataDesc": "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}",
+ "smtp": "Emaila (SMTP)",
+ "secureOptionNone": "Bat ere ez / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignore TLS Error",
+ "From Email": "Email honetatik",
+ "emailCustomSubject": "Pertsonalizatutako gaia",
+ "To Email": "Email honetara",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> Create Webhook",
+ "Bot Display Name": "Bot Display Name",
+ "Prefix Custom Message": "Prefix Custom Message",
+ "Hello @everyone is...": "Kaixo {'@'}edonor da…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.",
+ "wayToGetZohoCliqURL": "You can learn how to create a webhook URL {0}.",
+ "signal": "Signal",
+ "Number": "Zenbakia",
+ "Recipients": "Recipients",
+ "needSignalAPI": "You need to have a signal client with REST API.",
+ "wayToCheckSignalURL": "You can check this URL to view how to set one up:",
+ "signalImportant": "IMPORTANT: You cannot mix groups and numbers in recipients!",
+ "gotify": "Gotify",
+ "Application Token": "Aplikazio tokena",
+ "Server URL": "Zerbitzari URLa",
+ "Priority": "Lehentasuna",
+ "slack": "Slack",
+ "Icon Emoji": "Emoji ikonoa",
+ "Channel Name": "Kanalaren izena",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "More info about Webhooks on: {0}",
+ "aboutChannelName": "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel",
+ "aboutKumaURL": "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.",
+ "emojiCheatSheet": "Emoji cheat sheet: {0}",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push by Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Support 50+ Notification services)",
+ "GoogleChat": "Google Chat (Google Workspace only)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Erabiltzaile gakoa",
+ "Device": "Gailua",
+ "Message Title": "Mezuaren izenburua",
+ "Notification Sound": "Jakinarazpen soinua",
+ "More info on:": "More info on: {0}",
+ "pushoverDesc1": "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.",
+ "pushoverDesc2": "If you want to send notifications to different devices, fill out Device field.",
+ "SMS Type": "SMS mota",
+ "octopushTypePremium": "Premium (Fast - recommended for alerting)",
+ "octopushTypeLowCost": "Low Cost (Slow - sometimes blocked by operator)",
+ "checkPrice": "Check {0} prices:",
+ "apiCredentials": "API credentials",
+ "octopushLegacyHint": "Do you use the legacy version of Octopush (2011-2020) or the new version?",
+ "Check octopush prices": "Check octopush prices {0}.",
+ "octopushPhoneNumber": "Phone number (intl format, eg : +33612345678) ",
+ "octopushSMSSender": "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Device ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Adibidez: {0}",
+ "Read more:": "Irakurri gehiago: {0}",
+ "Status:": "Egoera: {0}",
+ "Read more": "Irakurri gehiago",
+ "appriseInstalled": "Apprise instalatuta.",
+ "appriseNotInstalled": "Apprise ez dago instalatuta. {0}",
+ "Access Token": "Access Token",
+ "Channel access token": "Channel access token",
+ "Line Developers Console": "Line Developers Console",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "Oinarrizko ezarpenak",
+ "User ID": "Erabiltzaile ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.",
+ "Icon URL": "Ikono URL",
+ "aboutIconURL": "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.",
+ "aboutMattermostChannelName": "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.",
+ "promosmsTypeFlash": "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.",
+ "promosmsTypeFull": "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.",
+ "promosmsTypeSpeed": "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).",
+ "promosmsPhoneNumber": "Phone number (for Polish recipient You can skip area codes)",
+ "promosmsSMSSender": "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "Hasiera zerbitzari URL (with http(s):// and optionally port)",
+ "Internal Room Id": "Internal Room ID",
+ "matrixDesc1": "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}",
+ "Method": "Metodoa",
+ "Body": "Gorputza",
+ "Headers": "Goiburuak",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "The request headers are not valid JSON: ",
+ "BodyInvalidFormat": "The request body is not valid JSON: ",
+ "Monitor History": "Monitorizazio Historia",
+ "clearDataOlderThan": "Keep monitor history data for {0} days.",
+ "PasswordsDoNotMatch": "Pasahitzak ez datoz bat.",
+ "records": "records",
+ "One record": "One record",
+ "steamApiKeyDescription": "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ",
+ "Current User": "Uneko erabiltzailea",
+ "topic": "Topic",
+ "topicExplanation": "MQTT topic to monitor",
+ "successMessage": "Arrakasta mezua",
+ "successMessageExplanation": "MQTT message that will be considered as success",
+ "recent": "Duela gutxikoa",
+ "Done": "Egina",
+ "Info": "Info",
+ "Security": "Segurtasuna",
+ "Steam API Key": "Steam API Giltza",
+ "Shrink Database": "Shrink Datubasea",
+ "Pick a RR-Type...": "Pick a RR-Type...",
+ "Pick Accepted Status Codes...": "Hautatu onartutako egoera kodeak…",
+ "Default": "Lehenetsia",
+ "HTTP Options": "HTTP Aukerak",
+ "Create Incident": "Sortu inzidentzia",
+ "Title": "Titulua",
+ "Content": "Edukia",
+ "Style": "Estiloa",
+ "info": "info",
+ "warning": "kontuz",
+ "danger": "arriskua",
+ "error": "errorea",
+ "critical": "kritikoa",
+ "primary": "oinarrizkoa",
+ "light": "argia",
+ "dark": "iluna",
+ "Post": "Post",
+ "Please input title and content": "Mesedez sartu titulua eta edukia",
+ "Created": "Sortuta",
+ "Last Updated": "Azken eguneratzea",
+ "Unpin": "Unpin",
+ "Switch to Light Theme": "Aldatu gai argira",
+ "Switch to Dark Theme": "Aldatu gai ilunera",
+ "Show Tags": "Erakutsi etiketak",
+ "Hide Tags": "Ezkutatu etiketak",
+ "Description": "Deskribapena",
+ "No monitors available.": "Monitorizaziorik eskuragarri ez.",
+ "Add one": "Gehitu bat",
+ "No Monitors": "Monitorizaziorik ez",
+ "Untitled Group": "Titulurik gabeko taldea",
+ "Services": "Zerbitzuak",
+ "Discard": "Baztertu",
+ "Cancel": "Ezeztatu",
+ "Powered by": "Honekin egina:",
+ "shrinkDatabaseDescription": "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API erabiltzailea (webapi_ aurre-hizkia barne)",
+ "serwersmsAPIPassword": "API pasahitza",
+ "serwersmsPhoneNumber": "Telefono zenbakia",
+ "serwersmsSenderName": "SMS bidaltzaile izena (registered via customer portal)",
+ "stackfield": "Stackfield",
+ "Customize": "Pertsonalizatu",
+ "Custom Footer": "Oin pertsonalizatua",
+ "Custom CSS": "CSS pertsonalizatua",
+ "smtpDkimSettings": "DKIM ezarpenak",
+ "smtpDkimDesc": "Please refer to the Nodemailer DKIM {0} for usage.",
+ "documentation": "dokumentazioa",
+ "smtpDkimDomain": "Domeinu izena",
+ "smtpDkimKeySelector": "Gako hautatzailea",
+ "smtpDkimPrivateKey": "Gako pribatua",
+ "smtpDkimHashAlgo": "Hash algoritmoa (hautazkoa)",
+ "smtpDkimheaderFieldNames": "Header Keys to sign (Optional)",
+ "smtpDkimskipFields": "Header Keys not to sign (Optional)",
+ "wayToGetPagerDutyKey": "You can get this by going to Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Here you can search for \"Events API V2\". More info {0}",
+ "Integration Key": "Integration Key",
+ "Integration URL": "Integrazio URLa",
+ "Auto resolve or acknowledged": "Auto resolve or acknowledged",
+ "do nothing": "ez egin ezer",
+ "auto acknowledged": "auto acknowledged",
+ "auto resolve": "auto resolve",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "Ingurunea",
+ "alertaApiKey": "API Key",
+ "alertaAlertState": "Alerta egoera",
+ "alertaRecoverState": "Berreskuratze egoera",
+ "deleteStatusPageMsg": "Ziur zaude egoera orri hau ezabatu nahi duzula?",
+ "Proxies": "Proxiak",
+ "default": "Lehenetsia",
+ "enabled": "Gaituta",
+ "setAsDefault": "Ezarri lehenetsitzat",
+ "deleteProxyMsg": "Are you sure want to delete this proxy for all monitors?",
+ "proxyDescription": "Proxies must be assigned to a monitor to function.",
+ "enableProxyDescription": "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.",
+ "setAsDefaultProxyDescription": "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.",
+ "Certificate Chain": "Certificate Chain",
+ "Valid": "Baliozkoa",
+ "Invalid": "Baliogabea",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "TelefonoZenbakiak",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Sms txantiloiak parametroak eduki behar ditu: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "For safety, must use secret key",
+ "Device Token": "Gailu tokena",
+ "Platform": "Plataforma",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Altua",
+ "Retry": "Errepikatu",
+ "Topic": "Gaia",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "Setup Proxy": "Ezarri Proxya",
+ "Proxy Protocol": "Proxy protokoloa",
+ "Proxy Server": "Proxy zerbitzaria",
+ "Proxy server has authentication": "Proxy zerbitzariak autentifikazioa dauka",
+ "User": "Erabiltzailea",
+ "Installed": "Instalatuta",
+ "Not installed": "Instalatu gabe",
+ "Running": "Martxan",
+ "Not running": "Ez martxan",
+ "Remove Token": "Ezabatu Tokena",
+ "Start": "Hasi",
+ "Stop": "Gelditu",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Gehitu egoera orri berria",
+ "Slug": "Sluga",
+ "Accept characters:": "Onartu karaktereak:",
+ "startOrEndWithOnly": "Start or end with {0} only",
+ "No consecutive dashes": "No consecutive dashes",
+ "Next": "Hurrengoa",
+ "The slug is already taken. Please choose another slug.": "Sluga dagoeneko hartuta dago. Mesedez beste bat hautatu.",
+ "No Proxy": "Proxyrik ez",
+ "Authentication": "Authentication",
+ "HTTP Basic Auth": "HTTP oinarrizko Auth",
+ "New Status Page": "Egoera orri berria",
+ "Page Not Found": "Orria ez da aurkitu",
+ "Reverse Proxy": "Alderantzizkako Proxya",
+ "Backup": "Backup",
+ "About": "Honi buruz",
+ "wayToGetCloudflaredURL": "(Download cloudflared from {0})",
+ "cloudflareWebsite": "Cloudflare webgunea",
+ "Message:": "Mezua:",
+ "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.",
+ "Other Software": "Beste softwarea",
+ "For example: nginx, Apache and Traefik.": "Adibidez: nginx, Apache and Traefik.",
+ "Please read": "Mesedez irakurri",
+ "Subject:": "Gaia:",
+ "Valid To:": "Balio-epea:",
+ "Days Remaining:": "Egun faltan:",
+ "Issuer:": "Issuer:",
+ "Fingerprint:": "Hatzmarka:",
+ "No status pages": "Egoera orririk ez",
+ "Domain Name Expiry Notification": "Domeinu izen iraungitze jakinarazpena",
+ "Proxy": "Proxya",
+ "Date Created": "Data sortuta",
+ "onebotHttpAddress": "OneBot HTTP helbidea",
+ "onebotMessageType": "OneBot mezu mota",
+ "onebotGroupMessage": "Taldea",
+ "onebotPrivateMessage": "Pribatua",
+ "onebotUserOrGroupId": "Talde/Erabiltzaile IDa",
+ "onebotSafetyTips": "For safety, must set access token",
+ "PushDeer Key": "PushDeer Key",
+ "Footer Text": "Oineko testua",
+ "Show Powered By": "Erakutsi Honekin egina:",
+ "Domain Names": "Domeinu izenak",
+ "signedInDisp": "Signed in as {0}",
+ "signedInDispDisabled": "Auth desgaituta.",
+ "Certificate Expiry Notification": "Zertifikatu iraungitze jakinarazpena",
+ "API Username": "API Erabiltzailea",
+ "API Key": "API Gakoa",
+ "Recipient Number": "Recipient Number",
+ "From Name/Number": "From Name/Number",
+ "Leave blank to use a shared sender number.": "Leave blank to use a shared sender number.",
+ "Octopush API Version": "Octopush API Version",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "endpoint": "endpoint",
+ "octopushAPIKey": "\"API key\" from HTTP API credentials in control panel",
+ "octopushLogin": "\"Login\" from HTTP API credentials in control panel",
+ "promosmsLogin": "API Saio haste izena",
+ "promosmsPassword": "API Pasahitza",
+ "pushoversounds pushover": "Pushover (defektuz)",
+ "pushoversounds bike": "Bizikleta",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Klasikoa",
+ "pushoversounds cosmic": "Kosmikoa",
+ "pushoversounds falling": "Erortzen",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magia",
+ "pushoversounds mechanical": "Mekanikoa",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Sirena",
+ "pushoversounds spacealarm": "Espazio Alarma",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Bibrazioa soilik",
+ "pushoversounds none": "Bat ere ez (isilik)",
+ "pushyAPIKey": "Secret API giltza",
+ "pushyToken": "Gailu tokena",
+ "Show update if available": "Erakutsi eguneratzea eskuragarri badago",
+ "Also check beta release": "Beta bertsioak ere egiaztatu",
+ "Using a Reverse Proxy?": "Proxy alderantzizkako zerbitzaria erabiltzen?",
+ "Check how to config it for WebSocket": "Check how to config it for WebSocket",
+ "Steam Game Server": "Steam joko zerbitzaria",
+ "Most likely causes:": "Arrazoi probableenak:",
+ "The resource is no longer available.": "Baliabidea ez dago erabilgarri.",
+ "There might be a typing error in the address.": "Idazketa-akats bat egon daiteke helbidean.",
+ "What you can try:": "Probatu dezakezuna:",
+ "Retype the address.": "Berridatzi helbidea.",
+ "Go back to the previous page.": "Itzuli aurreko orrialdera.",
+ "Coming Soon": "Laster",
+ "wayToGetClickSendSMSToken": "API erabiltzailea and API giltza hemendik lortu ditzakezu: {0} .",
+ "Connection String": "Konexio katea",
+ "Query": "Kontsulta",
+ "settingsCertificateExpiry": "TLS irungitze zertifikatua",
+ "certificationExpiryDescription": "HTTPS Monitorizazio jakinarazpena martxan jarri TLS zertifikatua iraungitzeko hau falta denean:",
+ "ntfy Topic": "ntfy Topic",
+ "Domain": "Domeinua",
+ "Workstation": "Lan gunea",
+ "disableCloudflaredNoAuthMsg": "Ez Auth moduan zaude, pasahitza ez da beharrezkoa.",
+ "maintenanceStatus-ended": "Bukatuta",
+ "maintenanceStatus-unknown": "Ezezaguna",
+ "Enable": "Gaitu",
+ "Strategy": "Estrategia",
+ "General Monitor Type": "Monitorizazio mota orokorra",
+ "Select status pages...": "Hautatu egoera orriak…",
+ "Server Address": "Zerbitzari helbidea",
+ "Learn More": "Ikasi gehiago",
+ "weekdayShortTue": "Ast",
+ "weekdayShortWed": "Asz",
+ "Disable": "Desgaitu",
+ "warningTimezone": "Zerbitzariaren orduzona erabiltzen ari da",
+ "weekdayShortThu": "Og",
+ "weekdayShortMon": "Asl",
+ "Base URL": "Oinarri URLa",
+ "high": "altua",
+ "Economy": "Ekonomia",
+ "Help": "Laguntza",
+ "Game": "Jokoa",
+ "statusMaintenance": "Mantenuan",
+ "Maintenance": "Mantenua",
+ "Passive Monitor Type": "Monitorizazio mota pasiboa",
+ "Specific Monitor Type": "Zehaztutako monitorizazio mota",
+ "markdownSupported": "Markdown sintaxia onartzen du",
+ "Monitor": "Monitorizazio | Monitorizazioak",
+ "resendDisabled": "Berbidaltzea desgaituta",
+ "weekdayShortFri": "Ost",
+ "weekdayShortSat": "Lar",
+ "weekdayShortSun": "Iga",
+ "dayOfWeek": "Asteko eguna",
+ "dayOfMonth": "Hilabeteko eguna",
+ "lastDay": "Azken eguna",
+ "lastDay1": "Hilabeteko azken eguna",
+ "Resend Notification if Down X times consecutively": "Bidali jakinarazpena X aldiz jarraian erortzen bada"
+}
diff --git a/src/lang/fa.json b/src/lang/fa.json
new file mode 100644
index 000000000..9f1f0a601
--- /dev/null
+++ b/src/lang/fa.json
@@ -0,0 +1,757 @@
+{
+ "languageName": "فارسی",
+ "checkEverySecond": "بررسی هر {0} ثانیه",
+ "retryCheckEverySecond": "تکرار مجدد هر {0} ثانیه",
+ "retriesDescription": "حداکثر تعداد تکرار پیش از علامت گذاری وبسایت بعنوان خارج از دسترس و ارسال اطلاعرسانی",
+ "ignoreTLSError": "بیخیال ارور TLS/SSL برای سایتهای HTTPS",
+ "upsideDownModeDescription": "نتیجه وضعیت را برعکس کن، مثلا اگر سرویس در دسترس بود فرض کن که سرویس پایین است.",
+ "maxRedirectDescription": "حداکثر تعداد ریدایرکتی که سرویس پشتیبانی کند. برای اینکه ریدایرکتها پشتیبانی نشوند، عدد 0 را وارد کنید.",
+ "acceptedStatusCodesDescription": "لطفا HTTP Status Code هایی که میخواهید به عنوان پاسخ موفقیت آمیز در نظر گرفته شود را انتخاب کنید.",
+ "passwordNotMatchMsg": "تکرار رمز عبور مطابقت ندارد.",
+ "notificationDescription": "برای اینکه سرویس اطلاعرسانی کار کند، آنرا به یکی از مانیتورها متصل کنید.",
+ "keywordDescription": "در نتیجه درخواست (اهمیتی ندارد پاسخ JSON است یا HTML) بدنبال این کلمه بگرد (حساس به کوچک/بزرگ بودن حروف).",
+ "pauseDashboardHome": "متوقف شده",
+ "deleteMonitorMsg": "آیا از حذف این مانیتور مطمئن هستید؟",
+ "deleteNotificationMsg": "آیا مطمئن هستید که میخواهید این سرویس اطلاعرسانی را برای تمامی مانیتورها حذف کنید؟",
+ "resolverserverDescription": "سرویس CloudFlare به عنوان سرور پیشفرض استفاده میشود، شما میتوانید آنرا به هر سرور دیگری بعدا تغییر دهید.",
+ "rrtypeDescription": "لطفا نوع Resource Record را انتخاب کنید",
+ "pauseMonitorMsg": "آیا مطمئن هستید که میخواهید این مانیتور را متوقف کنید ؟",
+ "enableDefaultNotificationDescription": "برای هر مانیتور جدید، این سرویس اطلاعرسانی به صورت پیشفرض فعال خواهد شد. البته که شما میتوانید به صورت دستی آنرا برای هر مانیتور به صورت جداگانه غیر فعال کنید.",
+ "clearEventsMsg": "آیا از اینکه تمامی تاریخچه رویدادهای این مانیتور حذف شود مطمئن هستید؟",
+ "clearHeartbeatsMsg": "آیا از اینکه تاریخچه تمامی ضربان قلب های این مانیتور حذف شود مطمئن هستید؟",
+ "confirmClearStatisticsMsg": "آیا از حذف تمامی آمار و ارقام مطمئن هستید؟",
+ "importHandleDescription": "اگر که میخواهید بیخیال مانیتورها و یا سرویسهای اطلاعرسانی که با نام مشابه از قبل موجود هستند شوید، گزینه 'بیخیال موارد ..' را انتخاب کنید. توجه کنید که گزینه 'بازنویسی' تمامی موارد موجود با نام مشابه را از بین خواهد برد.",
+ "confirmImportMsg": "آیا از بازگردانی بک آپ مطمئن هستید؟ لطفا از اینکه نوع بازگردانی درستی را انتخاب کردهاید اطمینان حاصل کنید.",
+ "twoFAVerifyLabel": "لطفا جهت اطمینان از عملکرد احراز هویت دو مرحلهای توکن خود را وارد کنید:",
+ "tokenValidSettingsMsg": "توکن شما معتبر است، هم اکنون میتوانید احراز هویت دو مرحلهای را فعال کنید.",
+ "confirmEnableTwoFAMsg": "آیا از فعال سازی احراز هویت دو مرحلهای مطمئن هستید؟",
+ "confirmDisableTwoFAMsg": "آیا از غیرفعال سازی احراز هویت دومرحلهای مطمئن هستید؟",
+ "Settings": "تنظیمات",
+ "Dashboard": "پیشخوان",
+ "New Update": "بروزرسانی جدید",
+ "Language": "زبان",
+ "Appearance": "ظاهر",
+ "Theme": "پوسته",
+ "General": "عمومی",
+ "Version": "نسخه",
+ "Check Update On GitHub": "بررسی بروزرسانی بر روی گیتهاب",
+ "List": "لیست",
+ "Add": "اضافه",
+ "Add New Monitor": "اضافه کردن مانیتور جدید",
+ "Quick Stats": "خلاصه وضعیت",
+ "Up": "فعال",
+ "Down": "غیرفعال",
+ "Pending": "در انتظار تایید",
+ "Unknown": "نامشخص",
+ "Pause": "توقف",
+ "Name": "نام",
+ "Status": "وضعیت",
+ "DateTime": "تاریخ و زمان",
+ "Message": "پیام",
+ "No important events": "رخداد جدیدی موجود نیست",
+ "Resume": "ادامه",
+ "Edit": "ویرایش",
+ "Delete": "حذف",
+ "Current": "فعلی",
+ "Uptime": "آپتایم",
+ "Cert Exp.": "تاریخ انقضای SSL.",
+ "day": "روز",
+ "-day": "-روز",
+ "hour": "ساعت",
+ "-hour": "-ساعت",
+ "Response": "پاسخ",
+ "Ping": "Ping",
+ "Monitor Type": "نوع مانیتور",
+ "Keyword": "کلمه کلیدی",
+ "Friendly Name": "عنوان",
+ "URL": "آدرس (URL)",
+ "Hostname": "نام میزبان (Hostname)",
+ "Port": "پورت",
+ "Heartbeat Interval": "فاصله هر Heartbeat",
+ "Retries": "تلاش مجدد",
+ "Heartbeat Retry Interval": "فاصله تلاش مجدد برایHeartbeat",
+ "Advanced": "پیشرفته",
+ "Upside Down Mode": "حالت بر عکس",
+ "Max. Redirects": "حداکثر تعداد ریدایرکت",
+ "Accepted Status Codes": "وضعیتهای (Status Code) های قابل قبول",
+ "Save": "ذخیره",
+ "Notifications": "اطلاعرسانیها",
+ "Not available, please setup.": "هیچ موردی موجود نیست، اولین مورد را راه اندازی کنید.",
+ "Setup Notification": "راه اندازی اطلاعرسانی",
+ "Light": "روشن",
+ "Dark": "تاریک",
+ "Auto": "اتوماتیک",
+ "Theme - Heartbeat Bar": "ظاهر نوار Heartbeat",
+ "Normal": "معمولی",
+ "Bottom": "پایین",
+ "None": "هیچ کدام",
+ "Timezone": "موقعیت زمانی",
+ "Search Engine Visibility": "قابلیت دسترسی برای موتورهای جستجو",
+ "Allow indexing": "اجازه ایندکس شدن در موتور های جستجو را بده",
+ "Discourage search engines from indexing site": "به موتورهای جستجو اجازه ایندکس کردن این سامانه را نده",
+ "Change Password": "تغییر رمزعبور",
+ "Current Password": "رمزعبور فعلی",
+ "New Password": "رمزعبور جدید",
+ "Repeat New Password": "تکرار رمزعبور جدید",
+ "Update Password": "بروز رسانی رمز عبور",
+ "Disable Auth": "غیر فعال سازی تایید هویت",
+ "Enable Auth": "فعال سازی تایید هویت",
+ "disableauth.message1": "آیا مطمئن هستید که میخواهید احراز هویت را غیر فعال کنید ?",
+ "disableauth.message2": "این ویژگی برای کسانی است که لایه امنیتی شخص ثالث دیگر بر روی این آدرس فعال کردهاند ، مانند Cloudflare Access.",
+ "Please use this option carefully!": "لطفا از این امکان با دقت استفاده کنید!",
+ "Logout": "خروج",
+ "Leave": "منصرف شدم",
+ "I understand, please disable": "متوجه هستم، غیرفعال کن",
+ "Confirm": "تایید",
+ "Yes": "بلی",
+ "No": "خیر",
+ "Username": "نام کاربری",
+ "Password": "کلمه عبور",
+ "Remember me": "مراب هب خاطر بسپار",
+ "Login": "ورود",
+ "No Monitors, please": "هیچ مانیتوری موجود نیست، لطفا",
+ "add one": "یک مورد اضافه کنید",
+ "Notification Type": "نوع اطلاعرسانی",
+ "Email": "ایمیل",
+ "Test": "تست",
+ "Certificate Info": "اطلاعات سرتیفیکت",
+ "Resolver Server": "سرور Resolver",
+ "Resource Record Type": "نوع رکورد (Resource Record Type)",
+ "Last Result": "آخرین نتیجه",
+ "Create your admin account": "ایجاد حساب کاربری مدیر",
+ "Repeat Password": "تکرار رمز عبور",
+ "Import Backup": "بازگردانی فایل پشتیبان",
+ "Export Backup": "ذخیره فایل پشتیبان",
+ "Export": "استخراج اطلاعات",
+ "Import": "ورود اطلاعات",
+ "respTime": "زمان پاسخگویی (میلیثانیه)",
+ "notAvailableShort": "ناموجود",
+ "Default enabled": "به صورت پیشفرض فعال باشد",
+ "Apply on all existing monitors": "بر روی تمامی مانیتورهای فعلی اعمال شود",
+ "Create": "ایجاد",
+ "Clear Data": "پاکسازی دادهها",
+ "Events": "رخدادها",
+ "Heartbeats": "ضربان قلب",
+ "Auto Get": "Auto Get",
+ "backupDescription": "شما میتوانید تمامی مانیتورها و تنظیمات اطلاعرسانیها را در قالب یه فایل JSON دریافت کنید.",
+ "backupDescription2": "البته تاریخچه رخدادها دراین فایل قرار نخواهند داشت.",
+ "backupDescription3": "توجه داشته باشید که تمامی اطلاعات حساس شما مانند توکنها نیز در این فایل وجود خواهد داشت ، پس از این فایل به خوبی مراقبت کنید.",
+ "alertNoFile": "لطفا یک فایل برای «ورود اطلاعات» انتخاب کنید..",
+ "alertWrongFileType": "یک فایل JSON انتخاب کنید.",
+ "Clear all statistics": "پاکسازی تمامی آمار و ارقام",
+ "Skip existing": "بیخیال مواردی که از قبل موجود است",
+ "Overwrite": "بازنویسی",
+ "Options": "تنظیمات",
+ "Keep both": "هر دو را نگه دار",
+ "Verify Token": "تایید توکن",
+ "Setup 2FA": "تنظیمات احراز دو مرحلهای",
+ "Enable 2FA": "فعال سازی احراز 2 مرحلهای",
+ "Disable 2FA": "غیر فعال کردن احراز 2 مرحلهای",
+ "2FA Settings": "تنظیمات احراز 2 مرحلهای",
+ "Two Factor Authentication": "احراز هویت دومرحلهای",
+ "Active": "فعال",
+ "Inactive": "غیرفعال",
+ "Token": "توکن",
+ "Show URI": "نمایش آدرس (URI)",
+ "Tags": "برچسبها",
+ "Add New below or Select...": "یک مورد جدید اضافه کنید و یا از لیست انتخاب کنید…",
+ "Tag with this name already exist.": "یک برچسب با این «نام» از قبل وجود دارد.",
+ "Tag with this value already exist.": "یک برچسب با این «مقدار» از قبل وجود دارد.",
+ "color": "رنگ",
+ "value (optional)": "مقدار (اختیاری)",
+ "Gray": "خاکستری",
+ "Red": "قرمز",
+ "Orange": "نارنجی",
+ "Green": "سبز",
+ "Blue": "آبی",
+ "Indigo": "نیلی",
+ "Purple": "بنفش",
+ "Pink": "صورتی",
+ "Search...": "جستجو …",
+ "Avg. Ping": "متوسط پینگ",
+ "Avg. Response": "متوسط زمان پاسخ",
+ "Entry Page": "صفحه ورودی",
+ "statusPageNothing": "چیزی اینجا نیست، لطفا یک گروه و یا یک مانیتور اضافه کنید.",
+ "No Services": "هیچ سرویسی موجود نیست",
+ "All Systems Operational": "تمامی سیستمها فعال هستند",
+ "Partially Degraded Service": "افت نسبی کیفیت سرویس",
+ "Degraded Service": "افت کامل کیفیت سرویس",
+ "Add Group": "اضافه کردن گروه",
+ "Add a monitor": "اضافه کردن مانیتور",
+ "Edit Status Page": "ویرایش صفحه وضعیت",
+ "Status Page": "صفحه وضعیت",
+ "Status Pages": "صفحه وضعیت",
+ "Go to Dashboard": "رفتن به پیشخوان",
+ "Uptime Kuma": "آپتایم کوما",
+ "records": "مورد",
+ "One record": "یک مورد",
+ "Info": "اطلاعات",
+ "Powered by": "نیرو گرفته از",
+ "apprise": "Apprise (پشتیبانی از 50+ خدمات اعلان)",
+ "Monitor": "مانیتور | مانتیور ها",
+ "Help": "کمک",
+ "Game": "بازی",
+ "Primary Base URL": "آدرس URL اصلی",
+ "Passive Monitor Type": "حالت مانیتور غیرفعال",
+ "Specific Monitor Type": "حالت مانیتور شخصی",
+ "statusMaintenance": "در دست تعمیر",
+ "Maintenance": "در حال تعمیر",
+ "General Monitor Type": "حالت مانیتور عمومی",
+ "markdownSupported": "شیوه نگارشی Markdown پشتیبانی می شود",
+ "Body Encoding": "انکودینگ محتوا",
+ "twilioFromNumber": "از شماره",
+ "twilioToNumber": "به شماره",
+ "Resend Notification if Down X times consecutively": "اگر X بار متوالی غیرفعال بود، مجددا اطلاع بده",
+ "successMessageExplanation": "پیام MQTT موفقیت آمیز به نظر نمیرسد",
+ "Create Incident": "یک حادثه را اطلاع دهید",
+ "Switch to Light Theme": "تغییر به حالت روشن",
+ "No monitors available.": "هیچ مانیتوری در دسترس نیست.",
+ "deleteProxyMsg": "آیا مطمئن هستید که میخواهید پروکسی را برای همه مانیتور ها غیرفعال کنید؟",
+ "enableProxyDescription": "این پروکسی تا زمانی که فعال نشود روی درخواست های مانیتور اثری نخواهد داشت. میتوانید با توجه به وضعیت فعالسازی، پروکسی را از همه مانیتورها به طور موقت غیرفعال کنید.",
+ "supportTelegramChatID": "پشتیبانی از چت مستقیم / گروه / کانال",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "توکن دسترسی طولانی مدت (Long-Lived Access Token) را می توان با کلیک بر روی نام پروفایل خود (پایین سمت چپ) و اسکرول کردن به پایین و سپس روی Create Token ایجاد کرد. ",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "فهرستی از سرویسهای اعلان را میتوانید در هوم اسیستنت در قسمت «ابزارهای برنامهنویس > خدمات» برای «اعلان» جستجو کنید تا نام دستگاه/تلفن خود را پیدا کنید.",
+ "lastDay4": "چهارمین روز آخر ماه",
+ "dnsCacheDescription": "ممکن است در برخی از محیط های IPv6 کار نکند، اگر با مشکلی مواجه شدید آن را غیرفعال کنید.",
+ "Maintenance Time Window of a Day": "صفحه نگه داری در روز",
+ "Messaging API": "API پیام (Messaging API)",
+ "wayToGetLineChannelToken": "ابتدا به {0} دسترسی پیدا کنید، یک ارائه دهنده و کانال ایجاد کنید (API پیام)، سپس می توانید رمز توکن کانال و آیدی کاربری را از آیتم های منوی ذکر شده در بالا دریافت کنید.",
+ "aboutMattermostChannelName": "میتوانید با وارد کردن نام کانال در قسمت «نام کانال»، کانال پیشفرضی را که وب هوک به آن پست میکند لغو کنید. این باید در تنظیمات Mattermost Webhook فعال شود. مثال: #other-channel",
+ "dnsPortDescription": "پورت سرور DNS. پیش فرض ۵۳. می توانید این عدد را در هر زمانی عوض کنید.",
+ "affectedStatusPages": "نمایش این پیام تعمیر و نگه داری در صفحات استاتوس انتخاب شده",
+ "octopushSMSSender": "نام فرستنده پیامک: 3-11 الفبای انگلیسی، حروف و فاصله (a-zA-Z0-9)",
+ "Lowcost": "کم هزینه",
+ "You can divide numbers with": "می توانید اعداد را با آن تقسیم کنید",
+ "goAlertInfo": "GoAlert یک برنامه اوپن سورس برای زمانبندی تماس، افزایش خودکار و اعلانها (مانند پیامک یا تماسهای صوتی) است. به طور خودکار شخص مناسب، راه درست و در زمان مناسب را درگیر کنید! {0}",
+ "API Keys": "کلید های API",
+ "Expiry": "انقضا",
+ "Expiry date": "انقضا در تاریخ",
+ "Don't expire": "بدون انقضا (منقضی نمی شود)",
+ "For safety, must use secret key": "برای امنیت، میببایستی از SecretKey استفاده کنید",
+ "promosmsTypeFlash": "SMS FLASH - پیام به طور خودکار در دستگاه گیرنده نشان داده می شود. فقط به گیرندگان لهستانی محدود می شود.",
+ "promosmsTypeFull": "SMS FULL - پیامک پریموم، می توانید از نام فرستنده خود استفاده کنید (ابتدا باید نام خود را ثبت کنید). قابل اعتماد برای هشدار.",
+ "matrixHomeserverURL": "URL هوم سرور (با http(s):// و پورت اختیاری)",
+ "matrixDesc1": "با مراجعه به بخش پیشرفته تنظیمات اتاق در کلاینت Matrix خود می توانید آیدی داخلی اتاق را بیابید. باید شبیه \"!QMdRCpUIfLwsfjxye6:home.server\" باشد.",
+ "wayToGetPagerDutyKey": "با رفتن به Service -> Service Directory -> (Select a Service) -> Integrations -> Add integration می توانید این مورد را دریافت کنید. در اینجا می توانید \"Events API V2\" را جستجو کنید. اطلاعات بیشتر در {0}",
+ "smseagleRecipientType": "نوع گیرنده",
+ "smseagleEncoding": "ارسال به صورت یونیکد",
+ "Leave blank to use a shared sender number.": "برای استفاده از شماره فرستنده مشترک، آن را خالی بگذارید.",
+ "onebotSafetyTips": "برای امنیت، میبایستی توکن دسترسی اضافه کنید",
+ "Custom Monitor Type": "نوع مانیتور سفارشی",
+ "apiKeyAddedMsg": "کلید API شما اضافه شده است. لطفاً آن را یادداشت کنید زیرا دیگر نمایش داده نخواهد شد.",
+ "deleteAPIKeyMsg": "آیا مطمئن هستید که می خواهید این کلید API را غیرفعال کنید؟",
+ "twilioAccountSID": "SID حساب",
+ "twilioAuthToken": "توکن اعتبارسنجی",
+ "appriseNotInstalled": "Apprise نصب نشده است. {0}",
+ "trustProxyDescription": "به هدرهای «X-Forwarded-*» اعتماد کن. اگر میخواهید IP مشتری صحیح را دریافت کنید و آپتایم کومای شما پشت پروکسی مانند Nginx یا Apache قرار دارد، باید این گزینه را فعال کنید.",
+ "matrixDesc2": "اکیداً توصیه میشود که یک کاربر جدید ایجاد کنید و از رمز دسترسی کاربر Matrix خود استفاده نکنید زیرا امکان دسترسی کامل به حساب شما و تمام اتاقهایی را که به آنها ملحق شدهاید میدهد. در عوض، یک کاربر جدید ایجاد کنید و فقط او را به اتاقی دعوت کنید که میخواهید اعلان را دریافت کنید. میتوانید با اجرای {0} توکن دسترسی را دریافت کنید",
+ "Certificate Chain": "زنجیره گواهی (Certificate Chain)",
+ "telegramMessageThreadID": "(اختیاری) آیدی Thread پیام",
+ "telegramMessageThreadIDDescription": "(اختیاری) شناسه منحصر به فرد برای موضوع پیام هدف در انجمن. فقط برای سوپر گروه های انجمن",
+ "Channel Name": "نام کانال",
+ "auto acknowledged": "تصدیق خودکار",
+ "needPushEvery": "هر {0} ثانیه، URL زیر را صدا بزن.",
+ "pushOptionalParams": "پارامترهای اختیاری: {0}",
+ "Affected Monitors": "مانیتورهای تحت تأثیر",
+ "Pick Affected Monitors...": "انتخاب مانیتورهای تحت تأثیر…",
+ "Start of maintenance": "زمان شروع نگهداری",
+ "All Status Pages": "همه صفحات مشاهده وضعیت",
+ "Select status pages...": "انتخاب صفحه مشاهده وضعیت…",
+ "here": "اینجا",
+ "Required": "اجباری",
+ "Post URL": "URL بعدی",
+ "defaultNotificationName": "هشدار {notification} در ({number})",
+ "Add one": "اضافه کردن",
+ "Page Not Found": "صفحه درخواستی پیدا نشد",
+ "Reverse Proxy": "ریورس پروکسی",
+ "Backup": "پشتیبان گیری",
+ "API Key": "کلید API",
+ "Show update if available": "نمایش بروز رسانی اگر موجود بود",
+ "Check how to config it for WebSocket": "بررسی چگونگی پیکربندی برای وب سوکت",
+ "Steam Game Server": "سرور گیم استیم",
+ "Most likely causes:": "به احتمال زیاد بخاطر:",
+ "The resource is no longer available.": "منبع دیگر در دسترس نیست.",
+ "Docker Container": "کانتینر داکر",
+ "Container Name / ID": "نام / آیدی کانتینر",
+ "Docker Host": "هاست داکر",
+ "Docker Hosts": "هاست های داکر",
+ "Domain": "دامنه",
+ "Clone Monitor": "تکثیر",
+ "Clone": "تکثیر",
+ "cloneOf": "تکثیر {0}",
+ "Prefix Custom Message": "پیشوند پیام سفارشی",
+ "enableGRPCTls": "امکان ارسال درخواست gRPC با اتصال TLS",
+ "pushoversounds classical": "کلاسیک",
+ "smtpDkimSettings": "تنظیمات DKIM",
+ "aboutChannelName": "اگر میخواهید کانال وب هوک را دور بزنید، نام کانال را در قسمت {0} نام کانال وارد کنید. مثال: #other-channel",
+ "aboutKumaURL": "اگر قسمت URL آپتایم کوما را خالی بگذارید، به طور پیشفرض به صفحه پروژه گیت هاب تبدیل میشود.",
+ "smtpDkimDesc": "لطفاً برای استفاده به Nodemailer DKIM {0} مراجعه کنید.",
+ "alertaApiEndpoint": "اند پوینت API",
+ "serwersmsAPIUser": "نام کاربری API (شامل پیشوند webapi_)",
+ "serwersmsAPIPassword": "رمز عبور API",
+ "serwersmsPhoneNumber": "شماره موبایل",
+ "serwersmsSenderName": "نام فرستنده پیامک (ثبت شده از طریق پورتال مشتری)",
+ "alertaRecoverState": "حالت ریکاور (Recover State)",
+ "smseagleToken": "توکن دسترسی API",
+ "Google Analytics ID": "آیدی گوگل آنالیتیکس",
+ "pagertreeLow": "کم",
+ "pagertreeMedium": "متوسط",
+ "pagertreeHigh": "زیاد",
+ "pagertreeCritical": "حساس - خیلی مهم",
+ "pagertreeIntegrationUrl": "URL یکپارچه سازی",
+ "pagertreeUrgency": "اهمیت",
+ "pagertreeSilent": "بی صدا",
+ "pagertreeResolve": "Resolve اتوماتیک",
+ "pagertreeDoNothing": "هیچ کاری نکن",
+ "wayToGetPagerTreeIntegrationURL": "پس از ایجاد ادغام آپتایم کوما در PagerTree، اند پوینت را کپی کنید. مشاهده جزئیات کامل در {0}",
+ "telegramProtectContent": "محافظت از ارسال/ذخیره",
+ "telegramProtectContentDescription": "در صورت فعال بودن، پیامهای ربات در تلگرام از ارسال و ذخیره محافظت میشوند.",
+ "wayToGetTelegramChatID": "برای مشاهده chat_id می توانید شناسه چت خود را با ارسال یک پیام به ربات و رفتن به این URL دریافت کنید:",
+ "YOUR BOT TOKEN HERE": "شناسه ربات خود را اینجا وارد کنید",
+ "chatIDNotFound": "شناسه چت یافت نشد. لطفا ابتدا به ربات پیام دهید",
+ "disableCloudflaredNoAuthMsg": "شما در حالت بدون احراز هویت هستید، رمز عبور در این حالت لازم نیست.",
+ "Trigger type:": "نوع راه اندازی:",
+ "DateTime Range": "محدوده تاریخ",
+ "loadingError": "نمی توان داده ها را دریافت کرد، لطفاً بعداً دوباره امتحان کنید.",
+ "High": "زیاد",
+ "Retry": "تلاش مجدد",
+ "Topic": "موضوع",
+ "Integration Key": "کلید یکپارچه سازی",
+ "Edit Tag": "ویرایش تگ",
+ "Server Address": "آدرس سرور",
+ "Learn More": "بیشتر بدانید",
+ "Customize": "شخصی سازی",
+ "Custom Footer": "فوتر اختصاصی",
+ "No Proxy": "بدون پروکسی",
+ "Authentication": "اعتبارسنجی",
+ "steamApiKeyDescription": "برای مانیتورینگ یک سرور استیم، شما نیاز به یک \"Steam Web-API key\" دارید. برای دریافت کلید میتوانید از اینجا اقدام کنید: ",
+ "No Monitors": "بدون مانیتور",
+ "Untitled Group": "دسته بنده نشده",
+ "Services": "سرویس ها",
+ "Discard": "دست کشیدن",
+ "Cancel": "انصراف",
+ "About": "درباره آپتایم کوما",
+ "wayToGetCloudflaredURL": "(دریافت Cloudflared از {0})",
+ "cloudflareWebsite": "وب سایت کلادفلر",
+ "shrinkDatabaseDescription": "تریگر VACUUM برای SQLite. اگر دیتابیس شما بعد از 1.10.0 ایجاد شده باشد، AUTO_VACUUM قبلاً فعال شده است و لازم نیست این عمل انجام شود. (Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.).",
+ "Message:": "پیام:",
+ "HTTP Headers": "هدر های HTTP",
+ "Bot Token": "توکن بات",
+ "SecretKey": "کلید محرمانه (SecretKey)",
+ "telegramSendSilently": "ارسال بی صدا",
+ "telegramSendSilentlyDescription": "پیام را بی صدا ارسال کن. در این حالت کاربران یک اعلان بدون صدا دریافت خواهند کرد.",
+ "install": "نصب",
+ "Icon URL": "URL آیکون",
+ "Steam API Key": "کلید API استیم",
+ "Security": "امنیت",
+ "light": "روشن",
+ "Query": "کوئری",
+ "Effective Date Range": "محدوده تاریخ مورد تاثیر (اختیاری)",
+ "statusPageRefreshIn": "بارگذاری مجدد در هر: {0}",
+ "Content Type": "نوع محتوا (Content Type)",
+ "Server URL": "آدرس سرور",
+ "Priority": "اهمیت",
+ "emojiCheatSheet": "چیت شیت ایموجی ها: {0}",
+ "Read more": "بیشتر بدانید",
+ "webhookJsonDesc": "{0} برای هر HTTP سرور جدیدی مانند Express.js مناسب است",
+ "Method": "متد",
+ "Headers": "هدر ها",
+ "PushUrl": "URL پوش",
+ "HeadersInvalidFormat": "هدر ریکوئست یک JSON درست نیست: ",
+ "BodyInvalidFormat": "هدر ریکوئست یک JSON درست نیست: ",
+ "Monitor History": "گزارش مانیتورینگ",
+ "clearDataOlderThan": "گزارشات مانیتورینگ را برای {0} روز نگه دار.",
+ "PasswordsDoNotMatch": "رمز عبور وارد شده درست نیست.",
+ "topic": "موضوع",
+ "topicExplanation": "موضوع MQTT برای مانیتور",
+ "successMessage": "پیام موفقیت آمیز",
+ "recent": "اخیر",
+ "Done": "انجام شده",
+ "Shrink Database": "فشرده سازی دیتابیس",
+ "Pick a RR-Type...": "یک تایپ RR انتخاب کنید…",
+ "Pick Accepted Status Codes...": "یک استاتوس کد قابل قبول انتخاب کنید…",
+ "Default": "پیش فرض",
+ "HTTP Options": "آپشن های HTTP",
+ "Title": "عنوان",
+ "Content": "محتوا",
+ "primary": "اولیه",
+ "dark": "تیره",
+ "Post": "اطلاع بده",
+ "Please input title and content": "لطفا یک عنوان و محتوا وارد کنید",
+ "Created": "ساخته شده در",
+ "Last Updated": "ویرایش شده در",
+ "Unpin": "برداشتن",
+ "Switch to Dark Theme": "تغییر به حالت تیره",
+ "Show Tags": "نمایش تگ ها",
+ "Hide Tags": "مخفی سازی تگ ها",
+ "Description": "توضحیات",
+ "Custom CSS": "CSS اختصاصی",
+ "deleteStatusPageMsg": "آیا بابت حذف این استاتوس پیچ مطمئن هستید؟",
+ "Proxies": "پروکسی ها",
+ "appriseInstalled": "Apprise نصب شده است.",
+ "Body": "متن",
+ "Start": "شروع",
+ "Stop": "توقف",
+ "Add New Status Page": "افزودن صفحه استاتوس جدید",
+ "Slug": "لینک",
+ "Accept characters:": "کاراکتر های مورد تایید:",
+ "startOrEndWithOnly": "شروع یا پایان فقط با {0}",
+ "No consecutive dashes": "بدون خط تیره متوالی",
+ "Next": "بعدی",
+ "The slug is already taken. Please choose another slug.": "این لینک قبلا گرفته شده است. لطفا لینک دیگری را انتخاب کنید.",
+ "New Status Page": "صفحه استاتوس جدید",
+ "Don't know how to get the token? Please read the guide:": "نمی دانید توکن خود را چگونه دریافت کنید؟ لطفا این راهنما را بخوانید:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "اگر در حال حاضر از طریق تونل به کلادفلر متصل می شوید، ممکن است اتصال فعلی قطع شود. آیا مطمئن هستید که می خواهید کلادفلر را متوقف کنید؟ رمز عبور خود را برای تایید این دستور تایپ کنید.",
+ "Trust Proxy": "پروکسی مورد اعتماد",
+ "Other Software": "برنامه های دیگر",
+ "For example: nginx, Apache and Traefik.": "برای مثال: Nginx ،Apache و Traefik.",
+ "signedInDispDisabled": "اعتبارسنجی غیرفعال شده است.",
+ "RadiusCallingStationIdDescription": "شناسه دستگاه تماس گیرنده",
+ "Certificate Expiry Notification": "اطلاعیه انقضای گواهی",
+ "RadiusSecret": "کلید Radius",
+ "API Username": "نام کاربری API",
+ "Also check beta release": "همچنین برای نسخه های بتا نیز جستجو کن",
+ "Using a Reverse Proxy?": "استفاده از ریورس پروکسی؟",
+ "There might be a typing error in the address.": "ممکن است یک خطای تایپ در آدرس وجود داشته باشد.",
+ "What you can try:": "آنچه می توانید امتحان کنید:",
+ "Go back to the previous page.": "بازگشت به صفحه قبلی.",
+ "Coming Soon": "به زودی",
+ "Connection String": "رشته اتصال (Connection String)",
+ "settingsCertificateExpiry": "انقضای گواهی TLS",
+ "certificationExpiryDescription": "مانیتور های HTTPS راه اندازی میشود زمانی که گواهی TLS منقضی شود در:",
+ "Retype the address.": "آدرس را دوباره تایپ کنید.",
+ "Setup Docker Host": "راه اندازی هاست داکر",
+ "Connection Type": "نوع اتصال",
+ "Docker Daemon": "Daemon داکر",
+ "deleteDockerHostMsg": "آیا مطمئن هستید که می خواهید این هاست داکر را برای همه مانیتورها حذف کنید؟",
+ "Workstation": "محل کار (Workstation)",
+ "Packet Size": "سایز پکت",
+ "wayToGetTelegramToken": "شما میتوانید توکن خود را از {0} دریافت کنید.",
+ "Chat ID": "آیدی چت",
+ "wayToGetLineNotifyToken": "میتوانید یک توکن جهت دسترسی از {0} دریافت کنید",
+ "Examples": "مثال ها",
+ "Home Assistant URL": "URL هوم اسیستنت شما",
+ "Long-Lived Access Token": "توکن دسترسی طولانی مدت",
+ "Notification Service": "سرویس اطلاع رسانی",
+ "default: notify all devices": "پیش فرض: اطلاع به همه دستگاه ها",
+ "Automations can optionally be triggered in Home Assistant:": "اتوماسیون ها می توانند به صورت اختیاری در هوم اسیستنت فعال شوند:",
+ "Event type:": "نوع ایونت:",
+ "Event data:": "نوع دیتا:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "سپس یک عمل را انتخاب کنید، برای مثال صحنه را به جایی که نور RGB قرمز است تغییر دهید.",
+ "Optional": "اختیاری",
+ "recurringInterval": "وقفه",
+ "Recurring": "مکرر",
+ "strategyManual": "فعال/غیرفعال سازی به صورت دستی",
+ "warningTimezone": "این از منطقه زمانی سرور استفاده می کند",
+ "weekdayShortMon": "دوشنبه",
+ "weekdayShortTue": "سه شنبه",
+ "weekdayShortWed": "چهارشنبه",
+ "weekdayShortThu": "پنجشنبه",
+ "weekdayShortFri": "جمعه",
+ "weekdayShortSat": "شنبه",
+ "weekdayShortSun": "یکشنبه",
+ "dayOfWeek": "روز های هفته",
+ "dayOfMonth": "روز های ماه",
+ "lastDay": "روز آخر",
+ "lastDay1": "روز آخر ماه",
+ "lastDay2": "دومین روز آخر ماه",
+ "lastDay3": "سومین روز آخر ماه",
+ "Enable": "فعال سازی",
+ "Single Maintenance Window": "تعمیر و نگه داری تک صفحه",
+ "Schedule Maintenance": "زمانبندی تعمیر و نگهداری",
+ "Date and Time": "زمان و تاریخ",
+ "plugin": "پلاگین | پلاگین ها",
+ "installing": "در حال نصب",
+ "uninstall": "حذف از نصب",
+ "uninstalling": "درحال حذف",
+ "confirmUninstallPlugin": "آیا مطمئن هستید که می خواهید این پلاگین را حذف از نصب کنید؟",
+ "notificationRegional": "منطقه ای",
+ "secureOptionNone": "None / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "خطای TLS را نادیده بگیر",
+ "From Email": "از ایمیل",
+ "emailCustomSubject": "موضوع سفارشی",
+ "To Email": "به ایمیل",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "URL وب هوک دیسکورد",
+ "Bot Display Name": "نام نمایشی ربات",
+ "Hello @everyone is...": "سلام {'@'} همه…",
+ "wayToGetTeamsURL": "میتوانید نحوه ایجاد وب هوک را در {0} بیاموزید.",
+ "wayToGetZohoCliqURL": "میتوانید نحوه ایجاد وب هوک را در {0} بیاموزید.",
+ "needSignalAPI": "شما باید یک Signal Client با REST API داشته باشید.",
+ "wayToCheckSignalURL": "برای مشاهده نحوه تنظیم آن می توانید این URL را بررسی کنید:",
+ "Number": "عدد",
+ "Recipients": "گیرندگان",
+ "Channel access token": "توکن دسترسی به کانال",
+ "Line Developers Console": "کنسول توسعه دهندگان لاین (Line Developers Console)",
+ "lineDevConsoleTo": "کنسول توسعه دهندگان لاین (Line Developers Console) - {0}",
+ "Basic Settings": "تنظیمات پایه",
+ "User ID": "آیدی کاربر",
+ "aboutIconURL": "میتوانید پیوندی به یک عکس در \"URL آیکون \" ارائه دهید تا عکس نمایه پیشفرض را لغو کنید. اگر نماد Emoji تنظیم شده باشد، این مورد استفاده نخواهد شد.",
+ "dataRetentionTimeError": "دوره نگهداری باید 0 یا بیشتر باشد",
+ "wayToGetDiscordURL": "شما می توانید این را با رفتن به تنظیمات سرور -> ادغام -> مشاهده وب هوک -> وب هوک جدید (Settings -> Integrations -> View Webhooks -> New Webhook) دریافت کنید",
+ "infiniteRetention": "برای دوره بی نهایت 0 را وارد تنظیم کنید.",
+ "confirmDeleteTagMsg": "آیا مطمئن هستید که می خواهید این تگ را حذف کنید؟ مانیتورهای مرتبط با این تگ حذف نخواهند شد.",
+ "grpcMethodDescription": "نام روش تبدیل به فرمت cammelCase مانند sayHello، check و غیره.",
+ "deleteMaintenanceMsg": "آیا مطمئن هستید که می خواهید این تعمیر و نگهداری را حذف کنید؟",
+ "recurringIntervalMessage": "یکبار اجرا برای هر روز | یکبار اجرا در هر {0} روز",
+ "affectedMonitorsDescription": "مانیتورهایی را انتخاب کنید که تحت تأثیر تعمیر و نگهداری فعلی هستند",
+ "atLeastOneMonitor": "حداقل یک مانیتور مورد تاثیر را انتخاب کنید",
+ "octopushAPIKey": "\"کلید API\" از اعتبارنامه های HTTP API در کنترل پنل",
+ "octopushLogin": "\"ورود\" از اعتبار HTTP API در کنترل پنل",
+ "promosmsLogin": "نام ورود API",
+ "pushoversounds cashregister": "صندوق فروش",
+ "pushoversounds falling": "رها کردن",
+ "pushoversounds incoming": "ورودی",
+ "pushoversounds intermission": "وقفه",
+ "pushoversounds magic": "سحر آمیز",
+ "pushoversounds mechanical": "مکانیکی",
+ "pushoversounds pianobar": "پیانو بار",
+ "pushoversounds siren": "آژیر",
+ "pushoversounds spacealarm": "هشدار فضایی",
+ "pushoversounds gamelan": "گیم لن (Gamelan)",
+ "Current User": "کاربر فعلی",
+ "pushoversounds none": "بی صدا",
+ "pushoversounds tugboat": "قایق یدک کش",
+ "pushoversounds alien": "هشدار بیگانه (طولانی)",
+ "pushoversounds climb": "صعود (طولانی)",
+ "pushoversounds persistent": "پایدار (طولانی)",
+ "pushoversounds echo": "اکو (طولانی)",
+ "pushoversounds updown": "بالا پایین (طولانی)",
+ "pushoversounds vibrate": "فقط ویبره",
+ "pushyToken": "توکن دستگاه",
+ "GoogleChat": "Google Chat (فقط Google Workspace)",
+ "wayToGetKookBotToken": "یک برنامه ایجاد کنید و توکن ربات خود را از {0} دریافت کنید",
+ "User Key": "کلید کاربر",
+ "Message Title": "عنوان پیام",
+ "Notification Sound": "صدای اعلان",
+ "More info on:": "اطلاعات بیشتر در مورد: {0}",
+ "pushoverDesc1": "اولویت اضطراری (2) دارای وقفه پیشفرض 30 ثانیه بین تلاشهای مجدد است و پس از 1 ساعت منقضی میشود.",
+ "pushoverDesc2": "اگر میخواهید اعلانها را به دستگاههای مختلف ارسال کنید، قسمت دستگاه را پر کنید.",
+ "pushyAPIKey": "کلید Secret API",
+ "wayToGetKookGuildID": "«حالت توسعهدهنده» را در تنظیمات کوک روشن کنید و روی انجمن کلیک راست کنید تا شناسه آن را دریافت کنید",
+ "Guild ID": "گیلد آیدی (Guild ID)",
+ "SMS Type": "نوع پیامک",
+ "octopushTypePremium": "پرمیوم (سریع - پیشنهاد شده برای هشدار ها)",
+ "octopushTypeLowCost": "کم هزینه (آهسته - گاهی اوقات توسط اپراتور مسدود می شود)",
+ "checkPrice": "بررسی قیمتهای {0} :",
+ "apiCredentials": "اطلاعات API",
+ "octopushLegacyHint": "آیا از نسخه قدیمی Octopush (1387-1400) استفاده می کنید یا از نسخه جدید؟",
+ "octopushPhoneNumber": "شماره تلفن (حالت بین المللی مانند 989121234567+) ",
+ "LunaSea Device ID": "شناسه دستگاه LunaSea",
+ "Apprise URL": "آدرس Apprise",
+ "Example:": "مثال: {0}",
+ "Read more:": "بیشتر بخوانید: {0}",
+ "Free Mobile User Identifier": "شناسه کاربری Free Mobile",
+ "Free Mobile API Key": "کلید API در Free Mobile",
+ "Enable TLS": "فعال کردن TLS",
+ "Proto Service Name": "نام Proto Service",
+ "Proto Method": "متد Proto",
+ "Proto Content": "محتوای Proto",
+ "Economy": "اقتصاد",
+ "high": "زیاد",
+ "SMSManager API Docs": "مستندات SMSManager API ",
+ "Gateway Type": "نوع Gateway",
+ "Base URL": "URL پایه",
+ "goAlertIntegrationKeyInfo": "کلید ادغام API عمومی را برای سرویس در این قالب دریافت کنید \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee\" معمولاً مقدار پارامتر توکن URL کپی شده است.",
+ "AccessKeyId": "آیدی AccessKey",
+ "PhoneNumbers": "شماره های موبایل",
+ "TemplateCode": "کد تمپلیت",
+ "Sms template must contain parameters: ": "قالب پیامک باید دارای پارامترهای زیر باشد: ",
+ "Bark Endpoint": "اند پوینت Bark",
+ "Bark Group": "گروه Bark",
+ "Bark Sound": "صدای Bark",
+ "WebHookUrl": "آدرس وب هوک",
+ "Device Token": "توکن دستگاه",
+ "Platform": "پلتفرم",
+ "Check octopush prices": "بررسی قیمت های octopush {0}.",
+ "SendKey": "کلید ارسال (SendKey)",
+ "SecretAccessKey": "کلید دسترسی مخفی (AccessKey Secret)",
+ "SignName": "نام امضا (SignName)",
+ "Android": "اندروید",
+ "Huawei": "هواوی",
+ "WeCom Bot Key": "کلید ربات WeCom",
+ "Setup Proxy": "تنظیم پروکسی",
+ "Proxy Protocol": "پروتکل پروکسی",
+ "Proxy Server": "پروتکل سرور",
+ "promosmsTypeEco": "SMS ECO - ارزان اما کند و اغلب بارگذاری شده است. فقط به گیرندگان لهستانی محدود می شود.",
+ "promosmsTypeSpeed": "SPEED SMS - بالاترین اولویت در سیستم. بسیار سریع و قابل اعتماد اما پرهزینه (حدود دو برابر قیمت SMS FULL).",
+ "promosmsPhoneNumber": "شماره تلفن (برای گیرنده لهستانی می توانید کدهای منطقه را نادیده بگیرید)",
+ "promosmsSMSSender": "نام فرستنده پیامک: نام از پیش ثبت شده یا یکی از پیش فرض ها: InfoSMS، SMS Info، MaxSMS، INFO، SMS",
+ "promosmsAllowLongSMS": "اجازه برای پیامک طولانی",
+ "Feishu WebHookUrl": "آدرس وب هوک Feishu",
+ "Internal Room Id": "آیدی اتاق داخلی",
+ "Uptime Kuma URL": "URL آپتایم کوما",
+ "signalImportant": "مهم: شما نمی توانید گروه ها و اعداد را در گیرندگان ترکیب کنید!",
+ "aboutWebhooks": "اطلاعات بیشتر درباره وب هوک در: {0}",
+ "documentation": "مستندات",
+ "smtpDkimDomain": "نام دامنه",
+ "smtpDkimHashAlgo": "الگوریتم رمزگذاری (اختیاری)",
+ "smtpDkimheaderFieldNames": "کلیدهای هدر برای امضا (اختیاری)",
+ "smtpDkimskipFields": "کلیدهای هدر برای عدم امضا (اختیاری)",
+ "Integration URL": "URL یکپارچه سازی",
+ "smtpDkimKeySelector": "انتخابگر کلید (SecretKey)",
+ "smtpDkimPrivateKey": "کلید محرمانه (Private Key)",
+ "socket": "سوکت",
+ "do nothing": "هیچ کاری نکن",
+ "auto resolve": "حل خودکار",
+ "alertaEnvironment": "محیط",
+ "alertaApiKey": "کلید API",
+ "alertaAlertState": "وضعیت هشدار",
+ "smseagleTo": "شماره تلفن(ها)",
+ "smseagleGroup": "نام(های) گروه دفترچه تلفن",
+ "smseagleContact": "نام(های) تماس دفترچه تلفن",
+ "smseagleRecipient": "گیرنده(های) (چند مورد باید با کاما از هم جدا شوند)",
+ "smseagleUrl": "URL دستگاه SMSEagle شما",
+ "smseaglePriority": "اولویت پیام (0-9، پیش فرض = 0)",
+ "Recipient Number": "شماره گیرنده",
+ "From Name/Number": "از نام/شماره",
+ "Octopush API Version": "نسخه Octopush API",
+ "ntfy Topic": "موضوع ntfy",
+ "onebotHttpAddress": "آدرس HTTP OneBot",
+ "onebotMessageType": "نوع پیام OneBot",
+ "onebotGroupMessage": "گروه",
+ "onebotPrivateMessage": "خصوصی",
+ "onebotUserOrGroupId": "آیدی گروه/کاربر",
+ "PushDeer Key": "کلید PushDeer",
+ "wayToGetClickSendSMSToken": "میتوانید نام کاربری و کلید API را از {0} دریافت کنید.",
+ "Continue": "ادامه",
+ "Add Another": "افزودن یکی دیگر",
+ "Key Added": "کلید API اضافه شد",
+ "Add API Key": "افزودن کلید API",
+ "No API Keys": "بدون کلید API",
+ "apiKey-active": "فعال",
+ "apiKey-expired": "منقضی شده",
+ "apiKey-inactive": "غیرفعال",
+ "Expires": "انقضا",
+ "disableAPIKeyMsg": "آیا مطمئن هستید که می خواهید این کلید API را غیرفعال کنید؟",
+ "Generate": "ایجاد یک کلید API جدید",
+ "lunaseaTarget": "هدف",
+ "lunaseaDeviceID": "آيدی دستگاه",
+ "lunaseaUserID": "آیدی کاربر",
+ "Auto resolve or acknowledged": "حل خودکار یا اعلام اطلاع یافته (Auto resolve or acknowledged)",
+ "Legacy Octopush-DM": "(Legacy Octopush-DM)",
+ "smtpCC": "ارسال نسخه به",
+ "promosmsPassword": "رمز عبور API",
+ "pushoversounds pushover": "Pushover (پیشفرض)",
+ "pushoversounds bike": "دوچرخه",
+ "pushoversounds bugle": "بوق",
+ "pushoversounds cosmic": "کیهانی",
+ "resendEveryXTimes": "پیام را هر {0} بار دوباره ارسال کن",
+ "resendDisabled": "ارسال مجدد غیرفعال است",
+ "Push URL": "URL پوش",
+ "Schedule maintenance": "زمانبندی نگهداری (غیرفعال سازی دستی)",
+ "webhookFormDataDesc": "{multipart} برای PHP مناسب است. آرایه JSON نیاز است تا به این شکل باز شود {decodeFunction}",
+ "webhookAdditionalHeadersTitle": "هدر اضافی",
+ "webhookAdditionalHeadersDesc": "تنظیم هدر های اضافی که نیاز است با وب هوک ارسال شود.",
+ "Webhook URL": "آدرس وب هوک",
+ "Application Token": "توکن اپلیکیشن",
+ "Style": "حالت ها",
+ "info": "اطلاعات",
+ "warning": "هشدار",
+ "danger": "خطر",
+ "error": "خطا",
+ "critical": "اهمیت ویژه",
+ "HTTP Basic Auth": "حالت پایه احراز هویت (HTTP Basic Auth)",
+ "RadiusSecretDescription": "اشتراک گذاری Secret بین کاربر و سرور",
+ "RadiusCalledStationId": "نام Station Id",
+ "RadiusCalledStationIdDescription": "شناسه دستگاه فراخوانی شده",
+ "RadiusCallingStationId": "آیدی ایستگاه تماس (Calling Station Id)",
+ "tcp": "TCP / HTTP",
+ "Frontend Version": "نسخه فرانت اند",
+ "Frontend Version do not match backend version!": "نسخه فرانت اند با نسخه بک اند مطابقت ندارد!",
+ "backupOutdatedWarning": "منسوخ شده: از آنجایی که بسیاری از ویژگی ها اضافه شده اند و این ویژگی پشتیبان گیری کمی حفظ نشده است، نمی تواند یک نسخه پشتیبان کامل ایجاد یا بازیابی شود.",
+ "backupRecommend": "لطفاً مستقیماً از Volume یا پوشه داده (./data/) نسخه پشتیبان تهیه کنید.",
+ "No Maintenance": "بدون تعمیر و نگهداری",
+ "pauseMaintenanceMsg": "آیا مطمئن هستید که می خواهید توقف کنید؟",
+ "maintenanceStatus-under-maintenance": "تحت تعمیر و نگهداری",
+ "maintenanceStatus-inactive": "غیرفعال",
+ "maintenanceStatus-scheduled": "برنامه ریزی شده",
+ "maintenanceStatus-ended": "پایان یافته",
+ "maintenanceStatus-unknown": "ناشناخته",
+ "Display Timezone": "منطقه زمانی برای نمایش",
+ "Server Timezone": "منطقه زمانی در سرور",
+ "statusPageMaintenanceEndDate": "پایان",
+ "IconUrl": "URL آیکون",
+ "Enable DNS Cache": "فعال سازی کش DNS",
+ "Access Token": "توکن دسترسی",
+ "smtp": "ایمیل (SMTP)",
+ "Device": "دستگاه",
+ "Proxy server has authentication": "پروکسی سرور دارای اعتبارسنجی است",
+ "Add New Tag": "اضافه کردن تگ جدید",
+ "Custom": "غیره",
+ "default": "پیش فرض",
+ "enabled": "فعال",
+ "setAsDefault": "ذخیره به عنوان پیش فرض",
+ "proxyDescription": "پروکسی برای راه اندازی این مانیتور اجباری است.",
+ "setAsDefaultProxyDescription": "این پروکسی به طور پیش فرض برای مانیتورهای جدید فعال می شود. همچنان می توانید پروکسی را به طور جداگانه برای هر مانیتور غیرفعال کنید.",
+ "Valid": "درست",
+ "Invalid": "نادرست",
+ "User": "کاربر",
+ "Installed": "نصب شده",
+ "Not installed": "نصب نشده",
+ "Running": "در حال اجرا",
+ "Not running": "اجرا نشده",
+ "Remove Token": "حذف توکن",
+ "Please read": "لطفا بخوانید",
+ "Subject:": "موضوع:",
+ "Valid To:": "معتبر تا:",
+ "Days Remaining:": "روز های باقی مانده:",
+ "Fingerprint:": "اثرانگشت (Fingerprint):",
+ "No status pages": "بدون صفحات استاتوس",
+ "Domain Name Expiry Notification": "اعلان انقضای نام دامنه",
+ "Issuer:": "صادرکننده:",
+ "Date Created": "ایجاد شده در",
+ "Footer Text": "متن فوتر",
+ "Show Powered By": "نمایش قدرت گرفته از آپتایم کوما",
+ "Domain Names": "نام دامنه ها",
+ "Proxy": "پروکسی",
+ "signedInDisp": "وارد شده به عنوان {0}",
+ "or": "یا",
+ "Disable": "غیرفعال سازی",
+ "endpoint": "نقطه پایانی",
+ "Status:": "وضعیت: {0}",
+ "Strategy": "استراتژی",
+ "Icon Emoji": "ایموجی آیکون",
+ "sameAsServerTimezone": "مشابه با منطقه زمانی سرور",
+ "startDateTime": "ساعت/روز شروع",
+ "endDateTime": "ساعت/روز پایان",
+ "cronSchedule": "برنامه زمانی: ",
+ "invalidCronExpression": "حالت کرون نامعتبر است: {0}",
+ "cronExpression": "حالت کرون",
+ "ntfyAuthenticationMethod": "روش اعتبارسنجی",
+ "ntfyUsernameAndPassword": "نام کاربری و رمز عبور",
+ "pushoverMessageTtl": "TTL پیام (ثانیه)",
+ "Show Clickable Link": "نمایش لینک های قابل کلیک",
+ "Open Badge Generator": "باز کردن نشان ساز (Badge Generator)",
+ "Badge Generator": "نشان ساز (Badge Generator) {0}",
+ "Badge Type": "نوع نشان",
+ "Badge Duration": "مدت نشان",
+ "Badge Label": "برچسب نشان",
+ "Badge Prefix": "پیشوند نشان",
+ "Badge Suffix": "پسوند نشان",
+ "Badge Label Color": "رنگ برچسب نشان",
+ "Badge Color": "رنگ نشان",
+ "Badge Label Prefix": "پیشوند برچسب نشان",
+ "Badge Label Suffix": "پسوند برچسب نشان",
+ "Badge Down Color": "رنگ نشان زمانی که مانیتور دچار قطعی و Down شده است",
+ "Badge Maintenance Color": "رنگ نشان برای زمانی که مانیتور در حالت نگهداری است",
+ "Badge Warn Color": "رنگ نشان زمانی که مانیتور در حالت هشدار است",
+ "Badge Down Days": "روز هایی که مانیتور دچار قطعی شده است",
+ "Badge Style": "حالت نشان",
+ "Badge value (For Testing only.)": "مقدار نشان (فقط برای تست.)",
+ "Badge URL": "آدرس نشان",
+ "Monitor Setting": "تنظیمات مانتیور {0}",
+ "Show Clickable Link Description": "اگر انتخاب شود، همه کسانی که به این صفحه وضعیت دسترسی دارند میتوانند به صفحه مانیتور نیز دسترسی داشته باشند.",
+ "Badge Up Color": "رنگ نشان زمانی که مانیتور بدون مشکل و بالا است",
+ "Badge Pending Color": "رنگ نشان زمانی که مانیتور در حال انتظار است",
+ "Badge Warn Days": "روزهایی که مانیتور در حالت هشدار است",
+ "noGroupMonitorMsg": "موجود نیست. ابتدا یک گروه مانیتور جدید ایجاد کنید.",
+ "Home": "خانه",
+ "Edit Maintenance": "ویرایش تعمیر و نگهداری",
+ "Cannot connect to the socket server": "عدم امکان ارتباط با سوکت سرور",
+ "Reconnecting...": "ارتباط مجدد...",
+ "Monitor Group": "گروه مانیتور",
+ "Group": "گروه",
+ "Close": "بستن"
+}
diff --git a/src/lang/fi.json b/src/lang/fi.json
new file mode 100644
index 000000000..5a7ce4099
--- /dev/null
+++ b/src/lang/fi.json
@@ -0,0 +1,699 @@
+{
+ "Dashboard": "Kojetaulu",
+ "Help": "Apua",
+ "New Update": "Uusi Päivitys",
+ "Language": "Kieli",
+ "Appearance": "Ulkonäkö",
+ "Theme": "Teema",
+ "General": "Yleinen",
+ "Game": "Peli",
+ "Version": "Versio",
+ "List": "Lista",
+ "Add": "Lisää",
+ "Add New Monitor": "Lisää uusi seurain",
+ "Quick Stats": "Nopeat tilastot",
+ "Up": "Ylös",
+ "Down": "Alas",
+ "Pending": "Odottaa",
+ "statusMaintenance": "Huolto",
+ "Maintenance": "Huolto",
+ "Unknown": "Tuntematon",
+ "General Monitor Type": "Yleinen seuranta tyyppi",
+ "Passive Monitor Type": "Passiivinen seuranta tyyppi",
+ "markdownSupported": "Markdown-syntaksi tuettu",
+ "pauseDashboardHome": "Tauko",
+ "Pause": "Tauko",
+ "Name": "Nimi",
+ "Status": "Tila",
+ "DateTime": "Päivämäärä",
+ "Message": "Viesti",
+ "No important events": "Ei tärkeitä tapahtumia",
+ "Resume": "Jatka",
+ "Edit": "Muokkaa",
+ "Delete": "Poista",
+ "Current": "Nykyinen",
+ "Uptime": "Päälläoloaika",
+ "Monitor": "Seurain | Seuraimet",
+ "day": "Päivä | Päivää",
+ "-day": "-päivä",
+ "hour": "Tunti",
+ "-hour": "-tunti",
+ "Response": "Vastaus",
+ "Ping": "Signaali",
+ "Monitor Type": "Seurain tyyppi",
+ "Keyword": "Avainsana",
+ "URL": "URL",
+ "Hostname": "Isäntänimi",
+ "Heartbeat Interval": "Sydämensyke intervalli",
+ "Retries": "Uusintayrityksiä",
+ "Resend Notification if Down X times consequently": "Uudelleen lähetä ilmoitus jos ei vastausta X määrä peräkkäin",
+ "Advanced": "Edistynyt",
+ "checkEverySecond": "Tarkista jokainen {0} sekuntti",
+ "retryCheckEverySecond": "Yritä uudelleen jokainen {0} sekuntti",
+ "resendEveryXTimes": "Uudelleen lähetä jokainen {0} kerta",
+ "ignoreTLSError": "Älä huomioi TLS/SSL virhettä HTTPS nettisivuilla",
+ "upsideDownModeDescription": "Pyöräytä tila ylösalaisin. Jos palvelu on saavutettavissa, merkitse se SAMMUNEEKSI.",
+ "maxRedirectDescription": "Maksimi määrä uudelleen ohjauksia joita seurata. Aseta 0 estääksesi uudelleenohjaukset.",
+ "Upside Down Mode": "Ylösalaisin-moodi",
+ "Max. Redirects": "Maksimi määrä uudelleenohjauksia",
+ "Accepted Status Codes": "Sallitut tila koodit",
+ "Push URL": "Työnnä URL",
+ "Save": "Tallenna",
+ "Notifications": "Ilmoitukset",
+ "Setup Notification": "Määritä ilmoitukset",
+ "Light": "Vaalea",
+ "Dark": "Tumma",
+ "Auto": "Automaattinen",
+ "Theme - Heartbeat Bar": "Teema - Sydänlyönti palkki",
+ "Normal": "Normaali",
+ "Bottom": "Pohja",
+ "None": "Ei mitään",
+ "Timezone": "Aikavyöhyke",
+ "Search Engine Visibility": "Hakukone näkyvyys",
+ "Allow indexing": "Salli indeksointi",
+ "Change Password": "Vaihda salasana",
+ "Current Password": "Nykyinen salasana",
+ "New Password": "Uusi salasana",
+ "Repeat New Password": "Toista uusi salasana",
+ "Update Password": "Päivätä salasana",
+ "Disable Auth": "Poista todennus käytöstä",
+ "Enable Auth": "Ota todennus käyttöön",
+ "Logout": "Kirjaudu ulos",
+ "Leave": "Poistu",
+ "I understand, please disable": "Ymmärrän, poista käytöstä",
+ "Confirm": "Hyväksy",
+ "Yes": "Kyllä",
+ "No": "Ei",
+ "Username": "Käyttäjänimi",
+ "Password": "Salasana",
+ "Login": "Kirjaudu",
+ "add one": "Lisää yksi",
+ "Notification Type": "Ilmoitus tyyppi",
+ "Email": "Sähköposti",
+ "Test": "Testi",
+ "Certificate Info": "Sertifikaatti tiedot",
+ "Settings": "Asetukset",
+ "Check Update On GitHub": "Tarkista päivitys GitHub:ssa",
+ "Specific Monitor Type": "Tietty seuranta tyyppi",
+ "Cert Exp.": "Sertifikaatti vanh.",
+ "Friendly Name": "Ystävällinen nimi",
+ "Port": "Portti",
+ "Heartbeat Retry Interval": "Sydämensyke uudelleen yritys intervalli",
+ "resendDisabled": "Uudelleen lähetys poissa käytöstä",
+ "retriesDescription": "Maksimi määrä uudelleen yrityksiä ennen kuin palvelu merkitään sammuneeksi ja ilmoitus lähetetään",
+ "Discourage search engines from indexing site": "Estä hakukoneita indeksoimasta sivua",
+ "disableauth.message1": "Oletko varma että haluat poistaa todennuksen käytöstä ?",
+ "Please use this option carefully!": "Käytä tätä vaihtoehtoa varoen!",
+ "Remember me": "Muista minut",
+ "languageName": "Suomi",
+ "Primary Base URL": "Ensisijainen perus-URL-osoite",
+ "pushOptionalParams": "Valinnaiset parametrit: {0}",
+ "Not available, please setup.": "Ei saatavilla, määritä ensin.",
+ "needPushEvery": "Sinun pitäisi kutsua tätä URL joka {0} sekuntti.",
+ "disableauth.message2": "Se on suunniteltu tilanteisiin jossa aiot käyttää kolmannen osapuolen todennnusta Uptime Kuma:n edessä, kuten Cloudflare Access, Authelia tai jotain muuta todennus mekanismia.",
+ "No Monitors, please": "Ei seuraimia, kiitos",
+ "Resolver Server": "Ratkaisija palvelin",
+ "Resource Record Type": "Resusrssi tallenne tyyppi",
+ "Last Result": "Viimeinen tulos",
+ "Create your admin account": "Luo sinun järjestelmänvalvoja käyttäjä",
+ "Repeat Password": "Toista salasana",
+ "Import Backup": "Tuo varmuuskopio",
+ "Export Backup": "Vie varmuuskopio",
+ "Export": "Vie",
+ "Import": "Tuo",
+ "respTime": "Vast. aika (ms)",
+ "notAvailableShort": "Ei käytössä",
+ "Default enabled": "Oletus käytössä",
+ "Apply on all existing monitors": "Aseta jokaiselle olemassa olevaan seuraimeen",
+ "Create": "Luo",
+ "Clear Data": "Tyhjennä data",
+ "Events": "Tapahtumat",
+ "Heartbeats": "Sydämensyke",
+ "Auto Get": "Automaattinen haku",
+ "Schedule maintenance": "Ajoita huolto",
+ "Affected Monitors": "Vaikutetut seuraimet",
+ "Pick Affected Monitors...": "Poimi vaikutetut seuraimet…",
+ "Start of maintenance": "Huollon aloitus",
+ "All Status Pages": "Kaikki tilanne sivut",
+ "Select status pages...": "Valitse tilanne sivu…",
+ "alertNoFile": "Valitse tuotava tiedosto.",
+ "alertWrongFileType": "Valitse JSON tiedosto.",
+ "Clear all statistics": "Tyhjennä kaikki tilastot",
+ "Skip existing": "Ohita olemassa oleva",
+ "Overwrite": "Päälle kirjoita",
+ "Options": "Vaihtoehdot",
+ "Keep both": "Pidä molemmat",
+ "Verify Token": "Vahvista tunnus",
+ "Setup 2FA": "Määritä 2FA",
+ "Enable 2FA": "Ota 2FA käyttöön",
+ "Disable 2FA": "Poista 2FA käytöstä",
+ "2FA Settings": "2FA asetukset",
+ "Two Factor Authentication": "kaksivaiheinen tunnistautuminen",
+ "Active": "Aktiivinen",
+ "Token": "Tokeni",
+ "Show URI": "Näytä URI",
+ "Tags": "Tunnisteet",
+ "Tag with this name already exist.": "Tunniste tällä nimellä on jo olemassa.",
+ "Tag with this value already exist.": "Tunniste tällä arvolla on jo olemassa.",
+ "color": "Väri",
+ "value (optional)": "Arvo (valinnainen)",
+ "Gray": "Harmaa",
+ "Red": "Punainen",
+ "Orange": "Oranssi",
+ "Green": "Vihreä",
+ "Indigo": "Indigo",
+ "Purple": "Purppura",
+ "Pink": "Vaaleanpunainen",
+ "Custom": "Mukautettu",
+ "Search...": "Etsi…",
+ "Avg. Ping": "kesk.arv. viive",
+ "Entry Page": "Sisääntulosivu",
+ "statusPageNothing": "Täällä ei ole mitään. Lisää ryhmä tai seurain.",
+ "No Services": "Ei palveluita",
+ "Partially Degraded Service": "Osittain heikentynyt palvelu",
+ "Degraded Service": "Heikentynyt palvelu",
+ "Add Group": "Lisää ryhmä",
+ "Add a monitor": "Lisää seurain",
+ "Edit Status Page": "Muokkaa tilanne sivua",
+ "Go to Dashboard": "Mene kojelaudalle",
+ "Status Page": "Tilanne sivu",
+ "Status Pages": "Tilanne sivut",
+ "here": "täällä",
+ "Required": "Vaadittu",
+ "webhook": "Webhookki",
+ "Post URL": "Lähetys URL",
+ "Content Type": "Sisältö tyyppi",
+ "webhookJsonDesc": "{0} on hyvä jokaisille modernilleille HTTP palvelimille kuten Express.js",
+ "webhookAdditionalHeadersTitle": "Lisä otsakkeet",
+ "webhookAdditionalHeadersDesc": "Asettaa lisäpäätteet, jotka on lähetetty webhookilla.",
+ "Webhook URL": "Webhookin URL",
+ "Application Token": "Sovellus tokeni",
+ "Server URL": "Palvelin URL",
+ "Priority": "Prioriteetti",
+ "emojiCheatSheet": "Emoji lunttilappu: {0}",
+ "Read more": "Lue lisää",
+ "appriseInstalled": "Apprise on asennettu.",
+ "appriseNotInstalled": "Apprisea ei ole asennettu. {0}",
+ "Method": "Menetelmä",
+ "Body": "Runko",
+ "Headers": "Otsikot",
+ "PushUrl": "Työntö URL",
+ "BodyInvalidFormat": "Pyynnön runko ei ole kelvollinen JSON: ",
+ "Monitor History": "Seuraa historiaa",
+ "PasswordsDoNotMatch": "Salasanat eivät täsmää.",
+ "records": "tallenteet",
+ "One record": "Yksi tallenne",
+ "Current User": "Nykyinen käyttäjä",
+ "topic": "Aihe",
+ "topicExplanation": "MQTT seurattava aihe",
+ "successMessage": "Onnistumis viesti",
+ "successMessageExplanation": "MQTT-viesti, jota pidetään onnistuneena",
+ "recent": "Viimeaikainen",
+ "Done": "Tehty",
+ "Info": "Tiedot",
+ "Security": "Turvallisuus",
+ "Steam API Key": "Steam API-avain",
+ "Shrink Database": "Pienennä tietokanta",
+ "Pick a RR-Type...": "Valitse RR-tyyppi…",
+ "Pick Accepted Status Codes...": "Valitse hyväksytyt tilakoodit…",
+ "Default": "Oletus",
+ "HTTP Options": "HTTP-asetukset",
+ "Create Incident": "Luo tapaus",
+ "Title": "Otsikko",
+ "Content": "Sisältö",
+ "Style": "Tyyli",
+ "info": "Tiedot",
+ "warning": "Varoitus",
+ "danger": "vaara",
+ "error": "virhe",
+ "critical": "kriittinen",
+ "primary": "ensisijainen",
+ "dark": "Tumma",
+ "Post": "Lähetä",
+ "Please input title and content": "Syötä otsikko ja sisältö",
+ "Created": "Luo",
+ "Last Updated": "Viimeksi päivitetty",
+ "Unpin": "Irroita",
+ "Switch to Dark Theme": "Vaihda tummaan teemaan",
+ "Show Tags": "Näytä tunnisteet",
+ "Hide Tags": "Piilota tunnisteet",
+ "Description": "Kuvaus",
+ "No monitors available.": "Ei seuraimia saatavilla.",
+ "Add one": "Lisää yksi",
+ "No Monitors": "Ei seuraimia",
+ "Untitled Group": "Nimetön ryhmä",
+ "Services": "Palvelut",
+ "Discard": "Hävitä",
+ "Cancel": "Peruuttaa",
+ "Customize": "Mukauta",
+ "Custom Footer": "Mukautettu alatunniste",
+ "Custom CSS": "Mukautettu CSS",
+ "deleteStatusPageMsg": "Haluatko varmasti poistaa tämän tilasivun?",
+ "Proxies": "Välityspalvelimet",
+ "default": "Oletus",
+ "enabled": "Käytössä",
+ "setAsDefault": "Oletusasetuksena",
+ "deleteProxyMsg": "Haluatko varmasti poistaa tämän välityspalvelimen kaikista seuraimista?",
+ "proxyDescription": "Välityspalvelimet on määritettävä seuraimelle toimiakseen.",
+ "enableProxyDescription": "Tämä välityspalvelin ei vaikuta valvontapyyntöihin ennen kuin se on aktivoitu. Voit hallita välityspalvelimen väliaikaista poistamista käytöstä kaikista seuraimista aktivointitilan perusteella.",
+ "setAsDefaultProxyDescription": "Tämä välityspalvelin on oletuksena käytössä uusissa seuraimissa. Voit silti poistaa välityspalvelimen käytöstä erikseen jokaisesta seuraimesta.",
+ "Certificate Chain": "Sertifikaattiketju",
+ "Valid": "Voimassa oleva",
+ "Invalid": "Pätemätön",
+ "User": "Käyttäjä",
+ "Installed": "Asennettu",
+ "Not installed": "Ei asennettu",
+ "Running": "Käynnissä",
+ "Not running": "Ei käynnissä",
+ "Remove Token": "Poista token",
+ "Start": "Käynnistä",
+ "Stop": "Pysäytä",
+ "Add New Status Page": "Lisää uusi tilasivu",
+ "Slug": "Slug",
+ "startOrEndWithOnly": "Aloita tai lopeta vain {0}",
+ "No consecutive dashes": "Ei peräkkäisiä viivoja",
+ "Next": "Seuraava",
+ "No Proxy": "Ei välityspalvelinta",
+ "Authentication": "Todennus",
+ "HTTP Basic Auth": "HTTP-perustodennus",
+ "Page Not Found": "Sivua ei löydetty",
+ "Reverse Proxy": "Käänteinen välityspalvelin",
+ "Backup": "Varmuuskopio",
+ "About": "Tietoja",
+ "cloudflareWebsite": "Cloudflare verkkosivusto",
+ "Message:": "Viesti:",
+ "Don't know how to get the token? Please read the guide:": "Etkö tiedä kuinka saada tunnus? Ole hyvä ja lue opas:",
+ "HTTP Headers": "HTTP-otsikot",
+ "Trust Proxy": "Luota välityspalvelimeen",
+ "Other Software": "Muut ohjelmistot",
+ "For example: nginx, Apache and Traefik.": "Esimerkiksi: nginx, Apache ja Traefik.",
+ "Please read": "Ole hyvä ja lue",
+ "Subject:": "Aihe:",
+ "Valid To:": "Voimassa:",
+ "Days Remaining:": "Päiviä jäljellä:",
+ "Issuer:": "Myöntäjä:",
+ "Fingerprint:": "Sormenjälki:",
+ "No status pages": "Ei tilasivuja",
+ "Domain Name Expiry Notification": "Verkkotunnuksen vanhenemisilmoitus",
+ "Proxy": "Välityspalvelin",
+ "Date Created": "Luomis päivämäärä",
+ "Footer Text": "Alatunnisteen teksti",
+ "Show Powered By": "Näytä \"voimanlähteenä\"",
+ "Domain Names": "Verkkotunnus nimet",
+ "signedInDisp": "Kirjautunut sisään käyttäjänä {0}",
+ "signedInDispDisabled": "Todennus poistettu käytöstä.",
+ "RadiusSecretDescription": "Asiakkaan ja palvelimen välinen yhteinen salaisuus",
+ "RadiusCalledStationIdDescription": "Kutsutun laitteen tunniste",
+ "RadiusCallingStationId": "Kutsuaseman tunnus",
+ "Certificate Expiry Notification": "Varmenteen vanhenemisilmoitus",
+ "API Username": "API-käyttäjänimi",
+ "API Key": "API-avain",
+ "Show update if available": "Näytä päivitys, jos saatavilla",
+ "Also check beta release": "Tarkista myös betaversio",
+ "Using a Reverse Proxy?": "Käytätkö käänteistä välityspalvelinta?",
+ "The slug is already taken. Please choose another slug.": "Slug on jo otettu. Ole hyvä ja valitse toinen slug.",
+ "RadiusSecret": "Radius Secret",
+ "RadiusCalledStationId": "Kutsuttu aseman tunnus",
+ "Steam Game Server": "Steam pelipalvelin",
+ "Most likely causes:": "todennäköisimmät syyt:",
+ "The resource is no longer available.": "Resurssi ei ole enää saatavilla.",
+ "There might be a typing error in the address.": "Osoitteessa saattaa olla kirjoitusvirhe.",
+ "What you can try:": "Mitä voit kokeilla:",
+ "Retype the address.": "Kirjoita osoite uudelleen.",
+ "Go back to the previous page.": "Palaa edelliselle sivulle.",
+ "Coming Soon": "Tulossa pian",
+ "Connection String": "Yhteysmerkkijono",
+ "Query": "Tiedustelu",
+ "settingsCertificateExpiry": "TLS-sertifikaatin vanheneminen",
+ "certificationExpiryDescription": "HTTPS-seuraimet käynnistävät ilmoituksen, kun TLS-varmenne vanhenee:",
+ "Setup Docker Host": "Asenna Docker-isäntä",
+ "Connection Type": "Yhteystyyppi",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker-kontti",
+ "Container Name / ID": "Säilön nimi/tunnus",
+ "Docker Host": "Docker-isäntä",
+ "Docker Hosts": "Docker-isännät",
+ "Domain": "Verkkotunnus",
+ "Workstation": "Työasema",
+ "socket": "kanta",
+ "Packet Size": "Paketin koko",
+ "telegram": "Telegram",
+ "ZohoCliq": "ZohoCliq",
+ "Bot Token": "Botti tokeni",
+ "wayToGetTelegramToken": "Voit saada tunnuksen osoitteesta {0}.",
+ "Chat ID": "Chat-tunnus",
+ "wayToGetTelegramChatID": "Saat chat-tunnuksesi lähettämällä viestin botille ja siirtymällä tähän URL-osoitteeseen nähdäksesi chat_id:",
+ "YOUR BOT TOKEN HERE": "BOT TOKENISI TÄHÄN",
+ "chatIDNotFound": "Chat ID:tä ei löydy; lähetä ensin viesti tälle botille",
+ "disableCloudflaredNoAuthMsg": "Olet No Auth -tilassa, salasanaa ei tarvita.",
+ "trustProxyDescription": "Luota \"X-Forwarded-*\"-otsikoihin. Jos haluat saada oikean asiakas-IP:n ja Uptime Kumasi on välityspalvelimen, kuten Nginx tai Apache, takana, sinun tulee ottaa tämä käyttöön.",
+ "wayToGetLineNotifyToken": "Voit saada käyttötunnuksen osoitteesta {0}",
+ "Examples": "Esimerkkejä",
+ "Home Assistant URL": "Home Assistantin URL-osoite",
+ "Long-Lived Access Token": "Pitkäikäinen pääsytunnus",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Pitkäikäinen pääsytunnus voidaan luoda napsauttamalla profiilisi nimeä (vasemmalla alareunassa) ja vierittämällä alas ja napsauttamalla sitten Luo tunnus. ",
+ "Notification Service": "Ilmoituspalvelu",
+ "default: notify all devices": "oletus: Ilmoita kaikille laitteille",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Luettelo ilmoituspalveluista löytyy Home Assistantin kohdasta \"Kehittäjätyökalut > Palvelut\". Hae hakusanalla \"ilmoitus\" löytääksesi laitteesi/puhelimesi nimen.",
+ "Automations can optionally be triggered in Home Assistant:": "Automaatiot voidaan vaihtoehtoisesti laukaista Home Assistantissa:",
+ "Trigger type:": "Triggerin tyyppi:",
+ "Event type:": "Tapahtumatyyppi:",
+ "Frontend Version": "Käyttöliittymän versio",
+ "Frontend Version do not match backend version!": "Käyttöliittymän versio ei vastaa taustaversiota!",
+ "backupRecommend": "Varmuuskopioi asema tai tietokansio (./data/) suoraan sen sijaan.",
+ "Optional": "Vapaaehtoinen",
+ "squadcast": "Squadcast",
+ "or": "tai",
+ "recurringInterval": "Aikaväli",
+ "Recurring": "Toistuva",
+ "strategyManual": "Aktiivinen/ei-aktiivinen manuaalisesti",
+ "warningTimezone": "Se käyttää palvelimen aikavyöhykettä",
+ "weekdayShortMon": "Ma",
+ "weekdayShortTue": "Ti",
+ "weekdayShortWed": "Ke",
+ "weekdayShortThu": "To",
+ "weekdayShortFri": "Pe",
+ "weekdayShortSat": "La",
+ "weekdayShortSun": "Su",
+ "dayOfWeek": "Viikonpäivä",
+ "dayOfMonth": "Kuukauden päivä",
+ "lastDay": "Viimeinen päivä",
+ "lastDay1": "Kuukauden viimeinen päivä",
+ "lastDay2": "Kuukauden toiseksi viimeinen päivä",
+ "lastDay3": "Kuukauden 3. viimeinen päivä",
+ "No Maintenance": "Ei huoltoa",
+ "pauseMaintenanceMsg": "Haluatko varmasti keskeyttää?",
+ "maintenanceStatus-under-maintenance": "Huollossa",
+ "maintenanceStatus-inactive": "Epäaktiivinen",
+ "maintenanceStatus-scheduled": "Aikataulutettu",
+ "maintenanceStatus-ended": "Päättyi",
+ "maintenanceStatus-unknown": "Tuntematon",
+ "Display Timezone": "Näytä aikavyöhyke",
+ "Server Timezone": "Palvelimen aikavyöhyke",
+ "statusPageMaintenanceEndDate": "Loppu",
+ "Enable": "Ota käyttöön",
+ "Disable": "Poista käytöstä",
+ "Single Maintenance Window": "Yksi huoltoikkuna",
+ "Maintenance Time Window of a Day": "Päivän huoltoaikaikkuna",
+ "Effective Date Range": "Voimassa oleva ajanjakso",
+ "Schedule Maintenance": "Ajoita huolto",
+ "Date and Time": "Päivämäärä ja aika",
+ "DateTime Range": "Päivämäärä-aika-alue",
+ "loadingError": "Tietoja ei voi noutaa, yritä myöhemmin uudelleen.",
+ "plugin": "Lisäosa | Lisäosat",
+ "install": "Asenna",
+ "installing": "Asennetaan",
+ "uninstall": "Poista asennus",
+ "uninstalling": "Poistetaan asennusta",
+ "smtp": "Sähköposti (SMTP)",
+ "secureOptionNone": "Ei mitään / STARTTLS (25 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ohita TLS-virhe",
+ "From Email": "Sähköpostista",
+ "emailCustomSubject": "Mukautettu aihe",
+ "To Email": "Sähköpostiin",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord Webhookin URL-osoite",
+ "Bot Display Name": "Botin näyttönimi",
+ "Prefix Custom Message": "Mukautetun viestin etuliite",
+ "Hello @everyone is...": "Hei {'@'}kaikki ovat…",
+ "wayToGetTeamsURL": "Voit oppia luomaan webhookin URL-osoitteen {0}.",
+ "wayToGetZohoCliqURL": "Voit oppia luomaan webhookin URL-osoitteen {0}.",
+ "wayToCheckSignalURL": "Voit tarkistaa tämän URL-osoitteen nähdäksesi, kuinka se määritetään:",
+ "Number": "Numero",
+ "Recipients": "Vastaanottajat",
+ "Access Token": "Käyttöoikeustunnus",
+ "Channel access token": "Kanavan käyttöoikeustunnus",
+ "Basic Settings": "Perus asetukset",
+ "User ID": "käyttäjätunnus",
+ "Messaging API": "Viestintä API",
+ "Line Developers Console": "Line Developers Console",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "dataRetentionTimeError": "Säilytysajan on oltava 0 tai suurempi",
+ "infiniteRetention": "Aseta arvoon 0, jos haluat loputtoman säilytyksen.",
+ "confirmDeleteTagMsg": "Haluatko varmasti poistaa tämän tunnisteen? Tähän tunnisteeseen liittyviä näyttöjä ei poisteta.",
+ "enableGRPCTls": "Salli lähettää gRPC-pyyntö TLS-yhteydellä",
+ "grpcMethodDescription": "Menetelmän nimi muunnetaan cammelCase-muotoon, kuten sayHello, check jne.",
+ "acceptedStatusCodesDescription": "Valitse tilakoodit, jotka katsotaan onnistuneeksi vastaukseksi.",
+ "deleteMonitorMsg": "Haluatko varmasti poistaa tämän seuraimen?",
+ "deleteMaintenanceMsg": "Haluatko varmasti poistaa tämän huollon?",
+ "deleteNotificationMsg": "Haluatko varmasti poistaa tämän ilmoituksen kaikista seuraimista?",
+ "dnsPortDescription": "DNS-palvelimen portti. Oletusarvo on 53. Voit vaihtaa porttia milloin tahansa.",
+ "rrtypeDescription": "Valitse valvottava RR-tyyppi",
+ "pauseMonitorMsg": "Haluatko varmasti keskeyttää?",
+ "clearHeartbeatsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen sydämenlyönnit?",
+ "confirmImportMsg": "Haluatko varmasti tuoda varmuuskopion? Varmista, että olet valinnut oikean tuontivaihtoehdon.",
+ "twoFAVerifyLabel": "Anna tunnuksesi vahvistaaksesi 2FA:",
+ "tokenValidSettingsMsg": "Token on voimassa! Voit nyt tallentaa 2FA-asetukset.",
+ "confirmEnableTwoFAMsg": "Haluatko varmasti ottaa 2FA:n käyttöön?",
+ "confirmDisableTwoFAMsg": "Haluatko varmasti poistaa 2FA:n käytöstä?",
+ "recurringIntervalMessage": "Juokse kerran päivässä | Suorita kerran {0} päivässä",
+ "affectedMonitorsDescription": "Valitse seuraimet, joihin nykyinen huolto vaikuttaa",
+ "affectedStatusPages": "Näytä tämä huoltoviesti valituilla tilasivuilla",
+ "atLeastOneMonitor": "Valitse vähintään yksi seurain, johon vaikuttaa",
+ "notificationDescription": "Ilmoitukset on määritettävä seuraimelle toimiakseen.",
+ "keywordDescription": "Hae avainsanaa tavallisessa HTML- tai JSON-vastauksessa. Haussa kirjainkoolla on merkitystä.",
+ "backupDescription": "Voit varmuuskopioida kaikki näytöt ja ilmoitukset JSON-tiedostoon.",
+ "backupDescription2": "Huomaa: historia- ja tapahtumatiedot eivät sisälly.",
+ "octopushLogin": "\"Kirjaudu\" ohjauspaneelin HTTP API -tunnistetiedoista",
+ "promosmsLogin": "API-kirjautumisnimi",
+ "promosmsPassword": "API-salasana",
+ "pushoversounds pushover": "Työnnä yli (oletus)",
+ "pushoversounds bike": "Pyörä",
+ "pushoversounds bugle": "Merkkitorvi",
+ "pushoversounds cashregister": "Kassakone",
+ "pushoversounds classical": "Klassinen",
+ "pushoversounds cosmic": "Kosminen",
+ "pushoversounds falling": "Putoaminen",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Saapuva",
+ "pushoversounds intermission": "Väliaika",
+ "pushoversounds magic": "Taika",
+ "pushoversounds mechanical": "Mekaaninen",
+ "pushoversounds pianobar": "Piano Baari",
+ "pushoversounds spacealarm": "Avaruushälytys",
+ "pushoversounds tugboat": "Hinaaja",
+ "pushoversounds alien": "Avaruusolio hälytys (pitkä)",
+ "pushoversounds climb": "Kiipeily (pitkä)",
+ "pushoversounds persistent": "Pysyvä (pitkä)",
+ "pushoversounds updown": "Ylös Alas (pitkä)",
+ "pushoversounds vibrate": "Vain värinä",
+ "pushoversounds none": "Ei mitään (hiljainen)",
+ "pushyAPIKey": "Salainen API-avain",
+ "pushyToken": "Laitteen tunnus",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.Chat",
+ "pushy": "Päällekäyvä",
+ "PushByTechulus": "Techuluksen työntö",
+ "octopush": "Mustekala",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "GoogleChat": "Google Chat (vain Google Workspace)",
+ "Kook": "Kook",
+ "wayToGetKookGuildID": "Ota 'Kehittäjätila' käyttöön Kook-asetuksissa ja napsauta kiltaa hiiren kakkospainikkeella saadaksesi sen tunnuksen",
+ "Guild ID": "Killan tunnus",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Käyttäjäavain",
+ "Device": "Laite",
+ "Message Title": "Viestin otsikko",
+ "More info on:": "Lisätietoja: {0}",
+ "pushoverDesc2": "Jos haluat lähettää ilmoituksia eri laitteille, täytä Laite-kenttä.",
+ "SMS Type": "SMS-tyyppi",
+ "octopushTypePremium": "Premium (nopea - suositellaan hälytykseen)",
+ "octopushTypeLowCost": "Alhaiset kustannukset (hidas - joskus operaattori estää)",
+ "checkPrice": "Tarkista kohteen {0} hinnat:",
+ "apiCredentials": "API-tunnistetiedot",
+ "Check octopush prices": "Tarkista octopush hinnat {0}.",
+ "octopushPhoneNumber": "Puhelinnumero (Intl-muoto, esim.: +33612345678) ",
+ "octopushSMSSender": "Tekstiviestin lähettäjän nimi: 3-11 aakkosnumeerista merkkiä ja välilyönti (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea laitetunnus",
+ "Apprise URL": "Apprise URL-osoite",
+ "Example:": "Esimerkki: {0}",
+ "Read more:": "Lue lisää: {0}",
+ "Status:": "Tila: {0}",
+ "Strategy": "strategia",
+ "Free Mobile User Identifier": "Ilmainen mobiilikäyttäjätunnus",
+ "Enable TLS": "Ota TLS käyttöön",
+ "Proto Service Name": "Proto-palvelun nimi",
+ "Proto Method": "Proto-menetelmä",
+ "Proto Content": "Proto-sisältö",
+ "Economy": "Talous",
+ "Lowcost": "Halpa",
+ "high": "korkea",
+ "SendKey": "LähetäAvain",
+ "SMSManager API Docs": "SMSManager API Dokumentointi ",
+ "Gateway Type": "Yhdyskäytävän tyyppi",
+ "SMSManager": "SMSManager",
+ "Base URL": "Perus-URL-osoite",
+ "goAlertIntegrationKeyInfo": "Hanki yleinen API-integrointiavain palvelulle tässä muodossa \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" yleensä kopioidun URL-osoitteen tunnusparametrin arvona.",
+ "goAlert": "GoAlert",
+ "AccessKeyId": "Pääsyn avaimen tunnus",
+ "SecretAccessKey": "Pääsyn avaimen salaisuus",
+ "PhoneNumbers": "PuhelinNumerot",
+ "TemplateCode": "Mallikoodi",
+ "SignName": "AllekirjoitusNimi",
+ "Sms template must contain parameters: ": "Tekstiviestimallin tulee sisältää parametrit: ",
+ "Bark Group": "Bark ryhmä",
+ "Bark Sound": "Bark ääni",
+ "WebHookUrl": "WebHookUrl-osoite",
+ "SecretKey": "Salainen avain",
+ "For safety, must use secret key": "Turvallisuuden vuoksi on käytettävä salaista avainta",
+ "Device Token": "Laitteen tunnus",
+ "Platform": "Alusta",
+ "iOS": "iOS",
+ "Bark Endpoint": "Bark päätepiste",
+ "Huawei": "Huawei",
+ "High": "Korkea",
+ "Topic": "Aihe",
+ "WeCom Bot Key": "WeCom-bottiavain",
+ "Setup Proxy": "Asenna välityspalvelin",
+ "Proxy Protocol": "Välityspalvelinprotokolla",
+ "Proxy Server": "Välityspalvelin",
+ "matrix": "Matriisi",
+ "promosmsTypeFlash": "SMS FLASH - Viesti näkyy automaattisesti vastaanottajan laitteessa. Rajoitettu vain puolalaisille vastaanottajille.",
+ "promosmsTypeSpeed": "SMS SPEED - Järjestelmän korkein prioriteetti. Erittäin nopea ja luotettava, mutta kallis (noin kaksi kertaa SMS TÄYSI hinta).",
+ "promosmsPhoneNumber": "Puhelinnumero (puolalaiselle vastaanottajalle voit ohittaa suuntanumerot)",
+ "promosmsSMSSender": "Tekstiviestin lähettäjän nimi: Esirekisteröity nimi tai jokin oletusasetuksista: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "promosmsAllowLongSMS": "Salli pitkät tekstiviestit",
+ "Feishu WebHookUrl": "Feishu WebHookURL-osoite",
+ "Internal Room Id": "Huoneen sisäinen tunnus",
+ "Android": "Android",
+ "Channel Name": "Kanavan nimi",
+ "Uptime Kuma URL": "Uptime Kuma URL-osoite",
+ "Icon Emoji": "Ikoni Emoji",
+ "signalImportant": "TÄRKEÄÄ: Et voi sekoittaa ryhmiä ja numeroita vastaanottajissa!",
+ "aboutWebhooks": "Lisätietoja Webhooksista osoitteessa: {0}",
+ "aboutChannelName": "Kirjoita kanavan nimi {0} Kanavan nimi -kenttään, jos haluat ohittaa Webhook-kanavan. Esimerkki: #muu-kanava",
+ "aboutKumaURL": "Jos jätät Uptime Kuma URL -kentän tyhjäksi, se on oletuksena Project GitHub -sivu.",
+ "smtpDkimSettings": "DKIM-asetukset",
+ "smtpDkimDesc": "Katso Nodemailer DKIM {0} -sovelluksen käytöstä.",
+ "documentation": "dokumentointi",
+ "smtpDkimDomain": "Verkkotunnus nimi",
+ "smtpDkimKeySelector": "Näppäinvalitsin",
+ "smtpDkimPrivateKey": "Yksityinen avain",
+ "smtpDkimHashAlgo": "Hash-algoritmi (valinnainen)",
+ "smtpDkimheaderFieldNames": "Allekirjoitettavat otsikkoavaimet (valinnainen)",
+ "smtpDkimskipFields": "Otsikkonäppäimet, joita ei allekirjoiteta (valinnainen)",
+ "Integration Key": "Integrointiavain",
+ "Integration URL": "Integroinnin URL-osoite",
+ "Auto resolve or acknowledged": "Automaattinen ratkaisu tai kuittaus",
+ "do nothing": "Älä tee mitään",
+ "auto acknowledged": "automaattisesti kuitattu",
+ "auto resolve": "automaattinen ratkaisu",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API-päätepiste",
+ "alertaEnvironment": "Ympäristö",
+ "alertaApiKey": "API-avain",
+ "alertaRecoverState": "Palautustila",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API-käyttäjänimi (sis. webapi_-etuliite)",
+ "serwersmsAPIPassword": "API-salasana",
+ "serwersmsPhoneNumber": "Puhelinnumero",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "Puhelinnumero(t)",
+ "smseagleGroup": "Puhelinmuistioryhmän nimi/nimet",
+ "smseagleContact": "Puhelinmuistion yhteyshenkilön nimet",
+ "smseagleRecipientType": "Vastaanottajan tyyppi",
+ "smseagleRecipient": "Vastaanottaja(t) (jos useita, ne on erotettava pilkulla)",
+ "smseagleToken": "API-käyttöoikeustunnus",
+ "smseagleUrl": "SMSEagle-laitteesi URL-osoite",
+ "smseagleEncoding": "Lähetä Unicodena",
+ "smseaglePriority": "Viestin prioriteetti (0-9, oletus = 0)",
+ "stackfield": "Stackfield",
+ "Recipient Number": "Vastaanottajan numero",
+ "From Name/Number": "Nimestä/numerosta",
+ "Leave blank to use a shared sender number.": "Jätä tyhjäksi, jos haluat käyttää jaettua lähettäjän numeroa.",
+ "Octopush API Version": "Octopush API -versio",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "ntfy Topic": "ntfy aihe",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "OneBot HTTP-osoite",
+ "onebotGroupMessage": "Ryhmä",
+ "onebotPrivateMessage": "Yksityinen",
+ "onebotUserOrGroupId": "Ryhmä/käyttäjätunnus",
+ "onebotSafetyTips": "Käyttöoikeustunnus on asetettava turvallisuuden vuoksi",
+ "PushDeer Key": "PushDeer avain",
+ "wayToGetClickSendSMSToken": "Voit saada API-käyttäjänimen ja API-avaimen osoitteesta {0}.",
+ "Custom Monitor Type": "Mukautettu seurain tyyppi",
+ "Google Analytics ID": "Google Analytics -tunnus",
+ "Edit Tag": "Muokkaa tunnistetta",
+ "Server Address": "Palvelimen osoite",
+ "Learn More": "Lisätietoja",
+ "Inactive": "Epäaktiivinen",
+ "Add New below or Select...": "Lisää uusi alapuolella tai valitse…",
+ "Blue": "Sininen",
+ "Avg. Response": "Kesk.arv. vastaus",
+ "All Systems Operational": "Kaikki järjestelmät toiminnassa",
+ "defaultNotificationName": "Minun {ilmoitus} Hälytys ({numero})",
+ "webhookFormDataDesc": "{multipart} on hyvä PHP:lle. JSON pitää parsia {decodeFunction} avulla",
+ "HeadersInvalidFormat": "Pyynnön otsikot eivät ole kelvollisia JSON-tiedostoja: ",
+ "clearDataOlderThan": "Säilytä seuraimen historiatiedot {0} päivää.",
+ "steamApiKeyDescription": "Steam peli palveliment valvontaa varten tarvitset Steam Web-API -avaimen. Voit rekisteröidä API-avaimesi täällä: ",
+ "light": "Vaalea",
+ "Switch to Light Theme": "Vaihda vaaleaan teemaan",
+ "Powered by": "Voimanlähteenä",
+ "shrinkDatabaseDescription": "Käynnistä tietokanta VACUUM SQLitelle. Jos tietokanta on luotu 1.10.0:n jälkeen, AUTO_VACUUM on jo käytössä eikä tätä toimintoa tarvita.",
+ "Accept characters:": "Hyväksy merkit:",
+ "New Status Page": "Uusi tilasivu",
+ "wayToGetCloudflaredURL": "(Lataa cloudflared osoitteesta {0})",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Nykyinen yhteys saattaa katketa, jos muodostat parhaillaan yhteyttä Cloudflare-tunnelin kautta. Haluatko varmasti lopettaa sen? Vahvista se kirjoittamalla nykyinen salasanasi.",
+ "RadiusCallingStationIdDescription": "Kutsu laitteen tunniste",
+ "Check how to config it for WebSocket": "Tarkista, kuinka se määritetään WebSocketille",
+ "Docker Daemon": "Docker taustatoiminta",
+ "deleteDockerHostMsg": "Haluatko varmasti poistaa tämän docker-isännän kaikista seuraimista?",
+ "supportTelegramChatID": "Tukee suoraa chattia / ryhmää / kanavan chat-tunnusta",
+ "Event data:": "Tapahtumatyyppi:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Valitse sitten toiminto, esimerkiksi vaihda kohtaus sellaiseen, jossa RGB-valo on punainen.",
+ "backupOutdatedWarning": "Vanhentunut: Koska monia ominaisuuksia lisättiin ja tätä varmuuskopiointitoimintoa ei ole ylläpidetty, se ei voi luoda tai palauttaa täydellistä varmuuskopiota.",
+ "lastDay4": "Kuukauden 4. viimeinen päivä",
+ "IconUrl": "Kuvakkeen URL-osoite",
+ "Enable DNS Cache": "Ota DNS-välimuisti käyttöön",
+ "dnsCacheDescription": "Se ei ehkä toimi joissakin IPv6-ympäristöissä, poista se käytöstä, jos kohtaat ongelmia.",
+ "confirmUninstallPlugin": "Haluatko varmasti poistaa tämän laajennuksen?",
+ "wayToGetDiscordURL": "Saat tämän siirtymällä kohtaan Palvelinasetukset -> Integraatiot -> Näytä Webhookit -> Uusi Webhook",
+ "needSignalAPI": "Sinulla on oltava signaaliasiakas, jossa on REST API.",
+ "wayToGetLineChannelToken": "Avaa ensin {0}, luo palveluntarjoaja ja kanava (Viestintä API), sitten saat kanavan käyttö tokenin ja käyttäjätunnuksen yllä mainituista valikon kohdista.",
+ "Icon URL": "Kuvakkeen URL-osoite",
+ "aboutIconURL": "Voit ohittaa oletusprofiilikuvan antamalla linkin kuvaan kohdassa \"kuvakeen URL\". Ei käytetä, jos kuvake emoji on asetettu.",
+ "aboutMattermostChannelName": "Voit ohittaa oletuskanavan, jolle Webhook lähettää viestejä, kirjoittamalla kanavan nimen Kanavan nimi -kenttään. Tämä on otettava käyttöön Mattermost Webhook -asetuksissa. Esimerkki: #muu-kanava",
+ "resolverserverDescription": "Cloudflare on oletuspalvelin. Voit vaihtaa ratkaisijapalvelinta milloin tahansa.",
+ "enableDefaultNotificationDescription": "Tämä ilmoitus on oletuksena käytössä uusissa seuraimissa. Voit silti poistaa ilmoituksen käytöstä erikseen jokaiselta seuraimelta.",
+ "clearEventsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen tapahtumat?",
+ "confirmClearStatisticsMsg": "Haluatko varmasti poistaa KAIKKI tilastot?",
+ "importHandleDescription": "Valitse \"Ohita olemassa oleva\", jos haluat ohittaa jokaisen samannimisen seuraimen tai ilmoituksen. \"Korvaa\" poistaa kaikki olemassa olevat seuraimet ja ilmoitukset.",
+ "passwordNotMatchMsg": "Toistettu salasana ei täsmää.",
+ "backupDescription3": "Arkaluonteiset tiedot, kuten ilmoitustunnukset, sisältyvät vientitiedostoon. säilytä vienti turvallisesti.",
+ "endpoint": "päätepiste",
+ "octopushAPIKey": "\"API-avain\" ohjauspaneelin HTTP API -tunnistetiedoista",
+ "pushoversounds siren": "Sireeni",
+ "pushoversounds echo": "Ylityöntö kaiku (pitkä)",
+ "pushover": "Ylityöntö",
+ "apprise": "Apprise (tukee yli 50 ilmoituspalvelua)",
+ "pushbullet": "Pushbullet",
+ "wayToGetKookBotToken": "Luo sovellus ja hanki bot-tunnus osoitteessa {0}",
+ "Notification Sound": "Ilmoitusääni",
+ "pushoverDesc1": "Hätäprioriteetilla (2) on oletusarvoisesti 30 sekunnin aikakatkaisu uudelleenyritysten välillä, ja se vanhenee 1 tunnin kuluttua.",
+ "octopushLegacyHint": "Käytätkö Octopushin (2011-2020) vanhaa versiota vai uutta versiota?",
+ "Free Mobile API Key": "Ilmainen mobiilisovellusliittymäavain",
+ "You can divide numbers with": "Voit jakaa numerot",
+ "goAlertInfo": "GoAlert on avoimen lähdekoodin sovellus päivystykseen, automatisoituihin eskalaatioihin ja ilmoituksiin (kuten tekstiviestit tai äänipuhelut). Ota automaattisesti mukaan oikea henkilö, oikealla tavalla ja oikeaan aikaan! {0}",
+ "Retry": "Yritä uudelleen",
+ "Proxy server has authentication": "Välityspalvelimella on todennus",
+ "promosmsTypeEco": "SMS ECO - halpa mutta hidas ja usein ylikuormitettu. Rajoitettu vain puolalaisille vastaanottajille.",
+ "promosmsTypeFull": "SMS FULL - Premium-tason tekstiviestit, voit käyttää lähettäjän nimeäsi (sinun on rekisteröitävä nimi ensin). Luotettava hälytyksiä varten.",
+ "matrixHomeserverURL": "Kotipalvelimen URL-osoite (http(s):// ja valinnaisesti portti)",
+ "matrixDesc1": "Löydät sisäisen huonetunnuksen katsomalla Matrix-asiakasohjelman huoneasetusten lisäosaa. Sen pitäisi näyttää tältä: !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "On erittäin suositeltavaa, että luot uuden käyttäjän etkä käytä omaa Matrix-käyttäjätunnustasi, koska se antaa täyden pääsyn tilillesi ja kaikkiin huoneisiin, joihin liityit. Luo sen sijaan uusi käyttäjä ja kutsu se vain siihen huoneeseen, josta haluat saada ilmoituksen. Saat käyttöoikeustunnuksen suorittamalla {0}",
+ "wayToGetPagerDutyKey": "Saat tämän siirtymällä kohtaan Palvelu -> Palveluhakemisto -> (Valitse palvelu) -> Integraatiot -> Lisää integraatio. Täältä voit etsiä \"Events API V2\". Lisätietoja {0}",
+ "alertaAlertState": "Varoitustila",
+ "serwersmsSenderName": "Tekstiviestin lähettäjän nimi (rekisteröity asiakasportaalin kautta)",
+ "onebotMessageType": "OneBot-viestityyppi"
+}
diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json
new file mode 100644
index 000000000..0609e8aaf
--- /dev/null
+++ b/src/lang/fr-FR.json
@@ -0,0 +1,788 @@
+{
+ "languageName": "Français",
+ "checkEverySecond": "Vérifier toutes les {0} secondes",
+ "retryCheckEverySecond": "Réessayer toutes les {0} secondes",
+ "resendEveryXTimes": "Renvoyez toutes les {0} fois",
+ "resendDisabled": "Renvoi désactivé",
+ "retriesDescription": "Nombre d'essais avant que le service ne soit déclaré hors ligne et qu'une notification soit envoyée",
+ "ignoreTLSError": "Ignorer les erreurs liées au certificat SSL/TLS",
+ "upsideDownModeDescription": "Si le service est en ligne, il sera alors noté hors ligne et vice-versa.",
+ "maxRedirectDescription": "Nombre maximal de redirections avant que le service ne soit marqué comme hors ligne.",
+ "enableGRPCTls": "Autoriser l'envoi d'une requête gRPC avec une connexion TLS",
+ "grpcMethodDescription": "Le nom de la méthode est converti au format CamelCase tel que sayHello, check, etc.",
+ "acceptedStatusCodesDescription": "Codes HTTP qui considèrent le service comme étant disponible.",
+ "Maintenance": "Maintenance",
+ "statusMaintenance": "Maintenance",
+ "Schedule maintenance": "Planifier la maintenance",
+ "Affected Monitors": "Sondes concernées",
+ "Pick Affected Monitors...": "Sélectionner les sondes concernées…",
+ "Start of maintenance": "Début de la maintenance",
+ "All Status Pages": "Toutes les pages d'état",
+ "Select status pages...": "Sélectionner les pages d'état…",
+ "recurringIntervalMessage": "Exécuter une fois par jour | Exécuter une fois tous les {0} jours",
+ "affectedMonitorsDescription": "Sélectionnez les sondes concernées par la maintenance en cours",
+ "affectedStatusPages": "Afficher ce message de maintenance sur les pages d'état sélectionnées",
+ "atLeastOneMonitor": "Sélectionnez au moins une sonde concernée",
+ "passwordNotMatchMsg": "Les mots de passe ne correspondent pas.",
+ "notificationDescription": "Une fois ajoutée, vous devez l'activer manuellement dans les paramètres de vos hôtes.",
+ "keywordDescription": "Le mot clé sera recherché dans la réponse HTML/JSON reçue du site internet.",
+ "pauseDashboardHome": "En pause",
+ "deleteMonitorMsg": "Êtes-vous sûr de vouloir supprimer cette sonde ?",
+ "deleteMaintenanceMsg": "Voulez-vous vraiment supprimer cette maintenance ?",
+ "deleteNotificationMsg": "Êtes-vous sûr de vouloir supprimer ce type de notification pour toutes les sondes ?",
+ "dnsPortDescription": "Port du serveur DNS. La valeur par défaut est 53. Vous pouvez modifier le port à tout moment.",
+ "resolverserverDescription": "Le DNS de Cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.",
+ "rrtypeDescription": "Veuillez sélectionner un type d'enregistrement DNS",
+ "pauseMonitorMsg": "Êtes-vous sûr de vouloir mettre en pause cette sonde ?",
+ "enableDefaultNotificationDescription": "Pour chaque nouvelle sonde, cette notification sera activée par défaut. Vous pouvez toujours désactiver la notification séparément pour chaque sonde.",
+ "clearEventsMsg": "Êtes-vous sûr de vouloir supprimer tous les événements pour cette sonde ?",
+ "clearHeartbeatsMsg": "Êtes-vous sûr de vouloir supprimer toutes les vérifications pour cette sonde ?",
+ "confirmClearStatisticsMsg": "Êtes-vous sûr de vouloir supprimer toutes les statistiques ?",
+ "importHandleDescription": "Choisissez « Ignorer l'existant » si vous voulez ignorer chaque sonde ou notification portant le même nom. L'option « Écraser » supprime toutes les sondes et notifications existantes.",
+ "confirmImportMsg": "Êtes-vous sûr de vouloir importer la sauvegarde ? Veuillez vous assurer que vous avez sélectionné la bonne option d'importation.",
+ "twoFAVerifyLabel": "Veuillez saisir votre jeton pour vérifier que le système 2FA fonctionne :",
+ "tokenValidSettingsMsg": "Le jeton est valide. Vous pouvez maintenant sauvegarder les paramètres de double authentification (2FA).",
+ "confirmEnableTwoFAMsg": "Êtes-vous sûr de vouloir activer la double authentification (2FA) ?",
+ "confirmDisableTwoFAMsg": "Êtes-vous sûr de vouloir désactiver la double authentification (2FA) ?",
+ "Settings": "Paramètres",
+ "Dashboard": "Tableau de bord",
+ "New Update": "Mise à jour disponible",
+ "Language": "Langue",
+ "Appearance": "Apparence",
+ "Theme": "Thème",
+ "General": "Général",
+ "Primary Base URL": "URL principale",
+ "Version": "Version",
+ "Check Update On GitHub": "Consulter les mises à jour sur GitHub",
+ "List": "Lister",
+ "Add": "Ajouter",
+ "Add New Monitor": "Ajouter une nouvelle sonde",
+ "Quick Stats": "Résumé",
+ "Up": "En ligne",
+ "Down": "Hors ligne",
+ "Pending": "En attente",
+ "Unknown": "Inconnu",
+ "Pause": "En pause",
+ "Name": "Nom",
+ "Status": "État",
+ "DateTime": "Heure",
+ "Message": "Messages",
+ "No important events": "Aucun évènement important",
+ "Resume": "Reprendre",
+ "Edit": "Modifier",
+ "Delete": "Supprimer",
+ "Current": "Actuellement",
+ "Uptime": "Disponibilité",
+ "Cert Exp.": "Expiration Cert SSL",
+ "day": "jour | jours",
+ "-day": "-jour",
+ "hour": "heure",
+ "-hour": "heures",
+ "Response": "Temps de réponse",
+ "Ping": "Ping",
+ "Monitor Type": "Type de sonde",
+ "Keyword": "Mot-clé",
+ "Friendly Name": "Nom d'affichage",
+ "URL": "URL",
+ "Hostname": "Nom d'hôte / adresse IP",
+ "Port": "Port",
+ "Heartbeat Interval": "Intervalle de vérification",
+ "Retries": "Essais",
+ "Heartbeat Retry Interval": "Intervalle de ré-essaie",
+ "Resend Notification if Down X times consecutively": "Renvoyer la notification si hors ligne X fois consécutivement",
+ "Advanced": "Avancé",
+ "Upside Down Mode": "Mode inversé",
+ "Max. Redirects": "Nombre maximum de redirections",
+ "Accepted Status Codes": "Codes HTTP acceptés",
+ "Push URL": "Push URL",
+ "needPushEvery": "Vous devez appeler cette URL toutes les {0} secondes.",
+ "pushOptionalParams": "Paramètres facultatifs : {0}",
+ "Save": "Sauvegarder",
+ "Notifications": "Notifications",
+ "Not available, please setup.": "Non disponible, merci de le configurer.",
+ "Setup Notification": "Créer une notification",
+ "Light": "Clair",
+ "Dark": "Sombre",
+ "Auto": "Automatique",
+ "Theme - Heartbeat Bar": "Thème - barres d'état",
+ "Normal": "Normal",
+ "Bottom": "En dessous",
+ "None": "Aucun",
+ "Timezone": "Fuseau horaire",
+ "Search Engine Visibility": "Visibilité par les moteurs de recherche",
+ "Allow indexing": "Autoriser l'indexation",
+ "Discourage search engines from indexing site": "Refuser l'indexation",
+ "Change Password": "Changer le mot de passe",
+ "Current Password": "Mot de passe actuel",
+ "New Password": "Nouveau mot de passe",
+ "Repeat New Password": "Répéter votre nouveau mot de passe",
+ "Update Password": "Mettre à jour le mot de passe",
+ "Disable Auth": "Désactiver l'authentification",
+ "Enable Auth": "Activer l'authentification",
+ "disableauth.message1": "Voulez-vous vraiment désactiver l'authentification ?",
+ "disableauth.message2": "Cette fonctionnalité est conçue pour les scénarios où vous avez l'intention d'implémenter une authentification tierce devant Uptime Kuma, comme Cloudflare Access, Authelia ou d'autres mécanismes d'authentification.",
+ "Please use this option carefully!": "Veuillez utiliser cette option avec précaution !",
+ "Logout": "Déconnexion",
+ "Leave": "Quitter",
+ "I understand, please disable": "Je comprends, désactivez-la",
+ "Confirm": "Confirmer",
+ "Yes": "Oui",
+ "No": "Non",
+ "Username": "Nom d'utilisateur",
+ "Password": "Mot de passe",
+ "Remember me": "Se souvenir de moi",
+ "Login": "Connexion",
+ "No Monitors, please": "Pas de sondes, veuillez",
+ "add one": "en ajouter une",
+ "Notification Type": "Type de notification",
+ "Email": "Courriel",
+ "Test": "Tester",
+ "Certificate Info": "Informations sur le certificat SSL",
+ "Resolver Server": "Serveur DNS utilisé",
+ "Resource Record Type": "Type d'enregistrement DNS recherché",
+ "Last Result": "Dernier résultat",
+ "Create your admin account": "Créer votre compte administrateur",
+ "Repeat Password": "Répéter le mot de passe",
+ "Import Backup": "Importation de la sauvegarde",
+ "Export Backup": "Exportation de la sauvegarde",
+ "Export": "Exporter",
+ "Import": "Importer",
+ "respTime": "Temps de réponse (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Activé par défaut",
+ "Apply on all existing monitors": "Appliquer sur toutes les sondes existantes",
+ "Create": "Créer",
+ "Clear Data": "Effacer les données",
+ "Events": "Événements",
+ "Heartbeats": "Vérifications",
+ "Auto Get": "Récupérer automatiquement",
+ "backupDescription": "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.",
+ "backupDescription2": "PS : Les données relatives à l'historique et aux événements ne sont pas incluses.",
+ "backupDescription3": "Les données sensibles telles que les jetons de notification sont incluses dans le fichier d'exportation, veuillez les conserver soigneusement.",
+ "alertNoFile": "Veuillez sélectionner un fichier à importer.",
+ "alertWrongFileType": "Veuillez sélectionner un fichier JSON à importer.",
+ "Clear all statistics": "Effacer toutes les statistiques",
+ "Skip existing": "Sauter l'existant",
+ "Overwrite": "Écraser",
+ "Options": "Options",
+ "Keep both": "Garder les deux",
+ "Verify Token": "Vérifier le jeton",
+ "Setup 2FA": "Configurer la double authentification (2FA)",
+ "Enable 2FA": "Activer la double authentification (2FA)",
+ "Disable 2FA": "Désactiver la double authentification (2FA)",
+ "2FA Settings": "Paramètres de la double authentification (2FA)",
+ "Two Factor Authentication": "Double authentification",
+ "Active": "Actif",
+ "Inactive": "Inactif",
+ "Token": "Jeton",
+ "Show URI": "Afficher l'URI",
+ "Tags": "Étiquettes",
+ "Add New below or Select...": "Ajoutez-en un en dessous ou sélectionnez-le ici…",
+ "Tag with this name already exist.": "Une étiquette portant ce nom existe déjà.",
+ "Tag with this value already exist.": "Une étiquette avec cette valeur existe déjà.",
+ "color": "Couleur",
+ "value (optional)": "Valeur (facultatif)",
+ "Gray": "Gris",
+ "Red": "Rouge",
+ "Orange": "Orange",
+ "Green": "Vert",
+ "Blue": "Bleu",
+ "Indigo": "Indigo",
+ "Purple": "Violet",
+ "Pink": "Rose",
+ "Search...": "Rechercher…",
+ "Avg. Ping": "Ping moyen",
+ "Avg. Response": "Réponse moyenne",
+ "Entry Page": "Page d'accueil",
+ "statusPageNothing": "Rien ici, veuillez ajouter un groupe ou une sonde.",
+ "No Services": "Aucun service",
+ "All Systems Operational": "Tous les systèmes sont opérationnels",
+ "Partially Degraded Service": "Service partiellement dégradé",
+ "Degraded Service": "Service dégradé",
+ "Add Group": "Ajouter un groupe",
+ "Add a monitor": "Ajouter une sonde",
+ "Edit Status Page": "Modifier la page de statut",
+ "Go to Dashboard": "Accéder au tableau de bord",
+ "Status Page": "Page de statut",
+ "Status Pages": "Pages de statut",
+ "defaultNotificationName": "Ma notification {notification} numéro ({number})",
+ "here": "ici",
+ "Required": "Requis",
+ "telegram": "Telegram",
+ "ZohoCliq": "ZohoCliq",
+ "Bot Token": "Jeton du robot",
+ "wayToGetTelegramToken": "Vous pouvez obtenir un token depuis {0}.",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Prend en charge les messages privés / messages de groupe / l'ID d'un salon",
+ "wayToGetTelegramChatID": "Vous pouvez obtenir le Chat ID en envoyant un message avec le robot puis en récupérant l'URL pour voir l'ID du salon :",
+ "YOUR BOT TOKEN HERE": "VOTRE JETON ROBOT ICI",
+ "chatIDNotFound": "ID du salon introuvable, envoyez un message via le robot avant",
+ "webhook": "Webhook",
+ "Post URL": "Post URL",
+ "Content Type": "Type de contenu",
+ "webhookJsonDesc": "{0} est bien pour tous les serveurs HTTP modernes comme Express.js",
+ "webhookFormDataDesc": "{multipart} est bien pour du PHP. Le JSON aura besoin d'être parsé avec {decodeFunction}",
+ "webhookAdditionalHeadersTitle": "En-têtes supplémentaires",
+ "webhookAdditionalHeadersDesc": "Définit des en-têtes supplémentaires envoyés avec le webhook.",
+ "smtp": "Courriel (SMTP)",
+ "secureOptionNone": "Aucun / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignorer les erreurs TLS",
+ "From Email": "Depuis l'adresse",
+ "emailCustomSubject": "Objet personnalisé",
+ "To Email": "Vers l'adresse",
+ "smtpCC": "CC",
+ "smtpBCC": "CCI",
+ "discord": "Discord",
+ "Discord Webhook URL": "URL vers le webhook Discord",
+ "wayToGetDiscordURL": "Vous pouvez l'obtenir en allant dans « Paramètres du serveur » -> « Intégrations » -> « Consulter les webhooks» -> « Nouveau Webhook »",
+ "Bot Display Name": "Nom du robot (affiché)",
+ "Prefix Custom Message": "Préfixe du message personnalisé",
+ "Hello @everyone is...": "Bonjour {'@'}everyone il…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "URL vers le webhook",
+ "wayToGetTeamsURL": "Vous pouvez apprendre comment créer une URL Webhook {0}.",
+ "wayToGetZohoCliqURL": "Vous pouvez apprendre comment créer une URL Webhook {0}.",
+ "signal": "Signal",
+ "Number": "Numéro",
+ "Recipients": "Destinataires",
+ "needSignalAPI": "Vous avez besoin d'un client Signal avec l'API REST.",
+ "wayToCheckSignalURL": "Vous pouvez regarder l'URL suivante pour savoir comment la mettre en place :",
+ "signalImportant": "IMPORTANT : Vous ne pouvez pas mixer les groupes et les numéros en destinataires !",
+ "gotify": "Gotify",
+ "Application Token": "Jeton d'application",
+ "Server URL": "URL du serveur",
+ "Priority": "Priorité",
+ "slack": "Slack",
+ "Icon Emoji": "Icon Emoji",
+ "Channel Name": "Nom du salon",
+ "Uptime Kuma URL": "URL vers Uptime Kuma",
+ "aboutWebhooks": "Plus d'informations sur les webhooks ici : {0}",
+ "aboutChannelName": "Mettez le nom du salon dans {0} dans « Nom du salon » si vous voulez contourner le salon webhook. Ex. : #autre-salon",
+ "aboutKumaURL": "Si vous laissez l'URL d'Uptime Kuma vierge, elle redirigera vers la page du projet GitHub.",
+ "emojiCheatSheet": "Aide sur les émojis : {0}",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push par Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (prend en charge plus de 50 services de notification)",
+ "GoogleChat": "Google Chat (Google Workspace uniquement)",
+ "pushbullet": "Pushbullet",
+ "Kook": "Kook",
+ "wayToGetKookBotToken": "Créez une application et récupérer le jeton de robot à l'addresse {0}",
+ "wayToGetKookGuildID": "Passez en « mode développeur » dans les paramètres de Kook, et cliquez droit sur le Guild pour obtenir son identifiant",
+ "Guild ID": "Identifiant de Guild",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Clé d'utilisateur",
+ "Device": "Appareil",
+ "Message Title": "Titre du message",
+ "Notification Sound": "Son de notification",
+ "More info on:": "Plus d'informations sur : {0}",
+ "pushoverDesc1": "Priorité d'urgence (2) a un délai par défaut de 30 secondes entre les tentatives et expire après une heure.",
+ "pushoverDesc2": "Si vous voulez envoyer des notifications sur différents appareils, remplissez le champ « Appareil ».",
+ "SMS Type": "Type de SMS",
+ "octopushTypePremium": "Premium (rapide - recommandé pour les alertes)",
+ "octopushTypeLowCost": "Économique (lent, bloqué de temps en temps par l'opérateur)",
+ "checkPrice": "Vérification {0} tarifs :",
+ "apiCredentials": "Identifiants de l'API",
+ "octopushLegacyHint": "Voulez-vous utiliser l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?",
+ "Check octopush prices": "Vérifier les prix d'Octopush {0}.",
+ "octopushPhoneNumber": "Numéro de téléphone (format international, ex. : +33612345678) ",
+ "octopushSMSSender": "Nom de l'expéditeur : 3-11 caractères alphanumériques avec espace (a-zA-Z0-9)",
+ "LunaSea Device ID": "Identifiant d'appareil LunaSea",
+ "Apprise URL": "URL d'Apprise",
+ "Example:": "Exemple : {0}",
+ "Read more:": "En savoir plus : {0}",
+ "Status:": "État : {0}",
+ "Read more": "En savoir plus",
+ "appriseInstalled": "Apprise est installé.",
+ "appriseNotInstalled": "Apprise n'est pas installé. {0}",
+ "Access Token": "Jeton d'accès",
+ "Channel access token": "Jeton d'accès au canal",
+ "Line Developers Console": "Console développeurs Line",
+ "lineDevConsoleTo": "Console développeurs Line - {0}",
+ "Basic Settings": "Paramètres de base",
+ "User ID": "Identifiant utilisateur",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Premièrement accédez à {0}, créez un provider et définissez un type de salon à «Messaging API». Vous obtiendrez alors le jeton d'accès du salon et l'identifiant utilisateur demandés.",
+ "Icon URL": "URL vers l'icône",
+ "aboutIconURL": "Vous pouvez mettre un lien vers une image dans « URL vers l'icône » pour remplacer l'image de profil par défaut. Elle ne sera utilisé que si « Icône émoji » n'est pas défini.",
+ "aboutMattermostChannelName": "Vous pouvez remplacer le salon par défaut que le webhook utilise en mettant le nom du salon dans le champ « Nom du salon ». Vous aurez besoin de l'activer depuis les paramètres de Mattermost. Ex. : #autre-salon",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - Bon marché mais lent et souvent surchargé. Limité uniquement aux destinataires polonais.",
+ "promosmsTypeFlash": "SMS FLASH - Le message sera automatiquement affiché sur l'appareil du destinataire. Limité uniquement aux destinataires Polonais.",
+ "promosmsTypeFull": "SMS FULL - Version premium des SMS. Vous pouvez mettre le nom de l'expéditeur (vous devez l'enregistrer au préalable). Fiable pour les alertes.",
+ "promosmsTypeSpeed": "SMS SPEED - Priorité élevée pour le système. Très rapide et fiable mais coûteux (environ le double du prix d'un SMS FULL).",
+ "promosmsPhoneNumber": "Numéro de téléphone (pour les destinataires polonais, vous pouvez ignorer l'indicatif international)",
+ "promosmsSMSSender": "Nom de l'expéditeur du SMS : Nom pré-enregistré ou l'un de base : InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "L'URL du serveur (avec http(s):// et le port de manière facultative)",
+ "Internal Room Id": "ID de la salle interne",
+ "matrixDesc1": "Vous pouvez trouver l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est censé ressembler à !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Pour cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}",
+ "Method": "Méthode",
+ "Body": "Corps",
+ "Headers": "En-têtes",
+ "PushUrl": "URL Push",
+ "HeadersInvalidFormat": "Les en-têtes de la requête ne sont pas dans un format JSON valide : ",
+ "BodyInvalidFormat": "Le corps de la requête n'est pas dans un format JSON valide : ",
+ "Monitor History": "Historique de la sonde",
+ "clearDataOlderThan": "Conserver l'historique des données de la sonde durant {0} jours.",
+ "PasswordsDoNotMatch": "Les mots de passe ne correspondent pas.",
+ "records": "enregistrements",
+ "One record": "Un enregistrement",
+ "steamApiKeyDescription": "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ",
+ "Current User": "Utilisateur actuel",
+ "topic": "Sujet",
+ "topicExplanation": "Topic MQTT à surveiller",
+ "successMessage": "Message de réussite",
+ "successMessageExplanation": "Message MQTT qui sera considéré comme un succès",
+ "recent": "Récent",
+ "Done": "Fait",
+ "Info": "Info",
+ "Security": "Sécurité",
+ "Steam API Key": "Clé d'API Steam",
+ "Shrink Database": "Réduire la base de données",
+ "Pick a RR-Type...": "Choisissez un type d'enregistrement…",
+ "Pick Accepted Status Codes...": "Choisissez les codes de statut acceptés…",
+ "Default": "Défaut",
+ "HTTP Options": "Options HTTP",
+ "Create Incident": "Créer un incident",
+ "Title": "Titre",
+ "Content": "Contenu",
+ "Style": "Style",
+ "info": "Info",
+ "warning": "Attention",
+ "danger": "Danger",
+ "error": "Erreur",
+ "critical": "Critique",
+ "primary": "Primaire",
+ "light": "Blanc",
+ "dark": "Noir",
+ "Post": "Post",
+ "Please input title and content": "Veuillez saisir le titre et le contenu",
+ "Created": "Créé",
+ "Last Updated": "Dernière mise à jour",
+ "Unpin": "Retirer",
+ "Switch to Light Theme": "Passer au thème clair",
+ "Switch to Dark Theme": "Passer au thème sombre",
+ "Show Tags": "Afficher les étiquettes",
+ "Hide Tags": "Masquer les étiquettes",
+ "Description": "Description",
+ "No monitors available.": "Aucune sonde disponible.",
+ "Add one": "En rajouter une",
+ "No Monitors": "Aucune sonde",
+ "Untitled Group": "Groupe sans titre",
+ "Services": "Services",
+ "Discard": "Abandonner",
+ "Cancel": "Annuler",
+ "Powered by": "Propulsé par",
+ "shrinkDatabaseDescription": "Déclenche la commande VACUUM pour SQLite. Si votre base de données a été créée après la version 1.10.0, AUTO_VACUUM est déjà activé et cette action n'est pas nécessaire.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "Nom d'utilisateur de l'API (incl. webapi_ prefix)",
+ "serwersmsAPIPassword": "Mot de passe API",
+ "serwersmsPhoneNumber": "Numéro de téléphone",
+ "serwersmsSenderName": "Nom de l'expéditeur du SMS (enregistré via le portail client)",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "Numéro(s) de téléphone",
+ "smseagleGroup": "Nom(s) de groupe(s) de répertoire",
+ "smseagleContact": "Nom(s) de contact du répertoire",
+ "smseagleRecipientType": "Type de destinataire",
+ "smseagleRecipient": "Destinataire(s) (les multiples doivent être séparés par une virgule)",
+ "smseagleToken": "Jeton d'accès à l'API",
+ "smseagleUrl": "L'URL de votre appareil SMSEagle",
+ "smseagleEncoding": "Envoyer en Unicode",
+ "smseaglePriority": "Priorité des messages (0-9, par défaut = 0)",
+ "stackfield": "Stackfield",
+ "Customize": "Personnaliser",
+ "Custom Footer": "Pied de page personnalisé",
+ "Custom CSS": "CSS personnalisé",
+ "smtpDkimSettings": "Paramètres DKIM",
+ "smtpDkimDesc": "Veuillez vous référer au Nodemailer DKIM {0} pour l'utilisation.",
+ "documentation": "documentation",
+ "smtpDkimDomain": "Nom de domaine",
+ "smtpDkimKeySelector": "Sélecteur de clé",
+ "smtpDkimPrivateKey": "Clé privée",
+ "smtpDkimHashAlgo": "Algorithme de hachage (facultatif)",
+ "smtpDkimheaderFieldNames": "Clés d'en-tête à signer (facultatif)",
+ "smtpDkimskipFields": "Clés d'en-tête à ne pas signer (facultatif)",
+ "wayToGetPagerDutyKey": "Vous pouvez l'obtenir en allant dans Service -> Annuaire des services -> (sélectionner un service) -> Intégrations -> Ajouter une intégration. Ici, vous pouvez rechercher \"Events API V2\". Plus d'infos {0}",
+ "Integration Key": "Clé d'intégration",
+ "Integration URL": "URL d'intégration",
+ "Auto resolve or acknowledged": "Résolution automatique ou accusé de réception",
+ "do nothing": "ne fais rien",
+ "auto acknowledged": "accusé de réception automatique",
+ "auto resolve": "résolution automatique",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "Environnement",
+ "alertaApiKey": "Clé de l'API",
+ "alertaAlertState": "État de l'alerte",
+ "alertaRecoverState": "État de récupération",
+ "deleteStatusPageMsg": "Voulez-vous vraiment supprimer cette page d'état ?",
+ "Proxies": "Proxies",
+ "default": "Défaut",
+ "enabled": "Activé",
+ "setAsDefault": "Définir par défaut",
+ "deleteProxyMsg": "Voulez-vous vraiment supprimer ce proxy pour toutes les sondes ?",
+ "proxyDescription": "Les proxies doivent être affectés à une sonde pour fonctionner.",
+ "enableProxyDescription": "Ce proxy n'aura pas d'effet sur les demandes de sonde tant qu'il n'est pas activé. Vous pouvez contrôler la désactivation temporaire du proxy de toutes les sondes en fonction de l'état d'activation.",
+ "setAsDefaultProxyDescription": "Ce proxy sera activé par défaut pour les nouvelles sondes. Vous pouvez toujours désactiver le proxy séparément pour chaque sonde.",
+ "Certificate Chain": "Chaîne de certificats",
+ "Valid": "Valide",
+ "Invalid": "Non valide",
+ "AccessKeyId": "ID de clé d'accès",
+ "SecretAccessKey": "Clé secrète d'accès",
+ "PhoneNumbers": "Numéros de téléphone",
+ "TemplateCode": "Modèle de code",
+ "SignName": "Signature",
+ "Sms template must contain parameters: ": "Le modèle de SMS doit contenir des paramètres : ",
+ "Bark Endpoint": "Endpoint Bark",
+ "Bark Group": "Groupe Bark",
+ "Bark Sound": "Son Bark",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "Clé secrète",
+ "For safety, must use secret key": "Par sécurité, utilisation obligatoire de la clé secrète",
+ "Device Token": "Jeton d'appareil",
+ "Platform": "Plateforme",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Haute",
+ "Retry": "Recommencez",
+ "Topic": "Topic",
+ "WeCom Bot Key": "Clé de robot WeCom",
+ "Setup Proxy": "Configurer le proxy",
+ "Proxy Protocol": "Protocole proxy",
+ "Proxy Server": "Serveur proxy",
+ "Proxy server has authentication": "Une authentification est nécessaire pour le serveur proxy",
+ "User": "Utilisateur",
+ "Installed": "Installé",
+ "Not installed": "Non installé",
+ "Running": "Fonctionne",
+ "Not running": "Ne fonctionne pas",
+ "Remove Token": "Supprimer le jeton",
+ "Start": "Démarrer",
+ "Stop": "Arrêter",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Ajouter une page de statut",
+ "Slug": "Chemin",
+ "Accept characters:": "Caractères acceptés : ",
+ "startOrEndWithOnly": "Commence uniquement par {0}",
+ "No consecutive dashes": "Pas de double tirets",
+ "Next": "Continuer",
+ "The slug is already taken. Please choose another slug.": "Un chemin existe déjà. Veuillez en choisir un autre.",
+ "No Proxy": "Pas de proxy",
+ "Authentication": "Authentification",
+ "HTTP Basic Auth": "Authentification de base HTTP",
+ "New Status Page": "Nouvelle page de statut",
+ "Page Not Found": "Page non trouvée",
+ "Reverse Proxy": "Proxy inverse",
+ "Backup": "Sauvegarde",
+ "About": "À propos",
+ "wayToGetCloudflaredURL": "(télécharger cloudflared depuis {0})",
+ "cloudflareWebsite": "Site web de Cloudflare",
+ "Message:": "Message : ",
+ "Don't know how to get the token? Please read the guide:": "Vous ne savez pas comment obtenir le jeton ? Lisez le guide :",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La connexion actuelle peut être perdue si vous vous connectez actuellement via un tunnel Cloudflare. Êtes-vous sûr de vouloir l'arrêter ? Tapez votre mot de passe actuel pour le confirmer.",
+ "HTTP Headers": "En-têtes HTTP",
+ "Trust Proxy": "Proxy de confiance",
+ "Other Software": "Autres logiciels",
+ "For example: nginx, Apache and Traefik.": "Par exemple : nginx, Apache et Traefik.",
+ "Please read": "Veuillez lire",
+ "Subject:": "Objet : ",
+ "Valid To:": "Valable jusqu'au : ",
+ "Days Remaining:": "Jours restants : ",
+ "Issuer:": "Émetteur : ",
+ "Fingerprint:": "Empreinte : ",
+ "No status pages": "Aucune page de statut",
+ "Domain Name Expiry Notification": "Notification d'expiration du nom de domaine",
+ "Proxy": "Proxy",
+ "Date Created": "Date de création",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "Adresse HTTP OneBot",
+ "onebotMessageType": "Type de message OneBot",
+ "onebotGroupMessage": "Groupe",
+ "onebotPrivateMessage": "Privé",
+ "onebotUserOrGroupId": "ID de groupe/utilisateur",
+ "onebotSafetyTips": "Pour des raisons de sécurité, vous devez définir un jeton d'accès",
+ "PushDeer Key": "Clé PushDeer",
+ "Footer Text": "Texte de pied de page",
+ "Show Powered By": "Afficher « Propulsé par »",
+ "Domain Names": "Noms de domaine",
+ "signedInDisp": "Connecté en tant que {0}",
+ "signedInDispDisabled": "Authentification désactivée.",
+ "RadiusSecret": "Radius Secret",
+ "RadiusSecretDescription": "Secret partagé entre le client et le serveur",
+ "RadiusCalledStationId": "Identifiant de la station appelée",
+ "RadiusCalledStationIdDescription": "Identifiant de l'appareil appelé",
+ "RadiusCallingStationId": "Identifiant de la station appelante",
+ "RadiusCallingStationIdDescription": "Identifiant de l'appareil appelant",
+ "Certificate Expiry Notification": "Notification d'expiration du certificat",
+ "API Username": "Nom d'utilisateur de l'API",
+ "API Key": "Clé API",
+ "Recipient Number": "Numéro du destinataire",
+ "From Name/Number": "De nom/numéro",
+ "Leave blank to use a shared sender number.": "Laisser vide pour utiliser un numéro d'expéditeur partagé.",
+ "Octopush API Version": "Version de l'API Octopush",
+ "Legacy Octopush-DM": "Ancien Octopush-DM",
+ "endpoint": "endpoint",
+ "octopushAPIKey": "\"Clé API\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration",
+ "octopushLogin": "\"Identifiant\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration",
+ "promosmsLogin": "Nom de connexion API",
+ "promosmsPassword": "Mot de passe API",
+ "pushoversounds pushover": "Pushover (par défaut)",
+ "pushoversounds bike": "Vélo",
+ "pushoversounds bugle": "Clairon",
+ "pushoversounds cashregister": "Caisse enregistreuse",
+ "pushoversounds classical": "Classique",
+ "pushoversounds cosmic": "Cosmique",
+ "pushoversounds falling": "Chute",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Arrivée",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magique",
+ "pushoversounds mechanical": "Mécanique",
+ "pushoversounds pianobar": "Piano-bar",
+ "pushoversounds siren": "Sirène",
+ "pushoversounds spacealarm": "Alarme spatiale",
+ "pushoversounds tugboat": "Remorqueur",
+ "pushoversounds alien": "Alarme alienne (version longue)",
+ "pushoversounds climb": "Escalade (version longue)",
+ "pushoversounds persistent": "Persistent (version longue)",
+ "pushoversounds echo": "Pushover Echo (version longue)",
+ "pushoversounds updown": "Up Down (version longue)",
+ "pushoversounds vibrate": "Vibration seulement",
+ "pushoversounds none": "Aucun (silencieux)",
+ "pushyAPIKey": "Clé API secrète",
+ "pushyToken": "Jeton d'appareil",
+ "Show update if available": "Afficher la mise à jour si disponible",
+ "Also check beta release": "Vérifiez également la version bêta",
+ "Using a Reverse Proxy?": "Utiliser un proxy inverse ?",
+ "Check how to config it for WebSocket": "Vérifier comment le configurer pour WebSocket",
+ "Steam Game Server": "Serveur de jeu Steam",
+ "Most likely causes:": "Causes les plus probables : ",
+ "The resource is no longer available.": "La ressource n'est plus disponible.",
+ "There might be a typing error in the address.": "Il se peut qu'il y ait une erreur de frappe dans l'adresse.",
+ "What you can try:": "Ce que vous pouvez essayer :",
+ "Retype the address.": "Retaper l'adresse.",
+ "Go back to the previous page.": "Retourner à la page précédente.",
+ "Coming Soon": "Prochainement",
+ "wayToGetClickSendSMSToken": "Vous pouvez obtenir le nom d'utilisateur API et la clé API à partir de {0} .",
+ "Connection String": "Chaîne de connexion",
+ "Query": "Requête",
+ "settingsCertificateExpiry": "Expiration du certificat TLS",
+ "certificationExpiryDescription": "Les sondes HTTPS émettent une notification lorsque le certificat TLS expire dans :",
+ "Setup Docker Host": "Configurer l'hôte Docker",
+ "Connection Type": "Type de connexion",
+ "Docker Daemon": "Deamon Docker",
+ "deleteDockerHostMsg": "Voulez-vous vraiment supprimer cet hôte Docker pour toutes les sondes ?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Conteneur Docker",
+ "Container Name / ID": "Nom / ID du conteneur",
+ "Docker Host": "Hôte Docker",
+ "Docker Hosts": "Hôtes Docker",
+ "ntfy Topic": "Topic ntfy",
+ "Domain": "Domaine",
+ "Workstation": "Poste de travail",
+ "disableCloudflaredNoAuthMsg": "Vous êtes en mode No Auth, un mot de passe n'est pas nécessaire.",
+ "trustProxyDescription": "Faire confiance aux en-têtes 'X-Forwarded-*'. Si vous souhaitez obtenir la bonne adresse IP client et que votre Uptime Kuma se situe derrière un proxy (comme nginx ou Apache) vous devez l'activer.",
+ "wayToGetLineNotifyToken": "Vous pouvez obtenir un jeton d'accès auprès de {0}",
+ "Examples": "Exemples",
+ "Home Assistant URL": "URL vers Home Assistant",
+ "Long-Lived Access Token": "Jeton d'accès de longue durée",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Un jeton d'accès de longue durée peut être créé en cliquant sur le nom de votre profil (en bas à gauche) et en faisant défiler vers le bas, puis cliquez sur Créer un jeton. ",
+ "Notification Service": "Service de notifications",
+ "default: notify all devices": "par défaut : notifier tous les appareils",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Une liste des services de notification peut être trouvée dans Home Assistant sous \"Outils de développement > Services\" recherchez \"notification\" pour trouver le nom de votre appareil/téléphone.",
+ "Automations can optionally be triggered in Home Assistant:": "Les automatisations peuvent éventuellement être déclenchées dans Home Assistant : ",
+ "Trigger type:": "Type de déclencheur : ",
+ "Event type:": "Type d'événement : ",
+ "Event data:": "Données d'événement : ",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Ensuite, choisissez une action, par exemple basculer la scène là où une lumière RVB est rouge.",
+ "Frontend Version": "Version frontend",
+ "Frontend Version do not match backend version!": "La version frontend ne correspond pas à la version backend !",
+ "Base URL": "URL de base",
+ "goAlertInfo": "GoAlert est une application open source pour la planification des appels, les escalades automatisées et les notifications (comme les SMS ou les appels vocaux). Impliquez automatiquement la bonne personne, de la bonne manière et au bon moment ! {0}",
+ "goAlertIntegrationKeyInfo": "Obtenez la clé d'intégration d'API générique pour le service dans ce format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" généralement la valeur du paramètre de jeton de l'URL copiée.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Obsolète : étant donné que de nombreuses fonctionnalités ont été ajoutées et que cette fonctionnalité de sauvegarde est non maintenue, elle ne peut pas générer ou restaurer une sauvegarde complète.",
+ "backupRecommend": "Veuillez sauvegarder le volume ou le dossier de données (./data/) directement à la place.",
+ "Optional": "Optionnel",
+ "squadcast": "Squadcast",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "Documentations de l'API SMSManager ",
+ "Gateway Type": "Type de passerelle",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Vous pouvez diviser des nombres avec",
+ "or": "ou",
+ "recurringInterval": "Intervalle",
+ "Recurring": "Récurrent",
+ "strategyManual": "Activer/désactiver manuellement",
+ "warningTimezone": "Utilisation du fuseau horaire du serveur",
+ "weekdayShortMon": "Lun",
+ "weekdayShortTue": "Mar",
+ "weekdayShortWed": "Mer",
+ "weekdayShortThu": "Jeu",
+ "weekdayShortFri": "Ven",
+ "weekdayShortSat": "Sam",
+ "weekdayShortSun": "Dim",
+ "dayOfWeek": "Jour de la semaine",
+ "dayOfMonth": "Jour du mois",
+ "lastDay": "Dernier jour",
+ "lastDay1": "Dernier jour du mois",
+ "lastDay2": "Avant-dernier jour du mois",
+ "lastDay3": "3ème dernier jour du mois",
+ "lastDay4": "4ème dernier jour du mois",
+ "No Maintenance": "Aucune maintenance",
+ "pauseMaintenanceMsg": "Voulez-vous vraiment mettre en pause ?",
+ "maintenanceStatus-under-maintenance": "En maintenance",
+ "maintenanceStatus-inactive": "Inactif",
+ "maintenanceStatus-scheduled": "Programmé",
+ "maintenanceStatus-ended": "Terminé",
+ "maintenanceStatus-unknown": "Inconnue",
+ "Display Timezone": "Afficher le fuseau horaire",
+ "Server Timezone": "Fuseau horaire du serveur",
+ "statusPageMaintenanceEndDate": "Fin",
+ "IconUrl": "URL vers l'icône",
+ "Enable DNS Cache": "Activer le cache DNS",
+ "Enable": "Activer",
+ "Disable": "Désactiver",
+ "dnsCacheDescription": "Il peut ne pas fonctionner dans certains environnements IPv6, désactivez-le si vous rencontrez des problèmes.",
+ "Single Maintenance Window": "Créneau de maintenance unique",
+ "Maintenance Time Window of a Day": "Créneau de la maintenance",
+ "Effective Date Range": "Plage de dates d'effet (facultatif)",
+ "Schedule Maintenance": "Créer une maintenance",
+ "Date and Time": "Date et heure",
+ "DateTime Range": "Plage de dates et d'heures",
+ "Strategy": "Stratégie",
+ "Free Mobile User Identifier": "Identifiant d'utilisateur Free Mobile",
+ "Free Mobile API Key": "Clé d'API Free Mobile",
+ "Enable TLS": "Activer le TLS",
+ "Proto Service Name": "Nom du service proto",
+ "Proto Method": "Méthode Proto",
+ "Proto Content": "Contenu proto",
+ "Economy": "Économique",
+ "Lowcost": "Faible coût",
+ "high": "Haute",
+ "General Monitor Type": "Type de sonde générale",
+ "Passive Monitor Type": "Type de sonde passive",
+ "Specific Monitor Type": "Type de sonde spécifique",
+ "dataRetentionTimeError": "La durée de conservation doit être supérieure ou égale à 0",
+ "infiniteRetention": "Définissez la valeur à 0 pour une durée de conservation infinie.",
+ "Monitor": "Sonde | Sondes",
+ "Custom": "Personnalisé",
+ "confirmDeleteTagMsg": "Voulez-vous vraiment supprimer cette étiquettes ? Les moniteurs associés ne seront pas supprimés.",
+ "promosmsAllowLongSMS": "Autoriser les longs SMS",
+ "Help": "Aide",
+ "Game": "Jeux",
+ "Packet Size": "Taille du paquet",
+ "loadingError": "Impossible de récupérer les données, veuillez réessayer plus tard.",
+ "plugin": "Plugin | Plugins",
+ "install": "Installer",
+ "installing": "Installation",
+ "uninstall": "Désinstaller",
+ "uninstalling": "Désinstallation",
+ "confirmUninstallPlugin": "Voulez-vous vraiment désinstaller ce plugin ?",
+ "Custom Monitor Type": "Type de sonde personnalisé",
+ "markdownSupported": "Syntaxe Markdown supportée",
+ "Google Analytics ID": "Identifiant Google Analytics",
+ "Server Address": "Adresse du serveur",
+ "Learn More": "En savoir plus",
+ "Edit Tag": "Modifier l'étiquette",
+ "Body Encoding": "Encodage du corps",
+ "telegramMessageThreadID": "(Facultatif) ID du fil de message",
+ "telegramMessageThreadIDDescription": "(Facultatif) Identifiant unique pour le fil de discussion ciblé (sujet) du forum; pour les supergroupes du forum uniquement",
+ "telegramProtectContent": "Protéger le transfert/l'enregistrement",
+ "telegramProtectContentDescription": "S'il est activé, les messages du robot dans Telegram seront protégés contre le transfert et l'enregistrement.",
+ "telegramSendSilently": "Envoyer silencieusement",
+ "telegramSendSilentlyDescription": "Envoie le message silencieusement. Les utilisateurs recevront une notification sans son.",
+ "notificationRegional": "Régional",
+ "Clone Monitor": "Cloner la sonde",
+ "Clone": "Cloner",
+ "cloneOf": "Clone de {0}",
+ "Expiry date": "Date d'expiration",
+ "Add Another": "Ajouter un autre",
+ "Key Added": "Clé ajoutée",
+ "Expiry": "Expiration",
+ "Continue": "Continuer",
+ "Add API Key": "Ajouter une clé API",
+ "No API Keys": "Aucune clé API",
+ "apiKey-active": "Active",
+ "apiKey-expired": "Expirée",
+ "apiKey-inactive": "Inactive",
+ "Expires": "Expire",
+ "disableAPIKeyMsg": "Voulez-vous vraiment désactiver cette clé API ?",
+ "deleteAPIKeyMsg": "Voulez-vous vraiment supprimer cette clé API ?",
+ "Generate": "Générer",
+ "API Keys": "Clés API",
+ "apiKeyAddedMsg": "Votre clé API a été ajoutée. Veuillez la noter car elle ne pourra plus être affichée.",
+ "Don't expire": "N'expire pas",
+ "pagertreeUrgency": "Urgence",
+ "pagertreeSilent": "Silencieux",
+ "pagertreeLow": "Faible",
+ "pagertreeMedium": "Moyen",
+ "pagertreeHigh": "Haut",
+ "pagertreeResolve": "Résolution automatique",
+ "pagertreeDoNothing": "Ne fais rien",
+ "pagertreeIntegrationUrl": "URL d'intégration",
+ "pagertreeCritical": "Critique",
+ "wayToGetPagerTreeIntegrationURL": "Après avoir créé l'intégration Uptime Kuma dans PagerTree, copiez le fichier Endpoint. Voir tous les détails {0}",
+ "lunaseaDeviceID": "Identifiant de l'appareil",
+ "lunaseaUserID": "Identifiant de l'utilisateur",
+ "Add New Tag": "Ajouter une étiquette",
+ "lunaseaTarget": "Cible",
+ "statusPageRefreshIn": "Actualisation dans : {0}",
+ "twilioFromNumber": "Du Nombre",
+ "twilioToNumber": "Au Nombre",
+ "twilioAccountSID": "ID du compte",
+ "twilioAuthToken": "Jeton d'authentification",
+ "sameAsServerTimezone": "Identique au fuseau horaire du serveur",
+ "startDateTime": "Date/heure de début",
+ "endDateTime": "Date/heure de fin",
+ "cronExpression": "Expression cron",
+ "cronSchedule": "Calendrier : ",
+ "invalidCronExpression": "Expression Cron non valide : {0}",
+ "ntfyUsernameAndPassword": "Nom d'utilisateur et mot de passe",
+ "ntfyAuthenticationMethod": "Méthode d'authentification",
+ "pushoverMessageTtl": "TTL Message (Secondes)",
+ "Show Clickable Link": "Afficher le lien cliquable",
+ "Show Clickable Link Description": "Si cette case est cochée, tous ceux qui ont accès à cette page d'état peuvent accéder à l'URL du moniteur.",
+ "Open Badge Generator": "Ouvrir le générateur de badges",
+ "Badge Type": "Type de badge",
+ "Badge Duration": "Durée du badge",
+ "Badge Prefix": "Préfixe de badge",
+ "Badge Suffix": "Suffixe de badge",
+ "Badge Label Color": "Couleur de l'étiquette du badge",
+ "Badge Color": "Couleur du badge",
+ "Badge Label Prefix": "Préfixe d'étiquette de badge",
+ "Badge Label Suffix": "Suffixe d'étiquette de badge",
+ "Badge Up Color": "Couleur du badge en ligne",
+ "Badge Down Color": "Couleur du badge hors ligne",
+ "Badge Pending Color": "Couleur du badge en attente",
+ "Badge Maintenance Color": "Couleur du badge maintenance",
+ "Badge Warn Color": "Couleur du badge d'avertissement",
+ "Badge Warn Days": "Jours d'avertissement de badge",
+ "Badge Style": "Style de badge",
+ "Badge value (For Testing only.)": "Valeur du badge (Pour les tests uniquement.)",
+ "Monitor Setting": "Réglage de la sonde {0}",
+ "Badge Generator": "Générateur de badges {0}",
+ "Badge Label": "Étiquette de badge",
+ "Badge URL": "URL du badge",
+ "Cannot connect to the socket server": "Impossible de se connecter au serveur de socket",
+ "Reconnecting...": "Reconnexion...",
+ "Edit Maintenance": "Modifier la maintenance",
+ "Monitor Group": "Groupe de sonde | Groupe de sondes",
+ "Badge Down Days": "Badge hors ligne",
+ "Group": "Groupe",
+ "Home": "Accueil",
+ "noGroupMonitorMsg": "Pas disponible. Créez d'abord une sonde de groupe.",
+ "Close": "Fermer"
+}
diff --git a/src/lang/gl.json b/src/lang/gl.json
new file mode 100644
index 000000000..dc45d0bd4
--- /dev/null
+++ b/src/lang/gl.json
@@ -0,0 +1,23 @@
+{
+ "Settings": "Axustes",
+ "Dashboard": "Panel",
+ "Help": "Axuda",
+ "General": "Xeral",
+ "List": "Lista",
+ "Home": "Casa",
+ "Add": "Engadir",
+ "Up": "Arriba",
+ "Pending": "Pendente",
+ "statusMaintenance": "Mantemento",
+ "Maintenance": "Mantemento",
+ "Unknown": "Descoñecido",
+ "Reconnecting...": "Reconectando...",
+ "pauseDashboardHome": "Pausa",
+ "Pause": "Pausa",
+ "Name": "Nome",
+ "Status": "Estado",
+ "DateTime": "DataHora",
+ "Message": "Mensaxe",
+ "languageName": "Galego",
+ "Down": "Abaixo"
+}
diff --git a/src/lang/he-IL.json b/src/lang/he-IL.json
new file mode 100644
index 000000000..b99b32db5
--- /dev/null
+++ b/src/lang/he-IL.json
@@ -0,0 +1,745 @@
+{
+ "languageName": "עברית",
+ "checkEverySecond": "בדיקה כל {0} שניות",
+ "retryCheckEverySecond": "ניסיון חוזר כל {0} שניות",
+ "resendEveryXTimes": "שליחה שוב כל {0} פעמים",
+ "resendDisabled": "שליחה מחדש מושבתת",
+ "retriesDescription": "מקסימום ניסיונות חוזרים לפני שהשירות יסומן כלא פעיל ותשלח התראה",
+ "ignoreTLSError": "התעלם משגיאת TLS/SSL עבור אתרי HTTPS",
+ "upsideDownModeDescription": "הפוך את יעד הסטטוס. אם ניתן להגיע לשירות, הוא ייחשב כלא פעיל.",
+ "maxRedirectDescription": "המספר המרבי של הפניות מחדש למעקב. ערך 0 ישבית הפניות מחדש לגמרי.",
+ "enableGRPCTls": "אפשר לשלוח בקשת gRPC עם חיבור TLS",
+ "grpcMethodDescription": "שם השיטה מומר לפורמט cammelCase כגון sayHello, check וכו.",
+ "acceptedStatusCodesDescription": "בחר קודי סטטוס שנחשבים לתגובה מוצלחת.",
+ "Maintenance": "תחזוקה",
+ "statusMaintenance": "תחזוקה",
+ "Schedule maintenance": "תחזוקה מתוכננת",
+ "Affected Monitors": "מוניטורים מושפעים",
+ "Pick Affected Monitors...": "בחר המוניטריים המושפעים…",
+ "Start of maintenance": "תחילת תחזוקה",
+ "All Status Pages": "כל דפי הסטטוס",
+ "Select status pages...": "בחר דפי סטטוס…",
+ "recurringIntervalMessage": "רוץ פעם ביום | הפעל אחת ל-{0} ימים",
+ "affectedMonitorsDescription": "בחר מוניטורים שמושפעים מהתחזוקה הנוכחית",
+ "affectedStatusPages": "הצג הודעת תחזוקה זו בדפי סטטוס שנבחרו",
+ "atLeastOneMonitor": "בחר לפחות מוניטור אחד מושפע",
+ "passwordNotMatchMsg": "הסיסמאות שהזנתם אינן תואמות.",
+ "notificationDescription": "יש להקצות התראות למוניטור כדי שהן יעבדו.",
+ "keywordDescription": "חפש מילת מפתח בתגובת HTML או JSON רגילה. החיפוש תלוי רישיות.",
+ "pauseDashboardHome": "עצור",
+ "deleteMonitorMsg": "האם אתה בטוח שברצונך למחוק את המוניטור הזה?",
+ "deleteMaintenanceMsg": "האם אתה בטוח שברצונך למחוק את התחזוקה הזו?",
+ "deleteNotificationMsg": "האם אתה בטוח שברצונך למחוק את ההודעה הזו עבור כל מוניטרים?",
+ "dnsPortDescription": "יציאת שרת DNS. ברירת המחדל היא 53. אתה יכול לשנות את היציאה בכל עת.",
+ "resolverserverDescription": "Cloudflare הוא שרת ברירת המחדל. אתה יכול לשנות את שרת הפותר בכל עת.",
+ "rrtypeDescription": "בחר את סוג ה-RR שברצונך לפקח עליו",
+ "pauseMonitorMsg": "האם אתה בטוח רוצה להשהות?",
+ "enableDefaultNotificationDescription": "הודעה זו תופעל כברירת מחדל עבור מוניטרים חדשים. אתה עדיין יכול להשבית את ההודעה בנפרד עבור כל מוניטור.",
+ "clearEventsMsg": "האם אתה בטוח שברצונך למחוק את כל האירועים עבור המוניטור הזה?",
+ "clearHeartbeatsMsg": "האם אתה בטוח שברצונך למחוק את כל פעימות הלב עבור המוניטור הזה?",
+ "confirmClearStatisticsMsg": "האם אתה בטוח שברצונך למחוק את כל הנתונים הסטטיסטיים?",
+ "importHandleDescription": "בחר 'דלג על קיים' אם ברצונך לדלג על כל מוניטור או התראה באותו שם. 'החלף' ימחק כל מוניטור והתראה קיימים.",
+ "confirmImportMsg": "האם אתה בטוח שברצונך לייבא את הגיבוי? אנא ודא שבחרת באפשרות הייבוא הנכונה.",
+ "twoFAVerifyLabel": "אנא הזן את האסימון שלך כדי לאמת מערכת אדוש:",
+ "tokenValidSettingsMsg": "האסימון תקף! כעת אתה יכול לשמור את הגדרות האדוש.",
+ "confirmEnableTwoFAMsg": "האם אתה בטוח שברצונך להפעיל את מערכת אדוש?",
+ "confirmDisableTwoFAMsg": "האם אתם בטוחים שאתם רוצים להשבית אימות 2FA (אימות כפול)?",
+ "Settings": "הגדרות",
+ "Dashboard": "לוח בקרה",
+ "New Update": "עדכון חדש",
+ "Language": "שפה",
+ "Appearance": "תצוגה",
+ "Theme": "ערכת נושא",
+ "General": "כללי",
+ "Primary Base URL": "כתובת האתר הראשית",
+ "Version": "גרסה",
+ "Check Update On GitHub": "בדיקה לעדכונים מ-GitHub",
+ "List": "רשימה",
+ "Add": "הוספה",
+ "Add New Monitor": "הוספת מוניטור חדש",
+ "Quick Stats": "סטטיסטיקות בקצרה",
+ "Up": "זמין",
+ "Down": "לא זמין",
+ "Pending": "ממתין",
+ "Unknown": "לא יודע",
+ "Pause": "עצירה",
+ "Name": "שם",
+ "Status": "סטטוס",
+ "DateTime": "תאריך שעה",
+ "Message": "הודעה",
+ "No important events": "אין אירועים חשובים",
+ "Resume": "הפעלה",
+ "Edit": "עריכה",
+ "Delete": "מחיקה",
+ "Current": "נוכחי",
+ "Uptime": "זמן פעילות",
+ "Cert Exp.": "תפוגת תעודה.",
+ "day": "יום | ימים",
+ "-day": "-יום",
+ "hour": "שעה",
+ "-hour": "-שעה",
+ "Response": "תגובה",
+ "Ping": "פינג",
+ "Monitor Type": "סוג מוניטור",
+ "Keyword": "מילת מפתח",
+ "Friendly Name": "שם תצוגה",
+ "URL": "כתובת אתר",
+ "Hostname": "שם המארח",
+ "Port": "פורט",
+ "Heartbeat Interval": "מרווח פעימות (בין קריאה לקריאה)",
+ "Retries": "נסיונות חוזרים",
+ "Heartbeat Retry Interval": "מרווח נסיונות חוזר של פעימות",
+ "Resend Notification if Down X times consecutively": "שליחת הודעה שוב אם לא פעיל X פעמים ברציפות",
+ "Advanced": "מתקדם",
+ "Upside Down Mode": "מצב הפוך",
+ "Max. Redirects": "מקסימום הפניות מחדש",
+ "Accepted Status Codes": "קודי סטטוס מאושרים",
+ "Push URL": "כתובת URL ל-Push",
+ "needPushEvery": "יש לקרוא לכתובת הזו כל {0} שניות.",
+ "pushOptionalParams": "פרמטרים אופציונליים: {0}",
+ "Save": "שמירה",
+ "Notifications": "התראות",
+ "Not available, please setup.": "לא זמין, נא להגדיר.",
+ "Setup Notification": "הגדרת התראה",
+ "Light": "בהירה",
+ "Dark": "כהה",
+ "Auto": "אוטומטית",
+ "Theme - Heartbeat Bar": "ערכת נושא - Heartbeat Bar",
+ "Normal": "רגיל",
+ "Bottom": "בתחתית האתר",
+ "None": "ללא",
+ "Timezone": "אזור זמן",
+ "Search Engine Visibility": "נראות במנועי חיפוש",
+ "Allow indexing": "לאפשר הוספה לאינדקס",
+ "Discourage search engines from indexing site": "לעודד מנועי חיפוש שלא לאנדקס את האתר",
+ "Change Password": "שינוי סיסמה",
+ "Current Password": "סיסמה נוכחית",
+ "New Password": "סיסמה חדשה",
+ "Repeat New Password": "חזרה על הסיסמה חדשה",
+ "Update Password": "עידכון סיסמה",
+ "Disable Auth": "השבתת התחברות",
+ "Enable Auth": "הפעלת התחברות",
+ "disableauth.message1": "האם אתם בטוחים שברצונכםלהשבית את האבטחה ?",
+ "disableauth.message2": "אופציה זו מיועדת לתרחישים בהם בכוונתכם ליישם אימות של צד שלישי מול Uptime Kuma כגון Cloudflare Access, Authelia או מנגנוני אימות אחרים.",
+ "Please use this option carefully!": "יש להשתמש באפשרות זו בזהירות!",
+ "Logout": "התנתקות",
+ "Leave": "יציאה",
+ "I understand, please disable": "מובן, אני רוצה להשבית",
+ "Confirm": "אישור",
+ "Yes": "כן",
+ "No": "לא",
+ "Username": "שם משתמש",
+ "Password": "סיסמה",
+ "Remember me": "זכור אותי",
+ "Login": "התחברות",
+ "No Monitors, please": "בלי מוניטורים, בבקשה",
+ "add one": "להוסיף אחד",
+ "Notification Type": "סוג התראה",
+ "Email": "אימייל",
+ "Test": "Test",
+ "Certificate Info": "פרטי תעודת אבטחה",
+ "Resolver Server": "שרת פותר",
+ "Resource Record Type": "סוג רשומת משאבים",
+ "Last Result": "תוצאה אחרונה",
+ "Create your admin account": "צור את חשבון הניהול שלך",
+ "Repeat Password": "חזור על הסיסמה",
+ "Import Backup": "ייבוא גיבוי",
+ "Export Backup": "ייצוא גיבוי",
+ "Export": "ייצוא",
+ "Import": "ייבוא",
+ "respTime": "רפ. זמן (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "ברירת המחדל מופעלת",
+ "Apply on all existing monitors": "החל על כל המסכים הקיימים",
+ "Create": "ליצור",
+ "Clear Data": "נקה נתונים",
+ "Events": "אירועים",
+ "Heartbeats": "פעימות לב",
+ "Auto Get": "קבל אוטומטי",
+ "backupDescription": "אתה יכול לגבות את כל המסכים וההתראות לקובץ JSON.",
+ "backupDescription2": "הערה: היסטוריה ונתוני אירועים אינם כלולים.",
+ "backupDescription3": "נתונים רגישים כגון אסימוני הודעה כלולים בקובץ הייצוא; נא לאחסן יצוא בצורה מאובטחת.",
+ "alertNoFile": "אנא בחר קובץ לייבוא.",
+ "alertWrongFileType": "אנא בחר קובץ JSON.",
+ "Clear all statistics": "נקה את כל הנתונים הסטטיסטיים",
+ "Skip existing": "דילוג על הקיים",
+ "Overwrite": "החלף",
+ "Options": "אפשרויות",
+ "Keep both": "שמור את שניהם",
+ "Verify Token": "אמת את האסימון",
+ "Setup 2FA": "הגדרת מערכת אדוש",
+ "Enable 2FA": "הפעלת אדוש",
+ "Disable 2FA": "כיבוי אדוש",
+ "2FA Settings": "הגדרות אדוש",
+ "Two Factor Authentication": "אימות דו-שלבי (מערכת אדוש)",
+ "Active": "מופעל",
+ "Inactive": "קבוי",
+ "Token": "אסימון",
+ "Show URI": "הצג URI",
+ "Tags": "תגים",
+ "Add New below or Select...": "הוסף חדש למטה או בחר…",
+ "Tag with this name already exist.": "תג בשם זה כבר קיים.",
+ "Tag with this value already exist.": "תג עם ערך זה כבר קיים.",
+ "color": "צבע",
+ "value (optional)": "ערך (אופציונלי)",
+ "Gray": "אפור",
+ "Red": "אדום",
+ "Orange": "כתום",
+ "Green": "ירוק",
+ "Blue": "כחול",
+ "Indigo": "כחול כהה",
+ "Purple": "סגול",
+ "Pink": "כתום",
+ "Search...": "לחפש…",
+ "Avg. Ping": "פינג ממוצע",
+ "Avg. Response": "ממוצע תגובה",
+ "Entry Page": "דף כניסה",
+ "statusPageNothing": "אין כאן שום דבר, בבקשה הוסף קבוצה או מוניטור.",
+ "No Services": "אין שירותים",
+ "All Systems Operational": "כל המערכות עובדות",
+ "Partially Degraded Service": "שירות פגום חלקית",
+ "Degraded Service": "שירות פגום",
+ "Add Group": "הוסף קבוצה",
+ "Add a monitor": "הוסף מוניטור",
+ "Edit Status Page": "ערוך דף סטטוס",
+ "Go to Dashboard": "מעבר לפאנל",
+ "Status Page": "דף סטטוס",
+ "Status Pages": "דפי סטטוס",
+ "defaultNotificationName": "התראת {notification} שלי ({number})",
+ "here": "פה",
+ "Required": "נדרש",
+ "telegram": "טלגרם",
+ "Bot Token": "אסימון בוט",
+ "wayToGetTelegramToken": "אתה יכול לקבל אסימון מ-{0}.",
+ "Chat ID": "מזהה צ'אט",
+ "supportTelegramChatID": "תמיכה בצ'אט ישיר / קבוצה / מזהה הצ'אט של הערוץ",
+ "wayToGetTelegramChatID": "אתה יכול לקבל את מזהה הצ'אט שלך על ידי שליחת הודעה לבוט ומעבר לכתובת האתר הזו כדי להציג את ה-chat_id:",
+ "YOUR BOT TOKEN HERE": "אסימון הבוט שלך כאן",
+ "chatIDNotFound": "מזהה צ'אט לא נמצא; אנא שלח הודעה לבוט זה תחילה",
+ "webhook": "Webhook",
+ "Post URL": "כתובת אתר של פוסט",
+ "Content Type": "סוג התוכן",
+ "webhookJsonDesc": "{0} מתאים לכל שרתי HTTP מודרניים כגון Express.js",
+ "webhookFormDataDesc": "{multipart} טוב ל-PHP. יהיה צורך לנתח את ה-JSON באמצעות {decodeFunction}",
+ "webhookAdditionalHeadersTitle": "כותרות נוספות",
+ "webhookAdditionalHeadersDesc": "מגדיר כותרות נוספות שנשלחות עם ה-webhook.",
+ "smtp": "אימייל (SMTP)",
+ "secureOptionNone": "None / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "התעלם משגיאת TLS",
+ "From Email": "אמייל שולח",
+ "emailCustomSubject": "נושא מותאם אישית",
+ "To Email": "למייל",
+ "smtpCC": "עותק",
+ "smtpBCC": "עותק מוסתר",
+ "discord": "דיסקורד",
+ "Discord Webhook URL": "כתובת אתר של Discord Webhook",
+ "wayToGetDiscordURL": "אתה יכול לקבל זאת על ידי מעבר להגדרות שרת -> אינטגרציות -> יצירת Webhook",
+ "Bot Display Name": "שם תצוגה של בוט",
+ "Prefix Custom Message": "קידומת הודעה מותאמת אישית",
+ "Hello @everyone is...": "שלום {'@'}כולם…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "כתובת האתר של Webhook",
+ "wayToGetTeamsURL": "אתה יכול ללמוד כיצד ליצור כתובת אתר ל-webhook {0}.",
+ "signal": "אוֹת",
+ "Number": "מספר",
+ "Recipients": "נמענים",
+ "needSignalAPI": "אתה צריך שיהיה לך לקוח איתות עם REST API.",
+ "wayToCheckSignalURL": "אתה יכול לבדוק את כתובת האתר הזו כדי לראות כיצד להגדיר אחת:",
+ "signalImportant": "חשוב: לא ניתן לערבב קבוצות ומספרים בנמענים!",
+ "gotify": "Gotify",
+ "Application Token": "אסימון אפליקציה",
+ "Server URL": "כתובת האתר של השרת",
+ "Priority": "עדיפות",
+ "slack": "Slack",
+ "Icon Emoji": "אייקון אימוג'י",
+ "Channel Name": "שם הערוץ",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "מידע נוסף על Webhooks ב: {0}",
+ "aboutChannelName": "הזן את שם הערוץ בשדה {0} שם ערוץ אם ברצונך לעקוף את ערוץ Webhook. לדוגמה: #ערוץ אחר",
+ "aboutKumaURL": "אם תשאיר את השדה Uptime Kuma URL ריק, הוא יעבור כברירת מחדל לעמוד Project GitHub.",
+ "emojiCheatSheet": "גיליון הונאה של אמוג'י: {0}",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push by Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (תומך ב-50+ שירותי התראות)",
+ "GoogleChat": "Google Chat (Google Workspace בלבד)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "מפתח משתמש",
+ "Device": "התקן",
+ "Message Title": "כותרת ההודעה",
+ "Notification Sound": "צליל התראה",
+ "More info on:": "מידע נוסף על: {0}",
+ "pushoverDesc1": "לעדיפות חירום (2) יש פסק זמן של 30 שניות ברירת מחדל בין ניסיונות חוזרים, והיא תפוג לאחר שעה.",
+ "pushoverDesc2": "אם ברצונך לשלוח התראות למכשירים שונים, מלא את שדה התקן.",
+ "SMS Type": "סוג SMS",
+ "octopushTypePremium": "פרימיום (מהיר - מומלץ להתראה)",
+ "octopushTypeLowCost": "עלות נמוכה (איטית - לפעמים חסומה על ידי המפעיל)",
+ "checkPrice": "בדוק מחירים של {0}:",
+ "apiCredentials": "אישורי API",
+ "octopushLegacyHint": "האם אתה משתמש בגרסה הישנה של Octopush (2011-2020) או בגרסה החדשה?",
+ "Check octopush prices": "בדוק מחירי תמנון {0}.",
+ "octopushPhoneNumber": "מספר טלפון (בפורמט בינלאומי, למשל: +972501234567) ",
+ "octopushSMSSender": "שם שולח SMS: 3-11 תווים אלפאנומריים ורווח (a-zA-Z0-9)",
+ "LunaSea Device ID": "מזהה מכשיר LunaSea",
+ "Apprise URL": "כתובת URL ל-Apprize",
+ "Example:": "דוגמה: {0}",
+ "Read more:": "קרא עוד: {0}",
+ "Status:": "סטטוס: {0}",
+ "Read more": "קרא עוד",
+ "appriseInstalled": "Apprise מותקן.",
+ "appriseNotInstalled": "Apprise אינו מותקן. {0}",
+ "Access Token": "אסימון גישה",
+ "Channel access token": "אסימון גישה לערוץ",
+ "Line Developers Console": "קונסולת מפתחים",
+ "lineDevConsoleTo": "קו מפתחי קונסולת - {0}",
+ "Basic Settings": "הגדרות בסיסיות",
+ "User ID": "תעודת זהות של משתמש",
+ "Messaging API": "API להודעות",
+ "wayToGetLineChannelToken": "תחילה גש ל-{0}, צור ספק וערוץ (Messaging API), לאחר מכן תוכל לקבל את אסימון הגישה לערוץ ומזהה המשתמש מפריטי התפריט שהוזכרו לעיל.",
+ "Icon URL": "כתובת אתר של סמל",
+ "aboutIconURL": "אתה יכול לספק קישור לתמונה ב\"כתובת URL של סמל\" כדי לעקוף את תמונת הפרופיל המוגדרת כברירת מחדל. לא ישמש אם Icon Emoji מוגדר.",
+ "aboutMattermostChannelName": "אתה יכול לעקוף את ערוץ ברירת המחדל שאליו ה-Webhook מפרסם על ידי הזנת שם הערוץ בשדה \"שם ערוץ\". זה צריך להיות מופעל בהגדרות Mattermos Webhook. לדוגמה: #ערוץ אחר",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - זול אך איטי ולעיתים עמוס מדי. מוגבל רק לנמענים פולנים.",
+ "promosmsTypeFlash": "SMS FLASH - ההודעה תוצג אוטומטית במכשיר הנמען. מוגבל לנמענים פולנים בלבד.",
+ "promosmsTypeFull": "SMS FULL - שכבת פרימיום של SMS, אתה יכול להשתמש בשם השולח שלך (עליך לרשום את השם תחילה). אמין להתראות.",
+ "promosmsTypeSpeed": "SMS SPEED - העדיפות הגבוהה ביותר במערכת. מאוד מהיר ואמין אבל יקר (בערך פי שניים ממחיר מלא של SMS).",
+ "promosmsPhoneNumber": "מספר טלפון (לנמען פולני ניתן לדלג על אזורי חיוג)",
+ "promosmsSMSSender": "שם שולח SMS: שם רשום מראש או אחת מברירות המחדל: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "כתובת WebHook עבור Feishu",
+ "matrixHomeserverURL": "כתובת האתר של שרת הבית (עם http(s):// ויציאה אופציונלית)",
+ "Internal Room Id": "מזהה חדר פנימי",
+ "matrixDesc1": "אתה יכול למצוא את מזהה החדר הפנימי על ידי עיון בחלק המתקדם של לקוח Matrix שלך בהגדרות החדר. זה צריך להיראות כמו !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "מומלץ מאוד ליצור משתמש חדש ולא להשתמש באסימון הגישה של משתמש מטריקס משלך שכן הוא יאפשר גישה מלאה לחשבון שלך ולכל החדרים שהצטרפת אליהם. במקום זאת, צור משתמש חדש והזמן אותו רק לחדר שבו תרצה לקבל את ההתראה. תוכל לקבל את אסימון הגישה על ידי הפעלת {0}",
+ "Method": "שיטה",
+ "Body": "תוכן (Body)",
+ "Headers": "האדרים (Headers)",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "ההאדרים בבקשה אינם בתחביר JSON תקני: ",
+ "BodyInvalidFormat": "גוף הבקשה (Body) אינו JSON תקני: ",
+ "Monitor History": "מעקב אחר היסטוריה",
+ "clearDataOlderThan": "שמור את נתוני היסטוריית הצג למשך {0} ימים.",
+ "PasswordsDoNotMatch": "סיסמאות לא תואמות.",
+ "records": "רשומות",
+ "One record": "שיא אחד",
+ "steamApiKeyDescription": "לניטור שרת משחקי Steam יש צורך במפתח Steam Web-API. ניתן לרשום ולקבל את מפתח ה-API כאן: ",
+ "Current User": "משתמש נוכחי",
+ "topic": "נושא",
+ "topicExplanation": "נושא MQTT למעקב",
+ "successMessage": "הודעת הצלחה",
+ "successMessageExplanation": "הודעת MQTT שתיחשב כהצלחה",
+ "recent": "לאחרונה",
+ "Done": "בוצע",
+ "Info": "מידע",
+ "Security": "אבטחה",
+ "Steam API Key": "מפתח API Steam",
+ "Shrink Database": "מסד נתונים מכווץ",
+ "Pick a RR-Type...": "בחר סוג RR…",
+ "Pick Accepted Status Codes...": "בחר קודי סטטוס מקובלים…",
+ "Default": "בְּרִירַת מֶחדָל",
+ "HTTP Options": "אפשרויות HTTP",
+ "Create Incident": "ליצור אירוע",
+ "Title": "כותרת",
+ "Content": "תוֹכֶן",
+ "Style": "Style",
+ "info": "מידע",
+ "warning": "אַזהָרָה",
+ "danger": "סַכָּנָה",
+ "error": "שְׁגִיאָה",
+ "critical": "קריטי",
+ "primary": "יְסוֹדִי",
+ "light": "אוֹר",
+ "dark": "אפל",
+ "Post": "הודעה",
+ "Please input title and content": "אנא הזן כותרת ותוכן",
+ "Created": "נוצר",
+ "Last Updated": "עודכן לאחרונה",
+ "Unpin": "ענן חוף",
+ "Switch to Light Theme": "לעבור לנושא האור",
+ "Switch to Dark Theme": "לעבור לנושא אפל",
+ "Show Tags": "הצגת תגיות",
+ "Hide Tags": "הסתר תגיות",
+ "Description": "תיאור",
+ "No monitors available.": "אין צגים זמינים.",
+ "Add one": "הוסף אחד",
+ "No Monitors": "אין צגים",
+ "Untitled Group": "קבוצה ללא כותרת",
+ "Services": "שירותים",
+ "Discard": "להשליך",
+ "Cancel": "לְבַטֵל",
+ "Powered by": "פועל על",
+ "shrinkDatabaseDescription": "ואקום מסד נתונים להפעיל עבור SQLITE.אם בסיס הנתונים שלך נוצר לאחר 1.10.0, Auto_VACUUM כבר מופעל ואין צורך בפעולה זו.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "שם משתמש ל-API (כולל webapi_prefix)",
+ "serwersmsAPIPassword": "סיסמת API",
+ "serwersmsPhoneNumber": "מספר טלפון",
+ "serwersmsSenderName": "שם שולח SMS (רשום באמצעות פורטל לקוחות)",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "מספרי טלפון)",
+ "smseagleGroup": "שם קבוצת ספר טלפונים",
+ "smseagleContact": "שם איש קשר בספר הטלפונים",
+ "smseagleRecipientType": "Rסוג הנמען",
+ "smseagleRecipient": "נמענים (ים) (יש להפריד בין מרובים לפסיק)",
+ "smseagleToken": "API Access Token",
+ "smseagleUrl": "כתובת האתר של מכשיר ה- SMSeagege שלך",
+ "smseagleEncoding": "שלח כ- Unicode",
+ "smseaglePriority": "עדיפות הודעה (0-9, ברירת מחדל = 0)",
+ "stackfield": "סטאקפילד",
+ "Customize": "התאמה אישית",
+ "Custom Footer": "כותרת תחתונה מותאמת אישית",
+ "Custom CSS": "CSS מותאם אישית",
+ "smtpDkimSettings": "הגדרות DKIM",
+ "smtpDkimDesc": "אנא עיין ב- NodeMailer DKIM {0} לשימוש.",
+ "documentation": "ווקיפדיית מדריכים",
+ "smtpDkimDomain": "שם דומיין",
+ "smtpDkimKeySelector": "בורר מפתח",
+ "smtpDkimPrivateKey": "טוראי של פרטיy",
+ "smtpDkimHashAlgo": "אלגוריתם hash (אופציונלי)",
+ "smtpDkimheaderFieldNames": "מפתחות כותרת לחתום (אופציונלי)",
+ "smtpDkimskipFields": "מפתחות כותרת לא לחתום (אופציונלי)",
+ "wayToGetPagerDutyKey": "אתה יכול להשיג זאת על ידי מעבר לשירות -> ספריית שירות -> (בחר שירות) -> אינטגרציות -> הוסף אינטגרציה.כאן תוכלו לחפש \"אירועים API v2 \".מידע נוסף {0}",
+ "Integration Key": "מפתח אינטגרציה",
+ "Integration URL": "URL אינטגרציה",
+ "Auto resolve or acknowledged": "פיתרון אוטומטי או הודה",
+ "do nothing": "לעשות כלום",
+ "auto acknowledged": "Auto הודה",
+ "auto resolve": "פתרון אוטומטי",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "נקודת קצה של API",
+ "alertaEnvironment": "סביבה",
+ "alertaApiKey": "מפתח API",
+ "alertaAlertState": "מצב התראה",
+ "alertaRecoverState": "לשחזר מדינה",
+ "deleteStatusPageMsg": "האם אתה בטוח רוצה למחוק את דף הסטטוס הזה?",
+ "Proxies": "מתווכים",
+ "default": "בְּרִירַת מֶחדָל",
+ "enabled": "מופעל",
+ "setAsDefault": "נקבע כברירת מחדל",
+ "deleteProxyMsg": "האם אתה בטוח רוצה למחוק את הפרוקסי הזה לכל המסכים?",
+ "proxyDescription": "מתווכים חייבים להיות משויכים למוניטור בשביל שיעבדו.",
+ "enableProxyDescription": "פרוקסי זה לא ישפיע על בקשות צג עד שהוא יופעל.אתה יכול לשלוט באופן זמני להשבית את ה- Proxy מכל המסכים לפי מצב ההפעלה.",
+ "setAsDefaultProxyDescription": "פרוקסי זה יופעל כברירת מחדל עבור צגים חדשים.אתה עדיין יכול להשבית את ה- Proxy בנפרד עבור כל צג.",
+ "Certificate Chain": "שרשרת אישורים",
+ "Valid": "תָקֵף",
+ "Invalid": "לא חוקי",
+ "AccessKeyId": "מזהה AccessKey",
+ "SecretAccessKey": "גישהלמפתחסוד",
+ "PhoneNumbers": "מספר טלפוןs",
+ "TemplateCode": "מזהה TemplateCode",
+ "SignName": "מזהה SignName",
+ "Sms template must contain parameters: ": "תבנית SMS חייבת להכיל פרמטרים: ",
+ "Bark Endpoint": "כתובת יעד של Bark",
+ "Bark Group": "קבוצת Bark",
+ "Bark Sound": "צליל Bark",
+ "WebHookUrl": "כתובת ל-WebHookUrl",
+ "SecretKey": "מפתח סודי",
+ "For safety, must use secret key": "לבטיחות, חייב להשתמש במפתח סודיy",
+ "Device Token": "אסימון מכשיר",
+ "Platform": "פּלַטפוֹרמָה",
+ "iOS": "iOS",
+ "Android": "דְמוּי אָדָם",
+ "Huawei": "huawei",
+ "High": "High",
+ "Retry": "נסה שוב",
+ "Topic": "נוֹשֵׂא",
+ "WeCom Bot Key": "מפתח בוט ל-WeCom",
+ "Setup Proxy": "הגדרת פרוקסי",
+ "Proxy Protocol": "פרוטוקול פרוקסי",
+ "Proxy Server": "שרת פרוקסי",
+ "Proxy server has authentication": "לשרת ה- Proxy יש אימות",
+ "User": "מִשׁתַמֵשׁ",
+ "Installed": "מוּתקָן",
+ "Not installed": "לא מותקן",
+ "Running": "רץ",
+ "Not running": "לא רץ",
+ "Remove Token": "הסר אסימון",
+ "Start": "הַתחָלָה",
+ "Stop": "תפסיק",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "הוסף דף סטטוס חדש",
+ "Slug": "Slug",
+ "Accept characters:": "קבל תווים:",
+ "startOrEndWithOnly": "התחל או סוף עם {0} בלבד",
+ "No consecutive dashes": "אין מקפים רצופים",
+ "Next": "הַבָּא",
+ "The slug is already taken. Please choose another slug.": "השבלול כבר נלקח.אנא בחר שבלול נוסף.",
+ "No Proxy": "אין פרוקסי",
+ "Authentication": "אבטחה",
+ "HTTP Basic Auth": "HTTP בסיסי Auth",
+ "New Status Page": "דף סטטוס חדש",
+ "Page Not Found": "הדף לא נמצא",
+ "Reverse Proxy": "פרוקסי הפוך",
+ "Backup": "גיבוי",
+ "About": "אודות",
+ "wayToGetCloudflaredURL": "(הורד את CloudFlared מ- {0})",
+ "cloudflareWebsite": "אתר CloudFlare",
+ "Message:": "הוֹדָעָה:",
+ "Don't know how to get the token? Please read the guide:": "לא יודע איך להשיג את האסימון?אנא קרא את המדריך:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "החיבור הנוכחי עשוי ללכת לאיבוד אם אתה מתחבר כרגע באמצעות מנהרת CloudFlare.האם אתה בטוח רוצה לעצור את זה?הקלד את הסיסמה הנוכחית שלך כדי לאשר אותה.",
+ "HTTP Headers": "כותרות HTTP",
+ "Trust Proxy": "אמון בפרוקסי",
+ "Other Software": "תוכנה אחרת",
+ "For example: nginx, Apache and Traefik.": "למשל: Nginx, Apache ו- Traefik.",
+ "Please read": "בבקשה תקרא",
+ "Subject:": "נושא:",
+ "Valid To:": "תקף ל:",
+ "Days Remaining:": "ימים שנותרו:",
+ "Issuer:": "המנפיק:",
+ "Fingerprint:": "טביעת אצבע:",
+ "No status pages": "אין דפי סטטוס",
+ "Domain Name Expiry Notification": "הודעה על תום שם תחום",
+ "Proxy": "פרוקסי",
+ "Date Created": "תאריך יצירה",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "כתובת HTTP של OneBot",
+ "onebotMessageType": "סוג ההודעה OneBot",
+ "onebotGroupMessage": "קְבוּצָה",
+ "onebotPrivateMessage": "פְּרָטִי",
+ "onebotUserOrGroupId": "מזהה קבוצה/משתמש",
+ "onebotSafetyTips": "לבטיחות, חובה לקבוע טוקן גישה",
+ "PushDeer Key": "מפתח PushDeer",
+ "Footer Text": "טקסט לתחתית האתר (פוטר)",
+ "Show Powered By": "הצגת \"מופעל ע\"י\"",
+ "Domain Names": "שמות דומיין",
+ "signedInDisp": "חתום כ- {0}",
+ "signedInDispDisabled": "Auth מושבת.",
+ "RadiusSecret": "רדיוס סוד",
+ "RadiusSecretDescription": "סוד משותף בין לקוח לשרת",
+ "RadiusCalledStationId": "נקרא מזהה תחנה",
+ "RadiusCalledStationIdDescription": "מזהה המכשיר שנקרא",
+ "RadiusCallingStationId": "מזהה תחנת הקריאה",
+ "RadiusCallingStationIdDescription": "מזהה של מכשיר הנקרא",
+ "Certificate Expiry Notification": "הודעת תפוגה של אישור",
+ "API Username": "שם משתמש API",
+ "API Key": "מפתח API",
+ "Recipient Number": "מספר הנמען",
+ "From Name/Number": "משם/מספר",
+ "Leave blank to use a shared sender number.": "השאר ריק כדי להשתמש במספר שולח משותף.",
+ "Octopush API Version": "גרסת API של תמנון",
+ "Legacy Octopush-DM": "שיטת DM (מיושנת)",
+ "endpoint": "נקודת קצה",
+ "octopushAPIKey": "\"מפתח API \" מתוך תעודות API של HTTP בלוח הבקרה",
+ "octopushLogin": "\"כניסה \" מתעודות API של HTTP בלוח הבקרה",
+ "promosmsLogin": "שם כניסה של API",
+ "promosmsPassword": "סיסמת API",
+ "pushoversounds pushover": "Pushover (ברירת מחדל)",
+ "pushoversounds bike": "אופניים",
+ "pushoversounds bugle": "חֲצוֹצְרָה",
+ "pushoversounds cashregister": "קופה רושמת",
+ "pushoversounds classical": "קלַאסִי",
+ "pushoversounds cosmic": "קוֹסמִי",
+ "pushoversounds falling": "נופל",
+ "pushoversounds gamelan": "gamelan",
+ "pushoversounds incoming": "נִכנָס",
+ "pushoversounds intermission": "הפוגה",
+ "pushoversounds magic": "קֶסֶם",
+ "pushoversounds mechanical": "מֵכָנִי",
+ "pushoversounds pianobar": "בר פסנתר",
+ "pushoversounds siren": "סִירֶנָה",
+ "pushoversounds spacealarm": "אזעקת חלל",
+ "pushoversounds tugboat": "סירת משיכה",
+ "pushoversounds alien": "אזעקת חייזרים (ארוכה)",
+ "pushoversounds climb": "לטפס (ארוך)",
+ "pushoversounds persistent": "מתמיד (ארוך)",
+ "pushoversounds echo": "הד Pushover (ארוך)",
+ "pushoversounds updown": "למעלה (ארוך)",
+ "pushoversounds vibrate": "לרטוט בלבד",
+ "pushoversounds none": "אף אחד (שקט)",
+ "pushyAPIKey": "מפתח API סודי",
+ "pushyToken": "אסימון מכשיר",
+ "Show update if available": "הצג עדכון אם זמין",
+ "Also check beta release": "בדוק גם את שחרור הבטא",
+ "Using a Reverse Proxy?": "באמצעות פרוקסי הפוך?",
+ "Check how to config it for WebSocket": "בדוק כיצד להגדיר אותו ל- WebSocket",
+ "Steam Game Server": "שרת משחק קיטור",
+ "Most likely causes:": "ככל הנראה גורם:",
+ "The resource is no longer available.": "המשאב כבר לא זמין.",
+ "There might be a typing error in the address.": "יתכן שיש שגיאת הקלדה בכתובת.",
+ "What you can try:": "מה שאתה יכול לנסות:",
+ "Retype the address.": "הקלד מחדש את הכתובת.",
+ "Go back to the previous page.": "חזור לדף הקודם.",
+ "Coming Soon": "בקרוב",
+ "wayToGetClickSendSMSToken": "אתה יכול לקבל שם משתמש API ומפתח API מ- {0}.",
+ "Connection String": "מחרוזת חיבור",
+ "Query": "שאילתא",
+ "settingsCertificateExpiry": "תפוגת תעודת TLS",
+ "certificationExpiryDescription": "HTTPS עוקב אחר התראה על התראה כאשר תעודת TLS פגה ב:",
+ "Setup Docker Host": "הגדרת מארח Docker",
+ "Connection Type": "סוג חיבור",
+ "Docker Daemon": "שירות Docker",
+ "deleteDockerHostMsg": "האם אתה בטוח רוצה למחוק את המארח של Docker לכל המוניטורים?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "מיכל Docker",
+ "Container Name / ID": "שם מכולה / מזהה",
+ "Docker Host": "מארח דוקר",
+ "Docker Hosts": "מארחי Docker",
+ "ntfy Topic": "נושא ntfy",
+ "Domain": "תְחוּם",
+ "Workstation": "עמדת עבודה",
+ "disableCloudflaredNoAuthMsg": "אתה לא נמצא במצב AUTH, אין צורך בסיסמה.",
+ "trustProxyDescription": "סמוך על הכותרות 'X-Forwarded-*'. אם אתה רוצה לקבל את כתובת ה-IP של הלקוח וה- Uptime Kuma שלך עומד מאחורי פרוקסי כגון Nginx או Apache, עליך להפעיל זאת.",
+ "wayToGetLineNotifyToken": "אתה יכול לקבל אסימון גישה מ- {0}",
+ "Examples": "דוגמאות",
+ "Home Assistant URL": "כתובת URL עוזרת ביתית",
+ "Long-Lived Access Token": "אסימון גישה ארוכת שנים",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "ניתן ליצור אסימון גישה לאורך זמן על ידי לחיצה על שם הפרופיל שלך (שמאל למטה) וגלילה לתחתית ואז לחץ על צור אסימון. ",
+ "Notification Service": "Notification Service",
+ "default: notify all devices": "ברירת מחדל: התראה לכלל המכשירים",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "רשימה של שירותי הודעה ניתן למצוא בעוזר הבית תחת \"כלי מפתחים> שירותים \" חפש \"הודעה \" כדי למצוא את שם המכשיר/טלפון שלך.",
+ "Automations can optionally be triggered in Home Assistant:": "אוטומציות יכולות להיות מופעלות באופן אופציונלי לעוזר הבית:",
+ "Trigger type:": "סוג ההדק:",
+ "Event type:": "סוג אירוע:",
+ "Event data:": "נתוני אירועים:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "ואז בחר פעולה, למשל העבר את הסצינה למקום בו אור RGB הוא אדום.",
+ "Frontend Version": "גרסת Frontend",
+ "Frontend Version do not match backend version!": "גרסת Frontend לא תואמת את גרסת Backend!",
+ "Base URL": "כתובת בסיס",
+ "goAlertInfo": "SAETRERT הוא יישום קוד פתוח לתזמון שיחה, הסלמות והודעות אוטומטיות (כמו SMS או שיחות קוליות).לעסוק אוטומטית את האדם הנכון, בדרך הנכונה ובזמן הנכון!{0}",
+ "goAlertIntegrationKeyInfo": "קבל מפתח אינטגרציה של API גנרי לשירות בפורמט זה \"AAAAAAAA-BBB-CCCC-DDDD-EEEEEEEEEEE \" בדרך כלל הערך של פרמטר האסימון של URL שהועתק.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "הוצא משימוש: מכיוון שנוספו הרבה תכונות ותכונת הגיבוי הזו קצת לא מתוחזקת, היא לא יכולה ליצור או לשחזר גיבוי מלא.",
+ "backupRecommend": "אנא גבה את עוצמת הקול או את תיקיית הנתונים (./data/) ישירות במקום.",
+ "Optional": "אופציונאלי",
+ "squadcast": "Squadcast",
+ "SendKey": "מזהה SendKey",
+ "SMSManager API Docs": "מסמכי API של SmsManager ",
+ "Gateway Type": "סוג שער",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "אתה יכול לחלק מספרים עם",
+ "or": "אוֹ",
+ "recurringInterval": "הפסקה",
+ "Recurring": "מחזורי",
+ "strategyManual": "פעיל/לא פעיל באופן ידני",
+ "warningTimezone": "זה משתמש באזור הזמן של השרת",
+ "weekdayShortMon": "שני",
+ "weekdayShortTue": "שלישי",
+ "weekdayShortWed": "רביעי",
+ "weekdayShortThu": "חמישי",
+ "weekdayShortFri": "שישי",
+ "weekdayShortSat": "שבת",
+ "weekdayShortSun": "ראשון",
+ "dayOfWeek": "יום בשבוע",
+ "dayOfMonth": "יום בחודש",
+ "lastDay": "יום אחרון",
+ "lastDay1": "היום האחרון של החודש",
+ "lastDay2": "יום שני האחרון של החודש",
+ "lastDay3": "יום 3 האחרון של החודש",
+ "lastDay4": "היום הרביעי האחרון בחודש",
+ "No Maintenance": "אין תחזוקה",
+ "pauseMaintenanceMsg": "האם אתה בטוח רוצה להשהות?",
+ "maintenanceStatus-under-maintenance": "מתבצעות עבודות תחזוקה",
+ "maintenanceStatus-inactive": "לא פעיל",
+ "maintenanceStatus-scheduled": "מתוזמן",
+ "maintenanceStatus-ended": "הסתיים",
+ "maintenanceStatus-unknown": "לא ידוע",
+ "Display Timezone": "הצג אזור זמן",
+ "Server Timezone": "אזור זמן של שרת",
+ "statusPageMaintenanceEndDate": "סוך",
+ "IconUrl": "קישור לתמונת אייקון",
+ "Enable DNS Cache": "הפעל מטמון DNS",
+ "Enable": "הפעל",
+ "Disable": "השבת",
+ "dnsCacheDescription": "ייתכן שהוא לא עובד בסביבות IPv6 מסוימות, השבת אותו אם אתה נתקל בבעיות כלשהן.",
+ "Single Maintenance Window": "חלון תחזוקה בודד",
+ "Maintenance Time Window of a Day": "חלון זמן תחזוקה ביום",
+ "Effective Date Range": "טווח תאריכים אפקטיבי",
+ "Schedule Maintenance": "לוח זמנים לתחזוקה",
+ "Date and Time": "תאריך ושעה",
+ "DateTime Range": "טווח תאריכים וזמן",
+ "Strategy": "אסטרטגיה",
+ "Free Mobile User Identifier": "מזהה משתמש נייד בחינם",
+ "Free Mobile API Key": "מפתח API חינם לנייד",
+ "Enable TLS": "אפשר TLS",
+ "Proto Service Name": "שם שירות פרוטו",
+ "Proto Method": "שיטת פרוטו",
+ "Proto Content": "תוכן פרוטו",
+ "Economy": "חיסכון",
+ "Lowcost": "זול",
+ "high": "גבוהה",
+ "General Monitor Type": "סוג מוניטור כללי",
+ "Passive Monitor Type": "סוג מוניטור פסיבי",
+ "Specific Monitor Type": "סוג מוניטור ספציפי",
+ "Custom Monitor Type": "סוג צג מותאם אישית",
+ "Monitor": "מוניטור | מוניטרים",
+ "promosmsAllowLongSMS": "אפשר SMS ארוך",
+ "loadingError": "לא ניתן לאחזר את הנתונים, אנא נסה שוב מאוחר יותר.",
+ "plugin": "תוסף | תוספים",
+ "install": "להתקין",
+ "installing": "מתקין",
+ "uninstall": "הסר את ההתקנה",
+ "uninstalling": "מסיר התקנה",
+ "confirmUninstallPlugin": "האם אתה בטוח שברצונך להסיר את התוסף הזה?",
+ "Help": "עזרה",
+ "Game": "משחק",
+ "Packet Size": "גודל חבילה",
+ "markdownSupported": "תחביר Markdown נתמך",
+ "Custom": "מותאם אישית",
+ "ZohoCliq": "זוהו קליק",
+ "wayToGetZohoCliqURL": "אתה יכול ללמוד כיצד ליצור כתובת אתר ל-webhook {0}.",
+ "dataRetentionTimeError": "תקופת השמירה חייבת להיות 0 או יותר",
+ "infiniteRetention": "הגדר ל-0 לשמירה אינסופית.",
+ "confirmDeleteTagMsg": "האם אתה בטוח שברצונך למחוק תג זה? צגים המשויכים לתג זה לא יימחקו.",
+ "Kook": "קוק",
+ "wayToGetKookBotToken": "צור יישום וקבל את אסימון הבוט שלך ב-{0}",
+ "wayToGetKookGuildID": "הפעל את 'מצב מפתח' בהגדרת קוק, ולחץ לחיצה ימנית על הגילדה כדי לקבל את המזהה שלה",
+ "Guild ID": "מזהה גילד",
+ "Body Encoding": "קידוד Body",
+ "API Keys": "מפתחות API",
+ "Expiry": "תפוגה",
+ "Don't expire": "תוקף שלא פג",
+ "Continue": "להמשיך",
+ "Add Another": "להוסיף עוד",
+ "Key Added": "המפתח נוסף",
+ "Add API Key": "הוספת מפתח API",
+ "No API Keys": "אין מפתחות API",
+ "apiKey-active": "פעיל",
+ "apiKey-expired": "פג תוקף",
+ "apiKey-inactive": "לא פעיל",
+ "Expires": "תוקף",
+ "deleteAPIKeyMsg": "האם אתם בטוחים שאתם רוצים למחוק מפתח API זה?",
+ "Generate": "ייצור",
+ "telegramMessageThreadID": "מזהה ID לאשכול (אופציונאלי)",
+ "telegramMessageThreadIDDescription": "מזהה ייחודי אופציונאלי להזנת ההודעה לאשכול (הנושא) המתאים. נועד לסופר-קבוצות בלבד",
+ "telegramProtectContentDescription": "אם מופעל , הודעות הבוט ב-Telegram יהיו מוגנים מהעברה ושמירה שלהם.",
+ "Clone Monitor": "שכפול של Monitor",
+ "Expiry date": "תאריך תפוגה",
+ "apiKeyAddedMsg": "מפתח ה-API שלך נוסף. בבקשה רשמו אותו עבורכם כיוון שהוא לא יופיע שנית.",
+ "disableAPIKeyMsg": "האם אתם בטוחים שאתם רוצים להשבית מפתח API זה?",
+ "Clone": "שכפול",
+ "cloneOf": "שכפול של {0}",
+ "Google Analytics ID": "מזהה ID של Google Analytics",
+ "telegramProtectContent": "הגנת העברה \\ שמירה",
+ "notificationRegional": "לפי איזור",
+ "Server Address": "כתובת השרת",
+ "Edit Tag": "עריכת תגית",
+ "Learn More": "לקריאה נוספת",
+ "telegramSendSilently": "שליחה שקטה",
+ "telegramSendSilentlyDescription": "שליחת הודעות שקטה. משתמשים יקבלו ההתראה ללא צליל.",
+ "Add New Tag": "הוסף תג חדש",
+ "Home": "ראשי",
+ "sameAsServerTimezone": "אותו איזור זמן כמו השרת",
+ "cronSchedule": "לו\"ז: ",
+ "twilioToNumber": "למספר",
+ "startDateTime": "תאריך\\זמן התחלה",
+ "pagertreeSilent": "שקט",
+ "Reconnecting...": "מתחבר מחדש...",
+ "statusPageRefreshIn": "רענון תוך: {0}",
+ "Edit Maintenance": "ערוך תחזוקה",
+ "pagertreeUrgency": "דחיפות",
+ "pagertreeLow": "נמוכה",
+ "pagertreeMedium": "בינונית",
+ "pagertreeHigh": "גבוהה",
+ "pagertreeCritical": "קריטי",
+ "pagertreeResolve": "הגדרה אוטומטית",
+ "ntfyUsernameAndPassword": "שם משתמש וסיסמא"
+}
diff --git a/src/lang/hi.json b/src/lang/hi.json
new file mode 100644
index 000000000..b6c9efda5
--- /dev/null
+++ b/src/lang/hi.json
@@ -0,0 +1,43 @@
+{
+ "Dashboard": "डैशबोर्ड",
+ "Help": "मदद",
+ "New Update": "नया अपडेट",
+ "Language": "भाषा",
+ "Appearance": "अपीयरेंस",
+ "Theme": "थीम",
+ "Game": "गेम",
+ "languageName": "हिंदी",
+ "Settings": "सेटिंग्स",
+ "General": "जनरल",
+ "List": "सूची",
+ "Add": "जोड़ें",
+ "Add New Monitor": "नया मॉनिटर जोड़ें",
+ "Pending": "लंबित",
+ "statusMaintenance": "रखरखाव",
+ "Maintenance": "रखरखाव",
+ "Unknown": "अज्ञात",
+ "Cannot connect to the socket server": "सॉकेट सर्वर से कनेक्ट नहीं हो सकता",
+ "pauseDashboardHome": "विराम",
+ "Resume": "फिर से शुरू करें",
+ "Delete": "हटाएं",
+ "Current": "मौजूदा",
+ "Up": "चालू",
+ "General Monitor Type": "सामान्य मॉनिटर प्रकार",
+ "Specific Monitor Type": "विशिष्ट मॉनिटर प्रकार",
+ "Pause": "विराम",
+ "Name": "नाम",
+ "Message": "संदेश",
+ "No important events": "कोई महत्वपूर्ण घटनाक्रम नहीं",
+ "Edit": "परिवर्तन",
+ "Ping": "पिंग",
+ "Monitor Type": "मॉनिटर प्रकार",
+ "Keyword": "कीवर्ड",
+ "Friendly Name": "दोस्ताना नाम",
+ "Version": "संस्करण",
+ "Home": "घर",
+ "Quick Stats": "शीघ्र आँकड़े",
+ "Reconnecting...": "पुनः कनेक्ट किया जा रहा है...",
+ "Down": "बंद",
+ "Passive Monitor Type": "निष्क्रिय मॉनिटर प्रकार",
+ "Status": "स्थिति"
+}
diff --git a/src/lang/hr-HR.json b/src/lang/hr-HR.json
new file mode 100644
index 000000000..b909ed558
--- /dev/null
+++ b/src/lang/hr-HR.json
@@ -0,0 +1,581 @@
+{
+ "languageName": "Hrvatski",
+ "checkEverySecond": "Provjera svake {0} sekunde",
+ "retryCheckEverySecond": "Ponovni pokušaj svake {0} sekunde",
+ "retriesDescription": "Broj ponovnih pokušaja prije nego će se servis označiti kao nedostupan te poslati obavijest",
+ "ignoreTLSError": "Ignoriraj TLS/SSL pogreške za HTTPS web stranice",
+ "upsideDownModeDescription": "Preokreni logiku statusa. Ako se primi pozitivan odgovor, smatra se da je usluga nedostupna.",
+ "maxRedirectDescription": "Maksimalan broj preusmjeravanja. Postaviti na 0 kako bi se preusmjeravanja onemogućila.",
+ "acceptedStatusCodesDescription": "Odaberite statusne kodove koji se smatraju uspješnim odgovorom.",
+ "passwordNotMatchMsg": "Lozinke se ne poklapaju.",
+ "notificationDescription": "Obavijesti će funkcionirati samo ako su dodijeljene monitoru.",
+ "keywordDescription": "Ključna riječ za pretragu, u obliku običnog HTML-a ili u JSON formatu. Pretraga je osjetljiva na velika i mala slova.",
+ "deleteMonitorMsg": "Jeste li sigurni da želite izbrisati monitor?",
+ "deleteNotificationMsg": "Jeste li sigurni da želite izbrisati ovu obavijest za sve monitore?",
+ "resolverserverDescription": "Cloudflare je zadani DNS poslužitelj. Možete to promijeniti u bilo kojem trenutku.",
+ "rrtypeDescription": "Odaberite vrstu DNS zapisa o resursu kojeg želite pratiti",
+ "pauseMonitorMsg": "Jeste li sigurni da želite pauzirati?",
+ "enableDefaultNotificationDescription": "Ova će obavijesti biti omogućena za sve nove monitore. Možete ju ručno onemogućiti za pojedini monitor.",
+ "clearEventsMsg": "Jeste li sigurni da želite izbrisati sve zapise o događajima za ovaj monitor?",
+ "clearHeartbeatsMsg": "Jeste li sigurni da želite izbrisati sve zapise o provjerama za ovaj monitor?",
+ "confirmClearStatisticsMsg": "Jeste li sigurni da želite izbrisati SVE statistike?",
+ "importHandleDescription": "Odaberite opciju \"Preskoči postojeće\" ako želite preskočiti uvoz postojećih monitora i obavijesti ako dođe do poklapanja u imenu. Opcija \"Prepiši\" će izbrisati postojeće monitore i obavijesti.",
+ "confirmImportMsg": "Jeste li sigurni da želite pokrenuti uvoz? Provjerite jeste li odabrali ispravnu opciju uvoza.",
+ "twoFAVerifyLabel": "Unesite svoj 2FA token:",
+ "tokenValidSettingsMsg": "Token je važeći! Sada možete spremiti postavke dvofaktorske autentikacije.",
+ "confirmEnableTwoFAMsg": "Želite li omogućiti dvofaktorsku autentikaciju?",
+ "confirmDisableTwoFAMsg": "Jeste li sigurni da želite onemogućiti dvofaktorsku autentikaciju?",
+ "Settings": "Postavke",
+ "Dashboard": "Kontrolna ploča",
+ "New Update": "Novo ažuriranje",
+ "Language": "Jezik",
+ "Appearance": "Izgled",
+ "Theme": "Tema",
+ "General": "Općenito",
+ "Primary Base URL": "Osnovni URL",
+ "Version": "Inačica",
+ "Check Update On GitHub": "Provjeri dostupnost nove inačice na GitHubu",
+ "List": "Popis",
+ "Add": "Dodaj",
+ "Add New Monitor": "Dodaj novi Monitor",
+ "Quick Stats": "Statistika",
+ "Up": "Dostupno",
+ "Down": "Nedostupno",
+ "Pending": "U tijeku",
+ "Unknown": "Nepoznato",
+ "pauseDashboardHome": "Pauzirano",
+ "Name": "Naziv",
+ "Status": "Status",
+ "DateTime": "Vremenska oznaka",
+ "Message": "Izvještaj",
+ "No important events": "Nema važnih događaja",
+ "Pause": "Pauziraj",
+ "Resume": "Nastavi",
+ "Edit": "Uredi",
+ "Delete": "Obriši",
+ "Current": "Trenutno",
+ "Uptime": "Dostupnost",
+ "Cert Exp.": "Istek cert.",
+ "day": "dan | dana",
+ "-day": "-dnevno",
+ "hour": "sat",
+ "-hour": "-satno",
+ "Response": "Odgovor",
+ "Ping": "Odziv",
+ "Monitor Type": "Vrsta Monitora",
+ "Keyword": "Ključna riječ",
+ "Friendly Name": "Prilagođen naziv",
+ "URL": "URL",
+ "Hostname": "Domaćin",
+ "Port": "Port",
+ "Heartbeat Interval": "Interval provjere",
+ "Retries": "Broj ponovnih pokušaja",
+ "Heartbeat Retry Interval": "Interval ponovnih pokušaja",
+ "Advanced": "Napredne postavke",
+ "Upside Down Mode": "Obrnuti način",
+ "Max. Redirects": "Maksimalan broj preusmjeravanja",
+ "Accepted Status Codes": "Prihvaćeni statusni kodovi",
+ "Push URL": "Push URL",
+ "needPushEvery": "Potrebno je slati zahtjeve na URL svakih {0} sekundi.",
+ "pushOptionalParams": "Neobavezni parametri: {0}",
+ "Save": "Spremi",
+ "Notifications": "Obavijesti",
+ "Not available, please setup.": "Nije dostupno, potrebno je dodati novu stavku.",
+ "Setup Notification": "Dodaj obavijest",
+ "Light": "Svijetli način",
+ "Dark": "Tamni način",
+ "Auto": "Automatski",
+ "Theme - Heartbeat Bar": "Tema za traku dostupnosti",
+ "Normal": "Normalno",
+ "Bottom": "Ispod",
+ "None": "Isključeno",
+ "Timezone": "Vremenska zona",
+ "Search Engine Visibility": "Vidljivost tražilicama",
+ "Allow indexing": "Dopusti indeksiranje",
+ "Discourage search engines from indexing site": "Sprječavanje indeksiranja",
+ "Change Password": "Promjena lozinke",
+ "Current Password": "Trenutna lozinka",
+ "New Password": "Nova lozinka",
+ "Repeat New Password": "Potvrdite novu lozinku",
+ "Update Password": "Spremi novu lozinku",
+ "Disable Auth": "Onemogući autentikaciju",
+ "Enable Auth": "Omogući autentikaciju",
+ "disableauth.message1": "Jeste li sigurni da želite isključiti autentikaciju ?",
+ "disableauth.message2": "To je za korisnike koji imaju vanjsku autentikaciju stranice ispred Uptime Kume, poput usluge Cloudflare Access.",
+ "Please use this option carefully!": "Pažljivo koristite ovu opciju.",
+ "Logout": "Odjava",
+ "Leave": "Poništi",
+ "I understand, please disable": "Razumijem, svejedno onemogući",
+ "Confirm": "Potvrda",
+ "Yes": "Da",
+ "No": "Ne",
+ "Username": "Korisničko ime",
+ "Password": "Lozinka",
+ "Remember me": "Zapamti me",
+ "Login": "Prijava",
+ "No Monitors, please": "Nema monitora, ",
+ "add one": "dodaj jedan",
+ "Notification Type": "Tip obavijesti",
+ "Email": "E-pošta",
+ "Test": "Testiraj",
+ "Certificate Info": "Informacije o certifikatu",
+ "Resolver Server": "DNS poslužitelj",
+ "Resource Record Type": "Vrsta DNS zapisa",
+ "Last Result": "Posljednji rezultat",
+ "Create your admin account": "Stvori administratorski račun",
+ "Repeat Password": "Potvrda lozinke",
+ "Import Backup": "Uvoz sigurnosne kopije",
+ "Export Backup": "Izvoz sigurnosne kopije",
+ "Export": "Izvoz",
+ "Import": "Uvoz",
+ "respTime": "Vrijeme odgovora (ms)",
+ "notAvailableShort": "ne postoji",
+ "Default enabled": "Omogući za nove monitore",
+ "Apply on all existing monitors": "Primijeni na postojeće monitore",
+ "Create": "Kreiraj",
+ "Clear Data": "Obriši podatke",
+ "Events": "Događaji",
+ "Heartbeats": "Provjere",
+ "Auto Get": "Automatski dohvat",
+ "backupDescription": "Moguće je napraviti sigurnosnu kopiju svih monitora i obavijesti koja će biti spremljena kao JSON datoteka.",
+ "backupDescription2": "Napomena: povijest i podaci o događajima nisu uključeni u sigurnosnu kopiju.",
+ "backupDescription3": "Osjetljivi podaci poput tokena za obavijesti uključeni su u sigurnosnu kopiju. Zato je potrebno čuvati izvoz na sigurnom mjestu.",
+ "alertNoFile": "Datoteka za uvoz nije odabrana.",
+ "alertWrongFileType": "Datoteka za uvoz nije u JSON formatu.",
+ "Clear all statistics": "Obriši sve statistike",
+ "Skip existing": "Preskoči postojeće",
+ "Overwrite": "Prepiši",
+ "Options": "Opcije",
+ "Keep both": "Zadrži sve",
+ "Verify Token": "Provjeri Token",
+ "Setup 2FA": "Postavi dvofaktorsku autentikaciju",
+ "Enable 2FA": "Omogući dvofaktorsku autentikaciju",
+ "Disable 2FA": "Onemogući dvofaktorsku autentikaciju",
+ "2FA Settings": "Postavke 2FA",
+ "Two Factor Authentication": "Dvofaktorska autentikacija",
+ "Active": "Aktivna",
+ "Inactive": "Neaktivno",
+ "Token": "Token",
+ "Show URI": "Pokaži URI",
+ "Tags": "Oznake",
+ "Add New below or Select...": "Dodajte novu oznaku ispod ili odaberite...",
+ "Tag with this name already exist.": "Oznaka s tim nazivom već postoji",
+ "Tag with this value already exist.": "Oznaka s tom vrijednošću već postoji.",
+ "color": "Boja",
+ "value (optional)": "Vrijednost (neobavezno)",
+ "Gray": "Siva",
+ "Red": "Crvena",
+ "Orange": "Narančasta",
+ "Green": "Zelena",
+ "Blue": "Plava",
+ "Indigo": "Indigo",
+ "Purple": "Ljubičasta",
+ "Pink": "Ružičasta",
+ "Search...": "Pretraga...",
+ "Avg. Ping": "Prosječni odziv",
+ "Avg. Response": "Prosječni odgovor",
+ "Entry Page": "Početna stranica",
+ "statusPageNothing": "Ovdje nema ničega, dodajte grupu ili monitor.",
+ "No Services": "Nema usluga",
+ "All Systems Operational": "Svi sustavi su operativni",
+ "Partially Degraded Service": "Usluga djelomično nedostupna",
+ "Degraded Service": "Usluga nedostupna",
+ "Add Group": "Dodaj grupu",
+ "Add a monitor": "Dodaj monitor",
+ "Edit Status Page": "Uredi Statusnu stranicu",
+ "Go to Dashboard": "Na Kontrolnu ploču",
+ "Status Page": "Statusna stranica",
+ "Status Pages": "Statusne stranice",
+ "defaultNotificationName": "Moja {number}. {notification} obavijest",
+ "here": "ovdje",
+ "Required": "Potrebno",
+ "telegram": "Telegram",
+ "Bot Token": "Token bota",
+ "wayToGetTelegramToken": "Token možete nabaviti preko {0}.",
+ "Chat ID": "ID razgovora",
+ "supportTelegramChatID": "Podržani su ID-jevi izravnih razgovora, grupa i kanala",
+ "wayToGetTelegramChatID": "ID razgovora možete saznati tako da botu pošaljete poruku te odete na ovaj URL:",
+ "YOUR BOT TOKEN HERE": "OVDJE IDE TOKEN BOTA",
+ "chatIDNotFound": "ID razgovora nije pronađen; prvo morate poslati poruku botu",
+ "webhook": "Webhook",
+ "Post URL": "URL Post zahtjeva",
+ "Content Type": "Tip sadržaja (Content Type)",
+ "webhookJsonDesc": "{0} je dobra opcija za moderne HTTP poslužitelje poput Express.js-a",
+ "webhookFormDataDesc": "{multipart} je moguća alternativa za PHP, samo je potrebno parsirati JSON koristeći {decodeFunction}",
+ "smtp": "E-mail (SMTP)",
+ "secureOptionNone": "Bez sigurnosti / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignoriraj greške TLS-a",
+ "From Email": "Adresa za \"From\" polje",
+ "emailCustomSubject": "Prilagođeno \"Subject\" polje",
+ "To Email": "Odredišne adrese e-pošte",
+ "smtpCC": "Cc",
+ "smtpBCC": "Bcc",
+ "discord": "Discord",
+ "Discord Webhook URL": "URL Discord webhooka",
+ "wayToGetDiscordURL": "Ovo možete dobiti tako da odete na Postavke servera -> Integracije -> Napravi webhook",
+ "Bot Display Name": "Nadimak Bota unutar servera",
+ "Prefix Custom Message": "Prefiks prilagođene poruke",
+ "Hello @everyone is...": "Pozdrav {'@'}everyone...",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "URL webhooka",
+ "wayToGetTeamsURL": "Više informacija o Teams webhookovima možete pročitati {0}.",
+ "signal": "Signal",
+ "Number": "Broj",
+ "Recipients": "Primatelji",
+ "needSignalAPI": "Potreban je klijent s REST sučeljem.",
+ "wayToCheckSignalURL": "Više informacija o postavljanju Signal klijenta:",
+ "signalImportant": "VAŽNO: Grupe i brojevi se ne mogu istovremeno koristiti kao primatelji!",
+ "gotify": "Gotify",
+ "Application Token": "Token Aplikacije",
+ "Server URL": "URL poslužitelja",
+ "Priority": "Prioritet",
+ "slack": "Slack",
+ "Icon Emoji": "Emotikon",
+ "Channel Name": "Naziv kanala",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Dodatne informacije o webhookovima su dostupne na: {0}",
+ "aboutChannelName": "Unesite ime {0} kanala u polju Naziv kanala ako želite zaobići webhook kanal. Primjerice: #neki-kanal",
+ "aboutKumaURL": "Ako je polje \"Uptime Kuma URL\" prazno, koristi se zadana vrijednost koja vodi na GitHub stranicu projekta.",
+ "emojiCheatSheet": "Popis emotikona: {0}",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Podržava preko 50 usluga za obavijesti)",
+ "pushbullet": "Pushbullet",
+ "line": "LINE",
+ "mattermost": "Mattermost",
+ "User Key": "Korisnički ključ",
+ "Device": "Uređaji",
+ "Message Title": "Naslov poruke",
+ "Notification Sound": "Zvuk obavijesti",
+ "More info on:": "Više informacija na: {0}",
+ "pushoverDesc1": "Hitni prioritet (2) ima zadani istek vremena od 30 sekundi između ponovnih pokušaja te će isteći nakon 1 sata.",
+ "pushoverDesc2": "Ako želite slati obavijesti na više uređaja, ispunite polje \"Uređaji\".",
+ "SMS Type": "Tip SMS-a",
+ "octopushTypePremium": "Premium (Brzo - preporučeno za obavijesti)",
+ "octopushTypeLowCost": "Low Cost (Sporo - mobilni operateri ponekad blokiraju ove poruke)",
+ "checkPrice": "Provjerite {0} cijene:",
+ "apiCredentials": "Vjerodajnice za API",
+ "octopushLegacyHint": "Koristite li staru inačicu usluge Octopush (2011-2020) ili noviju inačicu?",
+ "Check octopush prices": "Provjerite cijene usluge Octopush {0}.",
+ "octopushPhoneNumber": "Telefonski broj (međunarodni format, primjerice: +38512345678) ",
+ "octopushSMSSender": "Naziv SMS pošiljatelja : 3-11 alfanumeričkih znakova i razmak (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea ID Uređaja",
+ "Apprise URL": "URL usluge Apprise",
+ "Example:": "Primjerice: {0}",
+ "Read more:": "Pročitajte više: {0}",
+ "Status:": "Status: {0}",
+ "Read more": "Pročitaj više",
+ "appriseInstalled": "Apprise je instaliran.",
+ "appriseNotInstalled": "Apprise nije instaliran. {0}",
+ "Access Token": "Pristupni token",
+ "Channel access token": "Token za pristup kanalu",
+ "Line Developers Console": "LINE razvojnoj konzoli",
+ "lineDevConsoleTo": "LINE razvojna konzola - {0}",
+ "Basic Settings": "Osnovne Postavke",
+ "User ID": "Korisnički ID",
+ "Messaging API": "API za razmjenu poruka",
+ "wayToGetLineChannelToken": "Prvo, pristupite {0}, kreirajte pružatelja usluga te kanal (API za razmjenu poruka), zatim možete dobiti token za pristup kanalu te korisnički ID za polja iznad.",
+ "Icon URL": "URL slike",
+ "aboutIconURL": "Možete postaviti poveznicu na sliku u polju \"URL slike\" kako biste spriječili korištenje zadane slike. Ovo se polje neće koristiti ako je postavljeno polje \"Emotikon\".",
+ "aboutMattermostChannelName": "Možete promijeniti kanal u kojeg webhook šalje tako da ispunite polje \"Naziv kanala\". Ta opcija mora biti omogućena unutar Mattermost postavki za webhook. Primjerice: #neki-kanal",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - jeftina, ali spora opcija koja je često preopterećena. Ograničeno samo na primatelje unutar Poljske.",
+ "promosmsTypeFlash": "SMS FLASH - Poruka se automatski pojavljuje na uređaju primatelja. Ograničeno samo na primatelje unutar Poljske.",
+ "promosmsTypeFull": "SMS FULL - Premium razina usluge, dozvoljava postavljanje naziva SMS pošiljatelja (Naziv mora biti registriran). Usluga pouzdana za obavijesti.",
+ "promosmsTypeSpeed": "SMS SPEED - Usluga najvećeg prioriteta. Brza i pouzdana, ali skupa (otprilike dvostruko skuplja od cijene usluge SMS FULL).",
+ "promosmsPhoneNumber": "Telefonski broj (za primatelje unutar Poljske nije potrebno navoditi pozivni broj države)",
+ "promosmsSMSSender": "Naziv SMS pošiljatelja: Registriran naziv ili jedan od zadanih: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu URL webhooka",
+ "matrixHomeserverURL": "URL Matrix homeservera (uključujući http(s):// te port, ako je potrebno)",
+ "Internal Room Id": "Interni ID sobe",
+ "matrixDesc1": "Interni ID sobe se može pronaći u naprednim postavkama sobe unutar Matrix klijenta. ID sobe nalikuje idućem zapisu: !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Preporučuje se stvaranje novog korisnika te suzdržavanje od korištenja pristupnog tokena vlastitog Matrix korisnika. Novog korisnika potrebno je dodati u sobe u kojima želite primati obavijesti. Pristupni token možete dobiti pokretanjem naredbe {0}",
+ "Method": "Metoda",
+ "Body": "Tijelo",
+ "Headers": "Zaglavlja",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Zaglavlja nisu nije valjani JSON: ",
+ "BodyInvalidFormat": "Tijelo zahtjeva nije valjani JSON: ",
+ "Monitor History": "Povijest monitora",
+ "clearDataOlderThan": "Podaci o povijesti monitora čuvaju se {0} dana.",
+ "PasswordsDoNotMatch": "Lozinke se ne poklapaju.",
+ "records": "zapisa",
+ "One record": "Jedan zapis",
+ "Showing {from} to {to} of {count} records": "Prikaz zapisa {from}-{to} od sveukupno {count}",
+ "steamApiKeyDescription": "Za praćenje Steam poslužitelja za igru, potrebno je imati Steam Web-API ključ. Možete registrirati vlastiti ključ ovdje: ",
+ "Current User": "Trenutni korisnik",
+ "recent": "Nedavno",
+ "Done": "Gotovo",
+ "Info": "Informacije",
+ "Security": "Sigurnost",
+ "Shrink Database": "Smanji bazu podataka",
+ "Pick a RR-Type...": "Odaberite vrstu DNS zapisa od navedenih...",
+ "Pick Accepted Status Codes...": "Odaberite HTTP statusne kodove koji će biti prihvaćeni...",
+ "Steam API Key": "Steam API ključ",
+ "Default": "Zadano",
+ "HTTP Options": "HTTP Postavke",
+ "Create Incident": "Novi izvještaj o incidentu",
+ "Title": "Naslov",
+ "Content": "Sadržaj",
+ "Style": "Stil",
+ "info": "informacija",
+ "warning": "upozorenje",
+ "danger": "opasnost",
+ "primary": "primarno",
+ "light": "svijetlo",
+ "dark": "tamno",
+ "Post": "Objavi",
+ "Created": "Stvoreno",
+ "Last Updated": "Uređeno",
+ "Please input title and content": "Naslov i sadržaj ne mogu biti prazni",
+ "Unpin": "Ukloni",
+ "Switch to Light Theme": "Prebaci na svijetli način",
+ "Switch to Dark Theme": "Prebaci na tamni način",
+ "Show Tags": "Pokaži oznake",
+ "Hide Tags": "Sakrij oznake",
+ "Description": "Opis",
+ "No monitors available.": "Nema dostupnih monitora.",
+ "Add one": "Stvori jednog",
+ "No Monitors": "Bez monitora",
+ "Untitled Group": "Bezimena grupa",
+ "Services": "Usluge",
+ "Discard": "Odbaci",
+ "Cancel": "Otkaži",
+ "Powered by": "Pokreće",
+ "Saved": "Spremljeno",
+ "PushByTechulus": "Push by Techulus",
+ "GoogleChat": "Google Chat (preko platforme Google Workspace)",
+ "shrinkDatabaseDescription": "Pokreni VACUUM operaciju za SQLite. Ako je baza podataka kreirana nakon inačice 1.10.0, AUTO_VACUUM opcija već je uključena te ova akcija nije nužna.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API korisničko ime (uključujući webapi_ prefiks)",
+ "serwersmsAPIPassword": "API lozinka",
+ "serwersmsPhoneNumber": "Broj telefona",
+ "serwersmsSenderName": "Ime SMS pošiljatelja (registrirano preko korisničkog portala)",
+ "stackfield": "Stackfield",
+ "smtpDkimSettings": "DKIM postavke",
+ "smtpDkimDesc": "Za više informacija, postoji Nodemailer DKIM {0}.",
+ "documentation": "dokumentacija",
+ "smtpDkimDomain": "Domena",
+ "smtpDkimKeySelector": "Odabir ključa",
+ "smtpDkimPrivateKey": "Privatni ključ",
+ "smtpDkimHashAlgo": "Hash algoritam (neobavezno)",
+ "smtpDkimheaderFieldNames": "Ključevi zaglavlja za potpis (neobavezno)",
+ "smtpDkimskipFields": "Ključevi zaglavlja koji se neće potpisati (neobavezno)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "Krajnja točka API-ja (Endpoint)",
+ "alertaEnvironment": "Okruženje (Environment)",
+ "alertaApiKey": "API ključ",
+ "alertaAlertState": "Stanje upozorenja",
+ "alertaRecoverState": "Stanje oporavka",
+ "deleteStatusPageMsg": "Sigurno želite obrisati ovu statusnu stranicu?",
+ "resendEveryXTimes": "Ponovno pošalji svakih {0} puta",
+ "resendDisabled": "Ponovno slanje je onemogućeno",
+ "dnsPortDescription": "Port DNS poslužitelja. Zadana vrijednost je 53. Moguće je promijeniti ga u svakom trenutku.",
+ "Resend Notification if Down X times consecutively": "Ponovno pošalji obavijest ako je usluga nedostupna više puta zaredom",
+ "topic": "Tema",
+ "topicExplanation": "MQTT tema koja će se monitorirati",
+ "successMessage": "Poruka o uspjehu",
+ "successMessageExplanation": "MQTT poruka koja se smatra uspješnom",
+ "error": "greška",
+ "critical": "kritično",
+ "Customize": "Customize",
+ "Custom Footer": "Prilagođeno podnožje",
+ "Custom CSS": "Prilagođeni CSS",
+ "wayToGetPagerDutyKey": "Ključ možete dobiti odlaskom na \"Service -> Service Directory -> (Odabrani servis) -> Integrations -> Add integration\". Ovdje pretražite za \"Events API V2\". Više informacija {0}",
+ "Integration Key": "Ključ integracije",
+ "Integration URL": "URL integracije",
+ "Auto resolve or acknowledged": "Automatsko razrješavanje i priznavanje",
+ "do nothing": "Ne radi ništa",
+ "auto acknowledged": "Automatsko priznavanje",
+ "auto resolve": "Automatsko razrješavanje",
+ "Proxies": "Proxy poslužitelji",
+ "default": "Zadano",
+ "enabled": "Omogućeno",
+ "setAsDefault": "Postavi kao zadano",
+ "deleteProxyMsg": "Sigurno želite obrisati ovaj proxy za sve monitore?",
+ "proxyDescription": "Proxy poslužitelji moraju biti dodijeljni monitoru kako bi funkcionirali.",
+ "enableProxyDescription": "Onemogućeni proxy poslužitelj neće imati učinak na zahtjeve monitora. Možete privremeno onemogućiti proxy poslužitelja za sve monitore.",
+ "setAsDefaultProxyDescription": "Ovaj proxy poslužitelj bit će odmah omogućen za nove monitore. I dalje ga možete onemogućiti za svaki monitor zasebno.",
+ "Certificate Chain": "Lanac certifikata",
+ "Valid": "Važeći",
+ "Invalid": "Nevažeći",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey tajni ključ",
+ "PhoneNumbers": "Telefonski brojevi",
+ "TemplateCode": "Predložak koda",
+ "SignName": "Potpis",
+ "Sms template must contain parameters: ": "SMS predložak mora sadržavati parametre: ",
+ "Bark Endpoint": "Bark krajnja točka (endpoint)",
+ "Bark Group": "Bark grupa",
+ "Bark Sound": "Bark zvuk",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "Tajni ključ",
+ "For safety, must use secret key": "Korištenje tajnog ključa je obavezno",
+ "Device Token": "Token uređaja",
+ "Platform": "Platforma",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Visoko",
+ "Retry": "Ponovnih pokušaja",
+ "Topic": "Tema",
+ "WeCom Bot Key": "WeCom ključ Bota",
+ "Setup Proxy": "Dodaj proxy poslužitelj",
+ "Proxy Protocol": "Protokol",
+ "Proxy Server": "Proxy poslužitelj",
+ "Proxy server has authentication": "Proxy poslužitelj ima autentikaciju",
+ "User": "Korisnik",
+ "Installed": "Instalirano",
+ "Not installed": "Nije instalirano",
+ "Running": "Pokrenuto",
+ "Not running": "Nije pokrenuto",
+ "Remove Token": "Ukloni Token",
+ "Start": "Pokreni",
+ "Stop": "Zaustavi",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Dodaj novu statusnu stranicu",
+ "Slug": "Slug",
+ "Accept characters:": "Dozvoljeni znakovi:",
+ "startOrEndWithOnly": "Započinje ili završava znakovima {0}",
+ "No consecutive dashes": "Bez uzastopnih povlaka",
+ "Next": "Sljedeće",
+ "The slug is already taken. Please choose another slug.": "Slug je zauzet. Odaberite novi slug.",
+ "No Proxy": "Bez proxy poslužitelja",
+ "Authentication": "Autentikacija",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "Dodaj statusnu stranicu",
+ "Page Not Found": "Stranica nije pronađena",
+ "Reverse Proxy": "Reverzni proxy",
+ "Backup": "Sigurnosno kopiranje",
+ "About": "O Uptime Kumi",
+ "wayToGetCloudflaredURL": "(Preuzmite cloudflared s {0})",
+ "cloudflareWebsite": "Cloudflare web stranice",
+ "Message:": "Poruka:",
+ "Don't know how to get the token? Please read the guide:": "Ne znate kako doći do tokena? Pročitajte vodič:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Trenutna veza možda bude prekinuta jer se koristi Cloudflare tuneliranje. Sigurno želite zaustaviti? Unesite lozinku za potvrdu.",
+ "HTTP Headers": "HTTP zaglavlja",
+ "Trust Proxy": "Vjeruj proxy poslužitelju",
+ "Other Software": "Ostali programi",
+ "For example: nginx, Apache and Traefik.": "Primjerice: nginx, Apache ili Traefik.",
+ "Please read": "Molimo pročitajte",
+ "Subject:": "Predmet:",
+ "Valid To:": "Valjano do:",
+ "Days Remaining:": "Preostalo dana:",
+ "Issuer:": "Izdavatelj:",
+ "Fingerprint:": "Fingerprint:",
+ "No status pages": "Nema statusnih stranica",
+ "Domain Name Expiry Notification": "Obavijest za istek domena",
+ "Proxy": "Proxy",
+ "Date Created": "Datum stvaranja",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "OneBot HTTP adresa",
+ "onebotMessageType": "OneBot tip poruke",
+ "onebotGroupMessage": "Grupna",
+ "onebotPrivateMessage": "Privatna",
+ "onebotUserOrGroupId": "ID korisnika/grupe",
+ "onebotSafetyTips": "Pristupni token mora biti postavljen",
+ "PushDeer Key": "PushDeer ključ",
+ "Footer Text": "Tekst podnožja",
+ "Show Powered By": "Pokaži natpis 'Pokreće...'",
+ "Domain Names": "Domene",
+ "signedInDisp": "Prijavljeni ste kao {0}",
+ "signedInDispDisabled": "Autentikacija onemogućena.",
+ "RadiusSecret": "Radius Tajna",
+ "RadiusSecretDescription": "Dijeljena Tajna između klijenta i poslužitelja",
+ "RadiusCalledStationId": "Called Station ID",
+ "RadiusCalledStationIdDescription": "Identifikator pozivne stanice",
+ "RadiusCallingStationId": "Calling Station ID",
+ "RadiusCallingStationIdDescription": "Identifikator pozivajuće stanice",
+ "Certificate Expiry Notification": "Obavijest za istek certifikata",
+ "API Username": "API korisničko ime",
+ "API Key": "API ključ",
+ "Recipient Number": "Broj primatelja",
+ "From Name/Number": "Naziv/broj pošiljatelja",
+ "Leave blank to use a shared sender number.": "Ostaviti prazno za korištenje dijeljenog broja pošiljatelja.",
+ "Octopush API Version": "Octopush verzija API-ja",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "endpoint": "krajnja točka (endpoint)",
+ "octopushAPIKey": "\"API ključ\" iz HTTP API postavki",
+ "octopushLogin": "\"Korisničko ime\" iz HTTP API postavki",
+ "promosmsLogin": "API korisničko ime",
+ "promosmsPassword": "API lozinka",
+ "pushoversounds pushover": "Pushover (default)",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Vibrate Only",
+ "pushoversounds none": "None (silent)",
+ "pushyAPIKey": "Tajni API ključ",
+ "pushyToken": "Token uređaja",
+ "Show update if available": "Pokaži moguću nadogradnju",
+ "Also check beta release": "Provjeravaj i za beta izdanja",
+ "Using a Reverse Proxy?": "Koristi li se reverzni proxy?",
+ "Check how to config it for WebSocket": "Provjerite kako se konfigurira za WebSocket protokol",
+ "Steam Game Server": "Steam poslužitelj igre",
+ "Most likely causes:": "Najvjerojatniji uzroci:",
+ "The resource is no longer available.": "Resurs više nije dostupan.",
+ "There might be a typing error in the address.": "Možda je nastala greška pri upisu adrese.",
+ "What you can try:": "Što možete pokušati:",
+ "Retype the address.": "Ponovno napišite adresu.",
+ "Go back to the previous page.": "Vratite se na prethodnu stranicu.",
+ "Coming Soon": "Dolazi uskoro",
+ "wayToGetClickSendSMSToken": "Možete dobiti API korisničko ime i API ključ sa {0}.",
+ "Connection String": "Tekst veze",
+ "Query": "Upit",
+ "settingsCertificateExpiry": "TLS istek certifikata",
+ "certificationExpiryDescription": "HTTPS monitori će obavijesiti kada je istek TLS certifikata za:",
+ "Setup Docker Host": "Dodaj Docker domaćina",
+ "Connection Type": "Tip veze",
+ "Docker Daemon": "Docker daemon",
+ "deleteDockerHostMsg": "Sigurno želite izbrisati ovog Docker domaćina za sve monitore?",
+ "socket": "Docker socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker kontejner",
+ "Container Name / ID": "Naziv / ID kontejnera",
+ "Docker Host": "Docker domaćin",
+ "Docker Hosts": "Docker domaćini",
+ "ntfy Topic": "ntfy tema",
+ "Domain": "Domena",
+ "Workstation": "Radna stanica",
+ "disableCloudflaredNoAuthMsg": "Lozinka nije nužna dok je isključena autentikacija.",
+ "trustProxyDescription": "Vjeruj 'X-Forwarded-*' zaglavljima. Ako želite dobiti ispravnu IP adresu klijenta i Uptime Kuma je iza reverznog proxy poslužitelja, trebate omogućiti ovo.",
+ "wayToGetLineNotifyToken": "Možete dobiti pristupni token sa {0}",
+ "Examples": "Primjeri",
+ "Home Assistant URL": "URL Home Assistanta",
+ "Long-Lived Access Token": "Dugotrajni pristupni token",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Dugotrajni pristupni token može se kreirati klikom na korisničko ime (dolje lijevo) u Home Assistantu, pomicanjem do dna, te klikom na 'Create Token'. ",
+ "Notification Service": "Notification Service",
+ "default: notify all devices": "zadano ponašanje: obavijesti sve uređaje",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Popis servisa za obavijesti u Home Assistantu nalaze se pod \"Developer Tools > Services\" te pretražiti \"notification\".",
+ "Automations can optionally be triggered in Home Assistant:": "Automacije se mogu okinuti u Home Assistantu:",
+ "Trigger type:": "Tip triggera:",
+ "Event type:": "Tip eventa:",
+ "Event data:": "Podaci eventa:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Potrebno je i odabrati akciju za izvođenje na Home Assistantu.",
+ "Frontend Version": "Inačica sučelja",
+ "Frontend Version do not match backend version!": "Inačica sučelja ne odgovara poslužitelju!"
+}
diff --git a/src/lang/hu.json b/src/lang/hu.json
new file mode 100644
index 000000000..92beb2287
--- /dev/null
+++ b/src/lang/hu.json
@@ -0,0 +1,520 @@
+{
+ "languageName": "Magyar",
+ "checkEverySecond": "Ellenőrzés {0} másodpercenként",
+ "retryCheckEverySecond": "Újrapróbálkozás minden {0} másodpercenként",
+ "retriesDescription": "Maximális próbálkozás mielőtt a szolgáltatás 'Leállt' jelölést kap és értesítés kerül kiküldésre",
+ "ignoreTLSError": "TLS/SSL hibák figyelmen kívül hagyása HTTPS weboldalaknál",
+ "upsideDownModeDescription": "Az állapot megfordítása. Ha a szolgáltatás elérhető, akkor lesz leállt állapotú.",
+ "maxRedirectDescription": "Az átirányítások maximális száma. állítsa 0-ra az átirányítás tiltásához.",
+ "acceptedStatusCodesDescription": "Válassza ki az állapot kódokat amelyek sikeres válasznak fognak számítani.",
+ "passwordNotMatchMsg": "A megismételt jelszó nem egyezik.",
+ "notificationDescription": "Kérem, rendeljen egy értesítést a figyeléshez, hogy működjön.",
+ "keywordDescription": "Kulcsszó keresése a HTML-ben vagy a JSON válaszban. (kis-nagybetű érzékeny)",
+ "pauseDashboardHome": "Szünetel",
+ "deleteMonitorMsg": "Biztos, hogy törölni akarja ezt a figyelőt?",
+ "deleteNotificationMsg": "Biztos, hogy törölni akarja ezt az értesítést az összes figyelőnél?",
+ "resolverserverDescription": "A Cloudflare az alapértelmezett szerver, bármikor meg tudja változtatni a resolver server-t.",
+ "rrtypeDescription": "Válassza ki az RR-típust a figyelőhöz",
+ "pauseMonitorMsg": "Biztos, hogy szüneteltetni akarja?",
+ "enableDefaultNotificationDescription": "Minden új figyelőhöz ez az értesítés engedélyezett lesz alapértelmezetten. Kikapcsolhatja az értesítést külön minden figyelőnél.",
+ "clearEventsMsg": "Biztos, hogy törölni akar miden eseményt ennél a figyelnél?",
+ "clearHeartbeatsMsg": "Biztos, hogy törölni akar minden életjelet ennél a figyelőnél?",
+ "confirmClearStatisticsMsg": "Biztos, hogy törölni akar MINDEN statisztikát?",
+ "importHandleDescription": "Válassza a 'Meglévő kihagyását', ha ki szeretné hagyni az azonos nevő figyelőket vagy értesítésket. A 'Felülírás' törölni fog minden meglévő figyelőt és értesítést.",
+ "confirmImportMsg": "Biztos, hogy importálja a mentést? Győződjön meg róla, hogy jól választotta ki az importálás opciót.",
+ "twoFAVerifyLabel": "Kérem add meg a token-t a 2FA ellenőrzéséhez:",
+ "tokenValidSettingsMsg": "A token érvényes! El tudja menteni a 2FA beállításait.",
+ "confirmEnableTwoFAMsg": "Biztosan engedélyezi a 2FA-t?",
+ "confirmDisableTwoFAMsg": "Biztosan letiltja a 2FA-t?",
+ "Settings": "Beállítások",
+ "Dashboard": "Irányítópult",
+ "New Update": "Új frissítés",
+ "Language": "Nyelv",
+ "Appearance": "Megjelenés",
+ "Theme": "Téma",
+ "General": "Általános",
+ "Version": "Verzió",
+ "Check Update On GitHub": "Frissítések keresése a GitHub-on",
+ "List": "Lista",
+ "Add": "Hozzáadás",
+ "Add New Monitor": "Új figyelő hozzáadása",
+ "Quick Stats": "Gyors statisztikák",
+ "Up": "Működik",
+ "Down": "Leállt",
+ "Pending": "Függőben",
+ "Unknown": "Ismeretlen",
+ "Pause": "Szünet",
+ "Name": "Név",
+ "Status": "Állapot",
+ "DateTime": "Időpont",
+ "Message": "Üzenet",
+ "No important events": "Nincs fontos esemény",
+ "Resume": "Folytatás",
+ "Edit": "Szerkesztés",
+ "Delete": "Törlés",
+ "Current": "Aktuális",
+ "Uptime": "Uptime",
+ "Cert Exp.": "Tanúsítvány Lejárata",
+ "day": "nap",
+ "-day": "-nap",
+ "hour": "óra",
+ "-hour": "- óra",
+ "Response": "Válasz",
+ "Ping": "Ping",
+ "Monitor Type": "Figyelő típusa",
+ "Keyword": "Kulcsszó",
+ "Friendly Name": "Rövid név",
+ "URL": "URL",
+ "Hostname": "Hosztnév",
+ "Port": "Port",
+ "Heartbeat Interval": "Életjel időköz",
+ "Retries": "Újrapróbálkozás",
+ "Heartbeat Retry Interval": "Életjel újrapróbálkozások időköze",
+ "Advanced": "Haladó",
+ "Upside Down Mode": "Fordított mód",
+ "Max. Redirects": "Max. átirányítás",
+ "Accepted Status Codes": "Elfogadott állapot kódok",
+ "Save": "Mentés",
+ "Notifications": "Értesítések",
+ "Not available, please setup.": "Nem elérhető, állítsa be.",
+ "Setup Notification": "Értesítés beállítása",
+ "Light": "Világos",
+ "Dark": "Sötét",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Téma - Életjel sáv",
+ "Normal": "Normál",
+ "Bottom": "Nyomógomb",
+ "None": "Nincs",
+ "Timezone": "Időzóna",
+ "Search Engine Visibility": "Látható a keresőmotoroknak",
+ "Allow indexing": "Indexelés engedélyezése",
+ "Discourage search engines from indexing site": "Keresőmotorok elriasztása az oldal indexelésétől",
+ "Change Password": "Jelszó változtatása",
+ "Current Password": "Jelenlegi jelszó",
+ "New Password": "Új jelszó",
+ "Repeat New Password": "Ismételje meg az új jelszót",
+ "Update Password": "Jelszó módosítása",
+ "Disable Auth": "Hitelesítés tiltása",
+ "Enable Auth": "Hitelesítés engedélyezése",
+ "disableauth.message1": "Biztos benne, hogy kikapcsolja a hitelesítést ?",
+ "disableauth.message2": "Akkor érdemes, ha van 3rd-party hitelesítés az Uptime Kuma-t megelőzően mint a Cloudflare Access.",
+ "Please use this option carefully!": "Használja megfontoltan!",
+ "Logout": "Kijelentkezés",
+ "Leave": "Elhagy",
+ "I understand, please disable": "Megértettem, kérem tiltsa le",
+ "Confirm": "Megerősítés",
+ "Yes": "Igen",
+ "No": "Nem",
+ "Username": "Felhasználónév",
+ "Password": "Jelszó",
+ "Remember me": "Emlékezzen rám",
+ "Login": "Bejelentkezés",
+ "No Monitors, please": "Nincs figyelő, kérem",
+ "add one": "adjon hozzá egyet",
+ "Notification Type": "Értesítés típusa",
+ "Email": "Email",
+ "Test": "Teszt",
+ "Certificate Info": "Tanúsítvány információk",
+ "Resolver Server": "DNS szerver",
+ "Resource Record Type": "Resource Record típusa",
+ "Last Result": "Utolsó eredmény",
+ "Create your admin account": "Hozza létre az adminisztrátor felhasználót",
+ "Repeat Password": "Jelszó ismétlése",
+ "Import Backup": "Mentés importálása",
+ "Export Backup": "Mentés exportálása",
+ "Export": "Exportálás",
+ "Import": "Importálás",
+ "respTime": "Válaszidő (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Alapértelmezetten engedélyezett",
+ "Apply on all existing monitors": "Alkalmazza az összes figyelőre",
+ "Create": "Létrehozás",
+ "Clear Data": "Adatok törlése",
+ "Events": "Események",
+ "Heartbeats": "Életjelek",
+ "Auto Get": "Auto lekérd.",
+ "backupDescription": "Mentheti az összes figyelőt és értesítést egy JSON fájlba.",
+ "backupDescription2": "Megj: Történeti és esemény adatokat nem tartalmaz.",
+ "backupDescription3": "Érzékeny adatok, pl. értesítés tokenek is vannak az export fájlban. Figyeljen erre!",
+ "alertNoFile": "Válaszzon ki egy fájlt az importáláshoz.",
+ "alertWrongFileType": "Válasszon egy JSON fájlt.",
+ "Clear all statistics": "Összes statisztika törlése",
+ "Skip existing": "Meglévő kihagyása",
+ "Overwrite": "Felülírás",
+ "Options": "Opciók",
+ "Keep both": "Mindegyiket tartsa meg",
+ "Verify Token": "Token ellenőrzése",
+ "Setup 2FA": "2FA beállítása",
+ "Enable 2FA": "2FA engedélyezése",
+ "Disable 2FA": "2FA tiltása",
+ "2FA Settings": "2FA beállítások",
+ "Two Factor Authentication": "Kétfaktoros hitelesítés",
+ "Active": "Aktív",
+ "Inactive": "Inaktív",
+ "Token": "Token",
+ "Show URI": "URI megmutatása",
+ "Tags": "Címkék",
+ "Add New below or Select...": "Új hozzáadása alább vagy Válasszon…",
+ "Tag with this name already exist.": "Ilyen nevű címke már létezik.",
+ "Tag with this value already exist.": "Ilyen értékű címke már létezik.",
+ "color": "szín",
+ "value (optional)": "érték (opcionális)",
+ "Gray": "Szürke",
+ "Red": "Piros",
+ "Orange": "Narancs",
+ "Green": "Zöld",
+ "Blue": "Kék",
+ "Indigo": "Indigó",
+ "Purple": "Lila",
+ "Pink": "Rózsaszín",
+ "Search...": "Keresés…",
+ "Avg. Ping": "Átl. ping",
+ "Avg. Response": "Átl. válasz",
+ "Entry Page": "Nyitólap",
+ "statusPageNothing": "Semmi nincs itt. Adjon hozzá egy vagy több figyelőt.",
+ "No Services": "Nincs szolgáltatás",
+ "All Systems Operational": "Minden rendszer működik",
+ "Partially Degraded Service": "Részlegesen leállt szolgáltatás",
+ "Degraded Service": "Leállt szolgáltatás",
+ "Add Group": "Csoport hozzáadása",
+ "Add a monitor": "Figyelő hozzáadása",
+ "Edit Status Page": "Státusz oldal szerkesztése",
+ "Go to Dashboard": "Irányítópulthoz",
+ "telegram": "Telegram",
+ "webhook": "Webhook",
+ "smtp": "Email (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (50+ értesítési szolgáltatás)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "Status Page": "Státusz oldal",
+ "Status Pages": "Státusz oldalak",
+ "Primary Base URL": "Elsődleges URL",
+ "Push URL": "Meghívandó URL",
+ "needPushEvery": "Ezt az URL-t kell meghívni minden {0} másodpercben.",
+ "pushOptionalParams": "Opcionális paraméterek: {0}",
+ "defaultNotificationName": "{notification} értesítésem ({number})",
+ "here": "itt",
+ "Required": "Kötelező",
+ "Bot Token": "BOT token",
+ "wayToGetTelegramToken": "Innen kaphat token-t: {0}.",
+ "Chat ID": "Csevegés ID",
+ "supportTelegramChatID": "Támogatja a közvetlen csevegést, csoportnak küldést és csatona ID-t is",
+ "wayToGetTelegramChatID": "A csevegés ID-t szerezhet ha küld egy üzenetet a bot-nak és ellátogat erre az URL-re, ahol láthatja a chat_id-t:",
+ "YOUR BOT TOKEN HERE": "AZ ÖN BOT TOKENJE ITT",
+ "chatIDNotFound": "Csevegés ID nem található, küldjön egy első üzenetet a bot-nak",
+ "Post URL": "Cél URL (Post)",
+ "Content Type": "Tartalom típus (Content Type)",
+ "webhookJsonDesc": "{0} ideális a moderh HTTP szerverekhez, mint az Express.js",
+ "webhookFormDataDesc": "{multipart} ideális a PHP-hez. A JSON értelmezhető ezzel: {decodeFunction}",
+ "secureOptionNone": "Nincs / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "TLS hiba figyelmen kívül hagyása",
+ "From Email": "Feladó email",
+ "emailCustomSubject": "Egyedi tárgy",
+ "To Email": "Cél email",
+ "smtpCC": "Másolat",
+ "smtpBCC": "Titkos másolat",
+ "Discord Webhook URL": "Discord cím (webhook URL)",
+ "wayToGetDiscordURL": "Ezt itt szerezhetsz: Server Settings -> Integrations -> View Webhooks -> New Webhook",
+ "Bot Display Name": "Bot megjelenő neve",
+ "Prefix Custom Message": "Egyedi előtét üzenet",
+ "Hello @everyone is...": "Hello {'@'}everyone …",
+ "Webhook URL": "Cím (webhook URL)",
+ "wayToGetTeamsURL": "Itt megnézheti, hogy kell ilyen URL-t készíteni: {0}.",
+ "Number": "Szám",
+ "Recipients": "Címzettek",
+ "needSignalAPI": "Egy Signal kliensre van szüksége, amihez REST API tartozik.",
+ "wayToCheckSignalURL": "Itt megnézheti, hogy hozhat létre egyet:",
+ "signalImportant": "FONTOS! Nem keverheti a csoportokat és számokat a címzetteknél!",
+ "Application Token": "Alkalmazás token",
+ "Server URL": "Szerver URL",
+ "Priority": "Prioritás",
+ "Icon Emoji": "Emoji ikonok",
+ "Channel Name": "Csatorna neve",
+ "Uptime Kuma URL": "Uptime Kuma cím",
+ "aboutWebhooks": "Webhook-okról több info: {0}",
+ "aboutChannelName": "Adja meg a {0} csatorna nevét ha szeretné elkerülni a webhook-ot. Pl: #masik-csatorna",
+ "aboutKumaURL": "Ha üresen hagyja a Uptime Kuma cím mezőt, akkor a projekt GitHub oldala lesz az alapértelmezett.",
+ "emojiCheatSheet": "Emoji csalás: {0}",
+ "clicksendsms": "ClickSend SMS",
+ "User Key": "Felhasználói Kulcs",
+ "Device": "Eszköz",
+ "Message Title": "Üzenet Címe",
+ "Notification Sound": "Értesítési Hang",
+ "More info on:": "További információ: {0}",
+ "pushoverDesc1": "A vészhelyzeti prioritásnak (2) 30 másodperc az újrapróbálkozási alapértéke és egy óra után lejár.",
+ "pushoverDesc2": "Ha különböző eszközökre szeretne értesítést küldeni, töltse ki az Eszköz mezőt.",
+ "SMS Type": "SMS típusa",
+ "octopushTypePremium": "Premium (Fast - recommended for alerting)",
+ "octopushTypeLowCost": "Low Cost (Slow - sometimes blocked by operator)",
+ "checkPrice": "Ellenőrizze {0} árat:",
+ "apiCredentials": "API kulcsok",
+ "octopushLegacyHint": "Az Octopush régi (2011-2020) verzióját használod vagy az újat?",
+ "Check octopush prices": "Csekkold az octopush {0} árakat.",
+ "octopushPhoneNumber": "Telefonszám (nemz. formátum, pl : +36705554433) ",
+ "octopushSMSSender": "SMS küldő neve : 3-11 betű/szám (a-zA-Z0-9) vagy szóköz",
+ "LunaSea Device ID": "LunaSea eszköz ID",
+ "Apprise URL": "Apprise cím (URL)",
+ "Example:": "Például: {0}",
+ "Read more:": "Itt olvashat róla: {0}",
+ "Status:": "Állapot: {0}",
+ "Read more": "Tovább olvasom",
+ "appriseInstalled": "Apprise telepítve.",
+ "appriseNotInstalled": "Apprise nincs telepítve. {0}",
+ "Access Token": "Elérési token",
+ "Channel access token": "Csatorna elérési token",
+ "Line Developers Console": "Line Developers konzol",
+ "lineDevConsoleTo": "Line Developers konzol - {0}",
+ "Basic Settings": "Alap beállítások",
+ "User ID": "Felhasználó ID",
+ "Messaging API": "Üzenet API",
+ "wayToGetLineChannelToken": "{0} első eléréséhez készítsen egy Provider-t és csatornát (Messaging API), utána kaphatja meg a csatorna elérési token-t és felhasználó ID-t az alábbi menüpontban.",
+ "Icon URL": "Ikon cím (URL)",
+ "aboutIconURL": "Megadhat egy webcímet az Ikon cím mezőben, ezzel felülírva az alapértelmezet képet. Nem kerül felhasználásra, ha az Emoji-k be vannak állítva.",
+ "aboutMattermostChannelName": "Felülírhatja az alapértelmezett csatornát, ahova a webhook az adatokat küldi. Ehhez töltse ki a \"Csatorna neve\" mezőt (pl: #egyeb-csatorna). A Mattermost webhook beállításaiban további engedélyek szükségesek",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - olcsó, de lassú, gyakran túlterhelt. Csak lengyel címzettekhez.",
+ "promosmsTypeFlash": "SMS FLASH - Az üzenet automatikusan megjelenik a fogadó eszközön. Csak lengyel címzettekhez.",
+ "promosmsTypeFull": "SMS FULL - Prémium szintje az SMS-nek. Megadható a feladó neve, de előtte jóváhagyás szükséges. Ideális értesítésekhez.",
+ "promosmsTypeSpeed": "SMS SPEED - A legmagasabb prioritás a rendszerben. Nagyon gyors és pontos, de költséges (kb. duplája a hagyományos SMS-nek).",
+ "promosmsPhoneNumber": "Telefonszám (lengyel címzett esetén az országkód elhagyható)",
+ "promosmsSMSSender": "SMS feladónév: Előre beállított név vagy az alábbiak egyike: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu webhook cím (URL)",
+ "matrixHomeserverURL": "Homeserver cím (URL http(s):// előtaggal és opcionálisan port-tal)",
+ "Internal Room Id": "Belső Szoba ID",
+ "matrixDesc1": "A belső szoba ID-t a szpbák speciális beállítások között találja meg a Matrix kliens programban. Így kell kinéznie: !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Erősen ajánlott készíteni egy új felhasználót és nem a teljes joggal rendelkező felhasználót használni. Az új felhasználó létrehozása után csak azokba a szobákba kell megjhívni a felhasználót, ahol értesítéseket szeretne kapni. Ezzel a művelettel lehet elérési token-t kérni: {0}",
+ "Method": "Metódus",
+ "Body": "Törzs",
+ "Headers": "Fejlécek",
+ "PushUrl": "Push cím (URL)",
+ "HeadersInvalidFormat": "A kérés fejléc nem egy valós JSON: ",
+ "BodyInvalidFormat": "A kérés törzse nem egy valós JSON: ",
+ "Monitor History": "Vizsgálatok előzményei",
+ "clearDataOlderThan": "Előzmények megtartása {0} napig.",
+ "PasswordsDoNotMatch": "Jelszó nem egyezik.",
+ "records": "sorok",
+ "One record": "Egy sor",
+ "steamApiKeyDescription": "Steam Game Server ellenőrzéséhez szükséges egy Steam Web-API kulcs. Itt létrehozhat egy API kulcsot: ",
+ "Current User": "Felhasználó",
+ "recent": "Legújabb",
+ "Done": "Kész",
+ "Info": "Infó",
+ "Security": "Biztonság",
+ "Steam API Key": "Steam API kulcs",
+ "Shrink Database": "Adatbázis tömörítése",
+ "Pick a RR-Type...": "Válassz egy RR-típust…",
+ "Pick Accepted Status Codes...": "Válassz Elfogadható Állapot Kódokat…",
+ "Default": "Alapértelmezett",
+ "HTTP Options": "HTTP beállítások",
+ "Create Incident": "Incidens létrehozása",
+ "Title": "Cím",
+ "Content": "Tartalom",
+ "Style": "Stílus",
+ "info": "info",
+ "warning": "figyelmeztetés",
+ "danger": "veszély",
+ "primary": "elsődleges",
+ "light": "világos",
+ "dark": "sötét",
+ "Post": "Bejegyzés",
+ "Please input title and content": "Adjon meg címet és tartalmat",
+ "Created": "Létrehozva",
+ "Last Updated": "Utoljára Módosítva",
+ "Unpin": "Leválaszt",
+ "Switch to Light Theme": "Világos témára váltás",
+ "Switch to Dark Theme": "Sötét témára váltás",
+ "Show Tags": "Címkék mutatása",
+ "Hide Tags": "Címkék elrejtése",
+ "Description": "Leírás",
+ "No monitors available.": "Nincs még figyelő beállítva.",
+ "Add one": "Adjon hozzá egyet",
+ "No Monitors": "Nincs figyelő",
+ "Untitled Group": "Névtelen csoport",
+ "Services": "Szolgáltatások",
+ "Discard": "Elvet",
+ "Cancel": "Mégsem",
+ "Powered by": "A megoldást szállítja az",
+ "shrinkDatabaseDescription": "VACUUM futtatása az SQLite-on. Ha az adatbázisod 1.10.0-nál újabb, akkor az AUTO_VACUUM engedélyezve van, nincs szükség a műveletre.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API felhasználónév (webapi_ előtaggal együtt)",
+ "serwersmsAPIPassword": "API jelszó",
+ "serwersmsPhoneNumber": "Telefonszám",
+ "serwersmsSenderName": "SMS feladó neve (regisztrált név az oldalon)",
+ "GoogleChat": "Google Chat (csak Google Workspace)",
+ "stackfield": "Stackfield",
+ "smtpDkimSettings": "DKIM beállítások",
+ "smtpDkimDesc": "Nézze meg a Nodemailer DKIM {0} használati szabályokat.",
+ "documentation": "dokumentáció",
+ "smtpDkimDomain": "Domain név",
+ "smtpDkimKeySelector": "Kulcs választó",
+ "smtpDkimPrivateKey": "Privát kulcs",
+ "smtpDkimHashAlgo": "Hash algoritmus (nem kötelező)",
+ "smtpDkimheaderFieldNames": "Fejléc kulcsok a bejelentkezéshez (nem kötelező)",
+ "smtpDkimskipFields": "Fejléc kulcsok egyéb esetben (nem kötelező)",
+ "PushByTechulus": "Techulus push",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API végpont",
+ "alertaEnvironment": "Környezet",
+ "alertaApiKey": "API kulcs",
+ "alertaAlertState": "Figyelmeztetési állapot",
+ "alertaRecoverState": "Visszaállási állapot",
+ "deleteStatusPageMsg": "Biztos, hogy törölni akarja a státusz oldalt?",
+ "Start of maintenance": "Karbantartás kezdete",
+ "successMessageExplanation": "MQTT üzenet, amely sikeresnek minősül",
+ "weekdayShortFri": "Pé",
+ "lastDay2": "A hónap 2. utolsó napja",
+ "maintenanceStatus-under-maintenance": "Karbantartás alatt",
+ "dnsCacheDescription": "Előfordulhat, hogy bizonyos IPv6-környezetekben nem működik, tiltsa le, ha problémákat tapasztal.",
+ "Add New Status Page": "Új állapotoldal hozzáadása",
+ "The resource is no longer available.": "Az erőforrás már nem elérhető.",
+ "Show update if available": "Frissítés megjelenítése, ha elérhető",
+ "weekdayShortMon": "Hé",
+ "weekdayShortTue": "Ke",
+ "weekdayShortWed": "Sze",
+ "weekdayShortThu": "Csüt",
+ "weekdayShortSat": "Szo",
+ "weekdayShortSun": "Vas",
+ "dayOfWeek": "A hét napja",
+ "dayOfMonth": "A hónap napja",
+ "lastDay": "Utolsó nap",
+ "lastDay3": "A hónap 3. utolsó napja",
+ "lastDay4": "A hónap 4. utolsó napja",
+ "No Maintenance": "Nincs karbantartás",
+ "pauseMaintenanceMsg": "Biztosan szüneteltetni akarja?",
+ "maintenanceStatus-inactive": "Inaktív",
+ "maintenanceStatus-scheduled": "Ütemezett",
+ "maintenanceStatus-ended": "Végzett",
+ "maintenanceStatus-unknown": "Ismeretlen",
+ "Display Timezone": "Időzóna megjelenítése",
+ "Server Timezone": "Szerver időzóna",
+ "statusPageMaintenanceEndDate": "Vége",
+ "Enable DNS Cache": "DNS-gyorsítótár engedélyezése",
+ "Enable": "Engedélyezze",
+ "Disable": "Letiltás",
+ "Affected Monitors": "Érintett monitorok",
+ "Packet Size": "Csomag mérete",
+ "IconUrl": "Ikon URL",
+ "successMessage": "Siker Üzenet",
+ "lastDay1": "A hónap utolsó napja",
+ "Guild ID": "Guild ID",
+ "Help": "Segítség",
+ "statusMaintenance": "Karbantartás",
+ "Maintenance": "Karbantartás",
+ "Game": "Játék",
+ "markdownSupported": "Markdown szintaxis támogatott",
+ "Pick Affected Monitors...": "Érintett monitor(ok) kiválasztása…",
+ "All Status Pages": "Összes státusz oldal",
+ "topic": "Téma",
+ "topicExplanation": "MQTT téma a monitorhoz",
+ "webhookAdditionalHeadersDesc": "Hozzáad további fejléceket a webhook-hoz",
+ "error": "hiba",
+ "critical": "kritikus",
+ "Customize": "Testreszab",
+ "Custom Footer": "Egyedi Lábléc",
+ "Custom CSS": "Egyedi CSS",
+ "Proxies": "Proxyk",
+ "default": "Alapértelmezett",
+ "enabled": "Bekapcsolva",
+ "Certificate Chain": "Tanúsítvány Lánc",
+ "Valid": "Érvényes",
+ "Invalid": "Érvénytelen",
+ "User": "Felhasználó",
+ "Installed": "Telepítve",
+ "Not installed": "Nincs telepítve",
+ "Running": "Fut",
+ "Not running": "Nem fut",
+ "Remove Token": "Token Eltávolítása",
+ "Start": "Inditás",
+ "Stop": "Megállítás",
+ "Slug": "Slug",
+ "Accept characters:": "Karakterek engedélyezése:",
+ "Next": "Következő",
+ "The slug is already taken. Please choose another slug.": "Ez a slug már használatban van. Kérlek válassz másikat.",
+ "No Proxy": "Nincs Proxy",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "Új Állapot Oldal",
+ "Page Not Found": "Oldal Nem Található",
+ "Reverse Proxy": "Reverse Proxy",
+ "Backup": "Mentés",
+ "cloudflareWebsite": "Cloudflare Weboldal",
+ "Message:": "Üzenet:",
+ "Trust Proxy": "Trust Proxy",
+ "Other Software": "Egyébb Szoftware",
+ "Please read": "Olvasd el",
+ "Subject:": "Tárgy:",
+ "Valid To:": "Érvényes eddig:",
+ "Issuer:": "Kiállitó:",
+ "Fingerprint:": "Ujjlenyomat:",
+ "No status pages": "Nincsenek állapot oldalak",
+ "Domain Name Expiry Notification": "Domain Név Lejárás Értesítés",
+ "Date Created": "Létrehozva Ekkor",
+ "Footer Text": "Lábléc Szöveg",
+ "affectedMonitorsDescription": "Válaszd ki azokat a monitorokat amelyek a karbantartásban érintettek",
+ "affectedStatusPages": "Mutasd ezt az üzenetet a kiválasztott állapot oldalakon",
+ "atLeastOneMonitor": "Válassz legalább egy érintett monitort",
+ "endpoint": "végpont",
+ "promosmsLogin": "API Bejelentkezési Név",
+ "pushoversounds classical": "Klasszikus",
+ "pushoversounds cosmic": "Kozmikus",
+ "pushoversounds falling": "Esés",
+ "pushoversounds gamelan": "Gamelán",
+ "pushoversounds incoming": "Érkező",
+ "pushoversounds bike": "Bicikli",
+ "pushoversounds bugle": "Kürt",
+ "pushoversounds cashregister": "Pénztárgép",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Varázslat",
+ "pushoversounds mechanical": "Mechanikus",
+ "pushoversounds pianobar": "Zongora",
+ "pushoversounds siren": "Sziréna",
+ "pushoversounds spacealarm": "Térriasztó",
+ "pushoversounds tugboat": "Vontatóhajó",
+ "pushoversounds alien": "Űrlény Riasztó (hosszú)",
+ "pushoversounds climb": "Mászás (hosszú)",
+ "pushoversounds persistent": "Állandó (hosszú)",
+ "pushoversounds echo": "Pushover Visszhang (hosszú)",
+ "pushoversounds updown": "Fent Lent (hosszú)",
+ "pushoversounds vibrate": "Csak Rezgés",
+ "pushoversounds none": "Egyik se (néma)",
+ "pushyAPIKey": "Titkos API Kulcs",
+ "pushyToken": "Eszköz token",
+ "Kook": "Kook",
+ "Free Mobile API Key": "Ingyenes Mobil API Kulcs",
+ "Enable TLS": "TLS bekapcsolása",
+ "proxyDescription": "A proxyk egy monitorhoz kell legyenek rendelve hogy működjenek.",
+ "Server Address": "Szerver Cím",
+ "resendEveryXTimes": "Újraküldés minden {0} időnként",
+ "resendDisabled": "Újraküldés kikapcsolva",
+ "Resend Notification if Down X times consequently": "Értesítés Újraküldése ha X-szer nem válaszol",
+ "Monitor": "Monitor | Monitorok",
+ "setAsDefault": "Beállítás Alapértelmezetnek",
+ "Proxy": "Proxy",
+ "Strategy": "Stratégia",
+ "Free Mobile User Identifier": "Ingyenes Mobil Felhasználó Azonosító",
+ "Schedule maintenance": "Karbantartás ütemezése",
+ "Select status pages...": "Státusz oldal kiválasztása…",
+ "Custom": "Egyedi",
+ "webhookAdditionalHeadersTitle": "További Fejlécek",
+ "deleteProxyMsg": "Biztos hogy kitörlöd ezt a proxy-t az összes monitorok-tól?",
+ "HTTP Headers": "HTTP Fejlécek",
+ "For example: nginx, Apache and Traefik.": "Például: nginx, Apache vagy Traefik.",
+ "dnsPortDescription": "DNS szerver portja. Alapéretelmezett az 53. Bármikor megváltoztathatja.",
+ "promosmsPassword": "API Jelszó",
+ "wayToGetKookBotToken": "Hozz létre egy app-ot és szerezz egy tokent itt: {0}",
+ "wayToGetKookGuildID": "Válts át 'Developer Mode'-ra a Kook beállításoknál majd jobb klikkelve a guildra megtalálod az ID-jét",
+ "Resend Notification if Down X times consecutively": "Értesítés Újraküldése ha X-szer nem válaszol"
+}
diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json
new file mode 100644
index 000000000..fe6760acb
--- /dev/null
+++ b/src/lang/id-ID.json
@@ -0,0 +1,594 @@
+{
+ "languageName": "Bahasa Indonesia (Indonesian)",
+ "checkEverySecond": "Cek Setiap {0} detik",
+ "retryCheckEverySecond": "Coba lagi setiap {0} detik",
+ "resendEveryXTimes": "Kirim ulang setiap {0} kali",
+ "resendDisabled": "Kirim ulang dinonaktifkan",
+ "retriesDescription": "Percobaan ulang maksimum sebelum layanan dinyatakan tidak aktif dan notifikasi dikirim",
+ "ignoreTLSError": "Abaikan kesalahan TLS/SSL untuk situs web HTTPS",
+ "upsideDownModeDescription": "Balikkan statusnya. Jika layanan dapat dijangkau, TIDAK AKTIF.",
+ "maxRedirectDescription": "Jumlah maksimum pengalihan untuk diikuti. Setel ke 0 untuk menonaktifkan pengalihan.",
+ "acceptedStatusCodesDescription": "Pilih kode status yang dianggap sebagai tanggapan yang berhasil.",
+ "passwordNotMatchMsg": "Kata sandi kedua tidak cocok.",
+ "notificationDescription": "Harap atur notifikasi ke monitor agar berfungsi.",
+ "keywordDescription": "Cari kata kunci dalam code html atau JSON huruf besar-kecil berpengaruh",
+ "pauseDashboardHome": "Jeda",
+ "deleteMonitorMsg": "Apakah Anda mau menghapus monitor ini?",
+ "deleteNotificationMsg": "Apakah Anda mau menghapus notifikasi untuk semua monitor?",
+ "dnsPortDescription": "Port server DNS. Bawaan menggunakan 53. Anda dapat mengubah port kapan saja.",
+ "resolverserverDescription": "Cloudflare adalah server bawaan, Anda dapat mengubah server resolver kapan saja.",
+ "rrtypeDescription": "Pilih RR-Type yang mau Anda monitor",
+ "pauseMonitorMsg": "Apakah Anda yakin mau menjeda?",
+ "enableDefaultNotificationDescription": "Untuk setiap monitor baru, notifikasi ini akan diaktifkan secara bawaan. Anda masih dapat menonaktifkan notifikasi secara terpisah untuk setiap monitor.",
+ "clearEventsMsg": "Apakah Anda yakin mau menghapus semua event di monitor ini?",
+ "clearHeartbeatsMsg": "Apakah Anda yakin mau menghapus semua heartbeats di monitor ini?",
+ "confirmClearStatisticsMsg": "Apakah Anda yakin mau menghapus semua statistik?",
+ "importHandleDescription": "Pilih 'Lewati yang ada' jika Anda ingin melewati setiap monitor atau notifikasi dengan nama yang sama. 'Timpa' akan menghapus setiap monitor dan notifikasi yang ada.",
+ "confirmImportMsg": "Apakah Anda yakin untuk mengimpor cadangan? Pastikan Anda telah memilih opsi impor yang tepat.",
+ "twoFAVerifyLabel": "Silakan ketik token Anda untuk memverifikasi bahwa 2FA berfungsi",
+ "tokenValidSettingsMsg": "Token benar! Anda sekarang dapat menyimpan pengaturan 2FA.",
+ "confirmEnableTwoFAMsg": "Apakah Anda yakin ingin mengaktifkan 2FA?",
+ "confirmDisableTwoFAMsg": "Apakah Anda yakin ingin menonaktifkan 2FA?",
+ "Settings": "Pengaturan",
+ "Dashboard": "Dasbor",
+ "New Update": "Pembaruan Baru",
+ "Language": "Bahasa",
+ "Appearance": "Tampilan",
+ "Theme": "Tema",
+ "General": "Umum",
+ "Primary Base URL": "URL Dasar Utama",
+ "Version": "Versi",
+ "Check Update On GitHub": "Cek Pembaruan di GitHub",
+ "List": "Daftar",
+ "Add": "Tambah",
+ "Add New Monitor": "Tambah Monitor Baru",
+ "Quick Stats": "Statistik",
+ "Up": "Aktif",
+ "Down": "Tidak Aktif",
+ "Pending": "Tertunda",
+ "Unknown": "Tidak diketahui",
+ "Pause": "Jeda",
+ "Name": "Nama",
+ "Status": "Status",
+ "DateTime": "Tanggal Waktu",
+ "Message": "Pesan",
+ "No important events": "Tidak ada peristiwa penting",
+ "Resume": "Lanjut",
+ "Edit": "Ubah",
+ "Delete": "Hapus",
+ "Current": "Saat ini",
+ "Uptime": "Waktu aktif",
+ "Cert Exp.": "Batas kedaluwarsa SSL",
+ "day": "hari | hari-hari",
+ "-day": "-hari",
+ "hour": "Jam",
+ "-hour": "-Jam",
+ "Response": "Tanggapan",
+ "Ping": "Ping",
+ "Monitor Type": "Tipe Monitor",
+ "Keyword": "Kata Kunci",
+ "Friendly Name": "Nama yang Ramah",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Jarak Waktu Heartbeat",
+ "Retries": "Coba lagi",
+ "Heartbeat Retry Interval": "Jeda Pengulangan Heartbeat",
+ "Resend Notification if Down X times consecutively": "Kirim Ulang Notifikasi jika Tidak Aktif X kali",
+ "Advanced": "Tingkat Lanjut",
+ "Upside Down Mode": "Mode Terbalik",
+ "Max. Redirects": "Maksimal Pengalihan",
+ "Accepted Status Codes": "Kode Status yang Diterima",
+ "Push URL": "Push URL",
+ "needPushEvery": "Anda harus memanggil URL berikut setiap {0} detik..",
+ "pushOptionalParams": "Parameter tambahan: {0}",
+ "Save": "Simpan",
+ "Notifications": "Notifikasi",
+ "Not available, please setup.": "Tidak tersedia, silakan atur.",
+ "Setup Notification": "Setel Notifikasi",
+ "Light": "Terang",
+ "Dark": "Gelap",
+ "Auto": "Otomatis",
+ "Theme - Heartbeat Bar": "Tema - Heartbeat Bar",
+ "Normal": "Normal",
+ "Bottom": "Bawah",
+ "None": "Tidak ada",
+ "Timezone": "Zona Waktu",
+ "Search Engine Visibility": "Visibilitas Mesin Pencari",
+ "Allow indexing": "Mengizinkan untuk diindex",
+ "Discourage search engines from indexing site": "Mencegah mesin pencari untuk mengindex situs",
+ "Change Password": "Ganti Sandi",
+ "Current Password": "Sandi Lama",
+ "New Password": "Sandi Baru",
+ "Repeat New Password": "Ulangi Sandi Baru",
+ "Update Password": "Perbarui Kata Sandi",
+ "Disable Auth": "Nonaktifkan Autentikasi",
+ "Enable Auth": "Aktifkan Autentikasi",
+ "disableauth.message1": "Apakah Anda yakin ingin menonaktifkan autentikasi ?",
+ "disableauth.message2": "Ini untuk mereka yang memiliki autentikasi pihak ketiga diletakkan di depan Uptime Kuma, misalnya akses Cloudflare.",
+ "Please use this option carefully!": "Gunakan dengan hati-hati.",
+ "Logout": "Keluar",
+ "Leave": "Pergi",
+ "I understand, please disable": "Saya mengerti, silakan dinonaktifkan",
+ "Confirm": "Konfirmasi",
+ "Yes": "Ya",
+ "No": "Tidak",
+ "Username": "Nama Pengguna",
+ "Password": "Sandi",
+ "Remember me": "Ingat saya",
+ "Login": "Masuk",
+ "No Monitors, please": "Tidak ada monitor, silakan",
+ "add one": "tambahkan satu",
+ "Notification Type": "Tipe Notifikasi",
+ "Email": "Surel",
+ "Test": "Tes",
+ "Certificate Info": "Info Sertifikasi",
+ "Resolver Server": "Resolver Server",
+ "Resource Record Type": "Resource Record Type",
+ "Last Result": "Hasil Terakhir",
+ "Create your admin account": "Buat akun admin Anda",
+ "Repeat Password": "Ulangi Sandi",
+ "Import Backup": "Impor Cadangan",
+ "Export Backup": "Ekspor Cadangan",
+ "Export": "Ekspor",
+ "Import": "Impor",
+ "respTime": "Tanggapan. Waktu (milidetik)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Bawaan diaktifkan",
+ "Apply on all existing monitors": "Terapkan pada semua monitor yang ada",
+ "Create": "Buat",
+ "Clear Data": "Bersihkan Data",
+ "Events": "Peristiwa",
+ "Heartbeats": "Heartbeats",
+ "Auto Get": "Ambil Otomatis",
+ "backupDescription": "Anda dapat mencadangkan semua monitor dan semua notifikasi ke dalam berkas JSON.",
+ "backupDescription2": "Catatan: Data sejarah dan peristiwa tidak disertakan.",
+ "backupDescription3": "Data sensitif seperti notifikasi token disertakan dalam berkas ekspor, harap simpan dengan hati-hati.",
+ "alertNoFile": "Silakan pilih berkas untuk diimpor.",
+ "alertWrongFileType": "Silakan pilih berkas JSON.",
+ "Clear all statistics": "Hapus semua statistik",
+ "Skip existing": "Lewati yang ada",
+ "Overwrite": "Timpa",
+ "Options": "Opsi",
+ "Keep both": "Simpan keduanya",
+ "Verify Token": "Verifikasi Token",
+ "Setup 2FA": "Pengaturan 2FA",
+ "Enable 2FA": "Aktifkan 2FA",
+ "Disable 2FA": "Nonaktifkan 2FA",
+ "2FA Settings": "Pengaturan 2FA",
+ "Two Factor Authentication": "Autentikasi Dua Faktor",
+ "Active": "Aktif",
+ "Inactive": "Tidak Aktif",
+ "Token": "Token",
+ "Show URI": "Lihat URI",
+ "Tags": "Tanda",
+ "Add New below or Select...": "Tambahkan Baru di bawah atau Pilih...",
+ "Tag with this name already exist.": "Tanda dengan nama ini sudah ada.",
+ "Tag with this value already exist.": "Tanda dengan nilai ini sudah ada.",
+ "color": "warna",
+ "value (optional)": "nilai (harus diisi)",
+ "Gray": "Abu-abu",
+ "Red": "Merah",
+ "Orange": "Jingga",
+ "Green": "Hijau",
+ "Blue": "Biru",
+ "Indigo": "Biru Tua",
+ "Purple": "Ungu",
+ "Pink": "Merah Muda",
+ "Search...": "Cari...",
+ "Avg. Ping": "Rata-rata Ping",
+ "Avg. Response": "Rata-rata Tanggapan",
+ "Entry Page": "Halaman Masuk",
+ "statusPageNothing": "Tidak ada di sini, silakan tambahkan grup atau monitor.",
+ "No Services": "Tidak ada Layanan",
+ "All Systems Operational": "Semua Sistem Berfungsi",
+ "Partially Degraded Service": "Layanan Terdegradasi Sebagian",
+ "Degraded Service": "Layanan Terdegradasi",
+ "Add Group": "Tambah Grup",
+ "Add a monitor": "Tambah monitor",
+ "Edit Status Page": "Edit Halaman Status",
+ "Go to Dashboard": "Pergi ke Dasbor",
+ "Status Page": "Halaman Status",
+ "Status Pages": "Halaman Status",
+ "defaultNotificationName": "{notification} saya Peringatan ({number})",
+ "here": "di sini",
+ "Required": "Wajib",
+ "telegram": "Telegram",
+ "Bot Token": "Bot Token",
+ "wayToGetTelegramToken": "Anda dapat mendapatkan token dari {0}.",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Mendukung Obrolan Langsung / Grup / Channel Chat ID",
+ "wayToGetTelegramChatID": "Anda bisa mendapatkan chat id Anda dengan mengirim pesan ke bot dan pergi ke url ini untuk melihat chat_id:",
+ "YOUR BOT TOKEN HERE": "BOT TOKEN ANDA DI SINI",
+ "chatIDNotFound": "Chat ID tidak ditemukan, tolong kirim pesan ke bot ini dulu",
+ "webhook": "Webhook",
+ "Post URL": "Post URL",
+ "Content Type": "Tipe konten",
+ "webhookJsonDesc": "{0} bagus untuk peladen http modern seperti express.js",
+ "webhookFormDataDesc": "{multipart} bagus untuk PHP, Anda hanya perlu mengurai json dengan {decodeFunction}",
+ "smtp": "Surel (SMTP)",
+ "secureOptionNone": "None / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Abaikan Kesalahan TLS",
+ "From Email": "Dari Email",
+ "emailCustomSubject": "Subjek",
+ "To Email": "Ke Email",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "Anda bisa mendapatkan ini dengan pergi ke Server Pengaturan -> Integrasi -> Buat Webhook",
+ "Bot Display Name": "Nama Bot",
+ "Prefix Custom Message": "Awalan Pesan",
+ "Hello @everyone is...": "Halo {'@'}everyone is...",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Anda dapat mempelajari cara membuat url webhook {0}.",
+ "signal": "Sinyal",
+ "Number": "Nomer",
+ "Recipients": "Penerima",
+ "needSignalAPI": "Anda harus memiliki klien sinyal dengan REST API.",
+ "wayToCheckSignalURL": "Anda dapat memeriksa url ini untuk melihat cara menyiapkannya:",
+ "signalImportant": "PENTING: Anda tidak dapat mencampur grup dan nomor di penerima!",
+ "gotify": "Gotify",
+ "Application Token": "Token Aplikasi",
+ "Server URL": "URL Server",
+ "Priority": "Prioritas",
+ "slack": "Slack",
+ "Icon Emoji": "Ikon Emoji",
+ "Channel Name": "Nama Saluran",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Info lain tentang webhook: {0}",
+ "aboutChannelName": "Masukan nama saluran di {0} Kolom Nama Saluran jika Anda ingin melewati saluran webhook. Contoh: #saluran-lain",
+ "aboutKumaURL": "Jika Anda membiarkan bidang URL Uptime Kuma kosong, itu akan menjadi bawaan ke halaman Proyek Github.",
+ "emojiCheatSheet": "Lembar contekan emoji: {0}",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push by Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Mendukung 50+ layanan notifikasi)",
+ "GoogleChat": "Google Chat (hanya Google Workspace)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Kunci pengguna",
+ "Device": "Perangkat",
+ "Message Title": "Judul Pesan",
+ "Notification Sound": "Suara Nofifikasi",
+ "More info on:": "Info lebih lanjut tentang: {0}",
+ "pushoverDesc1": "Prioritas darurat (2) memiliki batas waktu bawaan 30 detik antara percobaan ulang dan akan kadaluwarsa setelah 1 jam.",
+ "pushoverDesc2": "Jika Anda ingin mengirim pemberitahuan ke perangkat yang berbeda, isi kolom Perangkat.",
+ "SMS Type": "Tipe SMS",
+ "octopushTypePremium": "Premium (Cepat - direkomendasikan untuk mengingatkan)",
+ "octopushTypeLowCost": "Low Cost (Lambat, terkadang diblokir oleh operator)",
+ "checkPrice": "Check {0} prices:",
+ "apiCredentials": "Kredensial API",
+ "octopushLegacyHint": "Apakah Anda menggunakan Octopush versi lama (2011-2020) atau versi baru?",
+ "Check octopush prices": "Cek harga octopush {0}.",
+ "octopushPhoneNumber": "Nomer Telpon/HP (format internasional, contoh : +33612345678) ",
+ "octopushSMSSender": "Nama Pengirim SMS : 3-11 karakter alfanumerik dan spasi (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Device ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Contoh: {0}",
+ "Read more:": "Baca lebih lanjut: {0}",
+ "Status:": "Status: {0}",
+ "Read more": "Baca lebih lanjut",
+ "appriseInstalled": "Apprise diinstall.",
+ "appriseNotInstalled": "Apprise tidak diinstall. {0}",
+ "Access Token": "Token Akses",
+ "Channel access token": "Token akses saluran",
+ "Line Developers Console": "Konsol Pengembang Line",
+ "lineDevConsoleTo": "Konsol Pengembang Line - {0}",
+ "Basic Settings": "Pengaturan Dasar",
+ "User ID": "ID User",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Pertama akses {0}, buat penyedia dan saluran (Messaging API), lalu Anda bisa mendapatkan token akses saluran dan id pengguna dari item menu yang disebutkan di atas.",
+ "Icon URL": "Icon URL",
+ "aboutIconURL": "Anda dapat memberikan tautan ke gambar di \"Icon URL\" untuk mengganti gambar profil bawaan. Tidak akan digunakan jika Ikon Emoji diset.",
+ "aboutMattermostChannelName": "Anda dapat mengganti saluran bawaan tujuan posting webhook dengan memasukkan nama saluran ke dalam Kolom \"Channel Name\". Ini perlu diaktifkan di pengaturan webhook Mattermost. contoh: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - murah tapi lambat dan sering kelebihan beban. Terbatas hanya untuk penerima Polandia.",
+ "promosmsTypeFlash": "SMS FLASH - Pesan akan otomatis muncul di perangkat penerima. Terbatas hanya untuk penerima Polandia.",
+ "promosmsTypeFull": "SMS FULL - SMS tingkat premium, Anda dapat menggunakan Nama Pengirim Anda (Anda harus mendaftarkan nama terlebih dahulu). Dapat diandalkan untuk peringatan.",
+ "promosmsTypeSpeed": "SMS SPEED - Prioritas tertinggi dalam sistem. Sangat cepat dan dapat diandalkan tetapi mahal (sekitar dua kali lipat dari harga SMS FULL).",
+ "promosmsPhoneNumber": "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)",
+ "promosmsSMSSender": "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookUrl",
+ "matrixHomeserverURL": "Homeserver URL (dengan http(s):// dan port tambahan)",
+ "Internal Room Id": "Internal Room ID",
+ "matrixDesc1": "Kamu dapat menemukan Internal Room ID dengan melihat di bagian konfigurasi ruang di Matrix. Seharusnya berbentuk seperti !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Sangat direkomendasikan kepada Anda untuk membuat akun baru dan jangan menggunakan token atas akun terkini yang memiliki token akses secara penuh terhadap akun dan seluruh ruang yang terdaftar. Alih - alih, buat akun baru dan undang akun tsb ke ruang tempat anda ingin menerima notifikasi. Untuk mendapatkan token akses anda dapat menjalankan {0}",
+ "Method": "Method",
+ "Body": "Body",
+ "Headers": "Headers",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Request Headers memiliki format JSON yang tidak sesuai: ",
+ "BodyInvalidFormat": "Request Body memiliki format JSON yang tidak sesuai: ",
+ "Monitor History": "Riyawat Monitor",
+ "clearDataOlderThan": "Simpan data riwayat monitoring selama {0} hari.",
+ "PasswordsDoNotMatch": "Password tidak sama.",
+ "records": "catatan",
+ "One record": "Satu catatan",
+ "steamApiKeyDescription": "Untuk monitoring Steam Game Server Anda membutuhkan kunci Steam Web-API. Anda dapat mendaftarkan Kunci API Anda melalui: ",
+ "Current User": "Pengguna Saat Ini",
+ "topic": "Topic",
+ "topicExplanation": "MQTT topic untuk dimonitor",
+ "successMessage": "Pesan Berhasil",
+ "successMessageExplanation": "Pesan MQTT yang akan dianggap berhasil",
+ "recent": "Baru saja",
+ "Done": "Selesai",
+ "Info": "Info",
+ "Security": "Keamanan",
+ "Steam API Key": "Steam API Key",
+ "Shrink Database": "Shrink Database",
+ "Pick a RR-Type...": "Pilih RR-Type...",
+ "Pick Accepted Status Codes...": "Pilih Kode Status yang Diterima...",
+ "Default": "Default",
+ "HTTP Options": "Opsi HTTP",
+ "Create Incident": "Buat Incident",
+ "Title": "Judul",
+ "Content": "Konten",
+ "Style": "Gaya",
+ "info": "info",
+ "warning": "peringatan",
+ "danger": "bahaya",
+ "error": "kesalahan",
+ "critical": "kritis",
+ "primary": "utama",
+ "light": "terang",
+ "dark": "gelap",
+ "Post": "Post",
+ "Please input title and content": "Masukkan judul dan konten",
+ "Created": "Dibuat",
+ "Last Updated": "Terakhir Diperbarui",
+ "Unpin": "Lepaskan Semat",
+ "Switch to Light Theme": "Ubah ke Tema Terang",
+ "Switch to Dark Theme": "Ubah ke Tema Gelap",
+ "Show Tags": "Tampilkan Tags",
+ "Hide Tags": "Sembunyikan Tags",
+ "Description": "Deskripsi",
+ "No monitors available.": "Tidak ada monitor yang tersedia.",
+ "Add one": "Tambahkan",
+ "No Monitors": "Tidak ada monitor",
+ "Untitled Group": "Group Tanpa Judul",
+ "Services": "Layanan",
+ "Discard": "Buang",
+ "Cancel": "Batal",
+ "Powered by": "Dipersembahkan oleh",
+ "shrinkDatabaseDescription": "Trigger database VACUUM untuk SQLite. Jika database Anda dibuat setelah 1.10.0, AUTO_VACUUM sudah otomatis diaktifkan dan aksi berikut tidak dibutuhkan.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "Nama Pengguna API ( termamsuk awalan webapi_ )",
+ "serwersmsAPIPassword": "Kata Sandi API",
+ "serwersmsPhoneNumber": "Nomor Telepon",
+ "serwersmsSenderName": "Nama Pengirim SMS (didaftarkan melalui portal pelanggan)",
+ "stackfield": "Stackfield",
+ "Customize": "Kustomisasi",
+ "Custom Footer": "Tambahan Footer",
+ "Custom CSS": "Tambahan CSS",
+ "smtpDkimSettings": "Pengaturan DKIM",
+ "smtpDkimDesc": "Silakan merujuk ke Nodemailer DKIM {0} untuk penggunaan.",
+ "documentation": "dokumentasi",
+ "smtpDkimDomain": "Nama Domain",
+ "smtpDkimKeySelector": "Key Selector",
+ "smtpDkimPrivateKey": "Private Key",
+ "smtpDkimHashAlgo": "Algoritma Hash (Opsional)",
+ "smtpDkimheaderFieldNames": "Header Keys untuk ditambahkan (Optional)",
+ "smtpDkimskipFields": "Header Keys not untuk ditambahkan (Optional)",
+ "wayToGetPagerDutyKey": "Anda dapat menambahkan melalui Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Lalu Anda dapat menjadi dengan kata kunci \"Events API V2\". Informasi tambahan {0}",
+ "Integration Key": "Kunci Integrasi",
+ "Integration URL": "URL Integrasi",
+ "Auto resolve or acknowledged": "Penyelesaian otomatis atau diakui",
+ "do nothing": "tidak melakukan apapun",
+ "auto acknowledged": "otomatis diakui",
+ "auto resolve": "otomatis terselesaikan",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "Lingkungan",
+ "alertaApiKey": "Kunci API",
+ "alertaAlertState": "Status Siaga",
+ "alertaRecoverState": "Status Pemulihan",
+ "deleteStatusPageMsg": "Apakah Anda yakin untuk menghapus halaman status berikut?",
+ "Proxies": "Proxy",
+ "default": "Bawaan",
+ "enabled": "Diaktifkan",
+ "setAsDefault": "Tetapkan sebagai bawaan",
+ "deleteProxyMsg": "Apakah Anda yakin ingin menghapus proxy berikut untuk seluruh monitor?",
+ "proxyDescription": "Proxy harus ditambahkan ke monitor agar berfungsi.",
+ "enableProxyDescription": "Proxy berikut tidak akan berdampak ke monitor hingga diaktifkan. Anda dapat mengontrol menonaktifkan sementara proxy dari semua monitor dengan status aktivasi.",
+ "setAsDefaultProxyDescription": "Proxy berikut akan diaktifkan sebagai bawaan untuk monitor baru. Anda masih dapat menonaktifkan proxy secara terpisah untuk setiap monitor.",
+ "Certificate Chain": "Certificate Chain",
+ "Valid": "Valid",
+ "Invalid": "Tidak Valid",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "Nomor Telepon",
+ "TemplateCode": "Kode Template",
+ "SignName": "Nama Tanda",
+ "Sms template must contain parameters: ": "Template SMS harus berisi parameter: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "Bark Group": "Bark Group",
+ "Bark Sound": "Bark Sound",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "Untuk keamaan Anda harus menggunakan kunci rahasia",
+ "Device Token": "Token Perangkat",
+ "Platform": "Platform",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Tinggi",
+ "Retry": "Ulang",
+ "Topic": "Topik",
+ "WeCom Bot Key": "Kunci WeCom Bot",
+ "Setup Proxy": "Siapkan Proxy",
+ "Proxy Protocol": "Protokol Proxy",
+ "Proxy Server": "Server Proxy",
+ "Proxy server has authentication": "Server Proxy memiliki autentikasi",
+ "User": "Pengguna",
+ "Installed": "Terpasang",
+ "Not installed": "Tidak terpasang",
+ "Running": "Berjalan",
+ "Not running": "Tidak berjalan",
+ "Remove Token": "Hapus Token",
+ "Start": "Mulai",
+ "Stop": "Berhenti",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Tambahkan Halaman Status Baru",
+ "Slug": "Slug",
+ "Accept characters:": "Terima karakter:",
+ "startOrEndWithOnly": "Mulai atau akhiri hanya dengan {0}",
+ "No consecutive dashes": "Tanda hubung tidak berurutan",
+ "Next": "Selanjutnya",
+ "The slug is already taken. Please choose another slug.": "Slug telah digunakan. Silakan pilih slug lain.",
+ "No Proxy": "Tidak ada Proxy",
+ "Authentication": "Autentikasi",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "Halaman Status Baru",
+ "Page Not Found": "Halaman Tidak Ditemukan",
+ "Reverse Proxy": "Proxy Terbalik",
+ "Backup": "Cadangan",
+ "About": "Tentang",
+ "wayToGetCloudflaredURL": "(Unduh cloudflared dari {0})",
+ "cloudflareWebsite": "Situs Cloudflare",
+ "Message:": "Pesan:",
+ "Don't know how to get the token? Please read the guide:": "Tidak tahu cara mendapatkan token? Silakan baca panduannya:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Koneksi saat ini mungkin hilang jika Anda saat ini terhubung melalui Cloudflare Tunel. Apakah Anda yakin ingin menghentikannya? Ketik kata sandi Anda saat ini untuk mengonfirmasinya.",
+ "HTTP Headers": "HTTP Headers",
+ "Trust Proxy": "Proxy Terpercaya",
+ "Other Software": "Perangkat Lunak lainnya",
+ "For example: nginx, Apache and Traefik.": "Sebagai contoh: nginx, Apache and Traefik.",
+ "Please read": "Harap dibaca",
+ "Subject:": "Subjek:",
+ "Valid To:": "Berlaku Untuk:",
+ "Days Remaining:": "Hari Tersisa:",
+ "Issuer:": "Penerbit:",
+ "Fingerprint:": "Sidik jari:",
+ "No status pages": "Tidak ada halaman status",
+ "Domain Name Expiry Notification": "Pemberitahuan Kedaluwarsa Nama Domain",
+ "Proxy": "Proxy",
+ "Date Created": "Tanggal Dibuat",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "Alamat HTTP OneBot",
+ "onebotMessageType": "Jenis Pesan OneBot",
+ "onebotGroupMessage": "Grup",
+ "onebotPrivateMessage": "Pribadi",
+ "onebotUserOrGroupId": "Grup/Pengguna ID",
+ "onebotSafetyTips": "Untuk keamanan, harus mengatur token akses",
+ "PushDeer Key": "Kunci PushDeer",
+ "Footer Text": "Tulisan Footer",
+ "Show Powered By": "Tampilkan Dipersembahkan oleh",
+ "Domain Names": "Nama Domain",
+ "signedInDisp": "Masuk sebagai {0}",
+ "signedInDispDisabled": "Autentikasi dinonaktifkan.",
+ "RadiusSecret": "Radius Secret",
+ "RadiusSecretDescription": "Shared Secret antara klien dan server",
+ "RadiusCalledStationId": "Called Station Id",
+ "RadiusCalledStationIdDescription": "Pengenal perangkat yang dipanggil",
+ "RadiusCallingStationId": "Calling Station Id",
+ "RadiusCallingStationIdDescription": "Pengenal perangkat panggilan",
+ "Certificate Expiry Notification": "Pemberitahuan Kedaluwarsa Sertifikat",
+ "API Username": "Nama Pengguna API",
+ "API Key": "Kunci API",
+ "Recipient Number": "Nomor Penerima",
+ "From Name/Number": "Dari Nama/Nomor",
+ "Leave blank to use a shared sender number.": "Biarkan kosong untuk menggunakan nomor pengirim bersama.",
+ "Octopush API Version": "Versi API Octopush",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "endpoint": "endpoint",
+ "octopushAPIKey": "\"API key\" dari kredensial HTTP API di panel kontrol",
+ "octopushLogin": "\"Login\" dari kredensial HTTP API di panel kontrol",
+ "promosmsLogin": "Nama Masuk API",
+ "promosmsPassword": "Kata Sandi API",
+ "pushoversounds pushover": "Pushover (default)",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Vibrate Only",
+ "pushoversounds none": "None (silent)",
+ "pushyAPIKey": "Secret API Key",
+ "pushyToken": "Device token",
+ "Show update if available": "Tampilkan pembaruan jika tersedia",
+ "Also check beta release": "Periksa juga rilis beta",
+ "Using a Reverse Proxy?": "Menggunakan Proxy Terbalik?",
+ "Check how to config it for WebSocket": "Periksa cara mengonfigurasinya untuk A WebSocket",
+ "Steam Game Server": "Steam Game Server",
+ "Most likely causes:": "Kemungkinan besar penyebabnya:",
+ "The resource is no longer available.": "Sumber daya tidak lagi tersedia.",
+ "There might be a typing error in the address.": "Mungkin ada kesalahan pengetikan di alamat.",
+ "What you can try:": "Apa yang dapat kamu coba:",
+ "Retype the address.": "Ketik ulang alamat.",
+ "Go back to the previous page.": "Kembali ke halaman sebelumnya.",
+ "Coming Soon": "Segera",
+ "wayToGetClickSendSMSToken": "Anda bisa mendapatkan Nama Pengguna API dan Kunci API dari {0} .",
+ "Connection String": "String Koneksi",
+ "Query": "Query",
+ "settingsCertificateExpiry": "Sertifikat TLS Kadaluarsa",
+ "certificationExpiryDescription": "Monitor HTTPS memicu pemberitahuan saat sertifikat TLS kedaluwarsa dalam:",
+ "Setup Docker Host": "Siapkan Host Docker",
+ "Connection Type": "Jenis Koneksi",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "Apakah Anda yakin ingin menghapus host docker berikut untuk semua monitor?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Container",
+ "Container Name / ID": "Container Name / ID",
+ "Docker Host": "Docker Host",
+ "Docker Hosts": "Docker Hosts",
+ "ntfy Topic": "ntfy Topic",
+ "Domain": "Domain",
+ "Workstation": "Workstation",
+ "disableCloudflaredNoAuthMsg": "Anda berada dalam mode Tanpa Otentikasi, kata sandi tidak diperlukan.",
+ "trustProxyDescription": "Trust 'X-Forwarded-*' headers. Jika Anda ingin mendapatkan IP klien yang benar dan Uptime Kuma Anda dibalik layanan seperti Nginxor Apache, Anda harus mengaktifkan ini.",
+ "wayToGetLineNotifyToken": "Anda bisa mendapatkan token akses dari {0}",
+ "Examples": "Contoh",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "Token Akses Berumur Panjang",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token Akses Berumur Panjang dapat dibuat dengan mengklik nama profil Anda (kiri bawah) dan menggulir ke bawah lalu klik Buat Token. ",
+ "Notification Service": "Layanan Pemberitahuan",
+ "default: notify all devices": "bawaan: notifikasi seluruh perangkat",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Daftar Layanan Pemberitahuan dapat ditemukan di Home Assistant pada \"Developer Tools > Services\" cari \"notification\" lalu cari nama perangkat Anda.",
+ "Automations can optionally be triggered in Home Assistant:": "Otomatisasi dapat dipicu secara opsional di Home Assistant:",
+ "Trigger type:": "Tipe Trigger/Pemicu:",
+ "Event type:": "Tipe event:",
+ "Event data:": "Data event:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Kemudian pilih tindakan, misalnya alihkan ke tempat dimana lampu RGB berwarna merah.",
+ "Frontend Version": "Versi Frontend",
+ "Frontend Version do not match backend version!": "Versi Frontend tidak sama dengan versi backend!",
+ "Base URL": "URL Dasar",
+ "goAlertInfo": "GoAlert adalah aplikasi open source untuk penjadwalan panggilan, eskalasi otomatis dan pemberitahuan (seperti SMS atau panggilan suara). Secara otomatis melibatkan orang yang tepat, dengan cara yang benar, dan pada waktu yang tepat! {0}",
+ "goAlertIntegrationKeyInfo": "Dapatkan kunci integrasi API generik untuk layanan dalam format ini \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biasanya nilai parameter token dari URL yang disalin.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Tidak digunakan lagi: Karena banyak fitur ditambahkan dan fitur cadangan ini agak tidak terawat, itu tidak dapat menghasilkan atau memulihkan cadangan lengkap.",
+ "backupRecommend": "Harap cadangkan volume atau folder data (./data/) secara langsung.",
+ "Help": "Bantuan",
+ "Game": "Gim/Permainan",
+ "markdownSupported": "Dukungan sintaks markdown",
+ "statusMaintenance": "Pemeliharaan",
+ "Maintenance": "Pemeliharaan",
+ "General Monitor Type": "Tipe Monitor Umum",
+ "Passive Monitor Type": "Tipe Monitor Pasif",
+ "Specific Monitor Type": "Tipe Monitor Spesifik",
+ "Monitor": "Monitor"
+}
diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json
new file mode 100644
index 000000000..077bccfba
--- /dev/null
+++ b/src/lang/it-IT.json
@@ -0,0 +1,421 @@
+{
+ "languageName": "Italiano (Italian)",
+ "checkEverySecond": "controlla ogni {0} secondi",
+ "retryCheckEverySecond": "Riprova ogni {0} secondi",
+ "retriesDescription": "Tentativi prima che il servizio venga marcato come \"DOWN\" e che una notifica venga inviata",
+ "ignoreTLSError": "Ignora gli errori TLS/SSL per i siti HTTPS",
+ "upsideDownModeDescription": "Se il servizio risulta raggiungibile viene marcato come \"DOWN\".",
+ "maxRedirectDescription": "Numero massimo di redirezionamenti consentito. Per disabilitare, impostare \"0\".",
+ "acceptedStatusCodesDescription": "Elenco di codici di stato HTTP che sono considerati validi.",
+ "passwordNotMatchMsg": "La password non corrisponde.",
+ "notificationDescription": "Assegnare la notifica a uno o più oggetti monitorati per metterla in funzione.",
+ "keywordDescription": "Cerca la parola chiave nella risposta in HTML o JSON. Distingue tra maiuscole e minuscole.",
+ "pauseDashboardHome": "In Pausa",
+ "deleteMonitorMsg": "Sei sicuro di voler eliminare questo oggetto monitorato?",
+ "deleteNotificationMsg": "Sei sicuro di voler eliminare questa notifica per tutti gli oggetti monitorati?",
+ "resolverserverDescription": "Cloudflare è il server predefinito ma è possibile cambiare il server DNS.",
+ "rrtypeDescription": "Scegliere il tipo di RR che si vuole monitorare",
+ "pauseMonitorMsg": "Sei sicuro di voler mettere in pausa?",
+ "enableDefaultNotificationDescription": "Per ogni nuovo monitor questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica singolarmente.",
+ "clearEventsMsg": "Sei sicuro di voler eliminare tutti gli eventi per questo servizio?",
+ "clearHeartbeatsMsg": "Sei sicuro di voler eliminare tutti gli intervalli di controllo per questo servizio?",
+ "confirmClearStatisticsMsg": "Sei sicuro di voler eliminare TUTTE le statistiche?",
+ "importHandleDescription": "Selezionare \"Ignora esistenti\" se si vuole ignorare l'importazione dei monitor o delle notifiche con lo stesso nome. \"Sovrascrivi\" rimpiazzerà tutti i monitor e le notifiche presenti con quelli nel backup.",
+ "confirmImportMsg": "Sei sicuro di voler importare il backup? Controlla di aver selezionato l'opzione corretta di importazione.",
+ "twoFAVerifyLabel": "Digita il token per verificare che l'autenticazione a due fattori funzioni correttamente:",
+ "tokenValidSettingsMsg": "Il token è valido! È ora possibile salvare le impostazioni.",
+ "confirmEnableTwoFAMsg": "Sei sicuro di voler abilitare l'autenticazione a due fattori?",
+ "confirmDisableTwoFAMsg": "Sei sicuro di voler disabilitare l'autenticazione a due fattori?",
+ "Settings": "Impostazioni",
+ "Dashboard": "Dashboard",
+ "New Update": "Nuovo aggiornamento disponibile",
+ "Language": "Lingua",
+ "Appearance": "Aspetto",
+ "Theme": "Tema",
+ "General": "Generale",
+ "Primary Base URL": "URL base primario",
+ "Version": "Versione",
+ "Check Update On GitHub": "Controlla aggiornamenti su GitHub",
+ "List": "Lista",
+ "Add": "Aggiungi",
+ "Add New Monitor": "Aggiungi nuovo monitor",
+ "Quick Stats": "Statistiche rapide",
+ "Up": "Up",
+ "Down": "Down",
+ "Pending": "In attesa",
+ "Unknown": "Sconosciuti",
+ "Pause": "Metti in pausa",
+ "Name": "Nome",
+ "Status": "Stato",
+ "DateTime": "Data e Ora",
+ "Message": "Messaggio",
+ "No important events": "Nessun evento importante",
+ "Resume": "Riprendi",
+ "Edit": "Modifica",
+ "Delete": "Elimina",
+ "Current": "Corrente",
+ "Uptime": "Tempo di attività",
+ "Cert Exp.": "Scadenza Certificato",
+ "day": "giorno | giorni",
+ "-day": "-giorni",
+ "hour": "ora",
+ "-hour": "-ore",
+ "Response": "Risposta",
+ "Ping": "Ping",
+ "Monitor Type": "Modalità di monitoraggio",
+ "Keyword": "Parola chiave",
+ "Friendly Name": "Nome",
+ "URL": "URL",
+ "Hostname": "Nome Host",
+ "Port": "Porta",
+ "Heartbeat Interval": "Intervallo di controllo",
+ "Retries": "Tentativi",
+ "Heartbeat Retry Interval": "Intervallo tra i tentativi di controllo",
+ "Advanced": "Avanzate",
+ "Upside Down Mode": "Modalità invertita",
+ "Max. Redirects": "Reindirizzamenti massimi",
+ "Accepted Status Codes": "Codici di stato accettati",
+ "Push URL": "Push URL",
+ "needPushEvery": "Notificare questo URL ogni {0} secondi.",
+ "pushOptionalParams": "Parametri aggiuntivi: {0}",
+ "Save": "Salva",
+ "Notifications": "Notifiche",
+ "Not available, please setup.": "Non disponibili, da configurare.",
+ "Setup Notification": "Configura le notifiche",
+ "Light": "Chiaro",
+ "Dark": "Scuro",
+ "Auto": "Automatico",
+ "Theme - Heartbeat Bar": "Tema (barra di stato)",
+ "Normal": "Normale",
+ "Bottom": "Sotto",
+ "None": "Nessuna",
+ "Timezone": "Fuso Orario",
+ "Search Engine Visibility": "Visibilità ai motori di ricerca",
+ "Allow indexing": "Consenti l'indicizzazione",
+ "Discourage search engines from indexing site": "Evita l'indicizzazione ai motori di ricerca",
+ "Change Password": "Cambia password",
+ "Current Password": "Password corrente",
+ "New Password": "Nuova password",
+ "Repeat New Password": "Ripeti nuova password",
+ "Update Password": "Modifica password",
+ "Disable Auth": "Disabilita autenticazione",
+ "Enable Auth": "Abilita autenticazione",
+ "disableauth.message1": "Disabilitare l'autenticazione ?",
+ "disableauth.message2": "Questa opzione è per chi un sistema di autenticazione gestito da terze parti messo davanti ad Uptime Kuma, ad esempio Cloudflare Access.",
+ "Please use this option carefully!": "Utilizzare con attenzione!",
+ "Logout": "Esci",
+ "Leave": "Annulla",
+ "I understand, please disable": "Lo capisco, disabilitare l'autenticazione",
+ "Confirm": "Conferma",
+ "Yes": "Sì",
+ "No": "No",
+ "Username": "Nome utente",
+ "Password": "Password",
+ "Remember me": "Ricorda credenziali",
+ "Login": "Accesso",
+ "No Monitors, please": "Nessun monitor presente,",
+ "add one": "aggiungine uno",
+ "Notification Type": "Servizio di notifica",
+ "Email": "E-mail",
+ "Test": "Fai una prova",
+ "Certificate Info": "Informazioni sul certificato",
+ "Resolver Server": "Server DNS",
+ "Resource Record Type": "Tipo di Resource Record",
+ "Last Result": "Ultimo risultato",
+ "Create your admin account": "Crea l'account amministratore",
+ "Repeat Password": "Ripeti password",
+ "Import Backup": "Importa backup",
+ "Export Backup": "Esporta backup",
+ "Export": "Esporta",
+ "Import": "Importa",
+ "respTime": "Tempo di risposta (ms)",
+ "notAvailableShort": "N/D",
+ "Default enabled": "Abilitato di default",
+ "Apply on all existing monitors": "Applica su tutti i monitoraggi",
+ "Create": "Crea",
+ "Clear Data": "Cancella dati",
+ "Events": "Eventi",
+ "Heartbeats": "Controlli",
+ "Auto Get": "Rileva",
+ "backupDescription": "È possibile fare il backup di tutti i monitoraggi e di tutte le notifiche in un file JSON.",
+ "backupDescription2": "NOTA: lo storico e i dati relativi agli eventi non saranno inclusi nel backup.",
+ "backupDescription3": "Dati sensibili come i token di autenticazione saranno inclusi nel backup, custodisci il file in un luogo sicuro.",
+ "alertNoFile": "Selezionare il file da importare.",
+ "alertWrongFileType": "Selezionare un file JSON.",
+ "Clear all statistics": "Cancella tutte le statistiche",
+ "Skip existing": "Ignora esistenti",
+ "Overwrite": "Sovrascrivi",
+ "Options": "Opzioni",
+ "Keep both": "Mantieni entrambi",
+ "Verify Token": "Verifica token",
+ "Setup 2FA": "Configura 2FA",
+ "Enable 2FA": "Abilita 2FA",
+ "Disable 2FA": "Disabilita 2FA",
+ "2FA Settings": "Gestisci l'autenticazione a due fattori",
+ "Two Factor Authentication": "Autenticazione a due fattori (2FA)",
+ "Active": "Attivata",
+ "Inactive": "Disattivata",
+ "Token": "Token",
+ "Show URI": "Mostra URI",
+ "Tags": "Etichette",
+ "Add New below or Select...": "Aggiungi oppure scegli…",
+ "Tag with this name already exist.": "Un'etichetta con questo nome già esiste.",
+ "Tag with this value already exist.": "Un'etichetta con questo valore già esiste.",
+ "color": "colore",
+ "value (optional)": "descrizione (opzionale)",
+ "Gray": "Grigio",
+ "Red": "Rosso",
+ "Orange": "Arancione",
+ "Green": "Verde",
+ "Blue": "Blu",
+ "Indigo": "Indaco",
+ "Purple": "Viola",
+ "Pink": "Rosa",
+ "Search...": "Cerca…",
+ "Avg. Ping": "Tempo medio di risposta al ping",
+ "Avg. Response": "Tempo medio di risposta",
+ "Entry Page": "Pagina Principale",
+ "statusPageNothing": "Non c'è nulla qui, aggiungi un gruppo oppure un monitor.",
+ "No Services": "Nessun servizio",
+ "All Systems Operational": "Tutti i sistemi sono funzionali",
+ "Partially Degraded Service": "Servizio parzialmente degradato",
+ "Degraded Service": "Servizio degradato",
+ "Add Group": "Aggiungi gruppo",
+ "Add a monitor": "Aggiungi monitor",
+ "Edit Status Page": "Modifica pagina di stato",
+ "Go to Dashboard": "Vai alla dashboard",
+ "Status Page": "Pagina di stato",
+ "Status Pages": "Pagina di stato",
+ "defaultNotificationName": "Notifica {notification} ({number})",
+ "here": "qui",
+ "Required": "Obbligatorio",
+ "telegram": "Telegram",
+ "Bot Token": "Token del bot",
+ "wayToGetTelegramToken": "Puoi ottenere il token da {0}.",
+ "Chat ID": "ID Chat",
+ "supportTelegramChatID": "Supporta ID di chat private, gruppi e canali",
+ "wayToGetTelegramChatID": "È possibile ricereve l'ID chat mandando un messaggio al bot e poi andando in questo URL per visualizzare il chat_id:",
+ "YOUR BOT TOKEN HERE": "QUI IL TOKEN DEL BOT",
+ "chatIDNotFound": "Non trovo l'ID chat. Prima bisogna mandare un messaggio al bot",
+ "webhook": "Webhook",
+ "Post URL": "Post URL",
+ "Content Type": "Content Type",
+ "webhookJsonDesc": "{0} va bene per qualsiasi server HTTP moderno ad esempio express.js",
+ "webhookFormDataDesc": "{multipart} va bene per PHP, c'è solo bisogno di analizzare il json con {decodeFunction}",
+ "smtp": "E-mail (SMTP)",
+ "secureOptionNone": "Nessuno / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignora gli errori TLS",
+ "From Email": "Mittente",
+ "emailCustomSubject": "Oggetto personalizzato",
+ "To Email": "Destinatario",
+ "smtpCC": "CC",
+ "smtpBCC": "CCn",
+ "discord": "Discord",
+ "Discord Webhook URL": "URL Webhook di Discord",
+ "wayToGetDiscordURL": "È possibile recuperarlo da Impostazioni server -> Integrazioni -> Creare Webhook",
+ "Bot Display Name": "Nome del Bot",
+ "Prefix Custom Message": "Prefisso per il messaggio personalizzato",
+ "Hello @everyone is...": "Ciao a {'@'}everyone …",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "URL Webhook",
+ "wayToGetTeamsURL": "È possibile imparare a creare un URL Webhook {0}.",
+ "signal": "Signal",
+ "Number": "Numero",
+ "Recipients": "Destinatari",
+ "needSignalAPI": "È necessario avere un client Signal con le API REST.",
+ "wayToCheckSignalURL": "Controllare questo url per capire come impostarne uno:",
+ "signalImportant": "IMPORTANTE: Non è possibile mischiare gruppi e numeri all'interno dei destinatari!",
+ "gotify": "Gotify",
+ "Application Token": "Token Applicazione",
+ "Server URL": "URL Server",
+ "Priority": "Priorità",
+ "slack": "Slack",
+ "Icon Emoji": "Icona Emoji",
+ "Channel Name": "Nome Canale",
+ "Uptime Kuma URL": "Indirizzo Uptime Kuma",
+ "aboutWebhooks": "Maggiori informazioni riguardo ai webhooks su: {0}",
+ "aboutChannelName": "Inserire il nome del canale nel campo \"Nome Canale\" {0} se si vuole bypassare il canale webhook. Ad esempio: #altro-canale",
+ "aboutKumaURL": "Se si lascia bianco il campo Indirizzo Uptime Kuma, la pagina GitHub sarà il valore predefinito.",
+ "emojiCheatSheet": "Lista Emoji: {0}",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Supporta più di 50 servizi di notifica)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Chiave Utente",
+ "Device": "Dispositivo",
+ "Message Title": "Titolo Messaggio",
+ "Notification Sound": "Suono di Notifica",
+ "More info on:": "Maggiori informazioni su: {0}",
+ "pushoverDesc1": "Priorità di Emergenza (2) ha 30 secondi di timeout tra un tentativo e l'altro e scadrà dopo un'ora.",
+ "pushoverDesc2": "Se si vuole inviare la notifica a dispositivi differenti, riempire il campo Dispositivi.",
+ "SMS Type": "Tipo di SMS",
+ "octopushTypePremium": "Premium (Veloce - raccomandato per allertare)",
+ "octopushTypeLowCost": "A Basso Costo (Lento - talvolta bloccato dall'operatore)",
+ "checkPrice": "Controlla {0} prezzi:",
+ "apiCredentials": "Credenziali API",
+ "octopushLegacyHint": "Si vuole utilizzare la vecchia versione (2011-2020) oppure la nuova versione di Octopush?",
+ "Check octopush prices": "Controlla i prezzi di Octopush {0}.",
+ "octopushPhoneNumber": "Numero di telefono (formato internazionale (p.e.): +33612345678) ",
+ "octopushSMSSender": "Nome del mittente: 3-11 caratteri alfanumerici e spazi (a-zA-Z0-9)",
+ "LunaSea Device ID": "ID dispositivo LunaSea",
+ "Apprise URL": "URL Apprise",
+ "Example:": "Esempio: {0}",
+ "Read more:": "Maggiori informazioni: {0}",
+ "Status:": "Stato: {0}",
+ "Read more": "Maggiori informazioni",
+ "appriseInstalled": "Apprise è installato.",
+ "appriseNotInstalled": "Apprise non è installato. {0}",
+ "Access Token": "Token di accesso",
+ "Channel access token": "Token di accesso al canale",
+ "Line Developers Console": "Console sviluppatori Line",
+ "lineDevConsoleTo": "Console sviluppatori Line - {0}",
+ "Basic Settings": "Impostazioni Base",
+ "User ID": "ID Utente",
+ "Messaging API": "API di Messaggistica",
+ "wayToGetLineChannelToken": "Prima accedi a {0}, crea un provider e un canale (API di Messaggistica), dopodiché puoi avere il token di accesso e l'id utente dal menù sopra.",
+ "Icon URL": "URL Icona",
+ "aboutIconURL": "È possibile impostare un collegameno a una immagine in \"URL Icona\" per modificare l'immagine di profilo. Non verrà utilizzata se è impostata l'Icona Emoji.",
+ "aboutMattermostChannelName": "È possibile modificare il canale predefinito che dove il webhook manda messaggi immettendo il nome del canale nel campo \"Nome Canale\". Questo va abilitato nelle impostazioni webhook di Mattermost webhook. P.E.: #altro-canale",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - economico, ma lento e spesso sovraccarico. Limitato solamente a destinatari Polacchi.",
+ "promosmsTypeFlash": "SMS FLASH - Il messaggio sarà automaticamente mostrato sul dispositivo dei destinatari. Limitato solo a destinatari Polacchi.",
+ "promosmsTypeFull": "SMS FULL - Premium, È possibile utilizzare il proprio nome come mittente (è necessario prima registrare il nome). Affidabile per gli allarmi.",
+ "promosmsTypeSpeed": "SMS SPEED - Maggior priorità. Rapido, affidabile, ma costoso (costa il doppio di SMS FULL).",
+ "promosmsPhoneNumber": "Numero di Telefono (per destinatari Polacchi si può omettere il codice area)",
+ "promosmsSMSSender": "Mittente SMS : Nome preregistrato oppure uno dei seguenti: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "URL WebHook di Feishu",
+ "matrixHomeserverURL": "URL Server (con http(s):// e opzionalmente la porta)",
+ "Internal Room Id": "ID Stanza Interna",
+ "matrixDesc1": "È possibile recuperare l'ID della stanza all'interno delle impostazioni avanzate della stanza nel client Matrix. Dovrebbe essere simile a !QMdRCpUIfLwsfjxye6:server.di.casa.",
+ "matrixDesc2": "È altamente raccomandata la creazione di un nuovo utente e di non utilizare il proprio token di accesso Matrix poiché darà pieno controllo al proprio account e a tutte le stanze in cui si ha accesso. Piuttosto, si crei un nuovo utente per invitarlo nella stanza dove si vuole ricevere le notifiche. Si può accedere al token eseguendo {0}",
+ "Method": "Metodo",
+ "Body": "Body",
+ "Headers": "Intestazioni",
+ "PushUrl": "URL di Push",
+ "HeadersInvalidFormat": "L'intestazione di richiesta non è un JSON valido: ",
+ "BodyInvalidFormat": "Il corpo di richiesta non è un JSON valido: ",
+ "Monitor History": "Storico monitor",
+ "clearDataOlderThan": "Mantieni lo storico per {0} giorni.",
+ "PasswordsDoNotMatch": "Le password non corrispondono.",
+ "records": "records",
+ "One record": "One record",
+ "steamApiKeyDescription": "Per monitorare un server di gioco Steam è necessaria una Web-API Key di Steam. È possibile registrarne una qui: ",
+ "Current User": "Utente corrente",
+ "recent": "Recenti",
+ "Done": "Fatto",
+ "Info": "Info",
+ "Security": "Sicurezza",
+ "Steam API Key": "API Key di Steam",
+ "Shrink Database": "Comprimi database",
+ "Pick a RR-Type...": "Scegli un tipo di RR…",
+ "Pick Accepted Status Codes...": "Scegli i codici di Stato Accettati…",
+ "Default": "Predefinito",
+ "HTTP Options": "Opzioni HTTP",
+ "Create Incident": "Segnala incidente",
+ "Title": "Titolo",
+ "Content": "Contenuto",
+ "Style": "Stile",
+ "info": "informativo",
+ "warning": "attenzione",
+ "danger": "critico",
+ "primary": "predefinito",
+ "light": "chiaro",
+ "dark": "scuro",
+ "Post": "Posta",
+ "Please input title and content": "Inserire il titolo e il contenuto",
+ "Created": "Creato",
+ "Last Updated": "Ultima modifica",
+ "Unpin": "Rimuovi",
+ "Switch to Light Theme": "Utilizza il tema chiaro",
+ "Switch to Dark Theme": "Utilizza il tema scuro",
+ "Show Tags": "Mostra etichette",
+ "Hide Tags": "Nascondi etichette",
+ "Description": "Descrizione",
+ "No monitors available.": "Nessun monitor disponibile.",
+ "Add one": "Aggiungine uno",
+ "No Monitors": "Nessun monitor presente",
+ "Untitled Group": "Gruppo senza titolo",
+ "Services": "Servizi",
+ "Discard": "Scarta modifiche",
+ "Cancel": "Annulla",
+ "Powered by": "Powered by",
+ "shrinkDatabaseDescription": "Lancia il comando \"VACUUM\" sul database SQLite. Se il database è stato creato dopo la versione 1.10.0, la funzione \"AUTO_VACUUM\" è già abilitata di default e quindi questa azione non è necessaria.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "Nome utente API (incl. prefisso webapi_)",
+ "serwersmsAPIPassword": "Password API",
+ "serwersmsPhoneNumber": "Numero di Telefono",
+ "serwersmsSenderName": "Nome del mittente SMS (registrato via portale cliente)",
+ "stackfield": "Stackfield",
+ "smtpDkimSettings": "Impostazioni DKIM",
+ "smtpDkimDesc": "Fare riferimento a Nodemailer DKIM {0} per l'utilizzo.",
+ "documentation": "documentazione",
+ "smtpDkimDomain": "Dominio",
+ "smtpDkimKeySelector": "Selettore Chiave",
+ "smtpDkimPrivateKey": "Chiave Privata",
+ "smtpDkimHashAlgo": "Algoritmo di hashing (opzionale)",
+ "smtpDkimheaderFieldNames": "Campi Intestazione da firmare (opzionale)",
+ "smtpDkimskipFields": "Campi Intestazione da non firmare (opzionale)",
+ "GoogleChat": "Google Chat (solo per Google Workspace)",
+ "Help": "Aiuto",
+ "Maintenance": "Manutenzione",
+ "statusMaintenance": "In manutenzione",
+ "General Monitor Type": "Monitor Generico",
+ "Game": "Gioco",
+ "Passive Monitor Type": "Monitor Passivo",
+ "Specific Monitor Type": "Monitor Specifico",
+ "Monitor": "Monitor | Monitor",
+ "Topic": "Argomento",
+ "markdownSupported": "Sintassi markdown supportata",
+ "Proxy Server": "Server Proxy",
+ "Select status pages...": "Seleziona pagine di stato…",
+ "Schedule maintenance": "Pianifica manutenzione",
+ "Start of maintenance": "Inizio della manutenzione",
+ "All Status Pages": "Tutte le pagine di stato",
+ "webhookAdditionalHeadersTitle": "Headers aggiuntivi",
+ "resendEveryXTimes": "Reinvia ogni {0} volte",
+ "resendDisabled": "Reinvio disabilitato",
+ "Resend Notification if Down X times consequently": "Reinvia la notifica se Down X volte di seguito",
+ "Add New Status Page": "Aggiungi nuova pagina di stato",
+ "webhookAdditionalHeadersDesc": "Imposta gli header aggiuntivi inviati nel webhook.",
+ "topicExplanation": "MQTT topic da controllare",
+ "successMessage": "Messaggio con successo",
+ "successMessageExplanation": "Messaggio MQTT considerato come successo",
+ "error": "errore",
+ "critical": "critico",
+ "Customize": "Personalizza",
+ "Custom Footer": "Piè di pagina personalizzato",
+ "Custom CSS": "CSS personalizzato",
+ "deleteStatusPageMsg": "Confermi la cancellazione di questa pagina di stato?",
+ "default": "Predefinito",
+ "enabled": "Abilitato",
+ "setAsDefault": "Imposta come predefinito",
+ "deleteProxyMsg": "Confermi la cancellazione di questo proxy per tutti i monitoraggi?",
+ "proxyDescription": "I proxy devono essere assegnati ad un monitoraggio per essere operativi.",
+ "setAsDefaultProxyDescription": "Questo proxy sarà abilitato come predefinito per tutti i nuovi monitoraggi. E' possibile disabilitare il proxy in modo indipendente per ogni singolo monitoraggio.",
+ "Certificate Chain": "Catena di certificati",
+ "Invalid": "Non valido",
+ "User": "Utente",
+ "Installed": "Installato",
+ "Not installed": "Non installato",
+ "Running": "In esecuzione",
+ "Not running": "Fermo",
+ "Remove Token": "Rimuovere token",
+ "Start": "Avvio",
+ "Next": "Prossimo",
+ "No Proxy": "Nessun proxy",
+ "Authentication": "Autenticazione",
+ "New Status Page": "Nuova pagina di stato",
+ "Page Not Found": "Pagina non trovata",
+ "Affected Monitors": "Monitoraggi interessati",
+ "Pick Affected Monitors...": "Seleziona i monitoraggi interessati…",
+ "Valid": "Valido",
+ "Certificate Expiry Notification": "Notifica scadenza certificato"
+}
diff --git a/src/lang/ja.json b/src/lang/ja.json
new file mode 100644
index 000000000..bc2ce738d
--- /dev/null
+++ b/src/lang/ja.json
@@ -0,0 +1,520 @@
+{
+ "languageName": "日本語",
+ "checkEverySecond": "{0}秒ごとにチェックします",
+ "retriesDescription": "サービスが完全に停止したと判断し、通知を送信する前に再接続を試みる最大回数",
+ "ignoreTLSError": "HTTPS ウェブサイトの TLS/SSL エラーを無視する",
+ "upsideDownModeDescription": "稼働ステータスを反転して扱います。サービスに接続可能な場合は、停止として扱います。",
+ "maxRedirectDescription": "必要な場合にリダイレクトする最大回数です。リダイレクトを無効にしたい場合は、0に設定してください。",
+ "acceptedStatusCodesDescription": "成功した応答とみなされるステータスコードを選択する。",
+ "passwordNotMatchMsg": "繰り返しのパスワードが一致しません。",
+ "notificationDescription": "監視を機能させるには、監視に通知を割り当ててください。",
+ "keywordDescription": "プレーンHTMLまたはJSON応答でキーワードを検索し、大文字と小文字を区別します。",
+ "pauseDashboardHome": "一時停止",
+ "deleteMonitorMsg": "この監視を削除してよろしいですか?",
+ "deleteNotificationMsg": "全ての監視のこの通知を削除してよろしいですか?",
+ "resolverserverDescription": "Cloudflareがデフォルトのサーバーですが、いつでもリゾルバサーバーを変更できます。",
+ "rrtypeDescription": "監視するRRタイプを選択します",
+ "pauseMonitorMsg": "一時停止しますか?",
+ "Settings": "設定",
+ "Dashboard": "ダッシュボード",
+ "New Update": "新しいアップデート",
+ "Language": "言語",
+ "Appearance": "外観",
+ "Theme": "テーマ",
+ "General": "全般",
+ "Version": "バージョン",
+ "Check Update On GitHub": "GitHubでアップデートを確認する",
+ "List": "一覧",
+ "Add": "追加",
+ "Add New Monitor": "監視の追加",
+ "Quick Stats": "統計",
+ "Up": "正常",
+ "Down": "停止",
+ "Pending": "中止",
+ "Unknown": "不明",
+ "Pause": "一時停止",
+ "Name": "名前",
+ "Status": "ステータス",
+ "DateTime": "日時",
+ "Message": "メッセージ",
+ "No important events": "重要なイベントなし",
+ "Resume": "再開",
+ "Edit": "編集",
+ "Delete": "削除",
+ "Current": "現在",
+ "Uptime": "稼働時間",
+ "Cert Exp.": "証明書有効期限",
+ "day": "日 | 日間",
+ "-day": "-日",
+ "hour": "時間",
+ "-hour": "時間",
+ "Response": "レスポンス",
+ "Ping": "Ping",
+ "Monitor Type": "監視タイプ",
+ "Keyword": "キーワード",
+ "Friendly Name": "分かりやすい名前",
+ "URL": "URL",
+ "Hostname": "ホスト名",
+ "Port": "ポート",
+ "Heartbeat Interval": "監視間隔",
+ "Retries": "再試行回数",
+ "Advanced": "詳細設定",
+ "Upside Down Mode": "反転モード",
+ "Max. Redirects": "最大リダイレクト数",
+ "Accepted Status Codes": "正常なステータスコード",
+ "Save": "保存",
+ "Notifications": "通知",
+ "Not available, please setup.": "利用できません。設定が必要です。",
+ "Setup Notification": "通知設定",
+ "Light": "ライト",
+ "Dark": "ダーク",
+ "Auto": "自動",
+ "Theme - Heartbeat Bar": "テーマ - 監視バー",
+ "Normal": "通常",
+ "Bottom": "下部",
+ "None": "なし",
+ "Timezone": "タイムゾーン",
+ "Search Engine Visibility": "検索エンジンでの表示",
+ "Allow indexing": "インデックス作成を許可する",
+ "Discourage search engines from indexing site": "検索エンジンにインデックスさせないようにする",
+ "Change Password": "パスワード変更",
+ "Current Password": "現在のパスワード",
+ "New Password": "新しいパスワード",
+ "Repeat New Password": "確認のため新しいパスワードをもう一度",
+ "Update Password": "パスワードの更新",
+ "Disable Auth": "認証の無効化",
+ "Enable Auth": "認証の有効化",
+ "Logout": "ログアウト",
+ "Leave": "作業を中止する",
+ "I understand, please disable": "理解した上で無効化する",
+ "Confirm": "確認",
+ "Yes": "はい",
+ "No": "いいえ",
+ "Username": "ユーザー名",
+ "Password": "パスワード",
+ "Remember me": "パスワードを忘れた場合",
+ "Login": "ログイン",
+ "No Monitors, please": "監視がありません",
+ "add one": "add one",
+ "Notification Type": "通知タイプ",
+ "Email": "Eメール",
+ "Test": "テスト",
+ "Certificate Info": "証明書情報",
+ "Resolver Server": "問い合わせ先DNSサーバ",
+ "Resource Record Type": "DNSレコード設定",
+ "Last Result": "最終結果",
+ "Create your admin account": "Adminアカウントの作成",
+ "Repeat Password": "パスワード確認",
+ "respTime": "応答時間 (ms)",
+ "notAvailableShort": "N/A",
+ "Create": "作成",
+ "clearEventsMsg": "この監視のすべての記録を削除してもよろしいですか?",
+ "clearHeartbeatsMsg": "この監視のすべての異常記録を削除してもよろしいですか?",
+ "confirmClearStatisticsMsg": "すべての統計を削除してもよろしいですか?",
+ "Clear Data": "データを削除",
+ "Events": "統計",
+ "Heartbeats": "異常記録",
+ "Auto Get": "自動取得",
+ "enableDefaultNotificationDescription": "監視を作成するごとに、この通知方法はデフォルトで有効になります。監視ごとに通知を無効にすることもできます。",
+ "Default enabled": "デフォルトで有効にする",
+ "Also apply to existing monitors": "既存のモニターにも適用する",
+ "Export": "エクスポート",
+ "Import": "インポート",
+ "backupDescription": "すべての監視と通知設定をJSONファイルとしてバックアップすることができます。",
+ "backupDescription2": "※ 履歴と統計のデータはバックアップされません。",
+ "backupDescription3": "通知に使用するトークンなどの機密データも含まれています。注意して扱ってください。",
+ "alertNoFile": "インポートするファイルを選択してください。",
+ "alertWrongFileType": "JSONファイルを選択してください。",
+ "twoFAVerifyLabel": "トークンを入力して、2段階認証を有効にします。",
+ "tokenValidSettingsMsg": "トークンの確認が完了しました! 「保存」をしてください。",
+ "confirmEnableTwoFAMsg": "2段階認証を「有効」にします。よろしいですか?",
+ "confirmDisableTwoFAMsg": "2段階認証を「無効」にします。よろしいですか?",
+ "Apply on all existing monitors": "既存のすべてのモニターに適用する",
+ "Verify Token": "認証する",
+ "Setup 2FA": "2段階認証の設定",
+ "Enable 2FA": "2段階認証を有効にする",
+ "Disable 2FA": "2段階認証を無効にする",
+ "2FA Settings": "2段階認証の設定",
+ "Two Factor Authentication": "2段階認証",
+ "Clear all statistics": "すべての記録を削除",
+ "retryCheckEverySecond": "{0} 秒ごとにリトライします",
+ "importHandleDescription": "同じ名前のすべての監視または通知方法を上書きしない場合は、「既存のをスキップ」を選択します。 「上書きする」は、既存のすべてのモニターと通知を削除します。",
+ "confirmImportMsg": "バックアップをインポートしてもよろしいですか?希望するオプションを選択してください。",
+ "Heartbeat Retry Interval": "異常検知後の再試行間隔",
+ "Import Backup": "バックアップのインポート",
+ "Export Backup": "バックアップのエクスポート",
+ "Skip existing": "既存のをスキップする",
+ "Overwrite": "上書きする",
+ "Options": "オプション",
+ "Keep both": "どちらも保持する",
+ "Tags": "タグ",
+ "Add New below or Select...": "新規追加または選択…",
+ "Tag with this name already exist.": "この名前のタグはすでに存在しています。",
+ "Tag with this value already exist.": "この値のタグはすでに存在しています。",
+ "color": "色",
+ "value (optional)": "値 (optional)",
+ "Search...": "検索…",
+ "Avg. Ping": "平均Ping時間",
+ "Avg. Response": "平均応答時間",
+ "Entry Page": "エントリーページ",
+ "statusPageNothing": "ここには何もありません。グループまたは監視を追加してください。",
+ "No Services": "サービス無し",
+ "All Systems Operational": "すべてのサービスが稼働中",
+ "Partially Degraded Service": "部分的にサービスが停止中",
+ "Degraded Service": "サービスが停止中",
+ "Add Group": "グループの追加",
+ "Add a monitor": "監視の追加",
+ "Edit Status Page": "ステータスページ編集",
+ "Go to Dashboard": "ダッシュボード",
+ "Status Page": "ステータスページ",
+ "Status Pages": "ステータスページ",
+ "Shrink Database": "データベースの縮小",
+ "Start": "始める",
+ "Retry": "リトライ",
+ "Please read": "次のリンクを参考にしてください",
+ "Orange": "橙",
+ "Gateway Type": "ゲートウェイの種類",
+ "Game": "ゲーム",
+ "Help": "ヘルプ",
+ "Maintenance": "メンテナンス",
+ "resendDisabled": "再送信不可",
+ "Schedule maintenance": "メンテナンスのスケジュール",
+ "Affected Monitors": "影響を受けるモニター",
+ "Pick Affected Monitors...": "影響を受けるモニターを選択…",
+ "Start of maintenance": "メンテナンス開始",
+ "General Monitor Type": "汎用モニタータイプ",
+ "resendEveryXTimes": "{0}回ごとに再送信",
+ "markdownSupported": "マークダウン構文がサポートされています",
+ "All Status Pages": "すべてのステータス ページ",
+ "Monitor": "モニター |モニター",
+ "Resend Notification if Down X times consequently": "ダウンX回連続で通知再送",
+ "Push URL": "プッシュ URL",
+ "needPushEvery": "{0} 秒ごとにこの URL を呼び出す必要があります。",
+ "pushOptionalParams": "オプションのパラメーター: {0}",
+ "disableauth.message1": "認証を無効 にしてもよろしいですか?",
+ "disableauth.message2": "これは、Cloudflare Access、Authelia、またはその他の認証メカニズムなど、Uptime Kuma の前にサードパーティ認証を実装するシナリオ向けに設計されています 。",
+ "Please use this option carefully!": "このオプションは慎重に使用してください!",
+ "Primary Base URL": "プライマリ ベース URL",
+ "statusMaintenance": "メンテナンス",
+ "Passive Monitor Type": "パッシブモニタータイプ",
+ "Specific Monitor Type": "特定のモニターの種類",
+ "Security": "セキュリティ",
+ "Steam API Key": "Steam API Key",
+ "Default": "デフォルト",
+ "Title": "タイトル",
+ "No status pages": "ステータスページがありません",
+ "Proxy": "プロキシ",
+ "Date Created": "作成日",
+ "Content Type": "コンテンツタイプ",
+ "webhookAdditionalHeadersTitle": "追加ヘッダー",
+ "Server URL": "Server URL",
+ "Priority": "優先順位",
+ "Read more": "続きを読む",
+ "Show Tags": "タグを表示",
+ "Switch to Dark Theme": "ダークテーマに切り替える",
+ "Token": "Token",
+ "Show URI": "URIを表示する",
+ "Gray": "灰色",
+ "Red": "赤色",
+ "Green": "緑色",
+ "Blue": "青色",
+ "Indigo": "藍色",
+ "Purple": "紫色",
+ "Pink": "ピンク",
+ "Required": "必須",
+ "Select status pages...": "ステータスページを選択してください…",
+ "webhookAdditionalHeadersDesc": "Webhook で送信される追加ヘッダーを設定します。",
+ "Webhook URL": "Webhook URL",
+ "Application Token": "Application Token",
+ "steamApiKeyDescription": "Steam Game Server を監視するためには、Steam Web-API キーが必要です。APIキーの登録はこちらから行えます。 ",
+ "Monitor History": "監視履歴",
+ "clearDataOlderThan": "監視履歴データを {0} 日間、保持します。",
+ "PasswordsDoNotMatch": "パスワードが一致していません。",
+ "Current User": "現在のユーザー",
+ "topic": "トピック",
+ "Info": "Info",
+ "Create Incident": "インシデントを作成",
+ "Content": "内容",
+ "Please input title and content": "タイトルと内容を入力してください",
+ "Last Updated": "最終アップデート日時",
+ "Unpin": "ピンを外す",
+ "Switch to Light Theme": "ライトテーマに切り替える",
+ "Hide Tags": "タグを隠す",
+ "Description": "メモ",
+ "Untitled Group": "名前の無いグループ",
+ "Services": "サービス",
+ "Discard": "破棄",
+ "Cancel": "キャンセル",
+ "Powered by": "Powered by",
+ "Customize": "カスタマイズ",
+ "Custom Footer": "カスタムフッター",
+ "Custom CSS": "カスタム CSS",
+ "deleteStatusPageMsg": "本当にこのステータスページを削除しますか?",
+ "Proxies": "プロキシ",
+ "default": "デフォルト",
+ "enabled": "有効",
+ "setAsDefault": "デフォルトに設定する",
+ "deleteProxyMsg": "本当にすべてのモニターからこのプロキシを削除しますか?",
+ "proxyDescription": "プロキシはモニターに割り当てられていないと機能しません。",
+ "setAsDefaultProxyDescription": "このプロキシは、新しいモニターに対してデフォルトで有効になっています。モニターごとに個別にプロキシを無効にすることができます。",
+ "Remove Token": "Tokenを削除",
+ "Stop": "停止",
+ "Add New Status Page": "新しいステータスページを追加",
+ "Next": "次へ",
+ "No Proxy": "プロキシなし",
+ "Authentication": "認証",
+ "HTTP Basic Auth": "HTTPベーシック認証",
+ "New Status Page": "新しいステータスページ",
+ "Page Not Found": "ページが見つかりません",
+ "Reverse Proxy": "リバースプロキシ",
+ "Backup": "バックアップ",
+ "About": "About",
+ "cloudflareWebsite": "Cloudflare Website",
+ "Don't know how to get the token? Please read the guide:": "トークンの取得方法が分かりませんか?ガイドをお読みください。",
+ "Custom": "カスタム",
+ "Created": "作成日時",
+ "Resend Notification if Down X times consecutively": "X回連続でダウンしたら通知を再送する",
+ "webhookJsonDesc": "{0}はExpress.jsのような最新のHTTPサーバに適しています",
+ "webhookFormDataDesc": "{multipart}はPHPに適しています。このJSONは{decodeFunction}でデコードする必要があります",
+ "appriseInstalled": "Appriseはインストール済みです。",
+ "emojiCheatSheet": "絵文字一覧: {0}",
+ "Inactive": "無効",
+ "defaultNotificationName": "{notification} 通知 ({number})",
+ "Post URL": "Post URL",
+ "Active": "有効",
+ "Pick a RR-Type...": "RR-Typeを選択…",
+ "Pick Accepted Status Codes...": "正常なステータスコードを選択…",
+ "appriseNotInstalled": "Apprise はインストールされていません。{0}",
+ "Method": "方式",
+ "Body": "ボディ",
+ "Headers": "ヘッダー",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "リクエストヘッダーのJSONが無効です: ",
+ "BodyInvalidFormat": "リクエストボディのJSONが無効です: ",
+ "records": "レコード",
+ "One record": "レコード",
+ "topicExplanation": "監視するMQTTトピック",
+ "successMessage": "成功メッセージ",
+ "successMessageExplanation": "成功したとみなされるMQTTメッセージ",
+ "recent": "直近",
+ "Done": "完了",
+ "HTTP Options": "HTTPオプション",
+ "Style": "スタイル",
+ "info": "情報",
+ "warning": "警告",
+ "Valid To:": "有効期限:",
+ "Days Remaining:": "残りの有効日数:",
+ "Issuer:": "発行者:",
+ "Fingerprint:": "フィンガープリント:",
+ "Domain Name Expiry Notification": "ドメイン名有効期限通知",
+ "Footer Text": "フッター文章",
+ "Show Powered By": "Powered Byを表示",
+ "Domain Names": "ドメイン名",
+ "signedInDisp": "{0}としてログイン中",
+ "RadiusSecret": "Radius シークレット",
+ "RadiusSecretDescription": "クライアントとサーバー間の共有シークレット",
+ "RadiusCalledStationId": "Called Station Id",
+ "RadiusCallingStationId": "Calling Station Id",
+ "Subject:": "サブジェクト:",
+ "trustProxyDescription": "ヘッダー「X-Forwarded-*」を信頼します。Uptime Kumaがリバースプロキシの中にあり、正しいクライアントIPを取得する場合は、有効化してください。",
+ "Home Assistant URL": "ホームアシスタントURL",
+ "Examples": "例",
+ "telegramMessageThreadID": "(オプション) メッセージスレッドID",
+ "wayToGetLineNotifyToken": "{0}からアクセストークンを入手できます",
+ "Packet Size": "パケットサイズ",
+ "Bot Token": "ボットトークン",
+ "Chat ID": "チャットID",
+ "critical": "致命的エラー",
+ "signedInDispDisabled": "認証が無効化されています。",
+ "RadiusCalledStationIdDescription": "着信側の識別子",
+ "telegramProtectContent": "転送や保存を制限",
+ "YOUR BOT TOKEN HERE": "入手したボットトークン",
+ "API Key": "APIキー",
+ "Show update if available": "アップデートがあれば表示する",
+ "Using a Reverse Proxy?": "リバースプロキシを使用中ですか?",
+ "Go back to the previous page.": "前のページに戻る",
+ "Coming Soon": "近日公開予定",
+ "Workstation": "ワークステーション",
+ "wayToGetTelegramToken": "{0}からトークンを入手できます。",
+ "telegramMessageThreadIDDescription": "オプションとしてフォーラムのスレッド(話題)のIDを指定してメッセージを送信することができます。スーパーグループでのみ利用できます。",
+ "telegramProtectContentDescription": "有効な場合、Telegram上のボットのメッセージの転送や保存が制限されます。",
+ "danger": "危険",
+ "error": "エラー",
+ "primary": "プライマリー",
+ "light": "ライト",
+ "dark": "ダーク",
+ "Post": "Post",
+ "No monitors available.": "監視対象がありません。",
+ "Add one": "追加",
+ "No Monitors": "監視対象なし",
+ "shrinkDatabaseDescription": "SQLiteデーターベースにVACUUMを実行します。データーベースがv1.10.0以降に作成されている場合、AUTO_VACUUMが既に有効なため実行する必要はありません。",
+ "enableProxyDescription": "このプロキシは有効化されない限り、監視リクエストには影響しません。無効化した場合、一時的にプロキシをすべての監視から無効化することができます。",
+ "Certificate Chain": "証明書チェーン",
+ "Valid": "有効",
+ "Invalid": "無効",
+ "User": "ユーザー",
+ "Installed": "インストール済み",
+ "Not installed": "未インストール",
+ "Running": "稼働中",
+ "Not running": "停止中",
+ "Slug": "スラッグ",
+ "Accept characters:": "使用可能な文字:",
+ "startOrEndWithOnly": "{0}のみ最初と最後の文字として使用可能",
+ "No consecutive dashes": "連続したダッシュ記号は使用不可",
+ "The slug is already taken. Please choose another slug.": "指定されたスラグは既に使用されています。別のスラグを使用してください。",
+ "wayToGetCloudflaredURL": "({0}からcloudflaredをダウンロード)",
+ "Message:": "メッセージ:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Cloudflare Tunnelを経由した接続が遮断される可能性があります。停止してもよろしいですか? 確認のため、現在のパスワードを入力してください。",
+ "HTTP Headers": "HTTPヘッダー",
+ "Trust Proxy": "信頼できるプロキシ",
+ "Other Software": "その他のソフトウェア",
+ "For example: nginx, Apache and Traefik.": "例: nginxやApache、Traefikなど",
+ "RadiusCallingStationIdDescription": "発信側の識別子",
+ "Certificate Expiry Notification": "証明書有効期限通知",
+ "API Username": "APIユーザー名",
+ "Also check beta release": "ベータ版も表示する",
+ "Check how to config it for WebSocket": "WebSocketの設定方法について",
+ "Steam Game Server": "Steamゲームサーバー",
+ "Most likely causes:": "最も考えられる原因:",
+ "There might be a typing error in the address.": "アドレスの入力ミスの可能性があります。",
+ "What you can try:": "対応方法:",
+ "Retype the address.": "アドレスを入力し直してください。",
+ "The resource is no longer available.": "存在しないページです。",
+ "Connection String": "接続文字列",
+ "Query": "クエリ",
+ "settingsCertificateExpiry": "TLS証明書の有効期限",
+ "certificationExpiryDescription": "HTTPS監視のTLS証明書が以下の期限を迎えたときに通知を送信します。",
+ "Setup Docker Host": "Docker ホストを設定",
+ "Connection Type": "接続タイプ",
+ "Docker Daemon": "Docker デーモン",
+ "deleteDockerHostMsg": "すべての監視のDocker ホストを削除してもよろしいですか?",
+ "socket": "ソケット",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker コンテナー",
+ "Container Name / ID": "コンテナ名 / ID",
+ "Docker Host": "Docker ホスト",
+ "Docker Hosts": "Docker ホスト",
+ "Domain": "ドメイン",
+ "telegramSendSilently": "通知せずに送信",
+ "telegramSendSilentlyDescription": "通知せずにメッセージを送信します。通知音がなりません。",
+ "supportTelegramChatID": "チャットやグループ、チャンネルのチャットIDに対応",
+ "wayToGetTelegramChatID": "ボットにメッセージを送信し、以下のURLを開くとチャットIDのchat_idを入手できます。",
+ "chatIDNotFound": "チャットIDが存在しません。最初にメッセージをボットに送信してください",
+ "disableCloudflaredNoAuthMsg": "認証が無効化されているため、パスワードは必要ありません。",
+ "API Keys": "APIキー管理",
+ "Expiry": "期限切れ",
+ "Expiry date": "有効期限",
+ "No API Keys": "API Keyがありません",
+ "deleteAPIKeyMsg": "本当にこのAPIキーを削除しますか?",
+ "Generate": "生成",
+ "pauseMaintenanceMsg": "本当に一時停止しますか?",
+ "maintenanceStatus-under-maintenance": "メンテナンス中",
+ "secureOptionNone": "None / STARTTLS (25, 587)",
+ "smtp": "Email (SMTP)",
+ "Bot Display Name": "BOTの表示名",
+ "Prefix Custom Message": "メッセージの先頭に送信する文章",
+ "endpoint": "エンドポイント",
+ "Proxy Protocol": "Proxy Protocol",
+ "Google Analytics ID": "Google アナリティクス ID",
+ "Frontend Version do not match backend version!": "フロントエンドとバックエンドのバージョンが一致しません!",
+ "or": "または",
+ "Frontend Version": "フロントエンドのバージョン",
+ "promosmsPassword": "APIパスワード",
+ "Notification Sound": "通知音",
+ "Clone Monitor": "監視の複製",
+ "Clone": "複製",
+ "cloneOf": "{0} の複製",
+ "Hello @everyone is...": "Hello {'@'}everyone is…",
+ "Icon URL": "アイコンURL",
+ "affectedStatusPages": "メンテナンスメッセージを選択したステータスページに表示する",
+ "GoogleChat": "Google Chat (Google Workspace 限定)",
+ "pushyToken": "デバイストークン",
+ "SMS Type": "SMSタイプ",
+ "Proxy Server": "Proxy Server",
+ "smtpDkimDomain": "ドメイン名",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "Channel Name": "チャンネル名",
+ "smtpDkimSettings": "DKIM設定",
+ "Server Address": "サーバーアドレス",
+ "strategyManual": "手動で有効/無効を切り替える",
+ "warningTimezone": "サーバーのタイムゾーンを使用します",
+ "weekdayShortMon": "月",
+ "weekdayShortTue": "火",
+ "weekdayShortWed": "水",
+ "weekdayShortFri": "金",
+ "weekdayShortSat": "土",
+ "weekdayShortSun": "日",
+ "dayOfWeek": "曜日ごと",
+ "dayOfMonth": "日にちごと",
+ "maintenanceStatus-inactive": "無効",
+ "maintenanceStatus-scheduled": "スケジュール済み",
+ "maintenanceStatus-ended": "終了済み",
+ "maintenanceStatus-unknown": "不明",
+ "Server Timezone": "サーバータイムゾーン",
+ "IconUrl": "アイコンURL",
+ "Enable DNS Cache": "DNSキャッシュを有効にする",
+ "Enable": "有効",
+ "Disable": "無効",
+ "Schedule Maintenance": "スケジュールメンテナンス",
+ "loadingError": "データを取得できません。後でもう一度試してください。",
+ "uninstall": "アンインストール",
+ "installing": "インストール中",
+ "Ignore TLS Error": "TLSエラーを無視",
+ "smtpCC": "CC",
+ "secureOptionTLS": "TLS (465)",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord ウェブフック URL",
+ "wayToCheckSignalURL": "こちらから設定方法を確認できます:",
+ "Number": "Number",
+ "Line Developers Console": "Line Developers Console",
+ "Access Token": "アクセストークン",
+ "Channel access token": "チャンネルアクセストークン",
+ "enableGRPCTls": "TLS接続でgRPCリクエストを送信できるようにする",
+ "Messaging API": "Messaging API",
+ "dnsPortDescription": "DNSサーバーポートのデフォルトは53です。ポートはいつでも変更可能です。",
+ "Device": "デバイス",
+ "Event type:": "イベントタイプ:",
+ "here": "こちら",
+ "weekdayShortThu": "木",
+ "plugin": "プラグイン",
+ "No Maintenance": "メンテナンスはありません",
+ "dnsCacheDescription": "一部のIPv6環境では動作しない場合があります。問題が発生した場合は無効にしてください。",
+ "uninstalling": "アンインストール中",
+ "confirmUninstallPlugin": "本当にこのプラグインをアンインストールしていいですか?",
+ "wayToGetDiscordURL": "サーバー設定 -> 連携サービス -> ウェブフックを確認 -> 新しいウェブフック から新たに取得できます",
+ "wayToGetTeamsURL": "ウェブフックの作成方法は {0}",
+ "wayToGetZohoCliqURL": "ウェブフックの作成方法は {0}",
+ "confirmDeleteTagMsg": "このタグを本当に削除してよろしいですか?このタグが付けられたモニターは削除されません。",
+ "deleteMaintenanceMsg": "このメンテナンスを本当に削除していいですか?",
+ "promosmsLogin": "APIログイン名",
+ "pushyAPIKey": "シークレットAPI Key",
+ "Message Title": "メッセージタイトル",
+ "Setup Proxy": "プロキシを設定する",
+ "Proxy server has authentication": "プロキシサーバーは認証が必要",
+ "Edit Tag": "タグを編集",
+ "Add API Key": "API Keyを追加",
+ "Expires": "有効期限",
+ "disableAPIKeyMsg": "本当にこのAPIキーを無効化しますか?",
+ "install": "インストール",
+ "affectedMonitorsDescription": "メンテナンスによって影響を受けるモニターを選択してください",
+ "default: notify all devices": "デフォルト:すべてのデバイスに通知する",
+ "Trigger type:": "トリガータイプ:",
+ "Event data:": "イベントデータ:",
+ "backupOutdatedWarning": "非推奨: 多くの機能に変更があり、バックアップ機能の開発が一部滞っているため、完全なバックアップの作成や復元ができません。",
+ "backupRecommend": "代わりにボリュームまたはデータフォルダ(./data/)を直接バックアップしてください。",
+ "recurringInterval": "インターバル",
+ "Recurring": "繰り返し",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "基本設定",
+ "User ID": "User ID",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "Device Token": "デバイストークン",
+ "recurringIntervalMessage": "毎日1回実行する|{0} 日に1回実行する",
+ "Add New Tag": "新しいタグを追加",
+ "statusPageMaintenanceEndDate": "終了日",
+ "Body Encoding": "ボディエンコード",
+ "Learn More": "さらに詳しく",
+ "infiniteRetention": "保持期間を無制限にしたい場合は、0に設定してください。",
+ "Display Timezone": "表示タイムゾーン"
+}
diff --git a/src/lang/ka.json b/src/lang/ka.json
new file mode 100644
index 000000000..2617e17c7
--- /dev/null
+++ b/src/lang/ka.json
@@ -0,0 +1,21 @@
+{
+ "Dashboard": "დაფა",
+ "Help": "დახმარება",
+ "New Update": "განახლება",
+ "Language": "ენა",
+ "Appearance": "ვიზუალი",
+ "Theme": "სტილი",
+ "Game": "თამაში",
+ "Version": "ვერსია",
+ "Quick Stats": "თვალის გადავლება",
+ "Up": "მაღლა",
+ "Pending": "მოლოდინი",
+ "languageName": "Georgian",
+ "Settings": "კონფიგურაცია",
+ "General": "ძირითადი",
+ "Check Update On GitHub": "GitHub_ზე განახლების შემოწმება",
+ "List": "სია",
+ "Add": "დამატება",
+ "Add New Monitor": "ახალი მონიტორის დამატება",
+ "Down": "დაბლა"
+}
diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json
new file mode 100644
index 000000000..3d5652db7
--- /dev/null
+++ b/src/lang/ko-KR.json
@@ -0,0 +1,753 @@
+{
+ "languageName": "한국어",
+ "checkEverySecond": "{0}초마다 확인해요",
+ "retryCheckEverySecond": "{0}초마다 다시 확인해요",
+ "retriesDescription": "서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수",
+ "ignoreTLSError": "HTTPS 웹사이트에서 TLS/SSL 오류 무시하기",
+ "upsideDownModeDescription": "서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거예요.",
+ "maxRedirectDescription": "최대 리다이렉트 횟수예요. 0을 입력하면 리다이렉트를 꺼요.",
+ "acceptedStatusCodesDescription": "응답 성공으로 간주할 상태 코드를 정해요.",
+ "passwordNotMatchMsg": "비밀번호 재입력이 일치하지 않아요.",
+ "notificationDescription": "모니터링에 알림을 설정할 수 있어요.",
+ "keywordDescription": "HTML 이나 JSON에서 대소문자를 구분해 키워드를 검색해요.",
+ "pauseDashboardHome": "일시 정지",
+ "deleteMonitorMsg": "정말 이 모니터링을 삭제할까요?",
+ "deleteNotificationMsg": "정말 이 알림을 모든 모니터링에서 삭제할까요?",
+ "resolverserverDescription": "Cloudflare가 기본 서버예요, 원한다면 언제나 다른 Resolver 서버로 변경할 수 있어요.",
+ "rrtypeDescription": "모니터링할 RR-Type을 선택해요",
+ "pauseMonitorMsg": "정말 이 모니터링을 일시 정지할까요?",
+ "enableDefaultNotificationDescription": "새로 추가하는 모든 모니터링에 이 알림을 기본적으로 활성화해요. 각 모니터에 대해 별도로 알림을 비활성화할 수 있어요.",
+ "clearEventsMsg": "정말 이 모니터링에 대한 모든 이벤트를 삭제할까요?",
+ "clearHeartbeatsMsg": "정말 이 모니터링에 대한 모든 하트비트를 삭제할까요?",
+ "confirmClearStatisticsMsg": "정말 모든 통계를 삭제할까요?",
+ "importHandleDescription": "이름이 같은 모든 모니터링이나 알림을 건너뛰려면 '기존값 건너뛰기'를 선택해주세요. '덮어쓰기'는 기존의 모든 모니터링과 알림을 삭제해요.",
+ "confirmImportMsg": "정말 백업을 가져올까요? 가져오기 옵션을 제대로 설정했는지 다시 확인해주세요.",
+ "twoFAVerifyLabel": "토큰을 입력해 2단계 인증이 작동하는지 확인해주세요",
+ "tokenValidSettingsMsg": "토큰이 유효해요! 이제 2단계 인증 설정을 저장할 수 있어요.",
+ "confirmEnableTwoFAMsg": "정말 2단계 인증을 활성화할까요?",
+ "confirmDisableTwoFAMsg": "정말 2단계 인증을 비활성화할까요?",
+ "Settings": "설정",
+ "Dashboard": "대시보드",
+ "New Update": "새로운 업데이트",
+ "Language": "언어",
+ "Appearance": "디스플레이",
+ "Theme": "테마",
+ "General": "일반",
+ "Version": "버전",
+ "Check Update On GitHub": "깃허브에서 업데이트 확인",
+ "List": "목록",
+ "Add": "추가",
+ "Add New Monitor": "새로운 모니터링 추가하기",
+ "Quick Stats": "간단한 정보",
+ "Up": "온라인",
+ "Down": "오프라인",
+ "Pending": "대기 중",
+ "Unknown": "알 수 없음",
+ "Pause": "일시 정지",
+ "Name": "이름",
+ "Status": "상태",
+ "DateTime": "날짜",
+ "Message": "메시지",
+ "No important events": "중요 이벤트 없음",
+ "Resume": "재개",
+ "Edit": "수정",
+ "Delete": "삭제",
+ "Current": "현재",
+ "Uptime": "업타임",
+ "Cert Exp.": "인증서 만료",
+ "day": "일",
+ "-day": "-일",
+ "hour": "시간",
+ "-hour": "-시간",
+ "Response": "응답",
+ "Ping": "핑",
+ "Monitor Type": "모니터링 종류",
+ "Keyword": "키워드",
+ "Friendly Name": "이름",
+ "URL": "URL",
+ "Hostname": "호스트네임",
+ "Port": "포트",
+ "Heartbeat Interval": "하트비트 주기",
+ "Retries": "재시도",
+ "Heartbeat Retry Interval": "하트비트 재시도 주기",
+ "Advanced": "고급",
+ "Upside Down Mode": "상태 반전 모드",
+ "Max. Redirects": "최대 리다이렉트",
+ "Accepted Status Codes": "응답 성공 상태 코드",
+ "Save": "저장",
+ "Notifications": "알림",
+ "Not available, please setup.": "존재하지 않아요, 새로운 거 하나 만드는 건 어때요?",
+ "Setup Notification": "알림 설정",
+ "Light": "화이트",
+ "Dark": "다크",
+ "Auto": "자동",
+ "Theme - Heartbeat Bar": "테마 - 하트비트 바",
+ "Normal": "기본값",
+ "Bottom": "가운데",
+ "None": "없애기",
+ "Timezone": "시간대",
+ "Search Engine Visibility": "검색 엔진 활성화",
+ "Allow indexing": "인덱싱 허용",
+ "Discourage search engines from indexing site": "검색 엔진 인덱싱 거부",
+ "Change Password": "비밀번호 변경",
+ "Current Password": "기존 비밀번호",
+ "New Password": "새 비밀번호",
+ "Repeat New Password": "새로운 비밀번호 재입력",
+ "Update Password": "비밀번호 변경",
+ "Disable Auth": "인증 비활성화",
+ "Enable Auth": "인증 활성화",
+ "disableauth.message1": "정말로 인증 기능을 끌까요 ?",
+ "disableauth.message2": "이 기능은 Cloudflare Access와 같은 서드파티 인증 을 Uptime Kuma 앞에 둔 사용자를 위한 기능이에요.",
+ "Please use this option carefully!": "신중하게 사용하세요!",
+ "Logout": "로그아웃",
+ "Leave": "나가기",
+ "I understand, please disable": "기능에 대해 이해했으니 꺼주세요.",
+ "Confirm": "확인",
+ "Yes": "확인",
+ "No": "취소",
+ "Username": "이름",
+ "Password": "비밀번호",
+ "Remember me": "비밀번호 기억하기",
+ "Login": "로그인",
+ "No Monitors, please": "모니터링이 현재 없어요,",
+ "add one": "한번 추가해보실래요?",
+ "Notification Type": "알림 종류",
+ "Email": "이메일",
+ "Test": "테스트",
+ "Certificate Info": "인증서 정보",
+ "Resolver Server": "Resolver 서버",
+ "Resource Record Type": "리소스 레코드 유형",
+ "Last Result": "최근 결과",
+ "Create your admin account": "관리자 계정 만들기",
+ "Repeat Password": "비밀번호 재입력",
+ "Import Backup": "백업 가져오기",
+ "Export Backup": "백업 내보내기",
+ "Export": "내보내기",
+ "Import": "가져오기",
+ "respTime": "응답 시간 (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "기본 알림으로 설정",
+ "Apply on all existing monitors": "기존 모니터링에 모두 적용하기",
+ "Create": "생성하기",
+ "Clear Data": "데이터 삭제",
+ "Events": "이벤트",
+ "Heartbeats": "하트비트",
+ "Auto Get": "자동 Get",
+ "backupDescription": "모든 모니터링과 알림을 JSON 파일 형식에 저장할 수 있어요.",
+ "backupDescription2": "히스토리와 이벤트 데이터는 포함되어 있지 않아요.",
+ "backupDescription3": "알림 토큰과 같은 보안 데이터가 내보내기 파일에 포함되어 있으므로 관리에 주의해주세요.",
+ "alertNoFile": "가져오기를 하기 위해 파일을 선택해주세요.",
+ "alertWrongFileType": "JSON 파일을 선택해주세요.",
+ "Clear all statistics": "모든 통계치 삭제",
+ "Skip existing": "기존값 건너뛰기",
+ "Overwrite": "덮어쓰기",
+ "Options": "옵션",
+ "Keep both": "두개 모두 보존",
+ "Verify Token": "토큰 검증",
+ "Setup 2FA": "2단계 인증 설정하기",
+ "Enable 2FA": "2단계 인증 활성화",
+ "Disable 2FA": "2단계 인증 비활성화",
+ "2FA Settings": "2단계 인증 설정",
+ "Two Factor Authentication": "2단계 인증",
+ "Active": "활성화",
+ "Inactive": "비활성화",
+ "Token": "토큰",
+ "Show URI": "URI 보기",
+ "Tags": "태그",
+ "Add New below or Select...": "아래 새롭게 추가 또는 선택…",
+ "Tag with this name already exist.": "같은 태그 이름이 이미 존재해요.",
+ "Tag with this value already exist.": "같은 값을 가진 태그가 이미 존재해요.",
+ "color": "색상",
+ "value (optional)": "값 (선택)",
+ "Gray": "회색",
+ "Red": "빨간색",
+ "Orange": "주황색",
+ "Green": "초록색",
+ "Blue": "파란색",
+ "Indigo": "남색",
+ "Purple": "보라색",
+ "Pink": "핑크색",
+ "Search...": "검색…",
+ "Avg. Ping": "평균 핑",
+ "Avg. Response": "평균 응답",
+ "Entry Page": "첫 페이지",
+ "statusPageNothing": "아무것도 없어요. 새로운 그룹 또는 모니터링을 추가해주세요.",
+ "No Services": "서비스 없음",
+ "All Systems Operational": "모든 시스템 정상",
+ "Partially Degraded Service": "일부 시스템 비정상",
+ "Degraded Service": "모든 시스템 비정상",
+ "Add Group": "그룹 추가",
+ "Add a monitor": "모니터링 추가",
+ "Edit Status Page": "상태 페이지 수정",
+ "Go to Dashboard": "대시보드로 가기",
+ "Status Page": "상태 페이지",
+ "Status Pages": "상태 페이지",
+ "defaultNotificationName": "내 {notification} 알림 ({number})",
+ "here": "여기",
+ "Required": "필수",
+ "telegram": "Telegram",
+ "Bot Token": "봇 토큰",
+ "wayToGetTelegramToken": "토큰은 여기서 얻을 수 있어요: {0}.",
+ "Chat ID": "채팅 ID",
+ "supportTelegramChatID": "개인 채팅 / 그룹 / 채널의 ID를 지원해요",
+ "wayToGetTelegramChatID": "봇에 메시지를 보내 채팅 ID를 얻고 밑에 URL로 이동해 chat_id를 볼 수 있어요",
+ "YOUR BOT TOKEN HERE": "봇 토큰",
+ "chatIDNotFound": "채팅 ID를 찾을 수 없어요. 먼저 봇에게 메시지를 보내주세요",
+ "webhook": "Webhook",
+ "Post URL": "Post URL",
+ "Content Type": "Content Type",
+ "webhookJsonDesc": "{0}은 Express.js와 같은 최신 HTTP 서버에 적합해요",
+ "webhookFormDataDesc": "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 JSON을 디코딩하면 되어요",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "없음 / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "TLS 에러 무시하기",
+ "From Email": "보내는 이메일",
+ "To Email": "받는 이메일",
+ "smtpCC": "참조",
+ "smtpBCC": "숨은 참조",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord 웹훅 URL",
+ "wayToGetDiscordURL": "서버 설정 -> 연동 -> 웹훅 보기 -> 새 웹훅 에서 얻을 수 있어요",
+ "Bot Display Name": "표시 이름",
+ "Prefix Custom Message": "접두사 메시지",
+ "Hello @everyone is...": "{'@'}everyone 서버 상태 알림이에요…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "웹훅 URL",
+ "wayToGetTeamsURL": "{0}에서 Webhook을 어떻게 만드는지 알아보세요.",
+ "signal": "Signal",
+ "Number": "숫자",
+ "Recipients": "받는 사람",
+ "needSignalAPI": "REST API를 사용하는 Signal 클라이언트가 있어야 해요.",
+ "wayToCheckSignalURL": "밑에 URL을 확인해 URL 설정 방법을 볼 수 있어요:",
+ "signalImportant": "경고: 받는 사람의 그룹과 숫자는 섞을 수 없어요!",
+ "gotify": "Gotify",
+ "Application Token": "애플리케이션 토큰",
+ "Server URL": "서버 URL",
+ "Priority": "우선 순위",
+ "slack": "Slack",
+ "Icon Emoji": "아이콘 이모지",
+ "Channel Name": "채널 이름",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Webhook에 대한 설명: {0}",
+ "aboutChannelName": "Webhook 채널을 무시하려면 {0} 채널 이름칸에 채널 이름을 입력해주세요. 예: #기타-채널",
+ "aboutKumaURL": "Uptime Kuma URL칸을 공백으로 두면 기본적으로 Github Project 페이지로 설정해요.",
+ "emojiCheatSheet": "이모지 목록 시트: {0}",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (50개 이상 알림 서비스)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "유저 키",
+ "Device": "디바이스",
+ "Message Title": "메시지 제목",
+ "Notification Sound": "알림음",
+ "More info on:": "자세한 정보: {0}",
+ "pushoverDesc1": "긴급 우선 순위 (2)는 재시도 사이에 기본적으로 30초의 타임아웃이 있고, 1시간 후에 만료되어요.",
+ "pushoverDesc2": "다른 장치에 알림을 보내려면 장치칸을 입력해주세요.",
+ "SMS Type": "SMS 종류",
+ "octopushTypePremium": "프리미엄 (빠름) - 알림 기능에 적합해요)",
+ "octopushTypeLowCost": "저렴한 요금 (느림) - 가끔 차단될 수 있어요)",
+ "Check octopush prices": "{0}에서 Octopush 가격을 확인할 수 있어요.",
+ "octopushPhoneNumber": "휴대전화 번호 (intl format, 예시: +821023456789) ",
+ "octopushSMSSender": "보내는 사람 이름 : 3-11개의 영숫자 및 여백공간 (a-z, A-Z, 0-9)",
+ "LunaSea Device ID": "LunaSea 장치 ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "예: {0}",
+ "Read more:": "더 보기: {0}",
+ "Status:": "상태: {0}",
+ "Read more": "더 보기",
+ "appriseInstalled": "Apprise가 설치되어있어요.",
+ "appriseNotInstalled": "Apprise가 설치되어있지 않아요. {0}",
+ "Access Token": "액세스 토큰",
+ "Channel access token": "채널 액세스 토큰",
+ "Line Developers Console": "Line 개발자 콘솔",
+ "lineDevConsoleTo": "Line 개발자 콘솔 - {0}",
+ "Basic Settings": "기본 설정 메뉴",
+ "User ID": "사용자 ID",
+ "Messaging API": "Messaging API 메뉴",
+ "wayToGetLineChannelToken": "먼저 {0}에 액세스하고, 공급자 및 채널 (Messaging API)을 만든 다음, 각 메뉴 밑에 언급된 메뉴에서 채널 액세스 토큰과 사용자 ID를 얻을 수 있어요.",
+ "Icon URL": "아이콘 URL",
+ "aboutIconURL": "\"아이콘 URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을 거예요.",
+ "aboutMattermostChannelName": "채널 이름을 입력하면 Webhook이 게시할 기본 채널을 재설정할 수 있어요. 이 설정은 Mattermost 웹훅 설정에서 활성화해야 해요. 예: #기타-채널",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - 저렴하지만 느리고 가끔 과부하에 걸려요. 폴란드 수신자만 사용할 수 있어요.",
+ "promosmsTypeFlash": "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시되어요. 폴란드 수신자만 사용할 수 있어요.",
+ "promosmsTypeFull": "SMS FULL - SMS 프리미엄 티어, 보내는 사람 이름을 먼저 등록해야 해요. 알림 기능에 적합해요.",
+ "promosmsTypeSpeed": "SMS SPEED - 시스템에서 가장 높은 우선순위예요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).",
+ "promosmsPhoneNumber": "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 되어요.)",
+ "promosmsSMSSender": "SMS 보내는 사람 이름 : 미리 등록된 이름 혹은 기본값 중 하나예요: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Primary Base URL": "기본 URL",
+ "Push URL": "Push URL",
+ "needPushEvery": "이 URL을 {0} 초 마다 호출할 수 있어요.",
+ "pushOptionalParams": "선택적 파라미터: {0}",
+ "emailCustomSubject": "커스텀 주제",
+ "clicksendsms": "ClickSend SMS",
+ "checkPrice": "{0} 가격 확인:",
+ "apiCredentials": "API 인증정보",
+ "octopushLegacyHint": "Octopush 레거시 버전 (2011-2020) 을 사용하시나요? 아니면 새 버전을 사용하시나요?",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "Homeserver URL (http(s):// 와 함께 적어주세요. 그리고 포트 번호는 선택적 입니다.)",
+ "Internal Room Id": "내부 방 ID",
+ "matrixDesc1": "Matrix 클라이언트 방 설정의 고급 섹션에서 내부 방 ID를 찾을 수 있어요. 내부 방 ID는 이렇게 생겼답니다: !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "사용자의 모든 방에 대한 엑세스가 허용될 수 있어서 새로운 사용자를 만들고 원하는 방에만 초대한 후 엑세스 토큰을 사용하는 것이 좋아요. {0} 이 명령어를 통해 엑세스 토큰을 얻을 수 있어요",
+ "Method": "메서드",
+ "Body": "Body",
+ "Headers": "헤더",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "요청 Headers의 JSON 형식이 올바르지 않아요: ",
+ "BodyInvalidFormat": "요청 Body의 JSON 형식이 올바르지 않아요: ",
+ "Monitor History": "모니터링 기록",
+ "clearDataOlderThan": "모니터링 기록을 {0}일 동안 저장해요.",
+ "PasswordsDoNotMatch": "비밀번호가 일치하지 않아요.",
+ "records": "records",
+ "One record": "One record",
+ "steamApiKeyDescription": "스팀 게임 서버를 모니터링하려면 Steam Web API 키가 필요해요. API 키는 하단 웹사이트에서 등록할 수 있어요: ",
+ "Current User": "현재 사용자",
+ "recent": "최근",
+ "Done": "완료",
+ "Info": "정보",
+ "Security": "보안",
+ "Steam API Key": "스팀 API 키",
+ "Shrink Database": "데이터베이스 축소",
+ "Pick a RR-Type...": "RR-Type을 골라주세요…",
+ "Pick Accepted Status Codes...": "상태 코드를 골라주세요…",
+ "Default": "기본",
+ "HTTP Options": "HTTP 옵션",
+ "Create Incident": "인시던트 만들기",
+ "Title": "제목",
+ "Content": "내용",
+ "Style": "스타일",
+ "info": "정보",
+ "warning": "주의",
+ "danger": "경고",
+ "primary": "기본",
+ "light": "화이트",
+ "dark": "다크",
+ "Post": "게시",
+ "Please input title and content": "제목과 내용을 작성해주세요",
+ "Created": "생성 날짜",
+ "Last Updated": "마지막 업데이트",
+ "Unpin": "제거",
+ "Switch to Light Theme": "화이트 테마로 전환",
+ "Switch to Dark Theme": "다크 테마로 전환",
+ "Show Tags": "태그 보이기",
+ "Hide Tags": "태그 숨기기",
+ "Description": "설명",
+ "No monitors available.": "모니터링이 없어요.",
+ "Add one": "추가하기",
+ "No Monitors": "모니터링 없음",
+ "Untitled Group": "이름없는 그룹",
+ "Services": "서비스",
+ "Discard": "취소",
+ "Cancel": "취소",
+ "Powered by": "Powered by",
+ "shrinkDatabaseDescription": "SQLite 데이터베이스 VACUUM을 트리거해요. 만약 데이터베이스가 1.10.0 버전 이후에 생성되었다면 AUTO_VACUUM이 설정되어 있어 이 작업은 필요 없을 거에요.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Usename (webapi_ 접두사 포함)",
+ "serwersmsAPIPassword": "API 비밀번호",
+ "serwersmsPhoneNumber": "휴대전화 번호",
+ "serwersmsSenderName": "보내는 사람 이름 (customer portal를 통해 가입된 정보)",
+ "stackfield": "Stackfield",
+ "dnsPortDescription": "DNS 서버 포트, 기본값은 53 이에요. 포트는 언제나 변경할 수 있어요.",
+ "PushByTechulus": "Push by Techulus",
+ "GoogleChat": "Google Chat (Google Workspace only)",
+ "topic": "Topic",
+ "topicExplanation": "모니터링할 MQTT Topic",
+ "successMessage": "성공 메시지",
+ "successMessageExplanation": "성공으로 간주되는 MQTT 메시지",
+ "error": "오류",
+ "critical": "크리티컬",
+ "Customize": "커스터마이즈",
+ "Custom Footer": "커스텀 Footer",
+ "Custom CSS": "커스텀 CSS",
+ "smtpDkimSettings": "DKIM 설정",
+ "smtpDkimDesc": "사용 방법은 DKIM {0}를 참조하세요.",
+ "documentation": "문서",
+ "smtpDkimDomain": "도메인 이름",
+ "smtpDkimKeySelector": "Key Selector",
+ "smtpDkimPrivateKey": "Private Key",
+ "smtpDkimHashAlgo": "해시 알고리즘 (선택)",
+ "smtpDkimheaderFieldNames": "서명할 헤더 키 (선택)",
+ "smtpDkimskipFields": "서명하지 않을 헤더 키 (선택)",
+ "wayToGetPagerDutyKey": "Service -> Service Directory -> (서비스 선택) -> Integrations -> Add integration. 에서 찾을 수 있어요. 자세히 알아보려면 {0}에서 \"Events API V2\"를 검색해봐요",
+ "Integration Key": "Integration 키",
+ "Integration URL": "Integration URL",
+ "Auto resolve or acknowledged": "자동 해결 혹은 승인",
+ "do nothing": "아무것도 하지 않기",
+ "auto acknowledged": "자동 승인 (acknowledged)",
+ "auto resolve": "자동 해결 (resolve)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "환경변수",
+ "alertaApiKey": "API 키",
+ "alertaAlertState": "경고 상태",
+ "alertaRecoverState": "해결된 상태",
+ "deleteStatusPageMsg": "정말 이 상태 페이지를 삭제할까요?",
+ "Proxies": "프록시",
+ "default": "Default",
+ "enabled": "활성화",
+ "setAsDefault": "기본 프록시로 설정",
+ "deleteProxyMsg": "정말 이 프록시를 모든 모니터링에서 삭제할까요?",
+ "proxyDescription": "프록시가 작동하려면 모니터에 할당되어야 해요.",
+ "enableProxyDescription": "이 프록시는 활성화될 때까지 영향을 미치지 않아요. 활성화 상태에 따라 모든 모니터에서 프록시를 일시정지할 수 있어요.",
+ "setAsDefaultProxyDescription": "새로 추가하는 모든 모니터링에 이 프록시를 기본적으로 활성화해요. 각 모니터에 대해 별도로 프록시를 비활성화할 수 있어요.",
+ "Certificate Chain": "인증서 체인",
+ "Valid": "유효",
+ "Invalid": "유효하지 않음",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "휴대전화 번호",
+ "TemplateCode": "템플릿 코드",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "SMS 템플릿은 다음과 같은 파라미터가 포함되어야 해요: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "WebHookUrl": "웹훅 URL",
+ "SecretKey": "Secret Key",
+ "For safety, must use secret key": "안전을 위해 꼭 Secret Key를 사용하세요.",
+ "Device Token": "기기 Token",
+ "Platform": "플랫폼",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "High",
+ "Retry": "재시도",
+ "Topic": "Topic",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "Setup Proxy": "프록시 설정",
+ "Proxy Protocol": "프록시 프로토콜",
+ "Proxy Server": "프록시 서버",
+ "Proxy server has authentication": "프록시 서버에 인증 절차가 있음",
+ "User": "사용자",
+ "Installed": "설치됨",
+ "Not installed": "설치되어 있지 않음",
+ "Running": "작동 중",
+ "Not running": "작동하고 있지 않음",
+ "Remove Token": "토큰 삭제",
+ "Start": "시작",
+ "Stop": "정지",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "새로운 상태 페이지 만들기",
+ "Slug": "주소",
+ "Accept characters:": "허용되는 문자열:",
+ "startOrEndWithOnly": "{0} 로 시작하거나 끝나야 해요",
+ "No consecutive dashes": "연속되는 대시는 허용되지 않아요",
+ "Next": "다음",
+ "The slug is already taken. Please choose another slug.": "이미 존재하는 주소에요. 다른 주소를 사용해 주세요.",
+ "No Proxy": "프록시 없음",
+ "Authentication": "인증",
+ "HTTP Basic Auth": "HTTP 인증",
+ "New Status Page": "새로운 상태 페이지",
+ "Page Not Found": "페이지를 찾을 수 없어요",
+ "Reverse Proxy": "리버스 프록시",
+ "Backup": "백업",
+ "About": "정보",
+ "wayToGetCloudflaredURL": "({0}에서 Cloudflare 다운로드 하기)",
+ "cloudflareWebsite": "Cloudflare 웹사이트",
+ "Message:": "메시지:",
+ "Don't know how to get the token? Please read the guide:": "토큰을 얻는 방법은 이 가이드를 확인해주세요:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Cloudflare Tunnel를 연결하면 현재 연결이 끊길 수 있어요. 정말 중지할까요? 비밀번호를 입력해 확인하세요.",
+ "Other Software": "다른 소프트웨어",
+ "For example: nginx, Apache and Traefik.": "nginx, Apache, Traefik 등을 사용할 수 있어요.",
+ "Please read": "이 문서를 참조하세요:",
+ "Subject:": "발급 대상:",
+ "Valid To:": "유효 기간:",
+ "Days Remaining:": "남은 일수:",
+ "Issuer:": "발급 기관:",
+ "Fingerprint:": "Fingerprint:",
+ "No status pages": "상태 페이지 없음",
+ "Domain Name Expiry Notification": "도메인 이름 만료 알림",
+ "Proxy": "프록시",
+ "Date Created": "생성된 날짜",
+ "onebotHttpAddress": "OneBot HTTP 주소",
+ "onebotMessageType": "OneBot 메시지 종류",
+ "onebotGroupMessage": "그룹 메시지",
+ "onebotPrivateMessage": "개인 메시지",
+ "onebotUserOrGroupId": "그룹/사용자 ID",
+ "onebotSafetyTips": "안전을 위해 Access 토큰을 설정하세요",
+ "PushDeer Key": "PushDeer 키",
+ "Footer Text": "Footer 문구",
+ "Show Powered By": "Powered By 문구 표시하기",
+ "Domain Names": "도메인 이름",
+ "signedInDisp": "{0} 로그인됨",
+ "signedInDispDisabled": "인증 비활성화됨.",
+ "Certificate Expiry Notification": "인증서 만료 알림",
+ "API Username": "API 사용자 이름",
+ "API Key": "API 키",
+ "Recipient Number": "받는 사람 번호",
+ "From Name/Number": "발신자 이름/번호",
+ "Leave blank to use a shared sender number.": "공유 발신자 번호를 사용하려면 공백으로 두세요.",
+ "Octopush API Version": "Octopush API 버전",
+ "Legacy Octopush-DM": "레거시 Octopush-DM",
+ "endpoint": "endpoint",
+ "octopushAPIKey": "제어판 HTTP API credentials 에서 \"API key\"",
+ "octopushLogin": "제어판 HTTP API credentials 에서 \"Login\"",
+ "promosmsLogin": "API 로그인 이름",
+ "promosmsPassword": "API 비밀번호",
+ "pushoversounds pushover": "Pushover (기본)",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "진동만",
+ "pushoversounds none": "없음 (무음)",
+ "pushyAPIKey": "비밀 API 키",
+ "pushyToken": "기기 토큰",
+ "Show update if available": "사용 가능한 경우에 업데이트 표시",
+ "Also check beta release": "베타 릴리즈 확인",
+ "Using a Reverse Proxy?": "리버스 프록시를 사용하시나요?",
+ "Check how to config it for WebSocket": "웹소켓 대한 설정 방법",
+ "Steam Game Server": "스팀 게임 서버",
+ "Most likely causes:": "원인:",
+ "The resource is no longer available.": "더 이상 사용할 수 없어요...",
+ "There might be a typing error in the address.": "주소에 오탈자가 있을 수 있어요.",
+ "What you can try:": "해결 방법:",
+ "Retype the address.": "주소 다시 입력하기.",
+ "Go back to the previous page.": "이전 페이지로 돌아가기.",
+ "Coming Soon": "Coming Soon",
+ "wayToGetClickSendSMSToken": "{0}에서 API 사용자 이름과 키를 얻을 수 있어요.",
+ "Custom Monitor Type": "커스텀 모니터링",
+ "deleteDockerHostMsg": "정말 이 도커 호스트를 모든 모니터링에서 삭제할까요?",
+ "trustProxyDescription": "'X-Forwarded-*' 헤더를 신뢰해요. 올바른 클라이언트 IP를 얻어야하고Uptime Kuma가 Nginx나 Apache 같은 프록시 뒤에 있다면 이 기능을 활성화해야 해요.",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "프로필 이름(왼쪽 아래)을 클릭하고 아래로 스크롤한 다음 토큰 만들기를 클릭하여 장기 액세스 토큰을 만들 수 있어요. ",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "그런 다음 동작을 선택해요, 예를 들어 장면을 RGB 조명이 빨간색인 곳으로 전환해요.",
+ "backupOutdatedWarning": "Deprecated: 많은 기능이 추가되었고 이 백업 기능은 유지 관리되지 않아 전체 백업을 생성하거나 복원할 수 없어요.",
+ "lastDay3": "매월 세 번째 마지막 날",
+ "maintenanceStatus-under-maintenance": "점검 중",
+ "dnsCacheDescription": "일부 IPv6 환경에서는 작동하지 않을 수 있어요. 문제가 발생하면 비활성화하세요.",
+ "dataRetentionTimeError": "저장 기간은 0 이상이어야 해요",
+ "wayToGetKookGuildID": "Kook 설정에서 'Developer Mode'를 활성화하고 길드를 우클릭해 ID를 얻어요",
+ "You can divide numbers with": "다음과 같이 숫자를 구분할 수 있어요:",
+ "goAlertInfo": "GoAlert는 온콜 스케줄링, 자동 에스컬레이션 및 알림(SMS 또는 음성 통화와 같은)을 위한 오픈 소스 응용 프로그램이에요. 올바른 사람, 올바른 방법, 적절한 시간에 자동으로 참여하세요! {0}",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "휴대전화 번호",
+ "smseagleRecipient": "받는 사람 (쉼표로 구분)",
+ "Maintenance": "점검",
+ "statusMaintenance": "점검 중",
+ "resendEveryXTimes": "{0}번마다 다시 보내요",
+ "resendDisabled": "다시 보내지 않아요",
+ "loadingError": "데이터를 가져올 수 없어요, 나중에 다시 시도하세요.",
+ "plugin": "플러그인",
+ "install": "설치",
+ "installing": "설치 중",
+ "uninstall": "삭제",
+ "uninstalling": "삭제 중",
+ "confirmUninstallPlugin": "정말 이 플러그인을 삭제할까요?",
+ "Guild ID": "길드 ID",
+ "Strategy": "계획",
+ "Free Mobile User Identifier": "무료 모바일 사용자 식별",
+ "Free Mobile API Key": "무료 모바일 API 키",
+ "Enable TLS": "TLS 활성화",
+ "Proto Service Name": "Proto 서비스 이름",
+ "Proto Method": "Proto 메서드",
+ "Proto Content": "Proto Content",
+ "Economy": "경제적",
+ "high": "높음",
+ "Lowcost": "저비용",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API 문서 ",
+ "Gateway Type": "게이트웨이 종류",
+ "SMSManager": "SMSManager",
+ "Base URL": "베이스 URL",
+ "goAlertIntegrationKeyInfo": "일반적으로 복사된 URL의 토큰 매개 변수 값을 \"aaaaaa-bbb-ccccc-ddd-eeeeeeeee\" 형식으로 서비스에 대한 일반 API 통합 키를 가져와요.",
+ "goAlert": "GoAlert",
+ "Bark Group": "Bark 그룹",
+ "Bark Sound": "Bark 소리",
+ "promosmsAllowLongSMS": "긴 SMS 허용",
+ "smseagleGroup": "전화번호부 그룹 이름",
+ "smseagleContact": "전화번호부 연락처 이름",
+ "smseagleRecipientType": "받는 사람 종류",
+ "smseagleToken": "API 엑세스 토큰",
+ "smseagleUrl": "SMSEagle 기기 URL",
+ "smseagleEncoding": "유니코드로 보내기",
+ "smseaglePriority": "메시지 우선 순위 (0-9, 기본값= 0)",
+ "ntfy Topic": "ntfy 주제",
+ "HomeAssistant": "홈 어시스턴트",
+ "RadiusSecretDescription": "클라이언트와 서버 간의 비밀 키",
+ "RadiusSecret": "Radius 비밀 키",
+ "RadiusCalledStationId": "접속 스테이션의 Id",
+ "RadiusCalledStationIdDescription": "접속 스테이션의 식별자",
+ "RadiusCallingStationId": "접속 요청 스테이션의 Id",
+ "RadiusCallingStationIdDescription": "접속 요청 스테이션의 식별자",
+ "Query": "쿼리",
+ "settingsCertificateExpiry": "TLS 인증서 만료",
+ "certificationExpiryDescription": "HTTPS 모니터링 TLS 인증서가 만료되면 알림을 활성화해요:",
+ "Setup Docker Host": "도커 호스트 설정",
+ "Docker Daemon": "도커 데몬",
+ "socket": "소켓",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "도커 컨테이너",
+ "Container Name / ID": "컨테이너 이름 / ID",
+ "Docker Host": "도커 호스트",
+ "Docker Hosts": "도커 호스트",
+ "Domain": "도메인",
+ "Connection String": "연결 문자열",
+ "Workstation": "워크스테이션",
+ "Packet Size": "패킷 크기",
+ "ZohoCliq": "ZohoCliq",
+ "disableCloudflaredNoAuthMsg": "인증 없음 모드이므로 암호가 필요하지 않아요.",
+ "wayToGetLineNotifyToken": "토큰은 여기서 얻을 수 있어요: {0}",
+ "Examples": "예시",
+ "Home Assistant URL": "홈 어시스턴트 URL",
+ "Long-Lived Access Token": "장기 엑세스 토큰",
+ "Notification Service": "알림 서비스",
+ "default: notify all devices": "기본값: 모든 장치에 알림",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "알림 서비스 목록은 홈 어시스턴트의 \"개발자 도구 > 서비스\"에서 \"알림\" 검색해 장치/전화 이름을 찾을 수 있어요.",
+ "Automations can optionally be triggered in Home Assistant:": "자동화는 Home Assistant에서 선택적으로 트리거될 수 있어요:",
+ "Connection Type": "연결 종류",
+ "Trigger type:": "트리거 종류:",
+ "Event type:": "이벤트 종류:",
+ "Event data:": "이벤트 데이터:",
+ "Frontend Version": "프론트엔드 버전",
+ "Frontend Version do not match backend version!": "프론트엔드 버전이 백엔드 버전과 일치하지 않아요!",
+ "confirmDeleteTagMsg": "정말 이 태그를 삭제할까요? 이 태그와 연결된 모니터링은 삭제되지 않아요.",
+ "infiniteRetention": "무한히 저장하려면 0으로 설정하세요.",
+ "backupRecommend": "대신 볼륨 또는 데이터 폴더 (./data/) 를 직접 백업하세요.",
+ "Optional": "선택",
+ "squadcast": "Squadcast",
+ "or": "혹은",
+ "recurringInterval": "반복 - 주기적",
+ "Recurring": "반복",
+ "strategyManual": "직접 활성/비활성화 하기",
+ "warningTimezone": "서버 표준 시간대를 사용해요",
+ "weekdayShortMon": "월",
+ "weekdayShortTue": "화",
+ "weekdayShortWed": "수",
+ "weekdayShortThu": "목",
+ "weekdayShortFri": "금",
+ "weekdayShortSat": "토",
+ "weekdayShortSun": "일",
+ "dayOfWeek": "요일",
+ "dayOfMonth": "날짜",
+ "lastDay": "마지막 날",
+ "lastDay1": "매월 마지막 날",
+ "lastDay2": "매월 마지막 날",
+ "lastDay4": "매월 네 번째 마지막 날",
+ "No Maintenance": "점검 일정이 없어요",
+ "pauseMaintenanceMsg": "정말 일시 정지 할까요?",
+ "maintenanceStatus-inactive": "비활성화",
+ "maintenanceStatus-scheduled": "예약됨",
+ "maintenanceStatus-ended": "완료됨",
+ "maintenanceStatus-unknown": "알 수 없음",
+ "Server Timezone": "서버 시간대",
+ "Display Timezone": "표시 시간대",
+ "statusPageMaintenanceEndDate": "종료",
+ "IconUrl": "아이콘 URL",
+ "Enable DNS Cache": "DNS 캐시 활성화",
+ "Enable": "활성화",
+ "Disable": "비활성화",
+ "Single Maintenance Window": "단일 점검",
+ "Maintenance Time Window of a Day": "점검 시간",
+ "Effective Date Range": "유효 날짜 범위 (옵션)",
+ "Schedule Maintenance": "점검 예약하기",
+ "Date and Time": "날짜 및 시간",
+ "DateTime Range": "날짜 시간 범위",
+ "wayToGetZohoCliqURL": "{0}에서 Webhook을 어떻게 만드는지 배울 수 있어요.",
+ "enableGRPCTls": "TLS 연결 gRPC 요청 전송 허용",
+ "grpcMethodDescription": "메서드 이름은 sayHello, check와 같은 카멜 케이스로 변환되어요.",
+ "deleteMaintenanceMsg": "정말 이 점검을 삭제할까요?",
+ "recurringIntervalMessage": "매일 한 번 실행 | {0}일마다 한 번 실행",
+ "affectedMonitorsDescription": "현재 점검에 영향을 받는 모니터링 선택하기",
+ "affectedStatusPages": "점검 메시지를 표시할 상태 페이지 선택하기",
+ "Kook": "Kook",
+ "atLeastOneMonitor": "최소 1개의 모니터링을 선택하세요",
+ "wayToGetKookBotToken": "{0} 에서 애플리케이션을 만들고 봇 토큰을 얻어요",
+ "Help": "도움말",
+ "Game": "게임",
+ "General Monitor Type": "일반 모니터링",
+ "Passive Monitor Type": "수동 모니터링",
+ "Specific Monitor Type": "특정 모니터링",
+ "Monitor": "모니터",
+ "Resend Notification if Down X times consecutively": "X번 중단될 경우 알림 다시 보내기",
+ "Schedule maintenance": "점검 예약하기",
+ "Affected Monitors": "영향을 받는 모니터링",
+ "Pick Affected Monitors...": "영향을 받는 모니터링 선택하기…",
+ "Start of maintenance": "점검 시작",
+ "All Status Pages": "모든 상태 페이지",
+ "Select status pages...": "상태 페이지 선택하기…",
+ "Custom": "커스텀",
+ "webhookAdditionalHeadersTitle": "추가 헤더",
+ "webhookAdditionalHeadersDesc": "웹훅과 함께 전송될 추가 헤더를 설정해요.",
+ "HTTP Headers": "HTTP 헤더",
+ "Trust Proxy": "프록시 신뢰",
+ "API Keys": "API 키",
+ "markdownSupported": "Markdown 문법이 지원됨",
+ "telegramMessageThreadID": "(선택) 메시지 스레드 ID",
+ "Clone": "복제",
+ "cloneOf": "{0}의 복제본",
+ "Clone Monitor": "모니터링 복제",
+ "telegramProtectContent": "포워딩/저장 보호",
+ "telegramProtectContentDescription": "활성화 할경우 텔레그램 봇 메시지는 포워딩 및 저장으로부터 보호됩니다.",
+ "telegramSendSilentlyDescription": "조용히 메시지를 보냅니다. 사용자들은 무음으로 알림을 받습니다.",
+ "telegramSendSilently": "무음 알림",
+ "Add New Tag": "태그 추가",
+ "Edit Tag": "태그 수정",
+ "Server Address": "서버 주소",
+ "Learn More": "자세히 알아보기",
+ "Continue": "계속",
+ "Key Added": "키 추가됨",
+ "No API Keys": "API 키 없음",
+ "disableAPIKeyMsg": "이 API키를 정말로 비활성화하시겠습니까?",
+ "deleteAPIKeyMsg": "이 API키를 정말로 삭제하시겠습니까?",
+ "Generate": "생성",
+ "Body Encoding": "Body 인코딩",
+ "Expiry": "만료",
+ "Expiry date": "만료 날짜",
+ "Don't expire": "만료되지 않음",
+ "notificationRegional": "지역별",
+ "Google Analytics ID": "Google Analytics ID",
+ "Add API Key": "API 키 추가",
+ "apiKeyAddedMsg": "API 키가 추가되었습니다. 다시 표시되지 않을 것이므로 메모해 두세요.",
+ "pagertreeCritical": "긴급",
+ "apiKey-active": "사용 가능",
+ "lunaseaUserID": "사용자 ID",
+ "apiKey-expired": "만료됨",
+ "Expires": "만료일",
+ "twilioAuthToken": "인증 토큰",
+ "twilioFromNumber": "번호에서",
+ "twilioToNumber": "번호에서",
+ "twilioAccountSID": "계정 SID",
+ "pagertreeUrgency": "긴급",
+ "sameAsServerTimezone": "서버 시간대로 설정하기",
+ "startDateTime": "시작 시간",
+ "endDateTime": "종료 시간",
+ "cronExpression": "Cron 값",
+ "cronSchedule": "스케줄: ",
+ "invalidCronExpression": "알수없는 Cron 값입니다: {0}",
+ "Add Another": "다른 항목 추가",
+ "apiKey-inactive": "비활성화",
+ "pagertreeIntegrationUrl": "Integration 링크",
+ "pagertreeLow": "낮음",
+ "pagertreeMedium": "중간",
+ "pagertreeHigh": "높음",
+ "pagertreeResolve": "자동으로 해결하기",
+ "pagertreeDoNothing": "아무것도 하지 않음",
+ "wayToGetPagerTreeIntegrationURL": "PagerTree에서 Uptime Kuma 통합을 생성한 후 Endpoint를 복사합니다. 전체 세부 정보 보기 {0}",
+ "lunaseaTarget": "대상",
+ "lunaseaDeviceID": "기기 ID",
+ "statusPageRefreshIn": "{0} 후 새로고침",
+ "telegramMessageThreadIDDescription": "포럼의 대상 메시지 쓰레드(주제)에 대한 선택적 고유 식별인, 포럼 관리자 그룹에만 해당",
+ "pagertreeSilent": "없음"
+}
diff --git a/src/lang/ml.json b/src/lang/ml.json
new file mode 100644
index 000000000..8cbfd148f
--- /dev/null
+++ b/src/lang/ml.json
@@ -0,0 +1,27 @@
+{
+ "Settings": "ക്രമീകരണം",
+ "Help": "സഹായം",
+ "New Update": "പുതിയ നവീകരണം",
+ "Language": "ഭാഷ",
+ "Appearance": "കാണപ്പെടുക",
+ "Theme": "ദൃശ്യക്രമീകരണം",
+ "General": "പൊതുവായത്",
+ "Version": "പതിപ്പ്",
+ "List": "പട്ടിക",
+ "Add": "ചേർക്കുക",
+ "Add New Monitor": "പുതിയ മോണിറ്റർ ചേർക്കുക",
+ "Quick Stats": "വേഗത്തിൽ ഇപ്പോളത്തെ അവസ്ഥ നോക്കുക",
+ "Up": "മുകളിൽ",
+ "Down": "താഴെ",
+ "statusMaintenance": "പരിപാലനം",
+ "Maintenance": "പരിപാലനം",
+ "Unknown": "അജ്ഞാതം",
+ "Passive Monitor Type": "പാർശമായ തിര നോട്ടം",
+ "Specific Monitor Type": "പ്രത്യേക തിര നോട്ടം",
+ "languageName": "മലയാളം",
+ "Dashboard": "നിയന്ത്രണോപകരണ സജ്ജീകരണം",
+ "Game": "കളികൾ",
+ "Check Update On GitHub": "പുതിയ മാറ്റങ്ങൾക്കായി GitHub നോക്കുക",
+ "Pending": "തീരുമാനം പ്രതീക്ഷിച്ചിരിക്കുന്ന",
+ "General Monitor Type": "പൊതുവരായ തിര നോട്ടം"
+}
diff --git a/src/lang/ms.json b/src/lang/ms.json
new file mode 100644
index 000000000..a90e84fc6
--- /dev/null
+++ b/src/lang/ms.json
@@ -0,0 +1,28 @@
+{
+ "Help": "Bantuan",
+ "New Update": "Kemaskini baharu",
+ "Appearance": "Penampilan",
+ "Theme": "Tema",
+ "General": "Umum",
+ "Game": "Permainan",
+ "Primary Base URL": "URL Pangkalan Utama",
+ "Version": "Versi",
+ "Add": "Menambah",
+ "Quick Stats": "Statistik ringkas",
+ "Up": "Dalam talian",
+ "Down": "Luar talian",
+ "Pending": "Belum selesai",
+ "statusMaintenance": "Membaiki",
+ "Maintenance": "Membaiki",
+ "Unknown": "Tidak ketahui",
+ "General Monitor Type": "Jenis monitor umum",
+ "Check Update On GitHub": "Semak kemas kini dalam GitHub",
+ "List": "Senarai",
+ "Specific Monitor Type": "Jenis monitor spesifik",
+ "markdownSupported": "Sintaks markdown disokong",
+ "languageName": "Bahasa inggeris",
+ "Dashboard": "Papan pemuka",
+ "Language": "Bahasa",
+ "Add New Monitor": "Tambah monitor baharu",
+ "Passive Monitor Type": "Jenis monitor pasif"
+}
diff --git a/src/lang/nb-NO.json b/src/lang/nb-NO.json
new file mode 100644
index 000000000..343a129a6
--- /dev/null
+++ b/src/lang/nb-NO.json
@@ -0,0 +1,294 @@
+{
+ "languageName": "Norsk",
+ "checkEverySecond": "Sjekk hvert {0} sekund.",
+ "retryCheckEverySecond": "Prøv igjen hvert {0} sekund.",
+ "retriesDescription": "Maksimalt antall forsøk før tjenesten er merket som nede og et varsel sendes",
+ "ignoreTLSError": "Ignorer TLS/SSL-feil for HTTPS-nettsteder",
+ "upsideDownModeDescription": "Snu statusen opp ned. Hvis tjenesten er tilgjengelig, er den NEDE.",
+ "maxRedirectDescription": "Maksimalt antall viderekoblinger å følge. Sett til 0 for å deaktivere viderekoblinger.",
+ "acceptedStatusCodesDescription": "Velg statuskoder som anses som en vellykket respons.",
+ "passwordNotMatchMsg": "Passordene stemmer ikke overens.",
+ "notificationDescription": "Varsler må tilordnes en overvåkning for å fungere.",
+ "keywordDescription": "Søk etter nøkkelord i ren HTML eller JSON. Søket skiller mellom store og små bokstaver.",
+ "pauseDashboardHome": "Pause",
+ "deleteMonitorMsg": "Er du sikker på at du vil slette denne overvåkningen?",
+ "deleteNotificationMsg": "Er du sikker på at du vil slette dette varselet for alle overvåkningene?",
+ "resolverserverDescription": "Cloudflare er standardserveren. Du kan endre DNS-serveren når som helst.",
+ "rrtypeDescription": "Velg RR-typen du vil overvåke",
+ "pauseMonitorMsg": "Er du sikker på at du vil sette på pause?",
+ "enableDefaultNotificationDescription": "For hver ny overvåkning vil denne varslingen være aktivert som standard. Du kan fortsatt deaktivere varselet separat for hver overvåkning.",
+ "clearEventsMsg": "Er du sikker på at du vil slette alle hendelser for denne overvåkningen?",
+ "clearHeartbeatsMsg": "Er du sikker på at du vil slette alle hjerteslag for denne overvåkningen?",
+ "confirmClearStatisticsMsg": "Er du sikker på at du vil slette ALL statistikk?",
+ "importHandleDescription": "Velg 'Hopp over eksisterende' hvis du vil hoppe over hver overvåkning eller varsel med samme navn. 'Overskriv' sletter alle eksisterende overvåkninger og varsler.",
+ "confirmImportMsg": "Er du sikker på at du vil importere denne sikkerhetskopien? Sørg for at du har valgt riktig importalternativ.",
+ "twoFAVerifyLabel": "Skriv inn tokenet ditt for å bekrefte at 2FA fungerer",
+ "tokenValidSettingsMsg": "Token er gyldig! Du kan nå lagre 2FA-innstillingene.",
+ "confirmEnableTwoFAMsg": "Er du sikker på at du vil aktivere 2FA?",
+ "confirmDisableTwoFAMsg": "Er du sikker på at du vil deaktivere 2FA?",
+ "Settings": "Innstillinger",
+ "Dashboard": "Dashboard",
+ "New Update": "Ny Oppdatering",
+ "Language": "Språk",
+ "Appearance": "Utseende",
+ "Theme": "Tema",
+ "General": "Generelt",
+ "Version": "Versjon",
+ "Check Update On GitHub": "Sjekk oppdatering på GitHub",
+ "List": "Liste",
+ "Add": "Legg til",
+ "Add New Monitor": "Legg til ny overvåkning",
+ "Quick Stats": "Statistikk",
+ "Up": "Oppe",
+ "Down": "Nede",
+ "Pending": "Avventer",
+ "Unknown": "Ukjent",
+ "Pause": "Pause",
+ "Name": "Navn",
+ "Status": "Status",
+ "DateTime": "Dato tid",
+ "Message": "Melding",
+ "No important events": "Ingen viktige hendelser",
+ "Resume": "Fortsett",
+ "Edit": "Rediger",
+ "Delete": "Slett",
+ "Current": "Nåværende",
+ "Uptime": "Oppetid",
+ "Cert Exp.": "Sertifikat utløper",
+ "day": "dag | dager",
+ "-day": "-dag",
+ "hour": "time",
+ "-hour": "-time",
+ "Response": "Respons",
+ "Ping": "Ping",
+ "Monitor Type": "Overvåkningstype",
+ "Keyword": "Stikkord",
+ "Friendly Name": "Vennlig navn",
+ "URL": "URL",
+ "Hostname": "Vertsnavn",
+ "Port": "Port",
+ "Heartbeat Interval": "Hjerteslagsintervall",
+ "Retries": "Forsøk",
+ "Heartbeat Retry Interval": "Hjerteslagsforsøkintervall",
+ "Advanced": "Avansert",
+ "Upside Down Mode": "Opp-ned-modus",
+ "Max. Redirects": "Maks. viderekoblinger",
+ "Accepted Status Codes": "Godkjente statuskoder",
+ "Save": "Lagre",
+ "Notifications": "Varsler",
+ "Not available, please setup.": "Ikke tilgjengelig, venligst sett opp.",
+ "Setup Notification": "Sett opp varsel",
+ "Light": "Lys",
+ "Dark": "Mørk",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
+ "Normal": "Normal",
+ "Bottom": "Bunn",
+ "None": "Ingen",
+ "Timezone": "Tidssone",
+ "Search Engine Visibility": "Søkemotor-synlighet",
+ "Allow indexing": "Tillat indeksering",
+ "Discourage search engines from indexing site": "Fraråd søkemotorer fra å indeksere nettstedet",
+ "Change Password": "Endre passord",
+ "Current Password": "Nåværende passord",
+ "New Password": "Nytt passord",
+ "Repeat New Password": "Gjenta nytt passord",
+ "Update Password": "Oppdater passord",
+ "Disable Auth": "Deaktiver autentisering",
+ "Enable Auth": "Aktiver autentisering",
+ "disableauth.message1": "Er du sikker på at du vil deaktiver autentisering ?",
+ "disableauth.message2": "Dette er for de som har tredjepartsautorisering foran Uptime Kuma, for eksempel Cloudflare Access.",
+ "Please use this option carefully!": "Vennligst vær forsiktig.",
+ "Logout": "Logg ut",
+ "Leave": "Forlat",
+ "I understand, please disable": "Jeg forstår, vennligst deaktiver",
+ "Confirm": "Bekreft",
+ "Yes": "Ja",
+ "No": "Nei",
+ "Username": "Brukernavn",
+ "Password": "Passord",
+ "Remember me": "Husk meg",
+ "Login": "Logg inn",
+ "No Monitors, please": "Ingen overvåkning, vær så snill",
+ "add one": "legg til en",
+ "Notification Type": "Meldingstype",
+ "Email": "E-post",
+ "Test": "Test",
+ "Certificate Info": "Sertifikatinformasjon",
+ "Resolver Server": "DNS-server",
+ "Resource Record Type": "DNS-posttype",
+ "Last Result": "Siste resultat",
+ "Create your admin account": "Opprett en administratorkonto",
+ "Repeat Password": "Gjenta passord",
+ "Import Backup": "Importer sikkerhetskopi",
+ "Export Backup": "Eksporter sikkerhetskopi",
+ "Export": "Eksporter",
+ "Import": "Importer",
+ "respTime": "Svartid (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Standard aktivert",
+ "Apply on all existing monitors": "Anvend for alle eksisterende overvåkninger",
+ "Create": "Opprett",
+ "Clear Data": "Slett data",
+ "Events": "Hendelser",
+ "Heartbeats": "Hjerteslag",
+ "Auto Get": "Auto Hent",
+ "backupDescription": "Du kan sikkerhetskopiere alle overvåkninger og alle varsler til en JSON-fil.",
+ "backupDescription2": "PS: Historikk og hendelsesdata er ikke inkludert.",
+ "backupDescription3": "Følsomme data som varslingstokener er inkludert i eksportfilen. Vennligst oppbevar dem sikkert.",
+ "alertNoFile": "Velg en fil som skal importeres.",
+ "alertWrongFileType": "Velg en JSON-fil.",
+ "Clear all statistics": "Fjern all statistikk",
+ "Skip existing": "Hopp over eksisterende",
+ "Overwrite": "Overskriv",
+ "Options": "Alternativer",
+ "Keep both": "Behold begge",
+ "Verify Token": "Bekreft token",
+ "Setup 2FA": "Konfigurer 2FA",
+ "Enable 2FA": "Aktiver 2FA",
+ "Disable 2FA": "Deaktiver 2FA",
+ "2FA Settings": "2FA Innstillinger",
+ "Two Factor Authentication": "To-faktor autentisering",
+ "Active": "Aktiv",
+ "Inactive": "Inaktiv",
+ "Token": "Token",
+ "Show URI": "Vis URI",
+ "Tags": "Etiketter",
+ "Add New below or Select...": "Legg til nytt nedenfor eller Velg ...",
+ "Tag with this name already exist.": "Etikett med dette navnet eksisterer allerede.",
+ "Tag with this value already exist.": "Etikett med denne verdien eksisterer allerede.",
+ "color": "farge",
+ "value (optional)": "verdi (valgfritt)",
+ "Gray": "Grå",
+ "Red": "Rød",
+ "Orange": "Oransje",
+ "Green": "Grønn",
+ "Blue": "Blå",
+ "Indigo": "Indigo",
+ "Purple": "Lilla",
+ "Pink": "Rosa",
+ "Search...": "Søk...",
+ "Avg. Ping": "Gj.sn. Ping",
+ "Avg. Response": "Gj.sn. Respons",
+ "Entry Page": "Oppføringsside",
+ "statusPageNothing": "Ingenting her, vennligst legg til en gruppe eller en overvåkning.",
+ "No Services": "Ingen tjenester",
+ "All Systems Operational": "Alle systemer i drift",
+ "Partially Degraded Service": "Delvis degradert tjeneste",
+ "Degraded Service": "Degradert tjeneste",
+ "Add Group": "Legg til gruppe",
+ "Add a monitor": "Legg til en overvåkning",
+ "Edit Status Page": "Rediger statusside",
+ "Go to Dashboard": "Gå til Dashboard",
+ "Status Page": "Statusside",
+ "Status Pages": "Statusside",
+ "defaultNotificationName": "Min {notification} varsling ({number})",
+ "here": "her",
+ "Required": "Obligatorisk",
+ "telegram": "Telegram",
+ "Bot Token": "Bot Token",
+ "wayToGetTelegramToken": "Du kan få et token fra {0}.",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID",
+ "wayToGetTelegramChatID": "Du kan få chat-ID-en din ved å sende en melding til boten og gå til denne nettadressen for å se chat_id:",
+ "YOUR BOT TOKEN HERE": "DITT BOT TOKEN HER",
+ "chatIDNotFound": "Chat-ID ble ikke funnet. Send en melding til denne boten først",
+ "webhook": "Webhook",
+ "Post URL": "Post URL",
+ "Content Type": "Innholdstype",
+ "webhookJsonDesc": "{0} er bra for alle moderne HTTP-servere som express.js",
+ "webhookFormDataDesc": "{multipart} er bra for PHP. JSON trenger å bli analysert med {decodeFunction}",
+ "smtp": "E-post (SMTP)",
+ "secureOptionNone": "None / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignorer TLS feilmelding",
+ "From Email": "Fra E-post",
+ "To Email": "Til E-post",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "Du kan få denne ved å gå til Serverinnstillinger -> Integrasjoner -> Opprett en Webhook",
+ "Bot Display Name": "Bot Visningsnavn",
+ "Prefix Custom Message": "Prefiks tilpasset melding",
+ "Hello @everyone is...": "Hei {'@'}everyone det er...",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Du kan lære hvordan du oppretter en webhook-URL {0}.",
+ "signal": "Signal",
+ "Number": "Nummer",
+ "Recipients": "Mottakere",
+ "needSignalAPI": "Du må ha en Signal-klient med REST API.",
+ "wayToCheckSignalURL": "Du kan sjekke denne nettadressen for å se hvordan du konfigurerer en:",
+ "signalImportant": "VIKTIG: Du kan ikke blande grupper og nummere i mottakere!",
+ "gotify": "Gotify",
+ "Application Token": "Application Token",
+ "Server URL": "Server URL",
+ "Priority": "Prioritet",
+ "slack": "Slack",
+ "Icon Emoji": "Icon Emoji",
+ "Channel Name": "Kanal navn",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Mer informasjon om webhooks på: {0}",
+ "aboutChannelName": "Skriv inn kanalnavnet på {0} Kanalnavn-feltet hvis du vil omgå webhook-kanalen. Eks: #other-channel",
+ "aboutKumaURL": "Hvis du lar Uptime Kuma URL feltet være blank, den blir som standard til Github-siden for dette prosjektet.",
+ "emojiCheatSheet": "Emoji cheat sheet: {0}",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Support 50+ Notification services)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Bruker-nøkkel",
+ "Device": "Enhet",
+ "Message Title": "Meldingstittel",
+ "Notification Sound": "Notifikasjonslyd",
+ "More info on:": "Mer info på: {0}",
+ "pushoverDesc1": "Nødsprioritet (2) har en standard 30 sekunders tidsavbrudd mellom forsøk og vil utløpe etter 1 time.",
+ "pushoverDesc2": "Hvis du vil sende varsler til forskjellige enheteter, fyll ut Enhet-feltet.",
+ "SMS Type": "SMS Type",
+ "octopushTypePremium": "Premium (Raskt - anbefalt for varsling)",
+ "octopushTypeLowCost": "Lav kostnad (Sakte, noen ganger blokkert av leverandør)",
+ "Check octopush prices": "Sjekk octopush priser {0}.",
+ "octopushPhoneNumber": "Telefonnummer (intl format, eg : +4791234567) ",
+ "octopushSMSSender": "SMS Avsendernavn : 3-11 alphanumeriske tegn og mellomrom (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Enhet ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Eksempel: {0}",
+ "Read more:": "Les mer: {0}",
+ "Status:": "Status: {0}",
+ "Read more": "Les mer",
+ "appriseInstalled": "Apprise er installert.",
+ "appriseNotInstalled": "Apprise ikke installert. {0}",
+ "Access Token": "Tilgangs-Token",
+ "Channel access token": "Kanal tilgangs-token",
+ "Line Developers Console": "Line Utviklserskonsoll",
+ "lineDevConsoleTo": "Line Utviklserskonsoll - {0}",
+ "Basic Settings": "Grunnleggende instillinger",
+ "User ID": "Bruker-ID",
+ "Messaging API": "Meldings-API",
+ "wayToGetLineChannelToken": "Først, få tilgang til {0}, lag en leverandør og kanal (Meldings-API), deretter kan du hente kanaltilgangs-token og bruker id fra menu-valgene nevnt over.",
+ "Icon URL": "Ikon URL",
+ "aboutIconURL": "Du kan gi en link til et bilde i \"Ikon URL\" for å overskrive det standard profilbildet. Vil ikke bli brukt hvis Ikon Emoji ikke er satt.",
+ "aboutMattermostChannelName": "Du kan overskrive standardkanalen som webhook-en poster i ved å skrive enn kanalnavnet i \"Kanalnavn\" feltet. Dette må være skrudd på i Mattermost webhook-instillingene. Eks: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - billig, men treg og ofte overbelastet. Begrenset til bare polske mottakere.",
+ "promosmsTypeFlash": "SMS FLASH - Melding vil automatisk vises på mottakker-enhet. Begrenset til bare polske mottakere.",
+ "promosmsTypeFull": "SMS FULL - Premuimnivå SMS. Du kan bruke dit avsendernavn (Du må registerere et navn først). Pålitelig for alle varslinger.",
+ "promosmsTypeSpeed": "SMS SPEED - Høyest prioritet i systemet.Veldig rask på pålitelig, men dyrt (omtrent det dobbeltet av SMS FULL pris).",
+ "promosmsPhoneNumber": "Telefonnummber (for polske mottakere. Du trenger ikke områdekode.)",
+ "promosmsSMSSender": "SMS Avsendernavn : Forhåndsregistert navn eller en av standardnavnene: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Help": "Hjelp",
+ "Game": "Spill",
+ "statusMaintenance": "Vedlikehold",
+ "Maintenance": "Maintenance",
+ "Passive Monitor Type": "Passiv Monitor Type",
+ "Specific Monitor Type": "Spesifik Monitor Type",
+ "General Monitor Type": "Generisk Monitor Type",
+ "markdownSupported": "Markdown syntax støttet",
+ "Resend Notification if Down X times consecutively": "Send notifikasjon på nytt dersom nede X antall ganger på rad"
+}
diff --git a/src/lang/nl-NL.json b/src/lang/nl-NL.json
new file mode 100644
index 000000000..09f97e853
--- /dev/null
+++ b/src/lang/nl-NL.json
@@ -0,0 +1,707 @@
+{
+ "languageName": "Nederlands",
+ "checkEverySecond": "Controleer elke {0} seconden",
+ "retriesDescription": "Maximum aantal nieuwe pogingen voordat de service wordt gemarkeerd als niet beschikbaar en er een melding wordt verzonden",
+ "ignoreTLSError": "Negeer TLS/SSL-fout voor HTTPS-websites",
+ "upsideDownModeDescription": "Draai de status om. Als de service bereikbaar is, zal OFFLINE getoond worden.",
+ "maxRedirectDescription": "Maximaal aantal te volgen omleidingen. Stel in op 0 om omleidingen uit te schakelen.",
+ "acceptedStatusCodesDescription": "Selecteer statuscodes die als een succesvol antwoord worden beschouwd.",
+ "passwordNotMatchMsg": "Het herhaalwachtwoord komt niet overeen.",
+ "notificationDescription": "Wijs a.u.b. een melding toe aan de monitor(s) om het te laten werken.",
+ "keywordDescription": "Zoek trefwoord in gewone html of JSON-response en het is hoofdlettergevoelig.",
+ "pauseDashboardHome": "Gepauzeerd",
+ "deleteMonitorMsg": "Weet u zeker dat u deze monitor wilt verwijderen?",
+ "deleteNotificationMsg": "Weet u zeker dat u deze melding voor alle monitoren wilt verwijderen?",
+ "resolverserverDescription": "Cloudflare is de standaardserver, u kunt de resolver server op elk moment wijzigen.",
+ "rrtypeDescription": "Selecteer het RR-type dat u wilt monitoren",
+ "pauseMonitorMsg": "Weet je zeker dat je wilt pauzeren?",
+ "enableDefaultNotificationDescription": "Voor elke nieuwe monitor wordt deze melding standaard ingeschakeld. U kunt de melding nog steeds afzonderlijk uitschakelen voor elke monitor.",
+ "clearEventsMsg": "Weet je zeker dat je alle evenementen voor deze monitor wilt verwijderen?",
+ "clearHeartbeatsMsg": "Weet je zeker dat je alle heartbeats voor deze monitor wilt verwijderen?",
+ "confirmClearStatisticsMsg": "Weet u zeker dat u alle statistieken wilt verwijderen?",
+ "twoFAVerifyLabel": "Voer uw 2FA controle token in voor verificatie:",
+ "tokenValidSettingsMsg": "Token is geldig! U kunt nu de 2FA-instellingen opslaan.",
+ "confirmEnableTwoFAMsg": "Weet je zeker dat je 2FA wilt inschakelen?",
+ "confirmDisableTwoFAMsg": "Weet je zeker dat je 2FA wilt uitschakelen?",
+ "Settings": "Instellingen",
+ "Dashboard": "Dashboard",
+ "New Update": "Nieuwe update",
+ "Language": "Taal",
+ "Appearance": "Weergave",
+ "Theme": "Thema",
+ "General": "Algemeen",
+ "Version": "Versie",
+ "Check Update On GitHub": "Controleer voor updates op GitHub",
+ "List": "Lijst",
+ "Add": "Toevoegen",
+ "Add New Monitor": "Nieuwe monitor toevoegen",
+ "Quick Stats": "Snelle statistieken",
+ "Up": "Online",
+ "Down": "Offline",
+ "Pending": "In afwachting",
+ "Unknown": "Onbekend",
+ "Pause": "Pauze",
+ "Name": "Naam",
+ "Status": "Status",
+ "DateTime": "Datum Tijd",
+ "Message": "Bericht",
+ "No important events": "Geen belangrijke gebeurtenissen",
+ "Resume": "Hervat",
+ "Edit": "Wijzigen",
+ "Delete": "Verwijderen",
+ "Current": "Huidig",
+ "Uptime": "Uptime",
+ "Cert Exp.": "Cert. verl.",
+ "day": "dag | dagen",
+ "-day": "-dag",
+ "hour": "uur",
+ "-hour": "-uur",
+ "Response": "Antwoord",
+ "Ping": "Ping",
+ "Monitor Type": "Monitortype",
+ "Keyword": "Trefwoord",
+ "Friendly Name": "Vriendelijke naam",
+ "URL": "URL",
+ "Hostname": "Hostnaam",
+ "Port": "Poort",
+ "Heartbeat Interval": "Hartslaginterval",
+ "Retries": "Pogingen",
+ "Advanced": "Geavanceerd",
+ "Upside Down Mode": "Ondersteboven modus",
+ "Max. Redirects": "Max. Omleidingen",
+ "Accepted Status Codes": "Geaccepteerde statuscodes",
+ "Save": "Opslaan",
+ "Notifications": "Meldingen",
+ "Not available, please setup.": "Niet beschikbaar, stel a.u.b. in.",
+ "Setup Notification": "Melding instellen",
+ "Light": "Licht",
+ "Dark": "Donker",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Thema - Hartslagbalk",
+ "Normal": "Normaal",
+ "Bottom": "Onderkant",
+ "None": "Geen",
+ "Timezone": "Tijdzone",
+ "Search Engine Visibility": "Zichtbaarheid voor zoekmachines",
+ "Allow indexing": "Indexering toestaan",
+ "Discourage search engines from indexing site": "Ontmoedig zoekmachines om de site te indexeren",
+ "Change Password": "Verander wachtwoord",
+ "Current Password": "Huidig wachtwoord",
+ "New Password": "Nieuw wachtwoord",
+ "Repeat New Password": "Herhaal nieuw wachtwoord",
+ "Update Password": "Vernieuw wachtwoord",
+ "Disable Auth": "Authenticatie uitschakelen",
+ "Enable Auth": "Authenticatie inschakelen",
+ "disableauth.message1": "Weet je zeker dat je authenticatie wilt uitschakelen ?",
+ "disableauth.message2": "Er zijn omstandigheden waarbij je authenticatie door derden wilt implementeren voor Uptime Kuma, zoals Cloudflare Access, Authelia of andere authenticatiemechanismen.",
+ "Please use this option carefully!": "Gebruik deze optie zorgvuldig!",
+ "Logout": "Uitloggen",
+ "Leave": "Vertrekken",
+ "I understand, please disable": "Ik begrijp het, schakel a.u.b. uit",
+ "Confirm": "Bevestigen",
+ "Yes": "Ja",
+ "No": "Nee",
+ "Username": "Gebruikersnaam",
+ "Password": "Wachtwoord",
+ "Remember me": "Wachtwoord onthouden",
+ "Login": "Inloggen",
+ "No Monitors, please": "Geen monitoren, alstublieft",
+ "add one": "voeg een toe",
+ "Notification Type": "Melding type",
+ "Email": "E-mail",
+ "Test": "Testen",
+ "Certificate Info": "Certificaat informatie",
+ "Resolver Server": "Resolver Server",
+ "Resource Record Type": "Type bronrecord",
+ "Last Result": "Laatste resultaat",
+ "Create your admin account": "Maak uw beheerdersaccount aan",
+ "Repeat Password": "Herhaal wachtwoord",
+ "Export": "Exporteren",
+ "Import": "Importeren",
+ "respTime": "reactietijd (ms)",
+ "notAvailableShort": "N.v.t.",
+ "Default enabled": "Standaard ingeschakeld",
+ "Apply on all existing monitors": "Pas toe op alle bestaande monitors",
+ "Create": "Aanmaken",
+ "Clear Data": "Data wissen",
+ "Events": "Gebeurtenissen",
+ "Heartbeats": "Heartbeats",
+ "Auto Get": "Auto Get",
+ "backupDescription": "U kunt een back-up maken van alle monitoren en alle meldingen in een JSON-bestand.",
+ "backupDescription2": "PS: Geschiedenis- en gebeurtenisgegevens zijn niet inbegrepen.",
+ "backupDescription3": "Gevoelige gegevens zoals melding tokens zijn opgenomen in het exportbestand, houd het veilig opgeslagen.",
+ "alertNoFile": "Selecteer een bestand om te importeren.",
+ "alertWrongFileType": "Selecteer een JSON-bestand.",
+ "Verify Token": "Controleer token",
+ "Setup 2FA": "2FA instellingen",
+ "Enable 2FA": "Schakel 2FA in",
+ "Disable 2FA": "Schakel 2FA uit",
+ "2FA Settings": "2FA-instellingen",
+ "Two Factor Authentication": "Two Factor Authenticatie",
+ "Active": "Actief",
+ "Inactive": "Inactief",
+ "Also apply to existing monitors": "Voeg ook toe aan bestaande monitors",
+ "Token": "Token",
+ "Show URI": "Toon URI",
+ "Clear all statistics": "Wis alle statistieken",
+ "retryCheckEverySecond": "Probeer elke {0} seconden",
+ "importHandleDescription": "Kies 'Sla bestaande over' als je elke monitor of melding met dezelfde naam wilt overslaan. Kies 'Overschrijf' als je elke monitor of notificatie wilt verwijderen.",
+ "confirmImportMsg": "Weet je zeker dat je dit bestand wilt importeren? Controleer of je de correcte importeer optie hebt geselecteerd.",
+ "Heartbeat Retry Interval": "Heartbeat Retry Interval",
+ "Import Backup": "Importeer Backup",
+ "Export Backup": "Exporteer Backup",
+ "Skip existing": "Sla bestaande over",
+ "Overwrite": "Overschrijf",
+ "Options": "Opties",
+ "Keep both": "Bewaar beide",
+ "Tags": "Labels",
+ "Add New below or Select...": "Voeg nieuwe toe of selecteer…",
+ "Tag with this name already exist.": "Label met deze naam bestaat al.",
+ "Tag with this value already exist.": "Label met deze waarde bestaat al.",
+ "color": "Kleur",
+ "value (optional)": "waarde (optioneel)",
+ "Gray": "Grijs",
+ "Red": "Rood",
+ "Orange": "Oranje",
+ "Green": "Groen",
+ "Blue": "Blauw",
+ "Indigo": "Indigo",
+ "Purple": "Paars",
+ "Pink": "Roze",
+ "Search...": "Zoeken…",
+ "Avg. Ping": "Gemiddelde ping",
+ "Avg. Response": "Gemiddelde response",
+ "Entry Page": "Entry Page",
+ "statusPageNothing": "Niets hier, voeg een groep of monitor toe.",
+ "No Services": "Geen diensten",
+ "All Systems Operational": "Alle systemen operationeel",
+ "Partially Degraded Service": "Gedeeltelijk verminderde prestaties",
+ "Degraded Service": "Verminderde prestaties",
+ "Add Group": "Voeg groep toe",
+ "Add a monitor": "Voeg monitor toe",
+ "Edit Status Page": "Wijzig status pagina",
+ "Go to Dashboard": "Ga naar Dashboard",
+ "Status Page": "Status Pagina",
+ "Status Pages": "Status Pagina",
+ "telegram": "Telegram",
+ "webhook": "Webhook",
+ "smtp": "Email (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Support 50+ Notification services)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "Method": "Methode",
+ "Body": "Body",
+ "Headers": "Headers",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "The request headers is geen geldige JSON: ",
+ "BodyInvalidFormat": "De request body is geen geldige JSON: ",
+ "Primary Base URL": "Hoofd Basis URL",
+ "Push URL": "Push URL",
+ "needPushEvery": "Je moet deze URL elke {0} seconden aanroepen.",
+ "pushOptionalParams": "Optionele parameters: {0}",
+ "defaultNotificationName": "Mijn {notification} Alert ({number})",
+ "here": "hier",
+ "Required": "Verplicht",
+ "Bot Token": "Bot Token",
+ "wayToGetTelegramToken": "Je kunt een token krijgen van {0}.",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Ondersteuning Directe Chat / Groep / Kanaal Chat ID",
+ "wayToGetTelegramChatID": "Je kunt je CHAT ID krijgen door een bericht te sturen naar de bot en naar deze URL te gaan om het chat_id te bekijken:",
+ "YOUR BOT TOKEN HERE": "DE BOT TOKEN HIER",
+ "chatIDNotFound": "Chat ID is niet gevonden; stuur eerst een bericht naar de bot",
+ "Post URL": "Post URL",
+ "Content Type": "Content Type",
+ "webhookJsonDesc": "{0} is goed voor een moderne HTTP server zoals Express.js",
+ "webhookFormDataDesc": "{multipart} is goed voor PHP. De JSON moet worden ontleed met {decodeFunction}",
+ "secureOptionNone": "Geen / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Negeer TLS Error",
+ "From Email": "Van Email",
+ "emailCustomSubject": "Aangepast Onderwerp",
+ "To Email": "Naar Email",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "Je kunt dit krijgen door te gaan naar Server Instellingen -> Integraties -> Bekijk webhooks -> Nieuwe webhook",
+ "Bot Display Name": "Bot Weergave Naam",
+ "Prefix Custom Message": "Prefix Aangepast Bericht",
+ "Hello @everyone is...": "Hallo {'@'}iedereen is…",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Je kunt hier leren hoe je een webhook URL kunt maken {0}.",
+ "Number": "Nummer",
+ "Recipients": "Ontvangers",
+ "needSignalAPI": "Je moet een signal client met REST API hebben.",
+ "wayToCheckSignalURL": "Je kunt op deze URL zien hoe je een kunt instellen:",
+ "signalImportant": "BELANGRIJK: Je kunt groepen en nummers niet mengen in ontvangers!",
+ "Application Token": "Applicatie Token",
+ "Server URL": "Server URL",
+ "Priority": "Prioriteit",
+ "Icon Emoji": "Icoon Emoji",
+ "Channel Name": "Kanaal Naam",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Meer info over Webhooks op: {0}",
+ "aboutChannelName": "Voer de kanaal naam in op {0} Kannaal Naam veld als je het Webhook kanaal wilt omzeilen. Bv: #other-channel",
+ "aboutKumaURL": "Als je de Uptime Kuma URL veld leeg laat, wordt standaard het GitHub project pagina weergegeven.",
+ "emojiCheatSheet": "Emoji cheat sheet: {0}",
+ "PushByTechulus": "Push door Techulus",
+ "clicksendsms": "ClickSend SMS",
+ "GoogleChat": "Google Chat (Google Workspace alleen)",
+ "User Key": "Gebruikers sleutel",
+ "Device": "Apparaat",
+ "Message Title": "Bericht Titel",
+ "Notification Sound": "Notificatie Geluid",
+ "More info on:": "Meer info op: {0}",
+ "pushoverDesc1": "Nood prioriteit (2) heeft standaard een 30 seconden timeout tussen pogingen en verloopt na 1 uur.",
+ "pushoverDesc2": "Vul het appraat veld in als je notificaties naar andere apparaten wilt versturen.",
+ "SMS Type": "SMS Type",
+ "octopushTypePremium": "Premium (Snel - aangeraden voor te alarmeren)",
+ "octopushTypeLowCost": "Low Cost (Langzaam - wordt soms geblokkeerd door operator)",
+ "checkPrice": "Controleer {0} prijzen:",
+ "apiCredentials": "API referenties",
+ "octopushLegacyHint": "Wil je de legacy versie van Octopush (2011-2020) gebruiken of de nieuwe versie?",
+ "Check octopush prices": "Controleer Octopush prijzen {0}.",
+ "octopushPhoneNumber": "Telefoon nummer (Int. formaat, eg : +33612345678) ",
+ "octopushSMSSender": "SMS zender naam : 3-11 alfanumerieke karakters en spatie (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Apparaat ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Voorbeeld: {0}",
+ "Read more:": "Lees meer: {0}",
+ "Status:": "Status: {0}",
+ "Read more": "Lees meer",
+ "appriseInstalled": "Apprise is geïnstalleerd.",
+ "appriseNotInstalled": "Apprise is niet geïnstalleerd. {0}",
+ "Access Token": "Access Token",
+ "Channel access token": "Kanaal access token",
+ "Line Developers Console": "Line Developers Console",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "Basis Instellingen",
+ "User ID": "Gebruiker ID",
+ "Messaging API": "Berichten API",
+ "wayToGetLineChannelToken": "Begin met {0} te openen, creëer een provider en kanaal (Messaging API), dan kun je de kanaal access token en gebruikers ID van de hierboven genoemde menu items krijgen.",
+ "Icon URL": "Icoon URL",
+ "aboutIconURL": "Je kunt een link om de standaard profiel afbeelding te overschrijving in \"Icoon URL\" meegeven. Dit wordt niet gebruikt als Icon Emoji is ingesteld.",
+ "aboutMattermostChannelName": "Je kunt het standaard kanaal dat de Webhook plaatst overschijven door de kanaal naam in te vullen in het \"Channel Name\" veld. Dit moet worden ingeschakeld in de Mattermost Webhook instellingen. Bv. #ander-kanaal",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - Goedkoop maar langzaam en vaak overbelast. Gelimiteerd tot Poolse ontvangers.",
+ "promosmsTypeFlash": "SMS FLASH - Berichten worden automatisch weergegeven op het apparaat van de ontvanger. Gelimiteerd tot Poolse ontvangers.",
+ "promosmsTypeFull": "SMS FULL - Premium tier van SMS, je kunt de ontvanger naam gebruiken (Je moet eerst de naam registreren). Betrouwbaar voor alarmeringen.",
+ "promosmsTypeSpeed": "SMS SPEED - Hoogste prioriteit in systeem. Is veel sneller en betrouwbaarder maar kost meer (ongeveer twee keer zoveel als volle SMS prijs).",
+ "promosmsPhoneNumber": "Telefoon nummer (voor Poolse ontvangers. Je kunt gebieds codes overslaan)",
+ "promosmsSMSSender": "SMS Ontvanger naam : Voor geregistreerde naam of een van de standaarden: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu Webhook URL",
+ "matrixHomeserverURL": "Homeserver URL (met http(s):// en optioneel poort)",
+ "Internal Room Id": "Interne Room ID",
+ "matrixDesc1": "Je kunt de interne room ID vinden door in de geavanceerde sectie van de room instellingen in je Matrix client te kijken. Het zou moeten uitzien als !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Het wordt ten zeerste aanbevolen om een nieuwe gebruiker aan te maken en niet de access token van je account te gebruiken, aangezien dit volledige toegang geeft tot je account en alle kamers waar je lid van bent. Maak in plaats daarvan een nieuwe gebruiker aan en nodig deze alleen uit voor de ruimte waarin je de melding wilt ontvangen. Je kunt de access token krijgen door het volgende uit te voeren {0}",
+ "Monitor History": "Monitor Geschiedenis",
+ "clearDataOlderThan": "Bewaar monitor geschiedenis voor {0} dagen.",
+ "PasswordsDoNotMatch": "Wachtwoorden komen niet overeen.",
+ "records": "records",
+ "One record": "Een record",
+ "steamApiKeyDescription": "Om een Steam Game Server te monitoren heb je een Steam Web-API key nodig. Je kunt hier je API key registreren: ",
+ "Current User": "Huidge Gebruiker",
+ "topic": "Onderwerp",
+ "topicExplanation": "MQTT onderwerp om te monitoren",
+ "successMessage": "Succesbericht",
+ "successMessageExplanation": "MQTT bericht dat als succes wordt beschouwd",
+ "recent": "Recent",
+ "Done": "Klaar",
+ "Info": "Info",
+ "Security": "Beveiliging",
+ "Steam API Key": "Steam API Sleutel",
+ "Shrink Database": "Verklein Database",
+ "Pick a RR-Type...": "Kies een RR-Type…",
+ "Pick Accepted Status Codes...": "Kies geaccepteerde Status Codes…",
+ "Default": "Standaard",
+ "HTTP Options": "HTTP Opties",
+ "Create Incident": "Creëer Incident",
+ "Title": "Titel",
+ "Content": "Content",
+ "Style": "Stijl",
+ "info": "info",
+ "warning": "waarschuwing",
+ "danger": "gevaar",
+ "primary": "primair",
+ "light": "licht",
+ "dark": "donker",
+ "Post": "Post",
+ "Please input title and content": "Voer alstublieft titel en content in",
+ "Created": "Gemaakt",
+ "Last Updated": "Laatst Bijgewerkt",
+ "Unpin": "Losmaken",
+ "Switch to Light Theme": "Wissel naar Licht Thema",
+ "Switch to Dark Theme": "Wissel naar Donker Thema",
+ "Show Tags": "Toon Labels",
+ "Hide Tags": "Verberg Labels",
+ "Description": "Beschrijving",
+ "No monitors available.": "Geen monitors beschikbaar.",
+ "Add one": "Voeg een toe",
+ "No Monitors": "Geen Monitors",
+ "Untitled Group": "Naamloze Groep",
+ "Services": "Diensten",
+ "Discard": "Weggooien",
+ "Cancel": "Annuleren",
+ "Powered by": "Mogelijk gemaakt door",
+ "shrinkDatabaseDescription": "Activeer database VACUUM voor SQLite. Als de database na 1.10.0 aangemaakt is, dan staat AUTO_VACUUM al aan en is deze actie niet nodig.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Gebruikersnaam (incl. webapi_ prefix)",
+ "serwersmsAPIPassword": "API Wachtwoord",
+ "serwersmsPhoneNumber": "Telefoon nummer",
+ "serwersmsSenderName": "SMS Zender Naam (geregistreerd via klant portaal)",
+ "stackfield": "Stackfield",
+ "Customize": "Aanpassen",
+ "Custom Footer": "Aangepaste Footer",
+ "Custom CSS": "Aangepaste CSS",
+ "smtpDkimSettings": "DKIM Instellingen",
+ "smtpDkimDesc": "Refereer alsjeblieft naar Nodemailer DKIM {0} voor gebruik.",
+ "documentation": "documentatie",
+ "smtpDkimDomain": "Domein Naam",
+ "smtpDkimKeySelector": "Sleutel Kiezer",
+ "smtpDkimPrivateKey": "Prive Sleutel",
+ "smtpDkimHashAlgo": "Hash Algoritme (Optioneel)",
+ "smtpDkimheaderFieldNames": "Header sleutels om te ondertekenen (Optioneel)",
+ "smtpDkimskipFields": "Header sleutels niet om te ondertekenen (Optioneel)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Eindpunt",
+ "alertaEnvironment": "Omgeving",
+ "alertaApiKey": "API Sleutel",
+ "alertaAlertState": "Alert Staat",
+ "alertaRecoverState": "Herstel Staat",
+ "deleteStatusPageMsg": "Weet je zeker je deze status pagina wilt verwijderen?",
+ "Proxies": "Proxies",
+ "default": "Standaard",
+ "enabled": "Ingeschakeld",
+ "setAsDefault": "Stel in als standaard",
+ "deleteProxyMsg": "Weet je zeker dat je deze proxy wilt verwijderen voor alle monitors?",
+ "proxyDescription": "Proxies moeten worden toegewezen aan een monitor om te functioneren.",
+ "enableProxyDescription": "Deze proxy heeft geen effect op monitor verzoeken totdat het is geactiveerd. Je kunt tijdelijk de proxy uitschakelen voor alle monitors voor activatie status.",
+ "setAsDefaultProxyDescription": "Deze proxy wordt standaard aangezet voor alle nieuwe monitors. Je kunt nog steeds de proxy apart uitschakelen voor elke monitor.",
+ "Certificate Chain": "Certificaatketen",
+ "Valid": "Geldig",
+ "Invalid": "Ongeldig",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "TelefoonNummers",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Sms sjabloon moet de volgende parameters bevatten: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "WebHookUrl": "Webhook URL",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "Voor de veiligheid moet je de secret key gebruiken",
+ "Device Token": "Apparaat Token",
+ "Platform": "Platform",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Hoog",
+ "Retry": "Opnieuw",
+ "Topic": "Onderwerp",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "Setup Proxy": "Proxy instellen",
+ "Proxy Protocol": "Proxy Protocol",
+ "Proxy Server": "Proxy Server",
+ "Proxy server has authentication": "Proxy server heeft authenticatie",
+ "User": "Gebruiker",
+ "Installed": "Geïnstalleerd",
+ "Not installed": "Niet geïnstalleerd",
+ "Running": "Actief",
+ "Not running": "Niet actief",
+ "Remove Token": "Verwijder Token",
+ "Start": "Start",
+ "Stop": "Stop",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Voeg nieuwe status pagina toe",
+ "Slug": "Slug",
+ "Accept characters:": "Geaccepteerde tekens:",
+ "startOrEndWithOnly": "Start of eindig alleen met {0}",
+ "No consecutive dashes": "Geen opeenvolgende streepjes",
+ "Next": "Volgende",
+ "The slug is already taken. Please choose another slug.": "De slug is al in gebruik. Kies een andere slug.",
+ "No Proxy": "Geen Proxy",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "Nieuwe Status Pagina",
+ "Page Not Found": "Pagina Niet gevonden",
+ "Reverse Proxy": "Reverse Proxy",
+ "Backup": "Backup",
+ "About": "Over",
+ "wayToGetCloudflaredURL": "(Download cloudflared van {0})",
+ "cloudflareWebsite": "Cloudflare Website",
+ "Message:": "Bericht:",
+ "Don't know how to get the token? Please read the guide:": "Lees de uitleg als je niet weet hoe je een token krijgt:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "De huidge verbinding kan worden verbroken als je momenteel bent verbonden met Cloudflare Tunnel. Weet je zeker dat je het wilt stoppen? Typ je huidige wachtwoord om het te bevestigen.",
+ "Other Software": "Andere Software",
+ "For example: nginx, Apache and Traefik.": "Bijvoorbeeld: nginx, Apache and Traefik.",
+ "Please read": "Lees alstublieft",
+ "Subject:": "Onderwerp:",
+ "Valid To:": "Geldig Tot:",
+ "Days Remaining:": "Dagen Resterend:",
+ "Issuer:": "Uitgever:",
+ "Fingerprint:": "Vingerafruk:",
+ "No status pages": "Geen status pagina's",
+ "Proxy": "Proxy",
+ "Date Created": "Datum Aangemaakt",
+ "onebotHttpAddress": "OneBot HTTP Adres",
+ "onebotMessageType": "OneBot Bericht Type",
+ "onebotGroupMessage": "Groep",
+ "onebotPrivateMessage": "Privé",
+ "onebotUserOrGroupId": "Groep/Gebruiker ID",
+ "onebotSafetyTips": "Voor de veiligheid moet een toegangssleutel worden ingesteld",
+ "PushDeer Key": "PushDeer Key",
+ "Footer Text": "Footer Tekst",
+ "Show Powered By": "Laat \"Mogeljik gemaakt door\" zien",
+ "Domain Names": "Domein Namen",
+ "pushoversounds pushover": "Pushover (standaard)",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Alleen trillen",
+ "pushoversounds none": "None (silent)",
+ "dnsPortDescription": "DNS-serverpoort. Standaard ingesteld op 53. Je kunt de poort op elk moment wijzigen.",
+ "error": "fout",
+ "critical": "kritisch",
+ "wayToGetPagerDutyKey": "Je kunt dit krijgen door naar Service -> Service Directory -> (Selecteer een service) -> Integraties -> Integratie toevoegen te gaan. Hier kunt u zoeken naar \"Events API V2\". Meer informatie {0}",
+ "Integration Key": "Integration Key",
+ "Integration URL": "Integration URL",
+ "Auto resolve or acknowledged": "Automatisch oplossen of bevestigen",
+ "do nothing": "niets doen",
+ "auto acknowledged": "automatisch bevestigen",
+ "auto resolve": "automatisch oplossen",
+ "Authentication": "authenticatie",
+ "signedInDisp": "Aangemeld als {0}",
+ "signedInDispDisabled": "Authenticatie uitgeschakeld.",
+ "Certificate Expiry Notification": "Melding over verlopen certificaat",
+ "Recipient Number": "Nummer ontvanger",
+ "From Name/Number": "Van naam/nummer",
+ "Leave blank to use a shared sender number.": "Laat leeg om een gedeeld afzendernummer te gebruiken.",
+ "endpoint": "endpoint",
+ "pushyAPIKey": "Secret API Key",
+ "pushyToken": "Device token",
+ "Show update if available": "Update weergeven indien beschikbaar",
+ "Also check beta release": "Controleer ook de bètaversies",
+ "Using a Reverse Proxy?": "Een reverse proxy gebruiken?",
+ "Check how to config it for WebSocket": "Controleer hoe je het configureert voor een WebSocket",
+ "Steam Game Server": "Steam gameserver",
+ "Most likely causes:": "Meest waarschijnlijke oorzaken:",
+ "The resource is no longer available.": "De paginabron is niet langer beschikbaar.",
+ "There might be a typing error in the address.": "Er zit een typefout in het de URL.",
+ "What you can try:": "Wat je kan proberen:",
+ "Retype the address.": "De URL controleren en/of opnnieuw typen.",
+ "Go back to the previous page.": "Terug naar de vorige pagina.",
+ "Coming Soon": "Binnenkort beschikbaar",
+ "wayToGetClickSendSMSToken": "Je kan een API Username en API Key krijgen vanuit {0} .",
+ "Connection String": "Connection String",
+ "Query": "Query",
+ "settingsCertificateExpiry": "TLS Certificate Expiry",
+ "certificationExpiryDescription": "Stuur een melding bij het verlopen van het HTTPS TLS certificaat in:",
+ "ntfy Topic": "ntfy Topic",
+ "Domain": "Domein",
+ "Workstation": "Werkstation",
+ "disableCloudflaredNoAuthMsg": "De \"Geen authenticatie\" modus staat aan, wachtwoord is niet vereist.",
+ "backupOutdatedWarning": "Deprecated: Er zijn een hoop nieuwe functies toegevoegd en daarom is de backup functie niet onderhouden, het is op dit moment niet mogelijk om een volledige backup te maken en te herstellen.",
+ "RadiusSecret": "Radius Secret",
+ "RadiusSecretDescription": "Shared Secret tussen client en server",
+ "API Key": "API Key",
+ "Connection Type": "Verbindingstype",
+ "Docker Daemon": "Docker Daemon",
+ "Trust Proxy": "Trust Proxy",
+ "Setup Docker Host": "Docker Host instellen",
+ "tcp": "TCP / HTTP",
+ "Optional": "Optioneel",
+ "socket": "Socket",
+ "Docker Container": "Docker Container",
+ "Container Name / ID": "Container Naam / ID",
+ "Docker Host": "Docker Host",
+ "Docker Hosts": "Docker Hosts",
+ "Packet Size": "Packet Grootte",
+ "wayToGetLineNotifyToken": "Je kan een Access Token van {0} krijgen",
+ "Examples": "Voorbeelden",
+ "Home Assistant URL": "Home Assistant URL",
+ "default: notify all devices": "Standaard: stuur melding naar alle apparaten",
+ "Automations can optionally be triggered in Home Assistant:": "Automations kunnen optioneel worden getriggerd in Home Assistant:",
+ "Event data:": "Event data:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Kies een actie, bijvoorbeeld het activeren van een scene.",
+ "Frontend Version": "Frontend Versie",
+ "Frontend Version do not match backend version!": "Frontend versie komt niet overeen niet met de backend versie!",
+ "backupRecommend": "In plaats daarvan, maak een backup van je Docker volume of de data map (./data/).",
+ "squadcast": "Squadcast",
+ "or": "of",
+ "recurringInterval": "Interval",
+ "Recurring": "Terugkerend",
+ "strategyManual": "Actief/Inactief handmatig",
+ "warningTimezone": "De tijdzone van de server wordt gebruikt",
+ "weekdayShortMon": "ma",
+ "weekdayShortTue": "di",
+ "weekdayShortWed": "wo",
+ "weekdayShortThu": "do",
+ "weekdayShortFri": "vr",
+ "weekdayShortSat": "za",
+ "weekdayShortSun": "zo",
+ "dayOfWeek": "Dag van de week",
+ "dayOfMonth": "Dag van de maand",
+ "lastDay": "Laatste dag",
+ "lastDay2": "1 na laatste dag van de maand",
+ "lastDay4": "3 na laatste dag van de maand",
+ "No Maintenance": "Geen onderhoud",
+ "pauseMaintenanceMsg": "Weet je zeker dat je wilt pauzeren?",
+ "maintenanceStatus-under-maintenance": "In onderhoud",
+ "maintenanceStatus-inactive": "Inactief",
+ "maintenanceStatus-scheduled": "Ingepland",
+ "maintenanceStatus-ended": "Beëindigd",
+ "Display Timezone": "Toon tijdzone",
+ "Server Timezone": "Server tijdzone",
+ "statusPageMaintenanceEndDate": "Einde",
+ "IconUrl": "Icoon URL",
+ "Enable DNS Cache": "DNS Cache inschakelen",
+ "Enable": "Inschakelen",
+ "Disable": "Uitschakelen",
+ "Single Maintenance Window": "Enkel onderhoudsperiode",
+ "Effective Date Range": "Effectieve periode",
+ "Schedule Maintenance": "Onderhoud inplannen",
+ "Date and Time": "Datum en tijd",
+ "DateTime Range": "Datum en tijd periode",
+ "wayToGetZohoCliqURL": "Via deze link kun je uitvinden hoe je een webhook URL maakt {0}.",
+ "dataRetentionTimeError": "Bewaarperiode moet 0 of groter zijn",
+ "infiniteRetention": "Stel in op 0 voor oneindige bewaarperiode.",
+ "enableGRPCTls": "Toestaan om gRPC aanvragen te sturen over TLS verbinding",
+ "deleteMaintenanceMsg": "Weet je zeker dat je dit onderhoud wilt verwijderen?",
+ "recurringIntervalMessage": "1 keer per dag uitvoeren | 1 keer per elke {0} dagen uitvoeren",
+ "affectedStatusPages": "Toon het onderhoudsbericht op de geselecteerde status pagina's",
+ "promosmsPassword": "API Wachtwoord",
+ "Kook": "Kook",
+ "high": "hoog",
+ "Base URL": "Base URL",
+ "goAlert": "GoAlert",
+ "Octopush API Version": "Octopush API versie",
+ "HomeAssistant": "Home Assistant",
+ "affectedMonitorsDescription": "Selecteer de monitors die zullen worden aangetast door het huidige onderhoud",
+ "Custom": "Aangepast",
+ "Affected Monitors": "Aangetaste monitors",
+ "Resend Notification if Down X times consequently": "Verzend offline melding X keer opnieuw bij blijvend offline",
+ "Monitor": "Monitor | Monitors",
+ "Start of maintenance": "Start van onderhoud",
+ "All Status Pages": "Alle status pagina's",
+ "Select status pages...": "Selecteer status pagina's…",
+ "API Username": "API Gebruikersnaam",
+ "Trigger type:": "Trigger type:",
+ "Event type:": "Event type:",
+ "Guild ID": "Guild ID",
+ "uninstalling": "Aan het verwijderen",
+ "Lowcost": "Lowcost",
+ "Economy": "Economy",
+ "webhookAdditionalHeadersTitle": "Extra Headers",
+ "webhookAdditionalHeadersDesc": "Voegt extra headers toe die meegestuurd worden met de webhook.",
+ "Help": "Hulp",
+ "Game": "Game",
+ "statusMaintenance": "Onderhoud",
+ "Maintenance": "Onderhoud",
+ "Passive Monitor Type": "Passieve Monitor Type",
+ "Pick Affected Monitors...": "Kies aangetaste monitors…",
+ "Specific Monitor Type": "Specifieke Monitor Type",
+ "promosmsLogin": "API Login naam",
+ "Schedule maintenance": "Onderhoud inplannen",
+ "resendEveryXTimes": "Verstuur elke {0} keer opnieuw",
+ "resendDisabled": "Opnieuw versturen uitgeschakeld",
+ "General Monitor Type": "Algemeen Monitor Type",
+ "Notification Service": "Melding diensten",
+ "uninstall": "Verwijderen",
+ "HTTP Headers": "HTTP Headers",
+ "Domain Name Expiry Notification": "Domeinnaam verlopen melding",
+ "deleteDockerHostMsg": "Weet je zeker dat je deze Docker host wilt verwijderen voor alle monitors?",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Een lijst van melding diensten kan worden gevonden in Home Assistant onder \"Developer Tools > Services\" en zoek voor \"notification\" om je apparaat/telefoon naam te vinden.",
+ "lastDay1": "Laatste dag van de maand",
+ "lastDay3": "2 na laatste dag van de maand",
+ "maintenanceStatus-unknown": "Onbekend",
+ "dnsCacheDescription": "Het werkt niet in sommige IPv6 omgevingen, schakel het uit als je problemen ervaart.",
+ "confirmDeleteTagMsg": "Weet je zeker dat je dit label wilt verwijderen? Monitors die gekoppeld zijn aan dit label worden niet verwijderd.",
+ "atLeastOneMonitor": "Selecteer tenminste 1 aangetaste monitor",
+ "Enable TLS": "TLS inschakelen",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "Telefoonnummer(s)",
+ "Custom Monitor Type": "Custom Monitor Type",
+ "trustProxyDescription": "'X-Forwarded-*' headers vertrouwen. Als je de correcte client IP wilt krijgen en de Uptime Kuma installatie is achter een proxy zoals Nginx of Apache, schakel dan dit in.",
+ "RadiusCalledStationId": "Called Station Id",
+ "RadiusCalledStationIdDescription": "Identifier of the called device",
+ "RadiusCallingStationId": "Calling Station Id",
+ "ZohoCliq": "ZohoCliq",
+ "Long-Lived Access Token": "Long-Lived Access Token",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token kan aangemaakt worden via je profiel naam (links onder) en door naar beneden te scrollen en te klikken op Token Aanmaken. ",
+ "Maintenance Time Window of a Day": "Onderhoud tijdsvak van een dag",
+ "octopushAPIKey": "\"API key\" van HTTP API inloggegevens van het controle paneel",
+ "octopushLogin": "\"Login\" van HTTP API inloggegevens controle paneel",
+ "grpcMethodDescription": "Methode naam moet in cammelCase formaat zijn zoals zegHallo, check, etc.",
+ "wayToGetKookBotToken": "Maak een applicatie en haal je bot token op bij {0}",
+ "wayToGetKookGuildID": "Switch naar 'Developer Mode' in de Kook instellingen, en klik met de rechter muisknop op de guild om de ID op te halen",
+ "Strategy": "Strategy",
+ "Free Mobile User Identifier": "Free Mobile User Identifier",
+ "Free Mobile API Key": "Free Mobile API Key",
+ "Proto Service Name": "Proto service naam",
+ "Proto Method": "Proto methode",
+ "Proto Content": "Proto inhoud",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API documentatie ",
+ "Gateway Type": "Gateway Type",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Je kunt nummers delen met",
+ "Bark Group": "Bark Group",
+ "Bark Sound": "Bark Sound",
+ "promosmsAllowLongSMS": "Sta lange SMS toe",
+ "smseagleRecipientType": "Ontvanger type",
+ "smseagleRecipient": "Ontvanger(s) (gescheiden met comma)",
+ "smseagleToken": "API access token",
+ "smseagleEncoding": "Stuur als Unicode",
+ "smseaglePriority": "Bericht prioriteit (0-9, standaard = 0)",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ "smseagleGroup": "Telefoonboek groep namen",
+ "Google Analytics ID": "Google Analytics ID",
+ "Edit Tag": "Tag bewerken",
+ "Server Address": "Server Adres",
+ "Learn More": "Meer leren",
+ "RadiusCallingStationIdDescription": "Identifier of the calling device",
+ "plugin": "Plugin | Plugins",
+ "installing": "Installeren",
+ "install": "Installeer",
+ "confirmUninstallPlugin": "Weet je zeker dat je deze plugin wilt verwijderen?",
+ "smseagleUrl": "SMSEagle apparaat URL",
+ "markdownSupported": "Markdown syntax ondersteund",
+ "Resend Notification if Down X times consecutively": "Melding x keer opnieuw sturen als monitor offline is",
+ "loadingError": "Kan de data niet ophalen, probeer het later opnieuw.",
+ "smseagleContact": "Telefoonboek contact namen",
+ "apiKey-active": "Actief",
+ "apiKey-expired": "Verlopen",
+ "pagertreeLow": "Laag",
+ "pagertreeHigh": "Hoog",
+ "Clone": "Dupliceer",
+ "cloneOf": "Duplicaat van {0}",
+ "Add New Tag": "Voeg nieuw label toe"
+}
diff --git a/src/lang/pl.json b/src/lang/pl.json
new file mode 100644
index 000000000..1f4bdf4e2
--- /dev/null
+++ b/src/lang/pl.json
@@ -0,0 +1,763 @@
+{
+ "languageName": "Polski",
+ "checkEverySecond": "Sprawdzaj co {0} sekund",
+ "retryCheckEverySecond": "Ponawiaj co {0} sekund",
+ "retriesDescription": "Maksymalna liczba powtórzeń, zanim usługa zostanie oznaczona jako niedostępna i zostanie wysłane powiadomienie",
+ "ignoreTLSError": "Ignoruj błąd TLS/SSL dla stron HTTPS",
+ "upsideDownModeDescription": "Odwróć status do góry nogami. Jeśli usługa jest osiągalna, to jest oznaczona jako niedostępna.",
+ "maxRedirectDescription": "Maksymalna liczba przekierowań do wykonania. Ustaw na 0, aby wyłączyć przekierowania.",
+ "acceptedStatusCodesDescription": "Wybierz kody stanu, które są uważane za prawidłową odpowiedź.",
+ "passwordNotMatchMsg": "Powtórzone hasło nie pasuje.",
+ "notificationDescription": "Proszę przypisać powiadomienie do monitora(ów), aby działało.",
+ "keywordDescription": "Wyszukiwanie słów kluczowych w zwykłym html lub odpowiedzi JSON. Wielkość liter ma znaczenie.",
+ "pauseDashboardHome": "Wstrzymane",
+ "deleteMonitorMsg": "Czy na pewno chcesz usunąć ten monitor?",
+ "deleteNotificationMsg": "Czy na pewno chcesz usunąć to powiadomienie dla wszystkich monitorów?",
+ "resolverserverDescription": "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w każdej chwili.",
+ "rrtypeDescription": "Wybierz rodzaj rekordu, który chcesz monitorować",
+ "pauseMonitorMsg": "Czy na pewno chcesz wstrzymać monitorowanie?",
+ "enableDefaultNotificationDescription": "Dla każdego nowego monitora to powiadomienie będzie domyślnie włączone. Nadal możesz wyłączyć powiadomienia osobno dla każdego monitora.",
+ "clearEventsMsg": "Jesteś pewien, że chcesz wyczyścić historię zdarzeń dla tego monitora?",
+ "clearHeartbeatsMsg": "Jesteś pewien, że chcesz wyczyścić historię bicia serca dla tego monitora?",
+ "confirmClearStatisticsMsg": "Jesteś pewien, że chcesz usunąć WSZYSTKIE statystyki?",
+ "importHandleDescription": "Wybierz 'Pomiń istniejące', jeśli chcesz pominąć każdy monitor lub powiadomienie o tej samej nazwie. 'Nadpisz' spowoduje usunięcie każdego istniejącego monitora i powiadomienia.",
+ "confirmImportMsg": "Czy na pewno chcesz zaimportować kopię zapasową? Upewnij się, że wybrałeś właściwą opcję importu.",
+ "twoFAVerifyLabel": "Proszę, podaj swój token 2FA, aby sprawdzić, czy 2FA działa:",
+ "tokenValidSettingsMsg": "Token jest prawidłowy! Teraz możesz zapisać ustawienia 2FA.",
+ "confirmEnableTwoFAMsg": "Jesteś pewien, że chcesz włączyć 2FA?",
+ "confirmDisableTwoFAMsg": "Jesteś pewien, że chcesz wyłączyć 2FA?",
+ "Settings": "Ustawienia",
+ "Dashboard": "Panel",
+ "New Update": "Nowa aktualizacja",
+ "Language": "Język",
+ "Appearance": "Wygląd",
+ "Theme": "Motyw",
+ "General": "Ogólne",
+ "Version": "Wersja",
+ "Check Update On GitHub": "Sprawdź aktualizację na GitHub",
+ "List": "Lista",
+ "Add": "Dodaj",
+ "Add New Monitor": "Dodaj monitor",
+ "Quick Stats": "Szybki podgląd statystyk",
+ "Up": "Online",
+ "Down": "Offline",
+ "Pending": "Oczekuje",
+ "Unknown": "Nieznane",
+ "Pause": "Wstrzymaj",
+ "Name": "Nazwa",
+ "Status": "Status",
+ "DateTime": "Data i godzina",
+ "Message": "Wiadomość",
+ "No important events": "Brak ważnych wydarzeń",
+ "Resume": "Wznów",
+ "Edit": "Edytuj",
+ "Delete": "Usuń",
+ "Current": "Aktualny",
+ "Uptime": "Czas pracy",
+ "Cert Exp.": "Certyfikat wygasa",
+ "day": "dzień | dni",
+ "-day": "dni",
+ "hour": "godzina",
+ "-hour": "godzin",
+ "Response": "Odpowiedź",
+ "Ping": "Ping",
+ "Monitor Type": "Rodzaj monitora",
+ "Keyword": "Słowo kluczowe",
+ "Friendly Name": "Przyjazna nazwa",
+ "URL": "URL",
+ "Hostname": "Nazwa hosta",
+ "Port": "Port",
+ "Heartbeat Interval": "Częstotliwość bicia serca",
+ "Retries": "Prób",
+ "Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca",
+ "Advanced": "Zaawansowane",
+ "Upside Down Mode": "Tryb odwrócony",
+ "Max. Redirects": "Maks. przekierowań",
+ "Accepted Status Codes": "Akceptowane kody statusu",
+ "Save": "Zapisz",
+ "Notifications": "Powiadomienia",
+ "Not available, please setup.": "Niedostępne, proszę skonfigurować.",
+ "Setup Notification": "Skonfiguruj powiadomienie",
+ "Light": "Jasny",
+ "Dark": "Ciemny",
+ "Auto": "Automatyczny",
+ "Theme - Heartbeat Bar": "Motyw - pasek bicia serca",
+ "Normal": "Domyślne",
+ "Bottom": "Na dole",
+ "None": "Brak",
+ "Timezone": "Strefa czasowa",
+ "Search Engine Visibility": "Widoczność w wyszukiwarce",
+ "Allow indexing": "Zezwól na indeksowanie",
+ "Discourage search engines from indexing site": "Zniechęcaj wyszukiwarki do indeksowania strony",
+ "Change Password": "Zmień hasło",
+ "Current Password": "Aktualne hasło",
+ "New Password": "Nowe hasło",
+ "Repeat New Password": "Powtórz nowe hasło",
+ "Update Password": "Zaktualizuj hasło",
+ "Disable Auth": "Wyłącz autoryzację",
+ "Enable Auth": "Włącz autoryzację",
+ "disableauth.message1": "Czy na pewno chcesz wyłączyć autoryzację ?",
+ "disableauth.message2": "Jest przeznaczony dla kogoś, kto ma autoryzację zewnętrzną przed Uptime Kuma, taką jak Cloudflare Access.",
+ "Please use this option carefully!": "Proszę używać tej opcji ostrożnie!",
+ "Logout": "Wyloguj",
+ "Leave": "Zostaw",
+ "I understand, please disable": "Rozumiem, proszę wyłączyć",
+ "Confirm": "Potwierdź",
+ "Yes": "Tak",
+ "No": "Nie",
+ "Username": "Nazwa użytkownika",
+ "Password": "Hasło",
+ "Remember me": "Zapamiętaj mnie",
+ "Login": "Zaloguj",
+ "No Monitors, please": "Brak monitorów, proszę",
+ "add one": "dodać jeden",
+ "Notification Type": "Rodzaj powiadomienia",
+ "Email": "E-mail",
+ "Test": "Test",
+ "Certificate Info": "Informacje o certyfikacie",
+ "Resolver Server": "Serwer rozwiązywania nazw",
+ "Resource Record Type": "Typ rekordu zasobów",
+ "Last Result": "Ostatni wynik",
+ "Create your admin account": "Utwórz swoje konto administratora",
+ "Repeat Password": "Powtórz hasło",
+ "Import Backup": "Importuj kopię zapasową",
+ "Export Backup": "Eksportuj kopię zapasową",
+ "Export": "Eksportuj",
+ "Import": "Importuj",
+ "respTime": "Czas odp. (ms)",
+ "notAvailableShort": "N/D",
+ "Default enabled": "Włącz domyślnie",
+ "Apply on all existing monitors": "Zastosuj do istniejących monitorów",
+ "Create": "Stwórz",
+ "Clear Data": "Usuń dane",
+ "Events": "Zdarzenia",
+ "Heartbeats": "Bicia serca",
+ "Auto Get": "Wykryj",
+ "backupDescription": "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień do pliku JSON.",
+ "backupDescription2": "PS: Historia i dane zdarzeń nie są uwzględniane.",
+ "backupDescription3": "Poufne dane, takie jak tokeny powiadomień, są zawarte w pliku eksportu, prosimy o ostrożne przechowywanie.",
+ "alertNoFile": "Wybierz plik do importu.",
+ "alertWrongFileType": "Proszę wybrać plik JSON.",
+ "Clear all statistics": "Wyczyść wszystkie statystyki",
+ "Skip existing": "Pomiń istniejące",
+ "Overwrite": "Nadpisz",
+ "Options": "Opcje",
+ "Keep both": "Zachowaj oba",
+ "Verify Token": "Zweryfikuj token",
+ "Setup 2FA": "Konfiguracja 2FA",
+ "Enable 2FA": "Włącz 2FA",
+ "Disable 2FA": "Wyłącz 2FA",
+ "2FA Settings": "Ustawienia 2FA",
+ "Two Factor Authentication": "Uwierzytelnienie dwuskładnikowe",
+ "Active": "Włączone",
+ "Inactive": "Wyłączone",
+ "Token": "Token",
+ "Show URI": "Pokaż URI",
+ "Tags": "Tagi",
+ "Add New below or Select...": "Dodaj nowy poniżej lub wybierz…",
+ "Tag with this name already exist.": "Tag o tej nazwie już istnieje.",
+ "Tag with this value already exist.": "Tag o tej wartości już istnieje.",
+ "color": "kolor",
+ "value (optional)": "wartość (opcjonalnie)",
+ "Gray": "Szary",
+ "Red": "Czerwony",
+ "Orange": "Pomarańczowy",
+ "Green": "Zielony",
+ "Blue": "Niebieski",
+ "Indigo": "Indygo",
+ "Purple": "Fioletowy",
+ "Pink": "Różowy",
+ "Search...": "Szukaj…",
+ "Avg. Ping": "Średni ping",
+ "Avg. Response": "Średnia odpowiedź",
+ "Entry Page": "Strona startowa",
+ "statusPageNothing": "Nic tu nie ma, dodaj grupę lub monitor.",
+ "No Services": "Brak usług",
+ "All Systems Operational": "Wszystkie systemy działają poprawnie",
+ "Partially Degraded Service": "Część usług nie działa",
+ "Degraded Service": "Usługa nie działa",
+ "Add Group": "Dodaj grupę",
+ "Add a monitor": "Dodaj monitor",
+ "Edit Status Page": "Edytuj stronę statusu",
+ "Go to Dashboard": "Idź do panelu",
+ "Status Page": "Strona statusu",
+ "Status Pages": "Strony statusów",
+ "defaultNotificationName": "Moje powiadomienie {notification} ({number})",
+ "here": "tutaj",
+ "Required": "Wymagane",
+ "telegram": "Telegram",
+ "Bot Token": "Token bota",
+ "wayToGetTelegramToken": "Token można uzyskać z {0}.",
+ "Chat ID": "Identyfikator czatu",
+ "supportTelegramChatID": "Czat wsparcia technicznego / Bezpośrednia rozmowa / Czat grupowy",
+ "wayToGetTelegramChatID": "Możesz uzyskać swój identyfikator czatu, wysyłając wiadomość do bota i przechodząc pod ten adres URL, aby wyświetlić identyfikator czatu:",
+ "YOUR BOT TOKEN HERE": "TWÓJ TOKEN BOTA",
+ "chatIDNotFound": "Identyfikator czatu nie znaleziony, najpierw napisz do bota",
+ "webhook": "Webhook",
+ "Post URL": "Adres URL",
+ "Content Type": "Rodzaj danych",
+ "webhookJsonDesc": "{0} jest dobry w przypadku serwerów HTTP, takich jak express.js",
+ "webhookFormDataDesc": "{multipart} jest dobry dla PHP, musisz jedynie przetworzyć dane przez {decodeFunction}",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "Brak / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Zignoruj błędy TLS",
+ "From Email": "Nadawca (OD)",
+ "To Email": "Odbiorca (DO)",
+ "smtpCC": "DW",
+ "smtpBCC": "UDW",
+ "discord": "Discord",
+ "Discord Webhook URL": "URL webhook Discorda",
+ "wayToGetDiscordURL": "Możesz go uzyskać, przechodząc do Ustawienia serwera -> Integracje -> Webhooki -> Tworzenie webhooka",
+ "Bot Display Name": "Wyświetlana nazwa bota",
+ "Prefix Custom Message": "Własny początek wiadomości",
+ "Hello @everyone is...": "Hej {'@'}everyone…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "URL webhooka",
+ "wayToGetTeamsURL": "Możesz dowiedzieć się, jak utworzyć adres url webhooka {0}.",
+ "signal": "Signal",
+ "Number": "Numer",
+ "Recipients": "Odbiorcy",
+ "needSignalAPI": "Musisz mieć klienta Signal z REST API.",
+ "wayToCheckSignalURL": "W celu dowiedzenia się, jak go skonfigurować, odwiedź poniższy link:",
+ "signalImportant": "UWAGA: Nie można mieszać nazw grup i numerów odbiorców!",
+ "gotify": "Gotify",
+ "Application Token": "Token aplikacji",
+ "Server URL": "Server URL",
+ "Priority": "Priorytet",
+ "slack": "Slack",
+ "Icon Emoji": "Ikona emoji",
+ "Channel Name": "Nazwa kanału",
+ "Uptime Kuma URL": "Adres Uptime Kuma",
+ "aboutWebhooks": "Więcej informacji na temat webhooków: {0}",
+ "aboutChannelName": "Podaj nazwę kanału {0} w polu Nazwa kanału, jeśli chcesz pominąć kanał webhooka. Np.: #inny-kanal",
+ "aboutKumaURL": "Jeśli pozostawisz pole Adres Uptime Kuma puste, domyślnie będzie to strona projektu na GitHub.",
+ "emojiCheatSheet": "Ściąga emoji: {0}",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push od Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (obsługuje 50+ usług powiadomień)",
+ "GoogleChat": "Google Chat (wyłącznie Google Workspace)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Klucz użytkownika",
+ "Device": "Urządzenie",
+ "Message Title": "Tytuł wiadomości",
+ "Notification Sound": "Dźwięk powiadomienia",
+ "More info on:": "Więcej informacji na: {0}",
+ "pushoverDesc1": "Priorytet awaryjny (2) ma domyślny 30-sekundowy limit czasu między kolejnymi próbami i wygaśnie po 1 godzinie.",
+ "pushoverDesc2": "Jeśli chcesz wysyłać powiadomienia na różne urządzenia, wypełnij pole Urządzenie.",
+ "SMS Type": "Rodzaj SMS",
+ "octopushTypePremium": "Premium (szybki - rekomendowany dla powiadomień)",
+ "octopushTypeLowCost": "Low Cost (wolny, czasami blokowany przez operatorów)",
+ "Check octopush prices": "Sprawdź ceny Octopush {0}.",
+ "octopushPhoneNumber": "Numer telefonu (format międzynarodowy np.: +33612345678) ",
+ "octopushSMSSender": "Nadawca SMS: 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)",
+ "LunaSea Device ID": "Identyfikator urządzenia LunaSea",
+ "Apprise URL": "URL Apprise",
+ "Example:": "Przykład: {0}",
+ "Read more:": "Czytaj dalej: {0}",
+ "Status:": "Status: {0}",
+ "Read more": "Czytaj dalej",
+ "appriseInstalled": "Apprise jest zainstalowane.",
+ "appriseNotInstalled": "Apprise nie zostało zainstalowane. {0}",
+ "Access Token": "Token dostępu",
+ "Channel access token": "Token dostępu kanału",
+ "Line Developers Console": "Konsola deweloperska Line",
+ "lineDevConsoleTo": "Konsola deweloperska Line - {0}",
+ "Basic Settings": "Ustawienia ogólne",
+ "User ID": "Identyfikator użytkownika",
+ "Messaging API": "API wiadomości",
+ "wayToGetLineChannelToken": "Najpierw uzyskaj dostęp do {0}, utwórz dostawcę i kanał (Messaging API), a następnie możesz uzyskać token dostępu do kanału i identyfikator użytkownika z wyżej wymienionych pozycji menu.",
+ "Icon URL": "Adres Ikony",
+ "aboutIconURL": "Możesz podać link do zdjęcia w \"Adres URL ikony\", aby zastąpić domyślne zdjęcie profilowe. Nie będzie używany, jeśli ustawiona jest ikona emoji.",
+ "aboutMattermostChannelName": "Możesz zastąpić domyślny kanał, na którym publikowane są posty webhooka, wpisując nazwę kanału w polu \"Nazwa kanału\". Należy to włączyć w ustawieniach webhooka Mattermost. Np.: #inny-kanał",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - tanie, lecz wolne. Dostępne tylko w Polsce.",
+ "promosmsTypeFlash": "SMS FLASH - wiadomość automatycznie wyświetli się na urządzeniu. Dostępne tylko w Polsce.",
+ "promosmsTypeFull": "SMS FULL - szybkie i dostępne międzynarodowo. Wersja premium usługi, która pozwala min. ustawić własną nazwę nadawcy.",
+ "promosmsTypeSpeed": "SMS SPEED - wysyłka priorytetowa, ma wszystkie zalety SMS FULL.",
+ "promosmsPhoneNumber": "Numer odbiorcy",
+ "promosmsSMSSender": "Nadawca SMS (wcześniej zatwierdzone nazwy z panelu PromoSMS)",
+ "promosmsAllowLongSMS": "Zezwól na długie SMSy",
+ "Primary Base URL": "Główny URL",
+ "Push URL": "Push URL",
+ "needPushEvery": "Powinieneś wywoływać ten URL co {0} sekund.",
+ "pushOptionalParams": "Parametry opcjonalne: {0}",
+ "emailCustomSubject": "Niestandardowy temat",
+ "checkPrice": "Sprawdź ceny {0}:",
+ "octopushLegacyHint": "Czy używasz starszej wersji Octopush (2011-2020) czy nowej wersji?",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "Adres URL serwera domowego (z http(s):// i opcjonalnie port)",
+ "Internal Room Id": "Wewnętrzne ID pokoju",
+ "matrixDesc1": "Możesz znaleźć wewnętrzne ID pokoju, patrząc w zaawansowanej sekcji ustawień pokoju w twoim kliencie Matrix. Powinien on wyglądać jak !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Jest wysoce zalecane, abyś stworzył nowego użytkownika i nie używał tokena dostępu swojego użytkownika Matrix, ponieważ pozwoli on na pełny dostęp do twojego konta i wszystkich pokoi, do których dołączyłeś. Zamiast tego, utwórz nowego użytkownika i zaproś go tylko do pokoju, w którym chcesz otrzymywać powiadomienia. Możesz uzyskać token dostępu przez uruchomienie {0}",
+ "Method": "Metoda",
+ "Body": "Treść",
+ "Headers": "Nagłówki",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Nagłówki żądania nie są w poprawnym formacie JSON: ",
+ "BodyInvalidFormat": "Treść żądania nie jest w poprawnym formacie JSON: ",
+ "Monitor History": "Historia monitorów",
+ "clearDataOlderThan": "Przechowuj dane dotyczące historii monitorowania {0} dni.",
+ "PasswordsDoNotMatch": "Hasła nie pasują.",
+ "records": "rekordy",
+ "One record": "Jeden rekord",
+ "steamApiKeyDescription": "Do monitorowania serwera gier Steam potrzebny jest klucz Steam Web-API. Możesz zarejestrować swój klucz API tutaj: ",
+ "Current User": "Aktualny użytkownik",
+ "topic": "Temat",
+ "topicExplanation": "Temat MQTT do monitorowania",
+ "successMessage": "Komunikat o powodzeniu",
+ "successMessageExplanation": "Komunikat MQTT, który zostanie uznany za powodzenie",
+ "recent": "Ostatnie",
+ "Done": "Zrobione",
+ "Info": "Info",
+ "Security": "Bezpieczeństwo",
+ "Steam API Key": "Klucz Steam API",
+ "Shrink Database": "Zmniejsz bazę danych",
+ "Pick a RR-Type...": "Wybierz typ RR…",
+ "Pick Accepted Status Codes...": "Wybierz akceptowalne kody statusu…",
+ "Default": "Domyślnie",
+ "HTTP Options": "Opcje HTTP",
+ "Create Incident": "Stwórz incydent",
+ "Title": "Tytuł",
+ "Content": "Treść",
+ "Style": "Styl",
+ "info": "info",
+ "warning": "ostrzeżenie",
+ "danger": "niebezpieczeństwo",
+ "primary": "podstawowy",
+ "light": "jasny",
+ "dark": "ciemny",
+ "Post": "Wyślij",
+ "Please input title and content": "Podaj tytuł i treść",
+ "Created": "Stworzony",
+ "Last Updated": "Ostatnio zaktualizowany",
+ "Unpin": "Odepnij",
+ "Switch to Light Theme": "Przełącz na jasny motyw",
+ "Switch to Dark Theme": "Przełącz na ciemny motyw",
+ "Show Tags": "Pokaż tagi",
+ "Hide Tags": "Ukryj tagi",
+ "Description": "Opis",
+ "No monitors available.": "Brak dostępnych monitorów.",
+ "Add one": "Dodaj jeden",
+ "No Monitors": "Brak monitorów",
+ "Untitled Group": "Nienazwana grupa",
+ "Services": "Usługi",
+ "Discard": "Odrzuć",
+ "Cancel": "Anuluj",
+ "Powered by": "Napędzane przez",
+ "shrinkDatabaseDescription": "Uruchom VACUUM na bazie SQLite. Jeżeli twoja baza została stworzona po wersji 1.10.0, to ma już włączoną opcję AUTO_VACUUM i stosowanie ręcznego oczyszczania nie jest potrzebne.",
+ "clicksendsms": "ClickSend SMS",
+ "apiCredentials": "Poświadczenia API",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "Nazwa użytkownika API (z prefiksem webapi_)",
+ "serwersmsAPIPassword": "Hasło API",
+ "serwersmsPhoneNumber": "Numer telefonu",
+ "serwersmsSenderName": "Nazwa nadawcy (zatwierdzona w panelu klienta)",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "Numer/y telefonu",
+ "smseagleGroup": "Grupa/y z Książki adresowej",
+ "smseagleContact": "Kontakt/y z Książki adresowej",
+ "smseagleRecipientType": "Typ odbiorcy",
+ "smseagleRecipient": "Odbiorca/y (wiele musi być oddzielone przecinkami)",
+ "smseagleToken": "Klucz dostępu API",
+ "smseagleUrl": "URL Twojego urządzenia SMSEagle",
+ "smseagleEncoding": "Wyślij jako Unicode",
+ "smseaglePriority": "Priorytet wiadomości (0-9, domyślnie = 0)",
+ "stackfield": "Stackfield",
+ "Customize": "Dostosuj",
+ "Custom Footer": "Niestandardowa stopka",
+ "Custom CSS": "Niestandardowy CSS",
+ "smtpDkimSettings": "Ustawienia DKIM",
+ "smtpDkimDesc": "Zapoznaj się z Nodemailer DKIM {0}, aby dowiedzieć się więcej.",
+ "documentation": "dokumentacja",
+ "smtpDkimDomain": "Nazwa domeny",
+ "smtpDkimKeySelector": "Selektor klucza",
+ "smtpDkimPrivateKey": "Klucz prywatny",
+ "smtpDkimHashAlgo": "Algorytm haszujący (opcjonalne)",
+ "smtpDkimheaderFieldNames": "Klucze nagłówka do podpisu (opcjonalne)",
+ "smtpDkimskipFields": "Klucze nagłówka do pominięcia (opcjonalne)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "Punkt końcowy API",
+ "alertaEnvironment": "Środowisko",
+ "alertaApiKey": "Klucz API",
+ "alertaAlertState": "Stan alarmowy",
+ "alertaRecoverState": "Stan odzyskania",
+ "deleteStatusPageMsg": "Jesteś pewien, że chcesz usunąć tę stronę statusów?",
+ "Proxies": "Proxy",
+ "default": "Domyślny",
+ "enabled": "Włączony",
+ "setAsDefault": "Ustaw jako domyślny",
+ "deleteProxyMsg": "Jesteś pewien, że chcesz usunąć proxy ze wszystkich monitorów?",
+ "proxyDescription": "Proxy muszą być przypisane do monitora, aby działały.",
+ "enableProxyDescription": "Ten serwer proxy nie będzie miał wpływu na żądania monitorów, dopóki nie zostanie aktywowany. Możesz kontrolować tymczasowe wyłączenie serwera proxy ze wszystkich monitorów za pomocą statusu aktywacji.",
+ "setAsDefaultProxyDescription": "Ten serwer proxy będzie domyślnie włączony dla nowych monitorów. Można go jednak wyłączyć osobno dla każdego monitora.",
+ "Certificate Chain": "Łańcuch certyfikatów",
+ "Valid": "Ważny",
+ "Invalid": "Nieważny",
+ "AccessKeyId": "ID klucza dostępu",
+ "SecretAccessKey": "AccessKey Sekret",
+ "PhoneNumbers": "Numery telefonów",
+ "TemplateCode": "Kod szablonu",
+ "SignName": "Podpis",
+ "Sms template must contain parameters: ": "Szablon sms musi posiadać parametry: ",
+ "Bark Endpoint": "Punkt końcowy Bark",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "Tajny klucz",
+ "For safety, must use secret key": "Ze względów bezpieczeństwa musisz użyć tajnego klucza",
+ "Device Token": "Token urządzenia",
+ "Platform": "Platforma",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Wysoki",
+ "Retry": "Ponów",
+ "Topic": "Temat",
+ "WeCom Bot Key": "Klucz bota WeCom",
+ "Setup Proxy": "Skonfiguruj proxy",
+ "Proxy Protocol": "Protokół proxy",
+ "Proxy Server": "Serwer proxy",
+ "Proxy server has authentication": "Serwer proxy ma autoryzację",
+ "User": "Użytkownik",
+ "Installed": "Zainstalowany",
+ "Not installed": "Nie zainstalowany",
+ "Running": "Działa",
+ "Not running": "Nie działa",
+ "Remove Token": "Usuń token",
+ "Start": "Start",
+ "Stop": "Stop",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Dodaj nową stronę statusów",
+ "Slug": "Symbol",
+ "Accept characters:": "Dozwolone znaki:",
+ "startOrEndWithOnly": "Zaczynające się i kończące wyłącznie {0} znakami",
+ "No consecutive dashes": "Bez powtarzających się myślników",
+ "Next": "Dalej",
+ "The slug is already taken. Please choose another slug.": "Ten symbol jest już zajęty. Proszę, wybierz inny.",
+ "No Proxy": "Bez proxy",
+ "Authentication": "Uwierzytelnianie",
+ "HTTP Basic Auth": "Podstawowa autoryzacja HTTP",
+ "New Status Page": "Nowa strona statusu",
+ "Page Not Found": "Strona nie została znaleziona",
+ "Reverse Proxy": "Zwrotny serwer proxy",
+ "Backup": "Backup",
+ "About": "O skrypcie",
+ "wayToGetCloudflaredURL": "(Pobierz cloudflared z {0})",
+ "cloudflareWebsite": "Strona Cloudflare",
+ "Message:": "Wiadomość:",
+ "Don't know how to get the token? Please read the guide:": "Nie wiesz jak uzyksać token? Przeczytaj proszę poradnik:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Bieżące połączenie może zostać utracone, jeśli aktualnie łączysz się przez tunel Cloudflare. Czy na pewno chcesz to przerwać? Wpisz swoje aktualne hasło, aby je potwierdzić.",
+ "Other Software": "Inne oprogramowanie",
+ "For example: nginx, Apache and Traefik.": "Na przykład: nginx, Apache i Traefik.",
+ "Please read": "Przeczytaj proszę",
+ "Subject:": "Temat:",
+ "Valid To:": "Ważny do:",
+ "Days Remaining:": "Pozostało dni:",
+ "Issuer:": "Wydawca:",
+ "Fingerprint:": "Odcisk palca:",
+ "No status pages": "Brak stron statusów",
+ "Domain Name Expiry Notification": "Powiadomienie o wygasaniu domeny",
+ "Proxy": "Proxy",
+ "Date Created": "Data stworzenia",
+ "onebotHttpAddress": "Adres HTTP OneBot",
+ "onebotMessageType": "Rodzaj wiadomości OneBot",
+ "onebotGroupMessage": "Grupowa",
+ "onebotPrivateMessage": "Prywatna",
+ "onebotUserOrGroupId": "ID Grupy/Użytkownika",
+ "onebotSafetyTips": "Ze względów bezpieczeństwa musisz ustawić token dostępu",
+ "PushDeer Key": "Klucz PushDeer",
+ "Footer Text": "Treść stopki",
+ "Show Powered By": "Pokaż co napędza stronę",
+ "Domain Names": "Domeny",
+ "signedInDisp": "Zalogowany jako {0}",
+ "signedInDispDisabled": "Autoryzacja wyłączona.",
+ "resendEveryXTimes": "Wysyłaj ponownie co {0} razy",
+ "resendDisabled": "Ponowne wysyłanie jest wyłączone",
+ "Maintenance": "Konserwacja",
+ "statusMaintenance": "Konserwacja",
+ "Schedule maintenance": "Planowanie konserwacji",
+ "Affected Monitors": "Monitory dotknięte problemem",
+ "Pick Affected Monitors...": "Wybierz monitory, których to dotyczy…",
+ "Start of maintenance": "Rozpoczęcie konserwacji",
+ "All Status Pages": "Wszystkie strony statusu",
+ "Select status pages...": "Wybierz strony statusu…",
+ "recurringIntervalMessage": "Uruchom raz dziennie | Uruchom raz na {0} dni",
+ "affectedMonitorsDescription": "Wybierz monitory, których dotyczy bieżąca konserwacja",
+ "affectedStatusPages": "Pokaż ten komunikat o konserwacji na wybranych stronach statusu",
+ "atLeastOneMonitor": "Wybierz co najmniej jeden monitor, którego dotyczy problem",
+ "deleteMaintenanceMsg": "Czy na pewno chcesz usunąć tę konserwację?",
+ "dnsPortDescription": "Port serwera DNS. Domyślnie 53. Możesz zmienić port w dowolnym momencie.",
+ "Resend Notification if Down X times consecutively": "Wyślij ponownie powiadomienie, jeśli nie działa X razy z rzędu",
+ "error": "błąd",
+ "critical": "krytyczny",
+ "wayToGetPagerDutyKey": "Możesz to uzyskać, przechodząc do Service -> Service Directory -> (wybierz usługę) -> Integrations -> Add integration. Tutaj możesz wyszukać \"Events API V2\". Więcej informacji {0}",
+ "Integration Key": "Klucz integracji",
+ "Integration URL": "Adres URL integracji",
+ "Auto resolve or acknowledged": "Automatycznie rozwiązany lub potwierdzony",
+ "do nothing": "nie rób nic",
+ "auto acknowledged": "auto potwierdzony",
+ "auto resolve": "automatycznie rozwiązany",
+ "Bark Group": "Grupa Bark",
+ "Bark Sound": "Dźwięk Bark",
+ "HTTP Headers": "Nagłówki HTTP",
+ "Trust Proxy": "Ufaj proxy",
+ "HomeAssistant": "Asystent domowy",
+ "RadiusSecret": "Sekretny klucz Radius",
+ "RadiusSecretDescription": "Współdzielony sekretny klucz pomiędzy klientem a serwerem",
+ "RadiusCalledStationId": "Id stacji wywoływanej",
+ "RadiusCalledStationIdDescription": "Identyfikator wywoływanego urządzenia",
+ "RadiusCallingStationId": "Id stacji wywoławczej",
+ "RadiusCallingStationIdDescription": "Identyfikator urządzenia wywołującego",
+ "Certificate Expiry Notification": "Powiadomienie o wygaśnięciu certyfikatu",
+ "API Username": "Nazwa użytkownika API",
+ "API Key": "Klucz API",
+ "Recipient Number": "Numer odbiorcy",
+ "From Name/Number": "Od nazwa/numer",
+ "Leave blank to use a shared sender number.": "Pozostaw puste, aby użyć wspólnego numeru nadawcy.",
+ "Octopush API Version": "Wersja API Octopush",
+ "Legacy Octopush-DM": "Starsze Octopush-DM",
+ "endpoint": "punkt końcowy",
+ "octopushAPIKey": "\"API key\" z poświadczeń HTTP API w panelu sterowania",
+ "octopushLogin": "\"Login\" z poświadczeń HTTP API w panelu sterowania",
+ "promosmsLogin": "Nazwa logowania API",
+ "promosmsPassword": "Hasło API",
+ "pushoversounds pushover": "Pushover (domyślny)",
+ "pushoversounds bike": "Rower",
+ "pushoversounds bugle": "chrząszcz",
+ "pushoversounds cashregister": "Kasa fiskalna",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Kosmiczny",
+ "pushoversounds falling": "Spadek",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Przychodzące",
+ "pushoversounds intermission": "Przerwa",
+ "pushoversounds magic": "Magia",
+ "pushoversounds mechanical": "Mechaniczny",
+ "pushoversounds pianobar": "fortepianowy klawisz",
+ "pushoversounds siren": "Syrena",
+ "pushoversounds spacealarm": "Alarm kosmiczny",
+ "pushoversounds tugboat": "Holownik",
+ "pushoversounds alien": "Alien Alarm (długie)",
+ "pushoversounds climb": "Climb (długie)",
+ "pushoversounds persistent": "Persistent (długie)",
+ "pushoversounds echo": "Pushover Echo (długie)",
+ "pushoversounds updown": "Up Down (długie)",
+ "pushoversounds vibrate": "Tylko wibracje",
+ "pushoversounds none": "Brak (cisza)",
+ "pushyAPIKey": "Tajny klucz API",
+ "pushyToken": "Token urządzenia",
+ "Show update if available": "Pokaż aktualizację, jeśli jest dostępna",
+ "Also check beta release": "Sprawdź również wydanie beta",
+ "Using a Reverse Proxy?": "Używasz odwróconego proxy?",
+ "Check how to config it for WebSocket": "Sprawdź jak go skonfigurować dla WebSocket",
+ "Steam Game Server": "Serwer gry Steam",
+ "Most likely causes:": "Najbardziej prawdopodobne przyczyny:",
+ "The resource is no longer available.": "Zasób nie jest już dostępny.",
+ "There might be a typing error in the address.": "W adresie może być błąd w pisowni.",
+ "What you can try:": "Co możesz spróbować:",
+ "Retype the address.": "Ponownie wpisz adres.",
+ "Go back to the previous page.": "Wróć do poprzedniej strony.",
+ "Coming Soon": "Wkrótce",
+ "wayToGetClickSendSMSToken": "Możesz uzyskać nazwę użytkownika API i klucz API z {0}.",
+ "Connection String": "Ciąg połączenia",
+ "Query": "Zapytanie",
+ "settingsCertificateExpiry": "Wygaśnięcie certyfikatu TLS",
+ "certificationExpiryDescription": "Monitory HTTPS uruchamiają powiadomienia o wygaśnięciu certyfikatu TLS w:",
+ "Setup Docker Host": "Konfiguracja hosta Docker",
+ "Connection Type": "Typ połączenia",
+ "Docker Daemon": "Demon Dockera",
+ "deleteDockerHostMsg": "Czy na pewno chcesz usunąć ten host Dockera dla wszystkich monitorów?",
+ "socket": "Gniazdo",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Kontener Dockera",
+ "Container Name / ID": "Nazwa kontenera / ID",
+ "Docker Host": "Host Dockera",
+ "Docker Hosts": "Hosty Dockera",
+ "ntfy Topic": "Temat ntfy",
+ "Domain": "Domena",
+ "Workstation": "Stacja robocza",
+ "disableCloudflaredNoAuthMsg": "Jesteś w trybie No Auth, hasło nie jest wymagane.",
+ "trustProxyDescription": "Zaufaj nagłówkom 'X-Forwarded-*'. Jeśli chcesz uzyskać poprawne IP klienta, a twój Uptime Kuma jest za proxy, takim jak Nginx lub Apache, powinieneś to włączyć.",
+ "wayToGetLineNotifyToken": "Możesz uzyskać token dostępu z {0}",
+ "Examples": "Przykłady",
+ "Home Assistant URL": "URL Home Assistant",
+ "Long-Lived Access Token": "Długotrwały token dostępu",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Długotrwały token dostępu można utworzyć klikając na nazwę swojego profilu (na dole po lewej stronie) i przewijając do dołu, a następnie klikając Create Token. ",
+ "Notification Service": "Usługa powiadamiania",
+ "default: notify all devices": "domyślnie: powiadamiaj wszystkie urządzenia",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Listę usług powiadamiania można znaleźć w Home Assistant pod \"Developer Tools > Services\" wyszukaj \"notification\", aby znaleźć nazwę swojego urządzenia/telefonu.",
+ "Automations can optionally be triggered in Home Assistant:": "Automaty mogą być opcjonalnie uruchamiane w Home Assistant:",
+ "Trigger type:": "Typ wyzwalacza:",
+ "Event type:": "Typ zdarzenia:",
+ "Event data:": "Dane o zdarzeniu:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Następnie wybierz akcję, na przykład przełącz scenę na taką, w której światło RGB jest czerwone.",
+ "Frontend Version": "Wersja frontu",
+ "Frontend Version do not match backend version!": "Wersja frontu nie pasuje do wersji backendu!",
+ "Base URL": "Bazowy adres URL",
+ "goAlertInfo": "GoAlert to aplikacja open source do planowania, automatycznych eskalacji i powiadomień (jak SMS lub połączenia głosowe). Automatycznie angażuj właściwą osobę, we właściwy sposób i we właściwym czasie! {0}",
+ "goAlertIntegrationKeyInfo": "Pobierz generyczny klucz integracyjny API dla usługi, którego wartość skopiowanego tokena URL jest zwykle w formacie \"aaaaaaaa-bbb-cccc-dddd-eeeeee\".",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Przestarzałe: ponieważ dodano wiele funkcji i funkcja tworzenia kopii zapasowych nie jest wystarczająco utrzymywana, nie może generować ani przywracać pełnej kopii zapasowej.",
+ "backupRecommend": "Zamiast tego należy wykonać bezpośrednią kopię zapasową woluminu lub folderu danych (./data/).",
+ "Optional": "Opcjonalne",
+ "squadcast": "Squadcast",
+ "SendKey": "Przycisk Wyślij",
+ "SMSManager API Docs": "Dokumentacja API SMSManager ",
+ "Gateway Type": "Typ bramy",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Możesz dzielić liczby przez",
+ "or": "lub",
+ "recurringInterval": "odstęp czasu",
+ "Recurring": "powtarzający się",
+ "strategyManual": "Aktywowany/dezaktywowany ręcznie",
+ "warningTimezone": "Używa strefy czasowej serwera",
+ "weekdayShortMon": "pon",
+ "weekdayShortTue": "wt",
+ "weekdayShortWed": "śr",
+ "weekdayShortThu": "czw",
+ "weekdayShortFri": "pt",
+ "weekdayShortSat": "sob",
+ "weekdayShortSun": "niedz",
+ "dayOfWeek": "Dzień tygodnia",
+ "dayOfMonth": "Dzień miesiąca",
+ "lastDay": "Ostatni dzień",
+ "lastDay1": "Ostatni dzień miesiąca",
+ "lastDay2": "2. ostatni dzień miesiąca",
+ "lastDay3": "3. ostatni dzień miesiąca",
+ "lastDay4": "4. ostatni dzień miesiąca",
+ "No Maintenance": "Brak konserwacji",
+ "pauseMaintenanceMsg": "Jesteś pewien, że chcesz zatrzymać?",
+ "maintenanceStatus-under-maintenance": "Podczas konserwacji",
+ "maintenanceStatus-inactive": "Nieaktywny",
+ "maintenanceStatus-scheduled": "Zaplanowany",
+ "maintenanceStatus-ended": "Zakończony",
+ "maintenanceStatus-unknown": "Nieznany",
+ "Display Timezone": "Wyświetlana strefa czasowa",
+ "Server Timezone": "Strefa czasowa serwera",
+ "statusPageMaintenanceEndDate": "Koniec",
+ "Help": "Pomoc",
+ "Passive Monitor Type": "Pasywny typ monitora",
+ "Enable": "Włącz",
+ "confirmDeleteTagMsg": "Czy na pewno chcesz usunąć ten tag? Monitory powiązane z tym tagiem nie zostaną usunięte.",
+ "Kook": "Kook",
+ "Enable TLS": "Włącz TLS",
+ "webhookAdditionalHeadersDesc": "Ustawia dodatkowe nagłówki wysyłane z webhookiem.",
+ "dnsCacheDescription": "Może nie działać w niektórych środowiskach z IPv6. Wyłącz, jeśli napotkasz jakiekolwiek problemy.",
+ "wayToGetKookBotToken": "Utwórz aplikację i uzyskaj swój token bota na {0}",
+ "wayToGetKookGuildID": "Włącz 'Developer Mode' w ustawieniach Kook'a i kliknij prawym przyciskiem myszy na gildię, aby uzyskać jej ID",
+ "Game": "Gra",
+ "Specific Monitor Type": "Konkretny typ monitora",
+ "Monitor": "Monitor | Monitory",
+ "webhookAdditionalHeadersTitle": "Dodatkowe nagłówki",
+ "Custom": "Własny",
+ "ZohoCliq": "ZohoCliq",
+ "Disable": "Wyłącz",
+ "Date and Time": "Data i czas",
+ "IconUrl": "URL ikony",
+ "Enable DNS Cache": "Włącz pamięć podręczną DNS",
+ "Single Maintenance Window": "Pojedyncze okno konserwacji",
+ "Effective Date Range": "Zakres dat obowiązywania (opcjonalnie)",
+ "Schedule Maintenance": "Planowanie konserwacji",
+ "DateTime Range": "Zakres czasowy",
+ "Maintenance Time Window of a Day": "Okno czasowe konserwacji na dzień",
+ "wayToGetZohoCliqURL": "Możesz dowiedzieć się, jak utworzyć adres URL webhook {0}.",
+ "dataRetentionTimeError": "Okres przechowywania musi wynosić 0 lub więcej",
+ "infiniteRetention": "Ustaw na 0, aby uzyskać nieskończony okres przechowywania.",
+ "enableGRPCTls": "Zezwalaj na wysyłanie żądania gRPC z połączeniem TLS",
+ "grpcMethodDescription": "Nazwa metody jest konwertowana na format cammelCase, taki jak sayHello, check, itp.",
+ "Guild ID": "ID gildii",
+ "Proto Content": "Zawartość Proto",
+ "Proto Method": "Metoda Proto",
+ "Proto Service Name": "Nazwa usługi Proto",
+ "Economy": "Ekonomia",
+ "Strategy": "Strategia",
+ "Free Mobile User Identifier": "Darmowy mobilny identyfikator użytkownika",
+ "Free Mobile API Key": "Darmowy mobilny klucz API",
+ "Lowcost": "Tani",
+ "high": "wysoki",
+ "General Monitor Type": "Ogólny typ monitora",
+ "Packet Size": "Rozmiar pakietu",
+ "uninstalling": "Odinstalowywanie",
+ "loadingError": "Nie można pobrać danych, proszę spróbować ponownie później.",
+ "plugin": "Plugin | Pluginy",
+ "install": "Instaluj",
+ "installing": "Instalowanie",
+ "uninstall": "Odinstaluj",
+ "confirmUninstallPlugin": "Czy na pewno chcesz odinstalować tę wtyczkę?",
+ "Custom Monitor Type": "Własny typ monitora",
+ "markdownSupported": "Obsługiwana składnia Markdown",
+ "Google Analytics ID": "Identyfikator Google Analytics",
+ "Edit Tag": "Edytuj Tag",
+ "Server Address": "Adres Serwera",
+ "Learn More": "Dowiedz się więcej",
+ "Body Encoding": "Kodowanie treści",
+ "Expiry": "Wygasa",
+ "Expiry date": "Data wygaśnięcia",
+ "Don't expire": "Nie wygaszaj",
+ "Continue": "Kontynuuj",
+ "Add Another": "Dodaj kolejne",
+ "Add API Key": "Dodaj klucz API",
+ "No API Keys": "Brak kluczy API",
+ "apiKey-active": "Aktywny",
+ "apiKey-expired": "Wygasły",
+ "apiKey-inactive": "Nieaktywny",
+ "Expires": "Wygasa",
+ "Generate": "Generuj",
+ "disableAPIKeyMsg": "Czy na pewno chcesz wyłączyć ten klucz API?",
+ "deleteAPIKeyMsg": "Czy na pewno chcesz usunąć ten klucz API?",
+ "pagertreeIntegrationUrl": "URL integracji",
+ "pagertreeUrgency": "Pilność",
+ "pagertreeSilent": "Cichy",
+ "pagertreeLow": "Niski",
+ "pagertreeMedium": "Średni",
+ "pagertreeHigh": "Wysoki",
+ "pagertreeCritical": "Krytyczny",
+ "pagertreeResolve": "Automatyczne rozwiązywanie",
+ "Clone Monitor": "Klonuj monitor",
+ "Clone": "Klonuj",
+ "cloneOf": "Klon {0}",
+ "API Keys": "Klucze API",
+ "Key Added": "Klucz dodany",
+ "pagertreeDoNothing": "Nie rób nic",
+ "wayToGetPagerTreeIntegrationURL": "Po utworzeniu integracji Uptime Kuma w PagerTree, należy skopiować Endpoint. Zobacz pełne szczegóły {0}",
+ "notificationRegional": "Regionalne",
+ "twilioFromNumber": "Z numeru",
+ "twilioToNumber": "Do numeru",
+ "lunaseaTarget": "Cel",
+ "twilioAccountSID": "SID konta",
+ "twilioAuthToken": "Token autoryzacyjny",
+ "apiKeyAddedMsg": "Twój klucz API został dodany. Prosimy o zanotowanie go, ponieważ nie będzie on już więcej pokazywany.",
+ "telegramMessageThreadID": "(Opcjonalne) ID wątku wiadomości",
+ "telegramMessageThreadIDDescription": "Opcjonalny Unikalny identyfikator dla docelowego wątku wiadomości (tematu) forum; tylko dla supergrup forum",
+ "telegramProtectContent": "Ochrona przekazywania/zapisywania",
+ "telegramProtectContentDescription": "Jeśli włączona, wiadomości bota w Telegramie będą chronione przed przekazywaniem i zapisywaniem.",
+ "telegramSendSilently": "Wyślij po cichu",
+ "telegramSendSilentlyDescription": "Wysyła wiadomość po cichu. Użytkownicy otrzymają powiadomienie bez dźwięku.",
+ "statusPageRefreshIn": "Odświeżenie w ciągu: {0}",
+ "lunaseaDeviceID": "ID urządzenia",
+ "lunaseaUserID": "ID użytkownika",
+ "Add New Tag": "Dodaj nowy tag",
+ "startDateTime": "Data/godzina rozpoczęcia",
+ "cronSchedule": "Harmonogram: ",
+ "invalidCronExpression": "Nieprawidłowe sformułowanie Cron: {0}",
+ "sameAsServerTimezone": "Tak jak strefa czasowa serwera",
+ "endDateTime": "Data/godzina zakończenia",
+ "cronExpression": "Wyrażenie Cron",
+ "ntfyAuthenticationMethod": "Metoda Uwierzytelnienia",
+ "ntfyUsernameAndPassword": "Nazwa użytkownika i hasło",
+ "noGroupMonitorMsg": "Niedostępna. Stwórz najpierw grupę monitorów.",
+ "Close": "Zamknij",
+ "pushoverMessageTtl": "TTL wiadomości (sekundy)",
+ "Home": "Strona główna",
+ "Group": "Grupa",
+ "Monitor Group": "Grupa monitora",
+ "Reconnecting...": "Ponowne łączenie...",
+ "Cannot connect to the socket server": "Nie można połączyć się z serwerem gniazda"
+}
diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json
new file mode 100644
index 000000000..2dc55aa08
--- /dev/null
+++ b/src/lang/pt-BR.json
@@ -0,0 +1,588 @@
+{
+ "languageName": "Português (Brasil)",
+ "checkEverySecond": "Verificar a cada {0} segundos",
+ "retryCheckEverySecond": "Tentar novamente a cada {0} segundos",
+ "retriesDescription": "Máximo de tentativas antes que o serviço seja marcado como inativo e uma notificação seja enviada",
+ "ignoreTLSError": "Ignorar erros TLS/SSL para sites HTTPS",
+ "upsideDownModeDescription": "Inverta o status. Se o serviço estiver acessível, ele está DESLIGADO.",
+ "maxRedirectDescription": "Número máximo de redirecionamentos a seguir. Defina como 0 para desativar redirecionamentos.",
+ "acceptedStatusCodesDescription": "Selecione os códigos de status que são considerados uma resposta bem-sucedida.",
+ "passwordNotMatchMsg": "A senha repetida não corresponde.",
+ "notificationDescription": "Atribua uma notificação ao (s) monitor (es) para que funcione.",
+ "keywordDescription": "Pesquise a palavra-chave em html simples ou resposta JSON e diferencia maiúsculas de minúsculas.",
+ "pauseDashboardHome": "Pausar",
+ "deleteMonitorMsg": "Tem certeza de que deseja excluir este monitor?",
+ "deleteNotificationMsg": "Tem certeza de que deseja excluir esta notificação para todos os monitores?",
+ "resolverserverDescription": "Cloudflare é o servidor padrão, você pode alterar o servidor resolvedor a qualquer momento.",
+ "rrtypeDescription": "Selecione o RR-Type que você deseja monitorar",
+ "pauseMonitorMsg": "Tem certeza que deseja fazer uma pausa?",
+ "enableDefaultNotificationDescription": "Para cada novo monitor, esta notificação será habilitada por padrão. Você ainda pode desativar a notificação separadamente para cada monitor.",
+ "clearEventsMsg": "Tem certeza de que deseja excluir todos os eventos deste monitor?",
+ "clearHeartbeatsMsg": "Tem certeza de que deseja excluir todos os heartbeats deste monitor?",
+ "confirmClearStatisticsMsg": "Tem certeza que deseja excluir TODAS as estatísticas?",
+ "importHandleDescription": "Escolha 'Ignorar existente' se quiser ignorar todos os monitores ou notificações com o mesmo nome. 'Substituir' excluirá todos os monitores e notificações existentes.",
+ "confirmImportMsg": "Tem certeza que deseja importar o backup? Certifique-se de que selecionou a opção de importação correta.",
+ "twoFAVerifyLabel": "Digite seu token para verificar se 2FA está funcionando:",
+ "tokenValidSettingsMsg": "O token é válido! Agora você pode salvar as configurações 2FA.",
+ "confirmEnableTwoFAMsg": "Tem certeza de que deseja habilitar 2FA?",
+ "confirmDisableTwoFAMsg": "Tem certeza de que deseja desativar 2FA?",
+ "Settings": "Configurações",
+ "Dashboard": "Painel",
+ "New Update": "Nova Atualização",
+ "Language": "Linguagem",
+ "Appearance": "Aparência",
+ "Theme": "Tema",
+ "General": "Geral",
+ "Version": "Versão",
+ "Check Update On GitHub": "Verificar atualização no Github",
+ "List": "Lista",
+ "Add": "Adicionar",
+ "Add New Monitor": "Adicionar novo monitor",
+ "Quick Stats": "Estatísticas rápidas",
+ "Up": "Ligado",
+ "Down": "Desligado",
+ "Pending": "Pendente",
+ "Unknown": "Desconhecido",
+ "Pause": "Pausar",
+ "Name": "Nome",
+ "Status": "Status",
+ "DateTime": "Data hora",
+ "Message": "Mensagem",
+ "No important events": "Nenhum evento importante",
+ "Resume": "Retomar",
+ "Edit": "Editar",
+ "Delete": "Apagar",
+ "Current": "Atual",
+ "Uptime": "Tempo de atividade",
+ "Cert Exp.": "Expiração Do Certificado",
+ "day": "dia | dias",
+ "-day": "-dia",
+ "hour": "hora",
+ "-hour": "-hora",
+ "Response": "Resposta",
+ "Ping": "Ping",
+ "Monitor Type": "Tipo de Monitor",
+ "Keyword": "Palavra-Chave",
+ "Friendly Name": "Nome Amigável",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Porta",
+ "Heartbeat Interval": "Intervalo de Heartbeat",
+ "Retries": "Novas tentativas",
+ "Heartbeat Retry Interval": "Intervalo de repetição de Heartbeat",
+ "Advanced": "Avançado",
+ "Upside Down Mode": "Modo Invertido",
+ "Max. Redirects": "Redirecionamentos Máx",
+ "Accepted Status Codes": "Códigos HTTP Aceitáveis",
+ "Save": "Salvar",
+ "Notifications": "Notificações",
+ "Not available, please setup.": "Não disponível, por favor configure.",
+ "Setup Notification": "Configurar Notificação",
+ "Light": "Claro",
+ "Dark": "Escuro",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Tema - Barra de Heartbeat",
+ "Normal": "Normal",
+ "Bottom": "Inferior",
+ "None": "Nenhum",
+ "Timezone": "Fuso horário",
+ "Search Engine Visibility": "Visibilidade do mecanismo de pesquisa",
+ "Allow indexing": "Permitir Indexação",
+ "Discourage search engines from indexing site": "Desencoraje os motores de busca de indexar o site",
+ "Change Password": "Mudar senha",
+ "Current Password": "Senha atual",
+ "New Password": "Nova Senha",
+ "Repeat New Password": "Repetir Nova Senha",
+ "Update Password": "Atualizar Senha",
+ "Disable Auth": "Desativar Autenticação",
+ "Enable Auth": "Ativar Autenticação",
+ "disableauth.message1": "Você tem certeza que deseja desativar a autenticação ?",
+ "disableauth.message2": "Isso é para alguém que tem autenticação de terceiros na frente do 'UpTime Kuma' como o Cloudflare Access.",
+ "Please use this option carefully!": "Por favor, utilize isso com cautela!",
+ "Logout": "Deslogar",
+ "Leave": "Sair",
+ "I understand, please disable": "Eu entendo, por favor desative",
+ "Confirm": "Confirmar",
+ "Yes": "Sim",
+ "No": "Não",
+ "Username": "Usuário",
+ "Password": "Senha",
+ "Remember me": "Lembre-me",
+ "Login": "Autenticar",
+ "No Monitors, please": "Nenhum monitor, por favor",
+ "add one": "adicionar um",
+ "Notification Type": "Tipo de Notificação",
+ "Email": "Email",
+ "Test": "Testar",
+ "Certificate Info": "Info. do Certificado",
+ "Resolver Server": "Resolver Servidor",
+ "Resource Record Type": "Tipo de registro de aplicação",
+ "Last Result": "Último resultado",
+ "Create your admin account": "Crie sua conta de admin",
+ "Repeat Password": "Repita a senha",
+ "Import Backup": "Importar Backup",
+ "Export Backup": "Exportar Backup",
+ "Export": "Exportar",
+ "Import": "Importar",
+ "respTime": "Tempo de Resp. (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Padrão habilitado",
+ "Apply on all existing monitors": "Aplicar em todos os monitores existentes",
+ "Create": "Criar",
+ "Clear Data": "Limpar Dados",
+ "Events": "Eventos",
+ "Heartbeats": "Batimentos Cardíacos",
+ "Auto Get": "Obter Automático",
+ "backupDescription": "Você pode fazer backup de todos os monitores e todas as notificações em um arquivo JSON.",
+ "backupDescription2": "OBS: Os dados do histórico e do evento não estão incluídos.",
+ "backupDescription3": "Dados confidenciais, como tokens de notificação, estão incluídos no arquivo de exportação, mantenha-o com cuidado.",
+ "alertNoFile": "Selecione um arquivo para importar.",
+ "alertWrongFileType": "Selecione um arquivo JSON.",
+ "Clear all statistics": "Limpar todas as estatísticas",
+ "Skip existing": "Pular existente",
+ "Overwrite": "Sobrescrever",
+ "Options": "Opções",
+ "Keep both": "Manter os dois",
+ "Verify Token": "Verificar Token",
+ "Setup 2FA": "Configurar 2FA",
+ "Enable 2FA": "Ativar 2FA",
+ "Disable 2FA": "Desativar 2FA",
+ "2FA Settings": "Configurações do 2FA",
+ "Two Factor Authentication": "Autenticação e Dois Fatores",
+ "Active": "Ativo",
+ "Inactive": "Inativo",
+ "Token": "Token",
+ "Show URI": "Mostrar URI",
+ "Tags": "Tag",
+ "Add New below or Select...": "Adicionar Novo abaixo ou Selecionar…",
+ "Tag with this name already exist.": "Já existe uma etiqueta com este nome.",
+ "Tag with this value already exist.": "Já existe uma etiqueta com este valor.",
+ "color": "cor",
+ "value (optional)": "valor (opcional)",
+ "Gray": "Cinza",
+ "Red": "Vermelho",
+ "Orange": "Laranja",
+ "Green": "Verde",
+ "Blue": "Azul",
+ "Indigo": "Índigo",
+ "Purple": "Roxo",
+ "Pink": "Rosa",
+ "Search...": "Buscar…",
+ "Avg. Ping": "Ping Médio",
+ "Avg. Response": "Resposta Média",
+ "Status Page": "Página de Status",
+ "Status Pages": "Página de Status",
+ "Entry Page": "Página de entrada",
+ "statusPageNothing": "Nada aqui, por favor, adicione um grupo ou monitor.",
+ "No Services": "Nenhum Serviço",
+ "All Systems Operational": "Todos os Serviços Operacionais",
+ "Partially Degraded Service": "Serviço parcialmente degradado",
+ "Degraded Service": "Serviço Degradado",
+ "Add Group": "Adicionar Grupo",
+ "Add a monitor": "Adicionar um monitor",
+ "Edit Status Page": "Editar Página de Status",
+ "Go to Dashboard": "Ir para a dashboard",
+ "apprise": "Apprise (Suporta mais de 50 serviços de notificação)",
+ "Help": "Ajuda",
+ "Select status pages...": "Selecionar status pages…",
+ "Game": "Jogo",
+ "Passive Monitor Type": "Tipo de monitoramento passivo",
+ "Specific Monitor Type": "Tipo de monitoramento específico",
+ "Monitor": "Monitoramento | Monitoramentos",
+ "needPushEvery": "Você deve chamar esta URL a cada {0} segundos.",
+ "Push URL": "URL de push",
+ "Custom": "Personalizado",
+ "here": "aqui",
+ "Required": "Requerido",
+ "webhookJsonDesc": "{0} é bom para qualquer servidor HTTP moderno, como Express.js",
+ "webhookAdditionalHeadersTitle": "Cabeçalhos Adicionais",
+ "webhookAdditionalHeadersDesc": "Define cabeçalhos adicionais enviados com o webhook.",
+ "Webhook URL": "URL Do Webhook",
+ "Priority": "Prioridade",
+ "Read more": "Ver mais",
+ "appriseInstalled": "Apprise está instalado.",
+ "appriseNotInstalled": "Apprise não está instalado. {0}",
+ "Headers": "Cabeçalhos",
+ "BodyInvalidFormat": "O corpo da solicitação não é um JSON válido: ",
+ "Monitor History": "Histórico de monitoramento",
+ "clearDataOlderThan": "Mantenha os dados do histórico do monitoramento por {0} dias.",
+ "PasswordsDoNotMatch": "As senhas não coincidem.",
+ "records": "registros",
+ "One record": "Um registro",
+ "Current User": "Usuário atual",
+ "successMessage": "Mensagem de sucesso",
+ "Post URL": "Posto URL",
+ "Application Token": "Token de aplicativo",
+ "Server URL": "URL do servidor",
+ "Body": "Corpo",
+ "PushUrl": "Push URL",
+ "recent": "Recente",
+ "Done": "Feito",
+ "Info": "Informação",
+ "Security": "Segurança",
+ "Steam API Key": "API Key da Steam",
+ "Default": "Padrão",
+ "HTTP Options": "Opções HTTP",
+ "Create Incident": "Criar incidente",
+ "Title": "Título",
+ "Style": "Estilo",
+ "info": "informação",
+ "danger": "perigo",
+ "Please input title and content": "Por favor, inclua título e o conteúdo",
+ "Created": "Criado",
+ "Last Updated": "Última atualização",
+ "Switch to Light Theme": "Mudar para tema claro",
+ "Show Tags": "Mostrar tags",
+ "Hide Tags": "Esconder tags",
+ "Description": "Descrição",
+ "No monitors available.": "Nenhum monitoramento disponível.",
+ "Add one": "Adicionar um",
+ "No Monitors": "Sem monitoramentos",
+ "Services": "Serviços",
+ "Discard": "Descartar",
+ "Cancel": "Cancelar",
+ "Customize": "Customizar",
+ "Custom CSS": "CSS personalizado",
+ "deleteStatusPageMsg": "Tem certeza que deseja apagar essa status page?",
+ "Proxies": "Proxies",
+ "default": "Padrão",
+ "enabled": "Ativado",
+ "setAsDefault": "Definir como padrão",
+ "Primary Base URL": "URL base principal",
+ "Resend Notification if Down X times consecutively": "Reenviar Notificação se OFFLINE X vezes consecutivamente",
+ "pushOptionalParams": "Parâmetros opcionais: {0}",
+ "webhookFormDataDesc": "{multipart} é bom para PHP. O JSON precisará ser analisado com {decodeFunction}",
+ "HeadersInvalidFormat": "Os cabeçalhos da solicitação não são um JSON válidos: ",
+ "steamApiKeyDescription": "Para monitorar um Steam Game Server, você precisa de uma chave Steam Web-API. Você pode registrar sua chave de API aqui: ",
+ "warning": "atenção",
+ "Switch to Dark Theme": "Mudar para tema escuro",
+ "Custom Footer": "Rodapé personalizado",
+ "error": "erro",
+ "critical": "crítico",
+ "dark": "escuro",
+ "statusMaintenance": "Manutenção",
+ "Maintenance": "Manutenção",
+ "resendEveryXTimes": "Reenviar a cada {0} vezes",
+ "resendDisabled": "Reenvio desativado",
+ "Schedule maintenance": "Manutenção agendada",
+ "Affected Monitors": "Monitoramentos afetados",
+ "Start of maintenance": "Iniciar manutenção",
+ "All Status Pages": "Todas as Status Pages",
+ "Method": "Método",
+ "General Monitor Type": "Tipo de monitoramento geral",
+ "markdownSupported": "Markdown suportado",
+ "emojiCheatSheet": "Dicas de Emojis",
+ "topic": "Tópico",
+ "topicExplanation": "Tópico MQTT para monitorar",
+ "successMessageExplanation": "Mensagem MQTT que será considerada como sucesso",
+ "Content Type": "Tipo do Conteúdo",
+ "Shrink Database": "Encolher Banco de Dados",
+ "Content": "Conteúdo",
+ "Pick a RR-Type...": "Selecione um RR-Type…",
+ "Pick Accepted Status Codes...": "Selecione Os Códigos de Status Aceitos…",
+ "Pick Affected Monitors...": "Selecione os Monitores Afetados…",
+ "Channel Name": "Nome Do Canal",
+ "Don't know how to get the token? Please read the guide:": "Não sabe com pegar o token? Por favor, leia o guia:",
+ "smtpDkimheaderFieldNames": "Chaves Do Cabeçalho para assinar (Opcional)",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "A conexão atual pode ser perdida se você estiver se conectando pelo túnel da Cloudflare. Você tem certeza que deseja pará-lo? Digite a sua senha para confirmar.",
+ "shrinkDatabaseDescription": "Acionar a limpeza do banco de dados para o SQLite. Se o seu banco de dados foi criado depois de 1.10.0, a limpeza automática(AUTO_VACUUM) já é habilitada por padrão e essa ação não é necessária.",
+ "Powered by": "Fornecido por",
+ "deleteProxyMsg": "Você tem certeza que deseja deletar este proxy para todos os monitores?",
+ "proxyDescription": "Os proxies devem ser atribuídos a um monitor para funcionar.",
+ "Certificate Chain": "Cadeia De Certificados",
+ "Domain Name Expiry Notification": "Notificação De Expiração Do Nome Do Domínio",
+ "Proxy": "Proxy",
+ "wayToGetTelegramChatID": "Você pode pegar o Chat ID enviando uma mensagem marcando o bot no grupo e indo nessa URL para ver o chat_id:",
+ "wayToGetLineNotifyToken": "Você pode pegar o token de acesso de {0}",
+ "disableCloudflaredNoAuthMsg": "Você está no modo sem autenticação, a senha não é necessária.",
+ "Frontend Version do not match backend version!": "Versão do frontend é diferente da versão do backend!",
+ "strategyManual": "Ativar/Desativar Manualmente",
+ "weekdayShortThu": "Qui",
+ "Basic Settings": "Configurações Básicas",
+ "User ID": "ID Do Usuário",
+ "Line Developers Console": "Linha Do Terminal De Desenvolvimento",
+ "lineDevConsoleTo": "Linha Do Terminal De Desenvolvimento- {0}",
+ "smseagleToken": "Token De Acesso Da API",
+ "Notification Service": "Serviço De Notificação",
+ "default: notify all devices": "padrão: notificar todos os dispositivos",
+ "Trigger type:": "Tipo Do Acionamento:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "",
+ "Enable": "Habilitado",
+ "Disable": "Desabilitado",
+ "IconUrl": "URL Do Ícone",
+ "Enable DNS Cache": "Habilitar Cache Do DNS",
+ "Single Maintenance Window": "Janela Única De Manutenção",
+ "dnsCacheDescription": "Pode não funcionar em alguns ambientes com IPv6, desabita caso encontre qualquer problema.",
+ "Messaging API": "API Da Mensageira",
+ "Icon URL": "URL Do Ícone",
+ "Clone Monitor": "Clonar Monitoramento",
+ "Clone": "Clonar",
+ "cloneOf": "Clone do {0}",
+ "deleteMaintenanceMsg": "Você tem certeza que deseja apagar essa manutenção?",
+ "sameAsServerTimezone": "O mesmo do servidor de fuso-horário",
+ "startDateTime": "Início Data/Horário",
+ "endDateTime": "Fim Data/Horário",
+ "cronExpression": "Expressão Do Cron",
+ "cronSchedule": "Agendar: ",
+ "invalidCronExpression": "Expressão Cron inválida: {0}",
+ "Display Timezone": "Mostrar Fuso-horário",
+ "Server Timezone": "Servidor De Fuso-horário",
+ "statusPageMaintenanceEndDate": "Fim",
+ "Schedule Maintenance": "Agendar Manutenção",
+ "Date and Time": "Data E Horário",
+ "DateTime Range": "Intervalo De Tempo",
+ "Maintenance Time Window of a Day": "Janela de tempo de manutenção de um dia",
+ "uninstalling": "Desinstalando",
+ "confirmUninstallPlugin": "Você tem certeza were quer desinstalar esse plugin?",
+ "notificationRegional": "Região",
+ "dnsPortDescription": "Porta do servidor DNS. O padrão é 53. Você pode mudar a porta em qualquer momento.",
+ "affectedMonitorsDescription": "Selecione os monitores afetados pela manutenção atual",
+ "Icon Emoji": "Ícone Do Emoji",
+ "wayToGetKookBotToken": "Criar aplicação e pegar o token do bot em {0}",
+ "Notification Sound": "Som De Notificação",
+ "More info on:": "Mais informações em: {0}",
+ "SMS Type": "Tipo Do SMS",
+ "Internal Room Id": "ID Interno Da Sala",
+ "Platform": "Plataforma",
+ "serwersmsAPIPassword": "Senha Da API",
+ "serwersmsPhoneNumber": "Número Do Telefone",
+ "documentation": "documentação",
+ "smtpDkimDomain": "Nome Do Domínio",
+ "smtpDkimKeySelector": "Chave Selecionadora",
+ "smtpDkimPrivateKey": "Chave Privada",
+ "smtpDkimHashAlgo": "Algoritmo Hash (Opcional)",
+ "smtpDkimskipFields": "Chaves Do Cabeçalho para não assinar (Opcional)",
+ "alertaEnvironment": "Ambiente",
+ "alertaRecoverState": "Estado De Recuperação",
+ "smseagleEncoding": "Enviar como Unicode",
+ "onebotGroupMessage": "Grupo",
+ "onebotPrivateMessage": "Privado",
+ "onebotUserOrGroupId": "ID do Grupo/Usuário",
+ "No Maintenance": "Sem Manutenção",
+ "telegramProtectContentDescription": "Se ativado, a mensagens do bot do Telegram serão protegidas contra encaminhamentos e salvamento.",
+ "telegramProtectContent": "Proteger Contra Encaminhamento/Salvamento",
+ "affectedStatusPages": "Mostrar essa mensagem de manutenção nas páginas de status selecionadas",
+ "loadingError": "Não foi possível pegar os dados, por favor tente novamente.",
+ "Bot Display Name": "Nome Visível Do Bot",
+ "Access Token": "Token De Acesso",
+ "Unpin": "Desfixar",
+ "telegramSendSilently": "Enviar Silenciosamente",
+ "telegramSendSilentlyDescription": "Enviar a mensagem silenciosamente. Os usuários não receberam uma notificação com som.",
+ "YOUR BOT TOKEN HERE": "O SEU TOKEN DO BOT VAI AQUI",
+ "warningTimezone": "Está usando os servidores de fuso-horários",
+ "dayOfWeek": "Dia Da Semana",
+ "dayOfMonth": "Dia Do Mês",
+ "lastDay": "Último Dia",
+ "lastDay1": "Último Dia Do Mês",
+ "lastDay2": "Penúltimo Dia Do Mês",
+ "lastDay3": "Antepenúltimo Dia Do Mês",
+ "lastDay4": "Quarto Último Dia Do Mês",
+ "weekdayShortMon": "Seg",
+ "weekdayShortTue": "Ter",
+ "weekdayShortWed": "Qua",
+ "weekdayShortFri": "Sex",
+ "weekdayShortSat": "Sab",
+ "weekdayShortSun": "Dom",
+ "wayToGetTeamsURL": "Você pode aprender a como criar a URL do webhook {0}.",
+ "Hello @everyone is...": "Olá {'@'}everyone é…",
+ "Number": "Número",
+ "install": "Instalar",
+ "installing": "Instalando",
+ "uninstall": "Desinstalar",
+ "Ignore TLS Error": "Ignorar Erro De TLS",
+ "Discord Webhook URL": "URL Do Webhook Do Discord",
+ "emailCustomSubject": "Assunto Personalizado",
+ "Prefix Custom Message": "Prefixo Personalizado Da Mensagem",
+ "wayToGetZohoCliqURL": "Você pode aprender a como criar uma URL de Webhook {0}.",
+ "Channel access token": "Canal do token de acesso",
+ "promosmsPassword": "Senha Da API",
+ "promosmsLogin": "Nome Do Login Da API",
+ "atLeastOneMonitor": "Selecione pelo menos um monitoramento afetado",
+ "apiCredentials": "Credenciais Da API",
+ "For safety, must use secret key": "Para segurança deve se usar uma chave secreta",
+ "Device Token": "Token Do Dispositivo",
+ "Retry": "Tentar Novamente",
+ "Topic": "Tópico",
+ "Setup Proxy": "Configuração Do Proxy",
+ "Proxy Protocol": "Protocolo Do Proxy",
+ "Proxy Server": "Servidor Proxy",
+ "Proxy server has authentication": "O servidor proxy tem autenticação",
+ "aboutWebhooks": "Mais informações sobre Webhooks em: {0}",
+ "Integration Key": "Chave De Integração",
+ "Integration URL": "URL De Integração",
+ "do nothing": "fazendo nada",
+ "onebotSafetyTips": "Por segurança deve adicionar o token de acesso",
+ "Subject:": "Assunto:",
+ "Valid To:": "Válido para:",
+ "For example: nginx, Apache and Traefik.": "Por exemplo: Nginx, Apache e Traefik.",
+ "Please read": "Por favor, leia",
+ "RadiusCallingStationIdDescription": "Identificador do dispositivo de chamada",
+ "certificationExpiryDescription": "O monitoramento por HTTPS envia a notificação quando o certificado TLS expirar em:",
+ "or": "ou",
+ "Effective Date Range": "Intervalo Efetivo De Data (Opcional)",
+ "recurringIntervalMessage": "Rodar diariamente | Rodar a cada {0} dias",
+ "Status:": "Status: {0}",
+ "smtpDkimSettings": "Configurações DKIM",
+ "alertaApiKey": "Chave Da API",
+ "alertaAlertState": "Estado Do Alerta",
+ "statusPageRefreshIn": "Atualizando em: {0}",
+ "Untitled Group": "Grupo Sem Título",
+ "primary": "primário",
+ "setAsDefaultProxyDescription": "Este proxy será habilitado por padrão em todos os novos monitores. Você pode desabilitar o proxy individualmente para cada monitor.",
+ "Valid": "Válido",
+ "Invalid": "Inválido",
+ "User": "Usuário",
+ "Installed": "Instalado",
+ "Not installed": "Não instalado",
+ "enableProxyDescription": "Este proxy não afetará as solicitações do monitor até que seja ativado. Você pode controlar temporariamente a desativação do proxy de todos os monitores pelo status de ativação.",
+ "Not running": "Desabilitado",
+ "Remove Token": "Remover Token",
+ "Start": "Iniciar",
+ "Stop": "Parar",
+ "Add New Status Page": "Adicionar Nova Página De Status",
+ "Accept characters:": "Caracteres aceitos:",
+ "Running": "Habilitado",
+ "startOrEndWithOnly": "Apenas iniciar ou parar com {0}",
+ "No consecutive dashes": "Sem traços consecutivos",
+ "Next": "Próximo",
+ "No Proxy": "Sem Proxy",
+ "Authentication": "Autenticação",
+ "HTTP Basic Auth": "Autenticação Básica No HTTP",
+ "New Status Page": "Nova Página De Status",
+ "Page Not Found": "Página Não Encontrada",
+ "Reverse Proxy": "Proxy Reverso",
+ "About": "Sobre",
+ "Message:": "Mensagem:",
+ "HTTP Headers": "Cabeçalhos HTTP",
+ "Trust Proxy": "Proxy Confiável",
+ "Other Software": "Outros Programas",
+ "Days Remaining:": "Dias Restantes:",
+ "No status pages": "Sem página de status",
+ "Date Created": "Data De Criação",
+ "Backup": "Cópia de Segurança",
+ "wayToGetCloudflaredURL": "(Baixe o CloudFlareD de {0})",
+ "cloudflareWebsite": "Site Da CloudaFlare",
+ "Issuer:": "Emissor:",
+ "Fingerprint:": "Impressão Digital:",
+ "Footer Text": "Texto Do Rodapé",
+ "Domain Names": "Nome Dos Domínios",
+ "signedInDispDisabled": "Autenticação Desabilitada.",
+ "RadiusSecretDescription": "Compartilhe o Segredo entre o cliente e o servidor",
+ "Certificate Expiry Notification": "Notificação De Certificado Expirado",
+ "The resource is no longer available.": "O recurso não está mais disponível.",
+ "There might be a typing error in the address.": "Pode ter um erro de digitação no endereço.",
+ "Retype the address.": "Digitar novamente o endereço.",
+ "Go back to the previous page.": "Voltar para a página anterior.",
+ "Query": "Query",
+ "settingsCertificateExpiry": "O Certificado TLS Expira",
+ "Connection Type": "Tipo Da Conexão",
+ "signedInDisp": "Assinado como {0}",
+ "RadiusCallingStationId": "ID Da Estação De Chamada",
+ "RadiusCalledStationIdDescription": "Identificador do dispositivo de chamada",
+ "Coming Soon": "Em Breve",
+ "Connection String": "String De Conexão",
+ "Docker Daemon": "Daemon Do Docker",
+ "Show Powered By": "Mostrar Distribuído Por",
+ "RadiusSecret": "Segredo Radius",
+ "RadiusCalledStationId": "ID Da Estação Chamada",
+ "deleteDockerHostMsg": "Você tem certeza que quer deletar esse host do Docker para todos os monitores?",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Container Docker",
+ "Container Name / ID": "Nome / ID do Container",
+ "Domain": "Domínio",
+ "Workstation": "Estação De Trabalho",
+ "Packet Size": "Tamanho Do Pacote",
+ "Bot Token": "Token do Bot",
+ "wayToGetTelegramToken": "Você pode pegar o token de {0}.",
+ "chatIDNotFound": "Chat ID não encontrado; por favor envia uma mensagem para o bot primeiro",
+ "Chat ID": "Chat ID",
+ "Docker Hosts": "Hosts Do Docker",
+ "Docker Host": "Host Do Docker",
+ "Examples": "Exemplos",
+ "maintenanceStatus-under-maintenance": "Em Manutenção",
+ "Long-Lived Access Token": "Token De Acesso De Longa Duração",
+ "Home Assistant URL": "URL Do Home Assinant",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "O token de acessos de longa duração pode ser criado clicando no nome do seu perfil, com o botão esquerdo, ir até o final da lista e clicar em Criar Token. ",
+ "Event type:": "Tipo Do Evento:",
+ "Event data:": "Dados Do Evento:",
+ "Frontend Version": "Versão Do Frontend",
+ "backupRecommend": "Por favor faça uma cópia do volume ou da pasta com dados(./data/) diretamente ao invés.",
+ "Optional": "Opcional",
+ "recurringInterval": "Intervalo",
+ "Recurring": "Recorrente",
+ "pauseMaintenanceMsg": "Você tem certeza que quer pausar?",
+ "maintenanceStatus-inactive": "Inativo",
+ "maintenanceStatus-scheduled": "Agendado",
+ "maintenanceStatus-ended": "Terminando",
+ "maintenanceStatus-unknown": "Desconhecido",
+ "enableGRPCTls": "Permita para enviar requisições gRPC com conexões TLS",
+ "confirmDeleteTagMsg": "Você tem certeza que deseja apagar essa tag? Monitores associados a essa tag não serão apagados.",
+ "grpcMethodDescription": "O nome do método é convertido para o formato cammelCase, exemplos: enviarBomDia, verificar, etc.",
+ "infiniteRetention": "Defina como 0 para um tempo infinito de retenção.",
+ "octopushLegacyHint": "Você usa a versão legada do Octopush (2011-2020) ou a nova versão?",
+ "Example:": "Exemplo: {0}",
+ "Read more:": "Leia mais em: {0}",
+ "promosmsAllowLongSMS": "Permitir SMS grandes",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "smseagleTo": "Números Dos Telefones",
+ "smseaglePriority": "Prioridade da mensagem (0-9, padrão=0)",
+ "dataRetentionTimeError": "O período de retenção tem que ser maior ou igual a 0",
+ "User Key": "Chave Do Usuário",
+ "Device": "Dispositivo",
+ "Message Title": "Título Da Mensagem",
+ "defaultNotificationName": "Minha {notification} Alerta({number})",
+ "light": "claro",
+ "socket": "Soquete",
+ "Add New Tag": "Adicionar Nova Tag",
+ "API Username": "Usuário Da API",
+ "API Key": "Chave Da API",
+ "Show update if available": "Mostrar atualização se disponível",
+ "Also check beta release": "Também verificar lançamentos em beta",
+ "Using a Reverse Proxy?": "Está usando um Proxy Reverso?",
+ "Check how to config it for WebSocket": "Verifique como configurar para o WebSocket",
+ "Steam Game Server": "Servidor De Jogo Da Steam",
+ "Most likely causes:": "Causas mais prováveis:",
+ "What you can try:": "O que você pode tentar:",
+ "apiKey-active": "Ativa",
+ "Expiry": "Expiração",
+ "endpoint": "endpoint",
+ "pagertreeIntegrationUrl": "URL de Integração",
+ "pagertreeUrgency": "Urgência",
+ "telegramMessageThreadID": "(Opcional) Message Thread ID",
+ "Edit Tag": "Editar Etiqueta",
+ "Server Address": "Endereço do Servidor",
+ "Learn More": "Aprender Mais",
+ "needSignalAPI": "Você precisa de um cliente Signal com API REST.",
+ "Generate": "Gerar",
+ "deleteAPIKeyMsg": "Você tem certeza de que quer apagar essa chave de API?",
+ "plugin": "Plugin | Plugins",
+ "Expiry date": "Data de expiração",
+ "Don't expire": "Não expira",
+ "Continue": "Continuar",
+ "Add Another": "Adicionar Outro",
+ "Key Added": "Chave Adicionada",
+ "Add API Key": "Adicionar chave de API",
+ "No API Keys": "Sem chaves de API",
+ "apiKey-expired": "Expirada",
+ "apiKey-inactive": "Inativa",
+ "Expires": "Expira",
+ "disableAPIKeyMsg": "Você tem certeza de que quer desativar essa chave de API?",
+ "smtp": "Email (SMTP)",
+ "secureOptionTLS": "TLS (465)",
+ "From Email": "Email De",
+ "smtpCC": "CC",
+ "smtpBCC": "CCO",
+ "To Email": "Email Para",
+ "Recipients": "Destinatários",
+ "Google Analytics ID": "ID Google Analytics",
+ "Post": "Post",
+ "Slug": "Slug",
+ "The slug is already taken. Please choose another slug.": "Esse slug já foi utilizado. Por favor escolha outro slug.",
+ "Setup Docker Host": "Configurar Host Docker",
+ "trustProxyDescription": "Confiar nos cabeçalhos 'X-Forwarded-*'. Se você quer obter o endereço IP do cliente correto no seu Uptime Kuma que está por trás de um proxy como Nginx ou Apache, você deve ativar isso.",
+ "Automations can optionally be triggered in Home Assistant:": "Automações podem opcionalmente ser disparadas no Home Assistant:",
+ "secureOptionNone": "Nenhum / STARTTLS (25, 587)",
+ "apiKeyAddedMsg": "Sua chave de API foi adicionada. Por favor anote essa chave, ela não será mostrada novamente.",
+ "Show Clickable Link": "Mostrar Link Clicável"
+}
diff --git a/src/lang/pt-PT.json b/src/lang/pt-PT.json
new file mode 100644
index 000000000..3fd370b9c
--- /dev/null
+++ b/src/lang/pt-PT.json
@@ -0,0 +1,443 @@
+{
+ "languageName": "Português (Portugal)",
+ "checkEverySecond": "Verificar a cada {0} segundos",
+ "retryCheckEverySecond": "Tentar novamente a cada {0} segundos",
+ "retriesDescription": "Máximo de tentativas antes que o serviço seja marcado como inativo e uma notificação seja enviada",
+ "ignoreTLSError": "Ignorar erros TLS/SSL para sites HTTPS",
+ "upsideDownModeDescription": "Inverte o status de cabeça para baixo. Se o serviço estiver acessível, ele está OFFLINE.",
+ "maxRedirectDescription": "Número máximo de redirecionamentos a seguir. Define como 0 para desativar redirecionamentos.",
+ "acceptedStatusCodesDescription": "Seleciona os códigos de status que são considerados uma resposta bem-sucedida.",
+ "passwordNotMatchMsg": "A senha repetida não corresponde.",
+ "notificationDescription": "Atribuir uma notificação ao (s) monitor (es) para que funcione.",
+ "keywordDescription": "Pesquisa a palavra-chave em HTML simples ou resposta JSON e diferencia maiúsculas de minúsculas",
+ "pauseDashboardHome": "Pausa",
+ "deleteMonitorMsg": "Tens a certeza de que queres excluir este monitor?",
+ "deleteNotificationMsg": "Tens a certeza de que queres excluir esta notificação para todos os monitores?",
+ "resolverserverDescription": "A Cloudflare é o servidor padrão, podes alterar o servidor 'resolvedor' a qualquer momento.",
+ "rrtypeDescription": "Seleciona o RR-Type que queres monitorizar",
+ "pauseMonitorMsg": "Tens a certeza que queres fazer uma pausa?",
+ "enableDefaultNotificationDescription": "Para cada monitor novo esta notificação vai estar activa por padrão. Podes também desativar a notificação separadamente para cada monitor.",
+ "clearEventsMsg": "Tens a certeza que queres excluir todos os eventos deste monitor?",
+ "clearHeartbeatsMsg": "Tens a certeza de que queres excluir todos os heartbeats deste monitor?",
+ "confirmClearStatisticsMsg": "Tens a certeza que queres excluir TODAS as estatísticas?",
+ "importHandleDescription": "Escolhe 'Ignorar existente' se quiseres ignorar todos os monitores ou notificações com o mesmo nome. 'Substituir' excluirá todos os monitores e notificações existentes.",
+ "confirmImportMsg": "Tens a certeza que queres importar o backup? Certifica-te que selecionaste a opção de importação correta.",
+ "twoFAVerifyLabel": "Insire o teu token para verificares se o 2FA está a funcionar",
+ "tokenValidSettingsMsg": "O token é válido! Agora podes salvar as configurações do 2FA.",
+ "confirmEnableTwoFAMsg": "Tens a certeza de que queres habilitar 2FA?",
+ "confirmDisableTwoFAMsg": "Tens a certeza de que queres desativar 2FA?",
+ "Settings": "Configurações",
+ "Dashboard": "Dashboard",
+ "New Update": "Nova Atualização",
+ "Language": "Linguagem",
+ "Appearance": "Aparência",
+ "Theme": "Tema",
+ "General": "Geral",
+ "Version": "Versão",
+ "Check Update On GitHub": "Verificar atualização no Github",
+ "List": "Lista",
+ "Add": "Adicionar",
+ "Add New Monitor": "Adicionar novo monitor",
+ "Quick Stats": "Estatísticas rápidas",
+ "Up": "On",
+ "Down": "Off",
+ "Pending": "Pendente",
+ "Unknown": "Desconhecido",
+ "Pause": "Pausa",
+ "Name": "Nome",
+ "Status": "Status",
+ "DateTime": "Data hora",
+ "Message": "Mensagem",
+ "No important events": "Nenhum evento importante",
+ "Resume": "Resumo",
+ "Edit": "Editar",
+ "Delete": "Apagar",
+ "Current": "Atual",
+ "Uptime": "Tempo de atividade",
+ "Cert Exp.": "Cert Exp.",
+ "day": "dia | dias",
+ "-day": "-dia",
+ "hour": "hora",
+ "-hour": "-hora",
+ "Response": "Resposta",
+ "Ping": "Ping",
+ "Monitor Type": "Tipo de Monitor",
+ "Keyword": "Palavra-Chave",
+ "Friendly Name": "Nome Amigável",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Porta",
+ "Heartbeat Interval": "Intervalo de Heartbeats",
+ "Retries": "Novas tentativas",
+ "Heartbeat Retry Interval": "Intervalo de repetição de Heartbeats",
+ "Advanced": "Avançado",
+ "Upside Down Mode": "Modo de cabeça para baixo",
+ "Max. Redirects": "Max. Redirecionamentos",
+ "Accepted Status Codes": "Status Code Aceitáveis",
+ "Save": "Guardar",
+ "Notifications": "Notificações",
+ "Not available, please setup.": "Não disponível, por favor configura.",
+ "Setup Notification": "Configurar Notificação",
+ "Light": "Claro",
+ "Dark": "Escuro",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Tema - Barra de Heartbeat",
+ "Normal": "Normal",
+ "Bottom": "Inferior",
+ "None": "Nenhum",
+ "Timezone": "Fuso horário",
+ "Search Engine Visibility": "Visibilidade do mecanismo de pesquisa",
+ "Allow indexing": "Permitir Indexação",
+ "Discourage search engines from indexing site": "Desencorajar que motores de busca indexem o site",
+ "Change Password": "Mudar senha",
+ "Current Password": "Senha atual",
+ "New Password": "Nova Senha",
+ "Repeat New Password": "Repetir Nova Senha",
+ "Update Password": "Atualizar Senha",
+ "Disable Auth": "Desativar Autenticação",
+ "Enable Auth": "Ativar Autenticação",
+ "disableauth.message1": "Tens a certeza que queres desativar a autenticação ?",
+ "disableauth.message2": "Isso é para alguém que tem autenticação de terceiros em frente ao 'UpTime Kuma' como o Cloudflare Access.",
+ "Please use this option carefully!": "Por favor, utiliza esta opção com cuidado.",
+ "Logout": "Logout",
+ "Leave": "Sair",
+ "I understand, please disable": "Eu entendo, por favor desativa.",
+ "Confirm": "Confirmar",
+ "Yes": "Sim",
+ "No": "Não",
+ "Username": "Utilizador",
+ "Password": "Senha",
+ "Remember me": "Lembra-me",
+ "Login": "Autenticar",
+ "No Monitors, please": "Nenhum monitor, por favor",
+ "add one": "adicionar um",
+ "Notification Type": "Tipo de Notificação",
+ "Email": "Email",
+ "Test": "Testar",
+ "Certificate Info": "Info. do Certificado ",
+ "Resolver Server": "Resolver Servidor",
+ "Resource Record Type": "Tipo de registro de aplicação",
+ "Last Result": "Último resultado",
+ "Create your admin account": "Cria a tua conta de admin",
+ "Repeat Password": "Repete a senha",
+ "Import Backup": "Importar Backup",
+ "Export Backup": "Exportar Backup",
+ "Export": "Exportar",
+ "Import": "Importar",
+ "respTime": "Tempo de Resp. (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Padrão habilitado",
+ "Apply on all existing monitors": "Aplicar em todos os monitores existentes",
+ "Create": "Criar",
+ "Clear Data": "Limpar Dados",
+ "Events": "Eventos",
+ "Heartbeats": "Pings",
+ "Auto Get": "Obter Automático",
+ "backupDescription": "Podes fazer backup de todos os monitores e todas as notificações num arquivo JSON.",
+ "backupDescription2": "OBS: Os dados do histórico e do evento não estão incluídos.",
+ "backupDescription3": "Dados confidenciais, como tokens de notificação, estão incluídos no arquivo de exportação, mantem-no com cuidado.",
+ "alertNoFile": "Seleciona um arquivo para importar.",
+ "alertWrongFileType": "Seleciona um arquivo JSON.",
+ "Clear all statistics": "Limpar todas as estatísticas",
+ "Skip existing": "Saltar existente",
+ "Overwrite": "Sobrescrever",
+ "Options": "Opções",
+ "Keep both": "Manter os dois",
+ "Verify Token": "Verificar Token",
+ "Setup 2FA": "Configurar 2FA",
+ "Enable 2FA": "Ativar 2FA",
+ "Disable 2FA": "Desativar 2FA",
+ "2FA Settings": "Configurações do 2FA",
+ "Two Factor Authentication": "Autenticação de Dois Fatores",
+ "Active": "Ativo",
+ "Inactive": "Inativo",
+ "Token": "Token",
+ "Show URI": "Mostrar URI",
+ "Tags": "Tag",
+ "Add New below or Select...": "Adicionar Novo abaixo ou Selecionar…",
+ "Tag with this name already exist.": "Já existe uma etiqueta com este nome.",
+ "Tag with this value already exist.": "Já existe uma etiqueta com este valor.",
+ "color": "cor",
+ "value (optional)": "valor (opcional)",
+ "Gray": "Cinza",
+ "Red": "Vermelho",
+ "Orange": "Laranja",
+ "Green": "Verde",
+ "Blue": "Azul",
+ "Indigo": "Índigo",
+ "Purple": "Roxo",
+ "Pink": "Rosa",
+ "Search...": "Pesquisa…",
+ "Avg. Ping": "Ping Médio",
+ "Avg. Response": "Resposta Média",
+ "Status Page": "Página de Status",
+ "Status Pages": "Página de Status",
+ "Entry Page": "Página de entrada",
+ "statusPageNothing": "Nada aqui, por favor, adiciona um grupo ou monitor.",
+ "No Services": "Nenhum Serviço",
+ "All Systems Operational": "Todos os Serviços Operacionais",
+ "Partially Degraded Service": "Serviço parcialmente degradados",
+ "Degraded Service": "Serviço Degradado",
+ "Add Group": "Adicionar Grupo",
+ "Add a monitor": "Adicionar um monitor",
+ "Edit Status Page": "Editar Página de Status",
+ "Go to Dashboard": "Ir para o dashboard",
+ "backupOutdatedWarning": "Depreciado: Uma vez que muitas funcionalidades foram adicionadas e esta funcionalidade de backup é um pouco desmanchada, não pode gerar ou restaurar um backup completo.",
+ "Schedule maintenance": "Agendar manutenção",
+ "Affected Monitors": "Monitores Afetados",
+ "Pick Affected Monitors...": "Escolher Monitores Afetados…",
+ "All Status Pages": "Todas as Páginas de Status",
+ "Select status pages...": "Selecionar Páginas de Status…",
+ "defaultNotificationName": "Meu alerta de {notification} ({number})",
+ "here": "aqui",
+ "Required": "Obrigatório",
+ "Post URL": "Post URL",
+ "Content Type": "Tipo de Conteúdo",
+ "webhookFormDataDesc": "{multipart} é bom para PHP. O JSON precisará ser analisado com {decodeFunction}",
+ "webhookAdditionalHeadersTitle": "Headers Adicionais",
+ "Webhook URL": "URL do Webhook",
+ "Application Token": "Token do Aplicativo",
+ "Server URL": "URL do Servidor",
+ "Priority": "Prioridade",
+ "emojiCheatSheet": "Folha de dicas de emojis: {0}",
+ "Read more": "Ler Mais",
+ "Method": "Método",
+ "Body": "Body",
+ "Headers": "Headers",
+ "PushUrl": "Enviar URL",
+ "HeadersInvalidFormat": "Os headers da solicitação não são JSON válidos: ",
+ "BodyInvalidFormat": "O body da solicitação não é um JSON válido: ",
+ "Monitor History": "Histórico do Monitor",
+ "clearDataOlderThan": "Mantenha os dados do histórico do monitor por {0} dias.",
+ "PasswordsDoNotMatch": "As passwords não coincidem.",
+ "records": "registros",
+ "One record": "Um registro",
+ "steamApiKeyDescription": "Para monitorar um Steam Game Server, você precisa de uma chave Steam Web-API. Pode registrar a chave da API aqui: ",
+ "Current User": "Usuário Atual",
+ "topicExplanation": "Tópico MQTT para monitorar",
+ "successMessage": "Mensagem de Sucesso",
+ "recent": "Recente",
+ "Done": "Feito",
+ "Info": "Informações",
+ "Security": "Segurança",
+ "Steam API Key": "Steam API Key",
+ "Shrink Database": "Encolher Base de Dados",
+ "Pick a RR-Type...": "Escolha um tipo RR…",
+ "Pick Accepted Status Codes...": "Escolha Códigos de Status Aceitos…",
+ "HTTP Options": "Opções HTTP",
+ "Create Incident": "Criar Incidente",
+ "Content": "Conteúdo",
+ "Style": "Estilo",
+ "info": "informações",
+ "warning": "aviso",
+ "danger": "perigo",
+ "critical": "crítico",
+ "primary": "primário",
+ "light": "luz",
+ "dark": "escuro",
+ "Post": "Post",
+ "Created": "Criado",
+ "Last Updated": "Ultima Atualização",
+ "Unpin": "Desmarcar",
+ "Switch to Light Theme": "Alterar para Tema Claro",
+ "Switch to Dark Theme": "Alterar para Tema Escuro",
+ "Show Tags": "Mostrar Tags",
+ "appriseInstalled": "Apprise está instalado.",
+ "appriseNotInstalled": "Apprise não está instalado. {0}",
+ "No monitors available.": "Nenhum monitor disponível.",
+ "Add one": "Adicione um",
+ "No Monitors": "Sem Monitores",
+ "Untitled Group": "Grupo sem Título",
+ "Services": "Serviços",
+ "Discard": "Descartar",
+ "Cancel": "Cancelar",
+ "Powered by": "Powered by",
+ "Customize": "Customizar",
+ "Custom CSS": "CSS Customizado",
+ "Custom Footer": "Footer Customizado",
+ "deleteStatusPageMsg": "Tem certeza de que deseja excluir esta página de status?",
+ "Proxies": "Proxies",
+ "default": "Padrão",
+ "enabled": "Ativar",
+ "setAsDefault": "Definir como Padrão",
+ "deleteProxyMsg": "Tem a certeza que quer excluir este proxy para todos os monitores?",
+ "setAsDefaultProxyDescription": "Este proxy será ativado por padrão para novos monitores. Você ainda pode desabilitar o proxy separadamente para cada monitor.",
+ "Valid": "Válido",
+ "Invalid": "Inválido",
+ "Remove Token": "Remover Token",
+ "Running": "Em Execução",
+ "Not running": "Não está em execução",
+ "Start": "Iniciar",
+ "Stop": "Parar",
+ "Add New Status Page": "Adicionar Nova Página de Status",
+ "Next": "Próximo",
+ "No consecutive dashes": "Sem traços consecutivos",
+ "Slug": "URL",
+ "Accept characters:": "Caracteres aceites:",
+ "startOrEndWithOnly": "Iniciar ou terminar apenas com {0}",
+ "The slug is already taken. Please choose another slug.": "URL já existe. Por favor escolha outro URL.",
+ "No Proxy": "Sem Proxy",
+ "Authentication": "Autenticação",
+ "HTTP Basic Auth": "Autenticação Básica HTTP",
+ "New Status Page": "Nova Página de Status",
+ "Page Not Found": "Página Não Encontrada",
+ "Reverse Proxy": "Proxy Reverso",
+ "Backup": "Backup",
+ "About": "Sobre",
+ "wayToGetCloudflaredURL": "(Download cloudflared de {0})",
+ "cloudflareWebsite": "Site da Cloudflare",
+ "Message:": "Mensagem:",
+ "HTTP Headers": "Headers HTTP",
+ "Trust Proxy": "Proxy de Confiança",
+ "Other Software": "Outro Software",
+ "For example: nginx, Apache and Traefik.": "Por exemplo: nginx, Apache e Traefik.",
+ "Please read": "Por favor leia",
+ "Subject:": "Assunto:",
+ "Valid To:": "Valido para:",
+ "Days Remaining:": "Dias Restantes:",
+ "Issuer:": "Emissor:",
+ "Fingerprint:": "Impressão Digital:",
+ "No status pages": "Nenhuma página de status",
+ "Domain Name Expiry Notification": "Notificação de Expiração de Nome de Domínio",
+ "Proxy": "Proxy",
+ "Date Created": "Data da Criação",
+ "Footer Text": "Texto do Footer",
+ "Show Powered By": "Mostrar Powered By",
+ "Domain Names": "Nomes de Domínio",
+ "signedInDisp": "Conectado como {0}",
+ "signedInDispDisabled": "Autenticação Desativada.",
+ "RadiusSecret": "Radius Secret",
+ "RadiusSecretDescription": "Secret compartilhado entre cliente e servidor",
+ "RadiusCallingStationIdDescription": "Identificador do dispositivo de chamada",
+ "Certificate Expiry Notification": "Notificação de Expiração do Certificado",
+ "API Username": "Nome de utilizador da API",
+ "API Key": "Chave API",
+ "Using a Reverse Proxy?": "Utilizando um Proxy Reverso?",
+ "Check how to config it for WebSocket": "Verifique como configurá-lo para WebSocket",
+ "Steam Game Server": "Steam Game Server",
+ "Most likely causes:": "Causas mais prováveis:",
+ "The resource is no longer available.": "O recurso já não está disponível.",
+ "There might be a typing error in the address.": "Pode haver um erro de digitação no endereço.",
+ "What you can try:": "O que pode tentar:",
+ "Retype the address.": "Volte a escrever o endereço.",
+ "Go back to the previous page.": "Voltar à página anterior.",
+ "Coming Soon": "Em Breve",
+ "Connection String": "Linha de Conexão",
+ "Query": "Query",
+ "settingsCertificateExpiry": "Validade do Certificado TLS",
+ "certificationExpiryDescription": "Os monitores HTTPS ativam a notificação quando o certificado TLS expira:",
+ "Setup Docker Host": "Configuração do Docker Host",
+ "Connection Type": "Tipo de conexão",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "Tem a certeza de querer apagar este docker host para todos os monitores?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Host": "Docker Host",
+ "Docker Hosts": "Docker Hosts",
+ "Domain": "Domínio",
+ "Workstation": "Estação de trabalho",
+ "Packet Size": "Tamanho do pacote",
+ "ZohoCliq": "ZohoCliq",
+ "Bot Token": "Token do Bot",
+ "wayToGetTelegramToken": "Pode obter o token a partir de {0}.",
+ "Chat ID": "ID do Chat",
+ "wayToGetTelegramChatID": "Pode obter o seu ID de chat enviando uma mensagem para o bot e indo a este URL para ver o chat_id:",
+ "YOUR BOT TOKEN HERE": "O TOKEN DO BOT AQUI",
+ "disableCloudflaredNoAuthMsg": "Está no modo Sem Autenticação, não é necessária uma palavra-passe.",
+ "Examples": "Exemplos",
+ "Long-Lived Access Token": "Token de Acesso de Longa Duração",
+ "wayToGetLineNotifyToken": "Pode obter o código de acesso a partir de {0}",
+ "Notification Service": "Serviço de Notificação",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Uma lista de Serviços de Notificação pode ser encontrada em Home Assistant em \"Developer Tools > Services\" pesquisa por \"notificação\" para encontrar o seu dispositivo/nome do telefone.",
+ "Home Assistant URL": "URL do Home Assistant",
+ "Event type:": "Tipo de evento:",
+ "Event data:": "Dados do evento:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Depois de escolher uma ação, por exemplo mudar a cena para onde uma luz RGB é vermelha.",
+ "Frontend Version": "Versão Frontend",
+ "Frontend Version do not match backend version!": "Versão Frontend não corresponde à versão backend!",
+ "backupRecommend": "Por favor, faça o backup do volume ou da pasta de dados (./data/) diretamente.",
+ "Optional": "Opcional",
+ "squadcast": "Squadcast",
+ "recurringInterval": "Intervalo",
+ "Recurring": "Recurrente",
+ "strategyManual": "Ativar/Desativar Manualmente",
+ "warningTimezone": "Está a utilizar o fuso horário do servidor",
+ "weekdayShortMon": "Segunda",
+ "weekdayShortTue": "Terça",
+ "weekdayShortWed": "Quarta",
+ "weekdayShortThu": "Quinta",
+ "weekdayShortFri": "Sexta",
+ "weekdayShortSat": "Sábado",
+ "weekdayShortSun": "Domingo",
+ "dayOfWeek": "Dia da Semana",
+ "dayOfMonth": "Dia do Mês",
+ "lastDay": "Último Dia",
+ "lastDay2": "2º Último Dia do Mês",
+ "lastDay3": "3º Último Dia do Mês",
+ "lastDay4": "4º Último Dia do Mês",
+ "No Maintenance": "Nenhuma Manutenção",
+ "maintenanceStatus-under-maintenance": "Em Manutenção",
+ "maintenanceStatus-inactive": "Inativo",
+ "maintenanceStatus-scheduled": "Agendado",
+ "maintenanceStatus-ended": "Terminado",
+ "Display Timezone": "Mostrar Fuso horário",
+ "Server Timezone": "Fuso horário do Servidor",
+ "statusPageMaintenanceEndDate": "Acabou",
+ "Maintenance": "Manutenção",
+ "Specific Monitor Type": "Tipo de Monitor Específico",
+ "Resend Notification if Down X times consequently": "Reenviar notificação se Off X vezes consequentemente",
+ "resendEveryXTimes": "Reenviar a cada {0} vezes",
+ "resendDisabled": "Reenviar desativado",
+ "Push URL": "Enviar URL",
+ "webhook": "Webhook",
+ "topic": "Tema",
+ "RadiusCalledStationIdDescription": "Identificador do dispositivo chamado",
+ "Automations can optionally be triggered in Home Assistant:": "As automatizações podem opcionalmente ser ativadas em Home Assistant:",
+ "or": "ou",
+ "markdownSupported": "Sintaxe de redução suportada",
+ "Start of maintenance": "Início da manutenção",
+ "webhookJsonDesc": "{0} é bom para qualquer servidor HTTP moderno, como Express.js",
+ "webhookAdditionalHeadersDesc": "Define headers adicionais enviados com o webhook.",
+ "successMessageExplanation": "Mensagem MQTT que será considerada como sucesso",
+ "error": "erro",
+ "Please input title and content": "Por favor insira o título e o conteúdo",
+ "Hide Tags": "Ocultar Tags",
+ "Description": "Descrição",
+ "shrinkDatabaseDescription": "Acionar banco de dados VACUUM para SQLite. Se seu banco de dados for criado após 1.10.0, AUTO_VACUUM já está ativado e esta ação não é necessária.",
+ "proxyDescription": "Os proxies devem ser atribuídos a um monitor para funcionar.",
+ "enableProxyDescription": "Este proxy não afetará as solicitações do monitor até que seja ativado. Você pode controlar temporariamente a desativação do proxy de todos os monitores pelo status de ativação.",
+ "Don't know how to get the token? Please read the guide:": "Não sabe como obter o token? Por favor, leia o guia:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "A conexão atual pode ser perdida se estiver conectando via Cloudflare Tunnel. Tem certeza de que deseja pará-lo? Digite sua senha atual para confirmar.",
+ "Docker Container": "Contentor Docker",
+ "Container Name / ID": "Nome / ID do Contentor",
+ "supportTelegramChatID": "Chat de Apoio Direto / Grupo / ID do Chat do Canal",
+ "chatIDNotFound": "O ID do Chat não é encontrado; por favor envie uma mensagem a este bot primeiro",
+ "trustProxyDescription": "Confiar nos headers 'X-Forwarded-*'. Se quiser obter o IP correto do cliente e o seu Uptime Kuma está por detrás de um proxy como o Nginx ou Apache, deve activá-lo.",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "O Token de Acesso de Longa Duração pode ser criado clicando no nome do seu perfil (em baixo à esquerda) e descendo para o fundo da pagina e depois clicando em Criar Token. ",
+ "lastDay1": "Último Dia do Mês",
+ "pauseMaintenanceMsg": "Quer mesmo colocar em pausa?",
+ "maintenanceStatus-unknown": "Desconhecido",
+ "needPushEvery": "Deve chamar este URL a cada {0} segundos.",
+ "pushOptionalParams": "Parâmetros opcionais: {0}",
+ "Title": "Título",
+ "User": "Utilizador",
+ "Installed": "Instalado",
+ "Not installed": "Não instalado",
+ "RadiusCalledStationId": "Id da estação chamada",
+ "RadiusCallingStationId": "Id da estação de chamada",
+ "default: notify all devices": "padrão: notificar todos os dispositivos",
+ "Trigger type:": "Tipo de gatilho:",
+ "telegram": "Telegram",
+ "Help": "Ajuda",
+ "Game": "Jogo",
+ "Monitor": "Monitor | Monitores",
+ "Default": "Padrão",
+ "Certificate Chain": "Certificate Chain",
+ "Show update if available": "Mostrar atualização se disponível",
+ "Also check beta release": "Verifique também a versão beta",
+ "Primary Base URL": "URL Base Principal",
+ "statusMaintenance": "Manutenção",
+ "Passive Monitor Type": "Tipo de Monitor Passivo",
+ "Custom": "Personalizar",
+ "General Monitor Type": "Tipo de Monitor Geral"
+}
diff --git a/src/lang/ro.json b/src/lang/ro.json
new file mode 100644
index 000000000..066d1ed5c
--- /dev/null
+++ b/src/lang/ro.json
@@ -0,0 +1,563 @@
+{
+ "languageName": "Română",
+ "Dashboard": "Panou de Control",
+ "Help": "Ajutor",
+ "Appearance": "Aspect",
+ "Theme": "Temă",
+ "General": "General",
+ "Version": "Versiune",
+ "Check Update On GitHub": "Verifică Actualitatea pe GitHub",
+ "Quick Stats": "Statistici Rapide",
+ "Up": "Sus",
+ "Down": "Jos",
+ "statusMaintenance": "Mentenanță",
+ "Maintenance": "Mentenanță",
+ "General Monitor Type": "Monitor de Tip General",
+ "Passive Monitor Type": "Monitor de Tip Pasiv",
+ "markdownSupported": "Limbaj Markdown Acceptat",
+ "Pause": "Pauză",
+ "Name": "Nume",
+ "Status": "Status",
+ "DateTime": "DatăOră",
+ "Message": "Mesaj",
+ "No important events": "Niciun eveniment important",
+ "Resume": "Reia",
+ "Delete": "Șterge",
+ "Uptime": "Timpul de funcționare",
+ "Cert Exp.": "Expirarea Certificatului",
+ "Monitor": "Monitor | Monitoare",
+ "day": "zi | zile",
+ "-day": "-zi",
+ "hour": "oră",
+ "Edit": "Modifică",
+ "Ping": "Ping",
+ "Monitor Type": "Tipul Monitorului",
+ "Keyword": "Cuvânt Cheie",
+ "Friendly Name": "Nume Ușor de Recunoscut",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Retries": "Reîncercări",
+ "Heartbeat Retry Interval": "Intervalul Reîncercării Heartbeat-ului",
+ "Advanced": "Avansat",
+ "checkEverySecond": "Verifică la fiecare {0} secunde",
+ "retryCheckEverySecond": "Reîncearcă la fiecare {0} secunde",
+ "resendEveryXTimes": "Retrimite de {0} ori",
+ "resendDisabled": "Retrimiterea dezactivată",
+ "ignoreTLSError": "Ignoră erorile TLS/SSL pentru site-urile HTTPS",
+ "upsideDownModeDescription": "Întoarce statusul cu susul în jos. Dacă serviciul este contactabil, este OFFLINE.",
+ "Upside Down Mode": "Modul cu Susul in Jos",
+ "Max. Redirects": "Nr. Max. de Redirecționări",
+ "Accepted Status Codes": "Coduri de Status Acceptate",
+ "Push URL": "Împinge URL",
+ "needPushEvery": "Acest URL trebuie să fie contactat la fiecare {0} secunde.",
+ "pushOptionalParams": "Parametrii opționali: {0}",
+ "Save": "Salvează",
+ "Notifications": "Notificări",
+ "Not available, please setup.": "Indisponibil, trebuie configurat.",
+ "Setup Notification": "Configurare Notificări",
+ "Light": "Luminos",
+ "Dark": "Întunecat",
+ "Auto": "Automat",
+ "Normal": "Normal",
+ "Bottom": "Fund",
+ "None": "Nimic",
+ "Timezone": "Fus Orar",
+ "Search Engine Visibility": "Vizibilitate în Motoarele de Căutare",
+ "Allow indexing": "Permite Indexarea",
+ "Change Password": "Schimbă Parola",
+ "Current Password": "Parola Curentă",
+ "New Password": "Parolă Nouă",
+ "Repeat New Password": "Repetă Parola Nouă",
+ "Update Password": "Actualizează Parola",
+ "Disable Auth": "Dezactivează Autentificarea",
+ "Enable Auth": "Activează Autentificarea",
+ "disableauth.message1": "Ești sigur că vrei să dezactivezi autentificarea ?",
+ "Please use this option carefully!": "Utilizează Această Opțiune cu Grijă!",
+ "Logout": "Delogare",
+ "Leave": "Părăsește",
+ "I understand, please disable": "Am luat la cunoștință, dezactivează",
+ "Confirm": "Confirmă",
+ "Yes": "Da",
+ "No": "Nu",
+ "Username": "Nume de Utilizator",
+ "Password": "Parolă",
+ "Remember me": "Ține-mă Minte",
+ "No Monitors, please": "Niciun monitor, te rog",
+ "add one": "adaugă unul",
+ "Resource Record Type": "Tipul de Înregistrare a Resurselor",
+ "Create your admin account": "Crează un Cont de Administrator",
+ "Repeat Password": "Repetă Parola",
+ "Import Backup": "Importează Backup-ul",
+ "Export Backup": "Exporta Backup-ul",
+ "Export": "Exportează",
+ "Import": "Importă",
+ "respTime": "Timp de Răspuns (ms)",
+ "Apply on all existing monitors": "Aplică pentru toate monitoarele existente",
+ "Clear Data": "Șterge Datele",
+ "Events": "Evenimente",
+ "Heartbeats": "Heartbeat-uri",
+ "Auto Get": "Obține Automat",
+ "Affected Monitors": "Monitoare Afectate",
+ "Pick Affected Monitors...": "Alege Monitoarele Afectate…",
+ "Start of maintenance": "Începerea Mentenanței",
+ "All Status Pages": "Toate Paginile de Status",
+ "Skip existing": "Sari Existente",
+ "Overwrite": "Suprascrie",
+ "Options": "Opțiuni",
+ "Keep both": "Păstrează Ambele",
+ "Verify Token": "Verifică Token-ul",
+ "Enable 2FA": "Activează Autentificarea în Doi Pași",
+ "Disable 2FA": "Dezactivează Autentificarea în Doi Pași",
+ "2FA Settings": "Setări Autentificare în Doi Pași",
+ "Active": "Activ",
+ "Token": "Token",
+ "Show URI": "Arată URI",
+ "Tags": "Etichete",
+ "Tag with this name already exist.": "Deja Există o Etichetă cu Acest Nume.",
+ "Tag with this value already exist.": "Deja Există o Etichetă cu Această Valoare.",
+ "color": "Culoare",
+ "value (optional)": "valoare (opțional)",
+ "Gray": "Gri",
+ "Red": "Roșu",
+ "Orange": "Portocaliu",
+ "Green": "Verde",
+ "Blue": "Albastru",
+ "Indigo": "Indigo",
+ "Purple": "Violet",
+ "Custom": "Personalizat",
+ "Entry Page": "Pagina de Implicită",
+ "No Services": "Niciun Serviciu",
+ "All Systems Operational": "Toate Sistemele Operaționale",
+ "Partially Degraded Service": "Servicii Parțial Degradate",
+ "Degraded Service": "Servicii Degradate",
+ "Add Group": "Adaugă Grup",
+ "Add a monitor": "Adaugă Monitor",
+ "Edit Status Page": "Modifică Pagina de Status",
+ "Status Page": "Pagina de Status",
+ "Status Pages": "Pagini de Status",
+ "defaultNotificationName": "A mea {notification} Alertă ({number})",
+ "here": "aici",
+ "Required": "Necesar",
+ "webhook": "Webhook",
+ "Post URL": "Postează URL",
+ "Content Type": "Tipul Conținutului",
+ "webhookFormDataDesc": "{multipart} este bun pentru PHP. JSON-ul va fi analizat cu {decodeFunction}",
+ "webhookAdditionalHeadersTitle": "Antete adiționale",
+ "Webhook URL": "URL-ul Webhook-ului",
+ "Application Token": "Token-ul Aplicației",
+ "Server URL": "URL-ul Server-ului",
+ "Priority": "Prioritate",
+ "emojiCheatSheet": "Emoji-uri: {0}",
+ "Read more": "Vezi Mai Mult",
+ "appriseInstalled": "Apprise instalat.",
+ "appriseNotInstalled": "Apprise Neinstalat. {0}",
+ "Method": "Metodă",
+ "Body": "Corp",
+ "Headers": "Antete",
+ "PushUrl": "Împinge URL",
+ "BodyInvalidFormat": "Formatul corpului de request nu este valid: ",
+ "Monitor History": "Istoricul Monitorului",
+ "PasswordsDoNotMatch": "Parolele nu sunt la fel.",
+ "One record": "O înregistrare",
+ "Current User": "Utilizatorul Curent",
+ "topic": "Subiect",
+ "topicExplanation": "Subiectul MQTT către monitor",
+ "successMessage": "Mesaj de Succes",
+ "successMessageExplanation": "Mesajul MQTT care va fi considerat un succes",
+ "Done": "Terminat",
+ "Info": "Informații",
+ "Security": "Securitate",
+ "Shrink Database": "Miceste Baza de Date",
+ "Default": "Implicit",
+ "HTTP Options": "Opțiuni HTTP",
+ "Title": "Titlu",
+ "Content": "Conținut",
+ "Style": "Stil",
+ "info": "informații",
+ "warning": "avertizare",
+ "danger": "pericol",
+ "error": "eroare",
+ "critical": "critic",
+ "dark": "întunecat",
+ "Post": "Postează",
+ "Last Updated": "Actualizat",
+ "Unpin": "Desprinde",
+ "Switch to Light Theme": "Schimbă la Tema Luminoasă",
+ "Show Tags": "Arată Etichetele",
+ "Hide Tags": "Ascunde Etichetele",
+ "Description": "Descriere",
+ "No monitors available.": "Niciun monitor disponibil.",
+ "Discard": "Elimină",
+ "Cancel": "Anulează",
+ "Powered by": "Cu ajutorul",
+ "Customize": "Personalizează",
+ "Custom Footer": "Subsol Personalizat",
+ "Custom CSS": "CSS Personalizat",
+ "deleteStatusPageMsg": "Ești sigur că vrei să ștergi această pagină de status?",
+ "Proxies": "Proxy-uri",
+ "default": "Implicit",
+ "enabled": "Activat",
+ "setAsDefault": "Setează ca Implicit",
+ "deleteProxyMsg": "Ești sigur că vrei să ștergi acest proxy pentru toate monitoarele?",
+ "Certificate Chain": "Lanț-ul Certificatului",
+ "Valid": "Valid",
+ "Invalid": "Invalid",
+ "User": "Utilizator",
+ "Installed": "Instalat",
+ "Running": "Operează",
+ "Not running": "Nu operează",
+ "Remove Token": "Elimină token-ul",
+ "Start": "Start",
+ "Stop": "Stop",
+ "Add New Status Page": "Adaugă o Pagină de Status Nouă",
+ "Slug": "Slug",
+ "startOrEndWithOnly": "Începe sau termină doar cu {0}",
+ "No consecutive dashes": "Fără cratime consecutive",
+ "Next": "Înainte",
+ "No Proxy": "Niciun Proxy",
+ "Authentication": "Autentificate",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "Pagină de Status Nouă",
+ "Page Not Found": "Pagină Negăsită",
+ "Backup": "Backup",
+ "About": "Despre",
+ "wayToGetCloudflaredURL": "(Cloudflared a fost descărcat de la {0})",
+ "cloudflareWebsite": "Website-ul Cloudflare",
+ "Message:": "Mesaj:",
+ "HTTP Headers": "Antete HTTP",
+ "Trust Proxy": "Ai încredere în Proxy",
+ "Other Software": "Alt Software",
+ "For example: nginx, Apache and Traefik.": "De exemplu: nginx, Apache și Traefik.",
+ "Please read": "Te rog citește",
+ "Subject:": "Subiect:",
+ "Valid To:": "Valid Pâna la:",
+ "Days Remaining:": "Zile rămase:",
+ "Issuer:": "Emitent:",
+ "Fingerprint:": "Amprentă:",
+ "No status pages": "Nicio pagină de status",
+ "Domain Name Expiry Notification": "Notificare cu Privire la Expirarea Numelui de Domeniu",
+ "Proxy": "Proxy",
+ "Date Created": "Data Creării",
+ "Footer Text": "Text-ul pentru subsol",
+ "Show Powered By": "Arată ”Cu ajutorul”",
+ "Reverse Proxy": "Proxy invers",
+ "Domain Names": "Nume de domeniu",
+ "signedInDisp": "Autentificat ca {0}",
+ "signedInDispDisabled": "Autentificare Dezactivată.",
+ "RadiusSecret": "Secret Radius",
+ "RadiusSecretDescription": "Secret împărtășit cu client-ul și server-ul",
+ "RadiusCalledStationId": "ID-ul Stației Contactate",
+ "RadiusCalledStationIdDescription": "Identificatorul serviciului apelat",
+ "RadiusCallingStationId": "ID-ul Stației Contactante",
+ "RadiusCallingStationIdDescription": "Identificatorul dispozitivului contactant",
+ "API Username": "Nume de utilizator al API-ului",
+ "API Key": "Cheie API",
+ "Also check beta release": "Verifică și actualizările beta",
+ "Using a Reverse Proxy?": "Folosești un Proxy Invers?",
+ "Check how to config it for WebSocket": "Află cum să îl configurezi pentru WebSocket",
+ "Steam Game Server": "Server de Joc Steam",
+ "Most likely causes:": "Cea mai probabilă cauză:",
+ "There might be a typing error in the address.": "Ar putea exista o eroare de scriere în adresă.",
+ "What you can try:": "Ce poți încerca:",
+ "Retype the address.": "Rescrie adresa.",
+ "Go back to the previous page.": "Mergi la pagina precedentă.",
+ "Coming Soon": "În curând.",
+ "Connection String": "Connection String",
+ "Query": "Query",
+ "settingsCertificateExpiry": "Expirarea certificatului TLS",
+ "Setup Docker Host": "Configurează Docker Host",
+ "Connection Type": "Tipul Conexiunii",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "Ești sigur că vrei să ștergi acest docker host pentru toate montoarele?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Container Docker",
+ "Container Name / ID": "Numele Container-ului / ID",
+ "Docker Host": "Docker Host",
+ "Domain": "Domeniu",
+ "Workstation": "Stație de lucru",
+ "Packet Size": "Mărime Pachet",
+ "telegram": "Telegram",
+ "ZohoCliq": "ZohoCliq",
+ "Bot Token": "Token Robot",
+ "wayToGetTelegramToken": "Poți obține un token de la {0}.",
+ "Chat ID": "ID-ul Chat-ului",
+ "YOUR BOT TOKEN HERE": "TOKEN-UL TĂU DE ROBOT",
+ "chatIDNotFound": "ID-ul Chat-ului nu a fost găsit; te rog întâi trimite un mesaj către robot",
+ "disableCloudflaredNoAuthMsg": "Ești în modul fără autentificare, nu ai nevoie de o parola.",
+ "wayToGetLineNotifyToken": "Poți obține un token de acces de la {0}",
+ "Examples": "Exemple",
+ "Home Assistant URL": "URL-ul de la Home Assistant",
+ "Long-Lived Access Token": "Token de acces cu durata de viață mare",
+ "default: notify all devices": "implicit: notifică toate dispozitivele",
+ "Automations can optionally be triggered in Home Assistant:": "Automatizările pot fi declanșate opțional în Home Assistant:",
+ "Trigger type:": "Tipul Declanșatorului:",
+ "Event type:": "Tipul Evenimentului:",
+ "Event data:": "Datele Evenimentului:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Apoi alege o acțiune, de exemplu, schimbă un LED RGB în roșu.",
+ "Frontend Version": "Versiunea Frontend-ului",
+ "Frontend Version do not match backend version!": "Versiunea Frontend-ului nu este aceeași cu cea a backend-ului!",
+ "backupRecommend": "Te rog fă o copie a directorului (./data/) în loc.",
+ "Optional": "Opțional",
+ "squadcast": "Squadcast",
+ "or": "sau",
+ "recurringInterval": "Interval",
+ "Recurring": "Recurentă",
+ "strategyManual": "Activ/Inactiv Manual",
+ "warningTimezone": "Folosește fusul orar al server-ului",
+ "weekdayShortMon": "Luni",
+ "weekdayShortTue": "Marți",
+ "weekdayShortWed": "Miercuri",
+ "weekdayShortThu": "Joi",
+ "weekdayShortFri": "Vineri",
+ "weekdayShortSat": "Sâmbătă",
+ "weekdayShortSun": "Duminică",
+ "dayOfWeek": "Ziua săptămânii",
+ "dayOfMonth": "Ziua lunii",
+ "lastDay": "Ultima zi",
+ "lastDay1": "Ultima zi a Lunii",
+ "lastDay2": "Penultima zi a Lunii",
+ "lastDay3": "Antepenultima zi a Lunii",
+ "No Maintenance": "Fără mentenanță",
+ "pauseMaintenanceMsg": "Ești sigur că vrei sa pui pe pauză?",
+ "maintenanceStatus-under-maintenance": "În mentenanță",
+ "maintenanceStatus-inactive": "Inactiv",
+ "maintenanceStatus-scheduled": "Planificat",
+ "maintenanceStatus-ended": "Terminat",
+ "maintenanceStatus-unknown": "Necunoscut",
+ "Server Timezone": "Fusul Orar al Server-ului",
+ "statusPageMaintenanceEndDate": "Sfârșit",
+ "IconUrl": "URL-ul pictogramei",
+ "Enable DNS Cache": "Activează DNS Cache",
+ "Enable": "Activează",
+ "Disable": "Dezactivează",
+ "Effective Date Range": "Interval în care se aplică",
+ "Schedule Maintenance": "Planifică Mentenanță",
+ "Date and Time": "Dată și Oră",
+ "DateTime Range": "Interval DatăOră",
+ "loadingError": "Nu se pot obține datele, te rog încearcă mai târziu.",
+ "plugin": "Plugin | Plugin-uri",
+ "install": "Instalează",
+ "installing": "Instalare",
+ "uninstall": "Dezinstalează",
+ "confirmUninstallPlugin": "Ești sigur că vrei să dezinstalezi acest plugin?",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "Niciunul / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (456)",
+ "From Email": "De la Email",
+ "emailCustomSubject": "Subiect Personalizat",
+ "To Email": "La Email",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "URL-ul Webhook-ului Discord",
+ "Bot Display Name": "Numele Robotului",
+ "Prefix Custom Message": "Prefix Personalizat",
+ "Hello @everyone is...": "Salut {'@'}everyone sunt…",
+ "wayToGetTeamsURL": "Poți învăța cum să creezi un URL webhook {0}.",
+ "wayToGetZohoCliqURL": "Poți învăța cum să creezi un URL webhook {0}.",
+ "needSignalAPI": "Trebuie să ai un client signal cu API-ul REST.",
+ "Number": "Număr",
+ "Recipients": "Destinatari",
+ "Access Token": "Token de acces",
+ "Channel access token": "Token de acces al canalului",
+ "Line Developers Console": "Consola Dezvoltatorilor Line",
+ "lineDevConsoleTo": "Consola Dezvoltatorilor Line - {0}",
+ "Basic Settings": "Setări de Bază",
+ "User ID": "ID-ul Utilizatorului",
+ "Messaging API": "API-ul pentru Mesagerie",
+ "Icon URL": "URL-ul Pictogramei",
+ "dataRetentionTimeError": "Perioada de renenție trebuie să fie 0 sau mai mare",
+ "infiniteRetention": "Setează la „0” pentru retenție pe perioadă nedeterminată.",
+ "confirmDeleteTagMsg": "Ești sigur că vrei să ștergi această etichetă? Monitoarele asociate cu această etichetă nu vor fi șterse.",
+ "enableGRPCTls": "Permite trimiterea cererilor gRPC cu conexiune TLS",
+ "grpcMethodDescription": "Numele metodei este convert to cammelCase format cum ar fi sayHello, check, etc.",
+ "deleteMonitorMsg": "Ești sigur că vrei să ștergi acest monitor?",
+ "deleteMaintenanceMsg": "Ești sigur că vrei să ștergi această mentenanță?",
+ "dnsPortDescription": "Port-ul server-ului DNS. Este implicit 53. Poți schimba acest port oricând.",
+ "resolverserverDescription": "Cloudflare este server-ul implicit. Poți schimba asta oricând.",
+ "rrtypeDescription": "Selectează tipul RR pe care vrei să îl monitorizezi",
+ "pauseMonitorMsg": "Ești sigur că vrei să pui pe pauză?",
+ "clearEventsMsg": "Ești sigur că vrei să ștergi toate evenimentele asociate cu acest monitor?",
+ "clearHeartbeatsMsg": "Ești sigur că vrei să ștergi toate heartbeat-urile asociate cu acest monitor?",
+ "confirmClearStatisticsMsg": "Ești sigur că vrei să ștergi TOATE statisticile?",
+ "confirmImportMsg": "Ești sigur că vrei să importezi backup-ul? Te rog verifică dacă ai selectat varianta corectă de importare.",
+ "twoFAVerifyLabel": "Te rog introdu token-ul pentru a verifica Autentificarea în Doi Pași:",
+ "tokenValidSettingsMsg": "Token-ul este valid! Acum poți salva setările legate de Autentificarea în Doi Pași.",
+ "confirmEnableTwoFAMsg": "Ești sigur că vrei să activezi Autentificarea în Doi Pași?",
+ "recurringIntervalMessage": "Rulează o dată pe zi | Rulează o dată la {0} zile",
+ "affectedMonitorsDescription": "Selectează monitoarele afectate de această mentenanță",
+ "atLeastOneMonitor": "Selectează cel puțin un monitor afectat",
+ "passwordNotMatchMsg": "Parolele nu se potrivesc.",
+ "notificationDescription": "Notificările trebuie atribuite unui monitor pentru a funcționa.",
+ "backupDescription": "Acum poți face backup la toate monitoarele și notificările într-un fișier JSON.",
+ "backupDescription2": "Notă: istoricul și datele evenimentelor nu sunt incluse.",
+ "endpoint": "Punct final",
+ "octopushAPIKey": "„Cheia API” din credențialele HTTP API în panoul de control",
+ "octopushLogin": "„Logare” din credențialele HTTP API în panoul de control",
+ "promosmsLogin": "Numele de Login API",
+ "promosmsPassword": "Parola API",
+ "pushoversounds pushover": "Pushover (implicit)",
+ "pushoversounds bike": "Bicicletă",
+ "pushoversounds bugle": "Goarnă",
+ "pushoversounds cashregister": "Casă de marcat",
+ "pushoversounds classical": "Clasic",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Cădere",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Sosire",
+ "pushoversounds intermission": "Pauză",
+ "pushoversounds magic": "Magie",
+ "pushoversounds mechanical": "Mecanic",
+ "pushoversounds tugboat": "Remorcher",
+ "pushoversounds alien": "Alarmă Extraterestră (lung)",
+ "pushoversounds climb": "Urcare (lung)",
+ "pushoversounds echo": "Ecou Pushover (lung)",
+ "pushoversounds updown": "Sus Jos (lung)",
+ "pushoversounds vibrate": "Doar Vibrații",
+ "pushoversounds none": "Niciunul (silențios)",
+ "pushyAPIKey": "Cheie API secretă",
+ "pushyToken": "Token dispozitiv",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Pushy by Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Suportă 50+ Servicii de Notificare)",
+ "GoogleChat": "Google Chat (Doar Google Workspace)",
+ "pushbullet": "Pushbullet",
+ "Kook": "Kook",
+ "Guild ID": "ID-ul Breslei (Guild-ului)",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "Cheie Utilizator",
+ "Device": "Dispozitiv",
+ "Message Title": "Titlu Mesaj",
+ "Notification Sound": "Sunet Notificare",
+ "More info on:": "Mai multe informații la: {0}",
+ "pushoverDesc2": "Dacă vrei să trimiți notificări la dispozitive diferite, completează câmpul „Dispozitiv”",
+ "Settings": "Setări",
+ "New Update": "Update Nou",
+ "Language": "Limbă",
+ "Game": "Joc",
+ "Primary Base URL": "URL-ul de Bază",
+ "List": "Listă",
+ "Add": "Adaugă",
+ "Add New Monitor": "Adaugă Monitor Nou",
+ "Pending": "În așteptare",
+ "Unknown": "Necunoscut",
+ "Specific Monitor Type": "Monitor de Tip Specific",
+ "pauseDashboardHome": "Pauză",
+ "Current": "Curent",
+ "-hour": "-oră",
+ "Response": "Răspuns",
+ "Heartbeat Interval": "Interval Heartbeat",
+ "Resend Notification if Down X times consequently": "Retrimite Notificarea dacă se Întâmpină Eroarea de X ori consecutiv",
+ "retriesDescription": "Numărul Maxim de Reîncercări înainte ca serviciul să fie marcat offline și să se trimită o notificare",
+ "maxRedirectDescription": "Numărul maxim de redirecționări permise. Setează la „0” pentru a dezactiva redirecționările.",
+ "Theme - Heartbeat Bar": "Temă - Bara de Heartbeat",
+ "Discourage search engines from indexing site": "Descurajează Motoarele de Căutare din a Indexa Acest Site",
+ "disableauth.message2": "Este proiectat pentru scenarii în care intenționezi să implementezi soluții terțe de autentificare în fața Uptime Kuma, cum ar fi Cloudflare Access, Authelia, sau alt mecanism de autentificare.",
+ "Login": "Logare",
+ "Notification Type": "Tipul Notificării",
+ "Email": "Email",
+ "Test": "Test",
+ "Certificate Info": "Informațiile Certificatului",
+ "Resolver Server": "Server-ul de Rezolvare",
+ "Last Result": "Ultimul Rezultat",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Implicit activat",
+ "Create": "Creează",
+ "Schedule maintenance": "Programează Mentenanță",
+ "Select status pages...": "Selectează pagina de status…",
+ "alertNoFile": "Te rog selectează un fișier de importat.",
+ "alertWrongFileType": "Te rog selectează un fișier de tip JSON.",
+ "Clear all statistics": "Șterge toate Statisticile",
+ "Setup 2FA": "Configurează Autentificarea în Doi Pași",
+ "Two Factor Authentication": "Autentificare în Doi Pași",
+ "Inactive": "Inactiv",
+ "Add New below or Select...": "Adaugă Nou Mai Jos sau Selectează…",
+ "Pink": "Roz",
+ "Search...": "Caută…",
+ "Avg. Ping": "Ping Mediu",
+ "Avg. Response": "Timp de Răspuns Mediu",
+ "statusPageNothing": "Nimic aici, te rog adaugă un grup sau un monitor.",
+ "Go to Dashboard": "Mergi la Panoul de Control",
+ "webhookJsonDesc": "{0} este bun pentru orice server HTTP modern cum ar fi Express.js",
+ "webhookAdditionalHeadersDesc": "Setează antete adiționale trimise împreună cu webhook-ul.",
+ "HeadersInvalidFormat": "Formatul header-urilor de request nu este valid: ",
+ "clearDataOlderThan": "Păstrează istoricul monitorului pentru {0} zile.",
+ "records": "înregistrări",
+ "steamApiKeyDescription": "Pentru a monitoriza un server de joc Steam, ai nevoie de un o cheie pentru „Web-API„-ul Steam. Poți înregistra o astfel de cheie aici: ",
+ "recent": "Recent",
+ "Steam API Key": "Cheia API Steam",
+ "Pick a RR-Type...": "Alege un Tip-RR…",
+ "Pick Accepted Status Codes...": "Alege Codurile de Status Acceptate…",
+ "Create Incident": "Creează un Incident",
+ "primary": "implicit",
+ "light": "luminos",
+ "Please input title and content": "Te rog adaugă un titlu și conținut",
+ "Created": "Creat",
+ "Switch to Dark Theme": "Schimbă la Tema Întunecată",
+ "Add one": "Adaugă unul",
+ "No Monitors": "Niciun monitor",
+ "Untitled Group": "Grup fără nume",
+ "Services": "Servicii",
+ "shrinkDatabaseDescription": "Declanșează database VACUUM pentru SQLite. Dacă baza ta de date a fost creată după 1.10.0, AUTO_VACUUM este deja activat și această acțiune nu este necesară.",
+ "proxyDescription": "Proxy-urile trebuie să fie atribuite unui monitor pentru a funcționa.",
+ "enableProxyDescription": "Acest proxy nu va afecta cererile monitoarelor până este activat. Poți dezactiva temporar proxy-ul pentru toate monitoarele.",
+ "setAsDefaultProxyDescription": "Acest proxy va fi activat implicit pentru toate monitoarele noi. Poți totuși să îl dezactivezi separat pentru fiecare monitor.",
+ "Not installed": "Neinstalat",
+ "Accept characters:": "Acceptă caractere:",
+ "The slug is already taken. Please choose another slug.": "Acest slug este deja luat. Te rog alege alt slug.",
+ "Don't know how to get the token? Please read the guide:": "Nu știi cum să obții token-ul? Te rog citește acest ghid:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Conexiunea curentă s-ar putea pierde dacă ești în proces de conectare printr-un tunel Cloudflare. Ești sigur că vrei să îl oprești? Tastează-ți parola curentă pentru a confirma.",
+ "Certificate Expiry Notification": "Notificare cu privire la expirarea certificatului",
+ "Show update if available": "Arată actualizarea dacă e disponibilă",
+ "The resource is no longer available.": "Această resursă nu mai este disponibilă.",
+ "certificationExpiryDescription": "Monitoarele HTTPS declanșează notificarea când certificatul TLS expiră în:",
+ "Docker Hosts": "Docker Hosts",
+ "supportTelegramChatID": "Suport Mesaje Directe / Grup / ID-ul Canalului de Text",
+ "wayToGetTelegramChatID": "Poți obține ID-ul chat-ului prin trimiterea unui mesaj către robot și mergând la acest URL pentru a vedea chat_id:",
+ "trustProxyDescription": "Ai incredere in antetele 'X-Forwarded-*'. Dacă vrei să obții IP-ul corect al client-ului și Uptime Kuma este în spatele unui proxy, cum ar fi Nginx sau Apache, trebuie să activezi asta.",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token-ul de acces cu durată de viață mare poate fi creat dacă dai click pe numele tău de profil (stânga jos) și prin derularea până la capătul paginii și click pe „Creează Token”. ",
+ "Notification Service": "Serviciu de Notificări",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "O listă cu serviciile de notificare poate fi găsită în Home Assistant sub „Opțiuni Dezvoltator > Servicii” caută „notificare” pentru a găsi numele dispozitivului/telefonului.",
+ "backupOutdatedWarning": "Depășit: Pentru că au fost adăugate multe funcționalități, iar această funcție de backup este neîntreținută, nu poate genera sau restaura un backup complet.",
+ "lastDay4": "Răsantepenultima zi a Lunii",
+ "Display Timezone": "Afișează Fusul Orar",
+ "dnsCacheDescription": "Nu funcționează in anumite medii IPv6, dezactivează dacă întâmpini probleme.",
+ "Single Maintenance Window": "Fereastră unică de timp pentru mentennanță",
+ "Maintenance Time Window of a Day": "Fereastra de timp alocată pentru mentenanță dintr-o zi",
+ "uninstalling": "Dezinstalare",
+ "Ignore TLS Error": "Ignoră erorile TLS",
+ "wayToGetDiscordURL": "Poți obține asta mergând în Setări Server -> Integrări -> Vezi Webhook-urile -> Webhook nou",
+ "wayToCheckSignalURL": "Poți verifica acest URL pentru a vizualiza cum să configurezi unul:",
+ "wayToGetLineChannelToken": "Pentru început, accesează {0}, creează un furnizor și canal (API-ul Mesageriei), apoi poți obține token-ul de acces al canalului si ID-ul utilizatorului din itemii de meniu mentionati mai sus.",
+ "aboutIconURL": "Poți furniza un link către o pictogramă la secțiunea „URL-ul Pictogramei” pentru a suprascrie imaginea de profil implicită. Nu va fi folosită dacă există un emoticon configurat deja.",
+ "Channel Name": "Nume Canal",
+ "aboutMattermostChannelName": "Poți suprascrie canalul implicit pe care Webhook-ul îl folosește prin introducerea numelui canalului în câmpul „Nume Canal”. Acesta trebuie să fie activat în setările Webhook-ului Mattermost. Ex: #alt-canal",
+ "acceptedStatusCodesDescription": "Selectează codurile de status care sunt considerate un răspuns de succes.",
+ "deleteNotificationMsg": "Ești sigur că vrei să ștergi această notificare pentru toate monitoarele?",
+ "enableDefaultNotificationDescription": "Această notificare va fi activată implicit pentru toate monitoarele noi. Poți totuși să o dezactivezi individual pentru fiecare monitor.",
+ "importHandleDescription": "Alege „Sari Existente” dacă vrei să sari peste fiecare monitor sau notificare cu același nume. „Suprascrie” va șterge toate monitoarele și notificările existente.",
+ "confirmDisableTwoFAMsg": "Ești sigur că vrei să dezactivezi Autentificarea în Doi Pași?",
+ "affectedStatusPages": "Afișează acest mesaj de mentenanță pe paginile de status selectate",
+ "keywordDescription": "Caută cuvântul cheie în HTML simplu sau JSON. Această căutare ține cont de majuscule.",
+ "backupDescription3": "Datele importante, cum ar fi token-urile notificărilor sunt incluse în fișierul exportat; te rog stochează-l în siguranță.",
+ "pushoversounds pianobar": "Pian",
+ "pushoversounds siren": "Sirenă",
+ "pushoversounds spacealarm": "Alarmă Spațială",
+ "pushoversounds persistent": "Persistent (lung)",
+ "gotify": "Gotify",
+ "clicksendsms": "ClickSend SMS",
+ "wayToGetKookBotToken": "Creează o aplicație și obține token-ul robot la {0}",
+ "wayToGetKookGuildID": "Activează „Modul Dezvoltator” în setările Kook și dă click pe breaslă (guild) pentru a-i obține ID-ul",
+ "pushoverDesc1": "Prioritate de urgență (2) are o pauză implicită de 30 de secunde între reîncercări și expiră după o oră."
+}
diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json
new file mode 100644
index 000000000..c051b7b35
--- /dev/null
+++ b/src/lang/ru-RU.json
@@ -0,0 +1,797 @@
+{
+ "languageName": "Русский",
+ "checkEverySecond": "Проверка каждые {0} секунд",
+ "retriesDescription": "Максимальное количество попыток перед пометкой сервиса как недоступного и отправкой уведомления",
+ "ignoreTLSError": "Игнорировать ошибку TLS/SSL для HTTPS сайтов",
+ "upsideDownModeDescription": "Реверс статуса сервиса. Если сервис доступен, то он помечается как НЕДОСТУПНЫЙ.",
+ "maxRedirectDescription": "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.",
+ "acceptedStatusCodesDescription": "Выберите коды статусов для определения доступности сервиса.",
+ "passwordNotMatchMsg": "Введёные пароли не совпадают",
+ "notificationDescription": "Привяжите уведомления к мониторам.",
+ "keywordDescription": "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру).",
+ "pauseDashboardHome": "Пауза",
+ "deleteMonitorMsg": "Вы действительно хотите удалить данный монитор?",
+ "deleteNotificationMsg": "Вы действительно хотите удалить это уведомление для всех мониторов?",
+ "resolverserverDescription": "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.",
+ "rrtypeDescription": "Выберите тип ресурсной записи, который вы хотите отслеживать",
+ "pauseMonitorMsg": "Вы действительно хотите поставить на паузу?",
+ "Settings": "Настройки",
+ "Dashboard": "Панель управления",
+ "New Update": "Обновление",
+ "Language": "Язык",
+ "Appearance": "Внешний вид",
+ "Theme": "Тема",
+ "General": "Общее",
+ "Version": "Версия",
+ "Check Update On GitHub": "Проверить обновления на GitHub",
+ "List": "Список",
+ "Add": "Добавить",
+ "Add New Monitor": "Новый монитор",
+ "Quick Stats": "Статистика",
+ "Up": "Доступен",
+ "Down": "Недоступен",
+ "Pending": "Ожидание",
+ "Unknown": "Неизвестно",
+ "Pause": "Пауза",
+ "Name": "Имя",
+ "Status": "Статус",
+ "DateTime": "Дата и время",
+ "Message": "Сообщение",
+ "No important events": "Важных событий нет",
+ "Resume": "Возобновить",
+ "Edit": "Изменить",
+ "Delete": "Удалить",
+ "Current": "Текущий",
+ "Uptime": "Аптайм",
+ "Cert Exp.": "Сертификат истекает",
+ "day": "день | дней",
+ "-day": "-дней",
+ "hour": "час",
+ "-hour": "-часа",
+ "Response": "Ответ",
+ "Ping": "Пинг",
+ "Monitor Type": "Тип монитора",
+ "Keyword": "Слово",
+ "Friendly Name": "Имя",
+ "URL": "URL",
+ "Hostname": "Имя хоста",
+ "Port": "Порт",
+ "Heartbeat Interval": "Частота опроса",
+ "Retries": "Попыток",
+ "Advanced": "Дополнительно",
+ "Upside Down Mode": "Реверс статуса",
+ "Max. Redirects": "Макс. количество перенаправлений",
+ "Accepted Status Codes": "Допустимые коды статуса",
+ "Save": "Сохранить",
+ "Notifications": "Уведомления",
+ "Not available, please setup.": "Доступных уведомлений нет, необходимо создать.",
+ "Setup Notification": "Создать уведомление",
+ "Light": "Светлая",
+ "Dark": "Тёмная",
+ "Auto": "Авто",
+ "Theme - Heartbeat Bar": "Полоса частоты опроса",
+ "Normal": "Обычный",
+ "Bottom": "Снизу",
+ "None": "Отсутствует",
+ "Timezone": "Часовой пояс",
+ "Search Engine Visibility": "Индексация поисковыми системами",
+ "Allow indexing": "Разрешить индексирование",
+ "Discourage search engines from indexing site": "Запретить индексирование",
+ "Change Password": "Сменить пароль",
+ "Current Password": "Текущий пароль",
+ "New Password": "Новый пароль",
+ "Repeat New Password": "Повтор нового пароля",
+ "Update Password": "Обновить пароль",
+ "Disable Auth": "Отключить авторизацию",
+ "Enable Auth": "Включить авторизацию",
+ "disableauth.message1": "Вы уверены, что хотите отключить авторизацию ?",
+ "disableauth.message2": "Это подходит для тех, у кого стоит другая авторизация перед открытием Uptime Kuma, например Cloudflare Access.",
+ "Please use this option carefully!": "Пожалуйста, используйте с осторожностью!",
+ "Logout": "Выйти",
+ "Leave": "Отмена",
+ "I understand, please disable": "Я понимаю, всё равно отключить",
+ "Confirm": "Подтвердить",
+ "Yes": "Да",
+ "No": "Нет",
+ "Username": "Логин",
+ "Password": "Пароль",
+ "Remember me": "Запомнить меня",
+ "Login": "Вход в систему",
+ "No Monitors, please": "Мониторов нет, пожалуйста",
+ "No Monitors": "Мониторы отсутствуют",
+ "add one": "создайте новый",
+ "Notification Type": "Тип уведомления",
+ "Email": "Почта",
+ "Test": "Проверка",
+ "Certificate Info": "Информация о сертификате",
+ "Resolver Server": "DNS сервер",
+ "Resource Record Type": "Тип ресурсной записи",
+ "Last Result": "Последний результат",
+ "Create your admin account": "Создайте аккаунт администратора",
+ "Repeat Password": "Повторите пароль",
+ "respTime": "Время ответа (мс)",
+ "notAvailableShort": "N/A",
+ "Create": "Создать",
+ "clearEventsMsg": "Вы действительно хотите удалить всю статистику событий данного монитора?",
+ "clearHeartbeatsMsg": "Вы действительно хотите удалить всю статистику опросов данного монитора?",
+ "confirmClearStatisticsMsg": "Вы действительно хотите удалить ВСЮ статистику?",
+ "Clear Data": "Удалить статистику",
+ "Events": "События",
+ "Heartbeats": "Опросы",
+ "Auto Get": "Авто-получение",
+ "enableDefaultNotificationDescription": "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.",
+ "Default enabled": "Использовать по умолчанию",
+ "Also apply to existing monitors": "Применить к существующим мониторам",
+ "Export": "Экспорт",
+ "Import": "Импорт",
+ "backupDescription": "Вы можете сохранить резервную копию всех мониторов и уведомлений в виде JSON-файла.",
+ "backupDescription2": "Важно: история и события сохранены не будут.",
+ "backupDescription3": "Важные данные, такие как токены уведомлений, добавляются при экспорте, поэтому храните файлы в безопасном месте.",
+ "alertNoFile": "Выберите файл для импорта.",
+ "alertWrongFileType": "Выберите JSON-файл.",
+ "twoFAVerifyLabel": "Пожалуйста, введите свой токен, чтобы проверить работу 2FA:",
+ "tokenValidSettingsMsg": "Токен действителен! Теперь вы можете сохранить настройки 2FA.",
+ "confirmEnableTwoFAMsg": "Вы действительно хотите включить 2FA?",
+ "confirmDisableTwoFAMsg": "Вы действительно хотите выключить 2FA?",
+ "Apply on all existing monitors": "Применить ко всем существующим мониторам",
+ "Verify Token": "Проверить токен",
+ "Setup 2FA": "Настройка 2FA",
+ "Enable 2FA": "Включить 2FA",
+ "Disable 2FA": "Выключить 2FA",
+ "2FA Settings": "Настройки 2FA",
+ "Two Factor Authentication": "Двухфакторная аутентификация",
+ "Active": "Активно",
+ "Inactive": "Неактивно",
+ "Token": "Токен",
+ "Show URI": "Показать URI",
+ "Clear all statistics": "Очистить статистику",
+ "retryCheckEverySecond": "Повтор каждые {0} секунд",
+ "importHandleDescription": "Выберите \"Пропустить существующие\", если вы хотите пропустить каждый монитор или уведомление с таким же именем. \"Перезаписать\" удалит каждый существующий монитор или уведомление и добавит заново. Вариант \"Не проверять\" принудительно восстанавливает все мониторы и уведомления, даже если они уже существуют.",
+ "confirmImportMsg": "Вы действительно хотите восстановить резервную копию? Убедитесь, что вы выбрали подходящий вариант импорта.",
+ "Heartbeat Retry Interval": "Интервал повтора опроса",
+ "Import Backup": "Импорт",
+ "Export Backup": "Скачать",
+ "Skip existing": "Пропустить существующие",
+ "Overwrite": "Перезаписать",
+ "Options": "Опции",
+ "Keep both": "Не проверять",
+ "Tags": "Теги",
+ "Add New below or Select...": "Добавить новый или выбрать…",
+ "Tag with this name already exist.": "Такой тег уже существует.",
+ "Tag with this value already exist.": "Тег с таким значением уже существует.",
+ "color": "цвет",
+ "value (optional)": "значение (необязательно)",
+ "Gray": "Серый",
+ "Red": "Красный",
+ "Orange": "Оранжевый",
+ "Green": "Зелёный",
+ "Blue": "Синий",
+ "Indigo": "Индиго",
+ "Purple": "Пурпурный",
+ "Pink": "Розовый",
+ "Search...": "Поиск…",
+ "Avg. Ping": "Среднее значение пинга",
+ "Avg. Response": "Среднее время ответа",
+ "Entry Page": "Главная страница",
+ "statusPageNothing": "Здесь пусто. Добавьте группу или монитор.",
+ "No Services": "Нет сервисов",
+ "All Systems Operational": "Все системы работают",
+ "Partially Degraded Service": "Частичная работа сервисов",
+ "Degraded Service": "Отказ всех сервисов",
+ "Add Group": "Добавить группу",
+ "Add a monitor": "Добавить монитор",
+ "Edit Status Page": "Редактировать",
+ "Go to Dashboard": "Панель управления",
+ "Status Page": "Страница статуса",
+ "Status Pages": "Страницы статуса",
+ "Discard": "Отмена",
+ "Create Incident": "Создать инцидент",
+ "Switch to Dark Theme": "Тёмная тема",
+ "Switch to Light Theme": "Светлая тема",
+ "telegram": "Telegram",
+ "webhook": "Вебхук",
+ "smtp": "Email (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Поддержка 50+ сервисов уведомлений)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "Primary Base URL": "Основной URL",
+ "Push URL": "URL пуша",
+ "needPushEvery": "К этому URL необходимо обращаться каждые {0} секунд.",
+ "pushOptionalParams": "Опциональные параметры: {0}",
+ "defaultNotificationName": "Моё уведомление {notification} ({number})",
+ "here": "здесь",
+ "Required": "Обязательно",
+ "Bot Token": "Токен бота",
+ "wayToGetTelegramToken": "Вы можете взять токен здесь - {0}.",
+ "Chat ID": "ID чата",
+ "supportTelegramChatID": "Поддерживаются ID чатов, групп и каналов",
+ "wayToGetTelegramChatID": "Вы можете взять ID вашего чата, отправив сообщение боту и перейдя по этому URL для просмотра chat_id:",
+ "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ЗДЕСЬ",
+ "chatIDNotFound": "ID чата не найден; пожалуйста отправьте сначала сообщение боту",
+ "Post URL": "Post URL",
+ "Content Type": "Тип контента",
+ "webhookJsonDesc": "{0} подходит для любых современных HTTP-серверов, например Express.js",
+ "webhookFormDataDesc": "{multipart} подходит для PHP. JSON-вывод необходимо будет обработать с помощью {decodeFunction}",
+ "secureOptionNone": "Нет / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Игнорировать ошибки TLS",
+ "From Email": "От кого",
+ "emailCustomSubject": "Своя тема",
+ "To Email": "Кому",
+ "smtpCC": "Копия",
+ "smtpBCC": "Скрытая копия",
+ "Discord Webhook URL": "Discord вебхук URL",
+ "wayToGetDiscordURL": "Вы можете создать его в настройках канала \"Настройки -> Интеграции -> Создать Вебхук\"",
+ "Bot Display Name": "Отображаемое имя бота",
+ "Prefix Custom Message": "Свой префикс сообщения",
+ "Hello @everyone is...": "Привет {'@'}everyone это…",
+ "Webhook URL": "URL вебхука",
+ "wayToGetTeamsURL": "Как создать URL Вебхука вы можете узнать здесь - {0}.",
+ "Number": "Номер",
+ "Recipients": "Получатели",
+ "needSignalAPI": "Вам необходим клиент Signal с поддержкой REST API.",
+ "wayToCheckSignalURL": "Пройдите по этому URL, чтобы узнать как настроить такой клиент:",
+ "signalImportant": "ВАЖНО: Нельзя смешивать в Получателях группы и номера!",
+ "Application Token": "Токен приложения",
+ "Server URL": "URL сервера",
+ "Priority": "Приоритет",
+ "Icon Emoji": "Иконка Emoji",
+ "Channel Name": "Имя канала",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Больше информации о вебхуках: {0}",
+ "aboutChannelName": "Введите имя канала в поле {0} Имя канала, если вы хотите обойти канал вебхука. Например: #other-channel",
+ "aboutKumaURL": "Если поле Uptime Kuma URL в настройках останется пустым, по умолчанию будет использоваться ссылка на проект на GitHub.",
+ "emojiCheatSheet": "Шпаргалка по Emoji: {0}",
+ "User Key": "Ключ пользователя",
+ "Device": "Устройство",
+ "Message Title": "Заголовок сообщения",
+ "Notification Sound": "Звук уведомления",
+ "More info on:": "Больше информации: {0}",
+ "pushoverDesc1": "Экстренный приоритет (2) имеет таймаут повтора по умолчанию 30 секунд и истекает через 1 час.",
+ "pushoverDesc2": "Если вы хотите отправлять уведомления различным устройствам, необходимо заполнить поле Устройство.",
+ "SMS Type": "Тип SMS",
+ "octopushTypePremium": "Премиум (Быстрый - рекомендуется для алертов)",
+ "octopushTypeLowCost": "Дешёвый (Медленный - иногда блокируется операторами)",
+ "checkPrice": "Тарифы {0}:",
+ "octopushLegacyHint": "Вы используете старую версию Octopush (2011-2020) или новую?",
+ "Check octopush prices": "Тарифы Octopush {0}.",
+ "octopushPhoneNumber": "Номер телефона (межд. формат, например: +79831234567) ",
+ "octopushSMSSender": "Имя отправителя SMS: 3-11 символов алвафита, цифр и пробелов (a-zA-Z0-9)",
+ "LunaSea Device ID": "ID устройства LunaSea",
+ "Apprise URL": "Ссылка Уведомления",
+ "Example:": "Пример: {0}",
+ "Read more:": "Подробнее: {0}",
+ "Status:": "Статус: {0}",
+ "Read more": "Подробнее",
+ "appriseInstalled": "Apprise установлен.",
+ "appriseNotInstalled": "Apprise не установлен. {0}",
+ "Access Token": "Токен доступа",
+ "Channel access token": "Токен доступа канала",
+ "Line Developers Console": "Консоль разработчиков Line",
+ "lineDevConsoleTo": "Консоль разработчиков Line - {0}",
+ "Basic Settings": "Базовые настройки",
+ "User ID": "ID пользователя",
+ "Messaging API": "API сообщений",
+ "wayToGetLineChannelToken": "Сначала зайдите в {0}, создайте провайдера и канал (API сообщений), затем вы сможете получить токен доступа канала и ID пользователя из вышеупомянутых пунктов меню.",
+ "Icon URL": "URL иконки",
+ "aboutIconURL": "Вы можете вставить ссылку на иконку в поле \"URL иконки\" чтобы изменить картинку профиля по умолчанию. Не используется, если задана иконка Emoji.",
+ "aboutMattermostChannelName": "Вы можете переопределить канал по умолчанию, в который вебхук пишет, введя имя канала в поле \"Имя канала\". Это необходимо включить в настройках вебхука Mattermost. Например: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - дёшево и медленно, часто перегружен. Только для получателей из Польши.",
+ "promosmsTypeFlash": "SMS FLASH - сообщения автоматически появятся на устройстве получателя. Только для получателей из Польши.",
+ "promosmsTypeFull": "SMS FULL - премиум-уровень SMS, можно использовать своё имя отправителя (предварительно зарегистрировав его). Надёжно для алертов.",
+ "promosmsTypeSpeed": "SMS SPEED - наивысший приоритет в системе. Очень быстро и надёжно, но очень дорого (в два раза дороже, чем SMS FULL).",
+ "promosmsPhoneNumber": "Номер телефона (для получателей из Польши можно пропустить код региона)",
+ "promosmsSMSSender": "Имя отправителя SMS: Зарегистрированное или одно из имён по умолчанию: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "URL сервера (вместе с http(s):// и по желанию порт)",
+ "Internal Room Id": "Внутренний ID комнаты",
+ "matrixDesc1": "Внутренний ID комнаты можно найти в Подробностях в параметрах канала вашего Matrix клиента. Он должен выглядеть примерно как !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Рекомендуется создать нового пользователя и не использовать токен доступа личного пользователя Matrix, т.к. это влечёт за собой полный доступ к аккаунту и к комнатам, в которых вы состоите. Вместо этого создайте нового пользователя и пригласите его только в ту комнату, в которой вы хотите получать уведомления. Токен доступа можно получить, выполнив команду {0}",
+ "Method": "Метод",
+ "Body": "Тело",
+ "Headers": "Заголовки",
+ "PushUrl": "URL пуша",
+ "HeadersInvalidFormat": "Заголовки запроса некорректны JSON: ",
+ "BodyInvalidFormat": "Тело запроса некорректно JSON: ",
+ "Monitor History": "Статистика",
+ "clearDataOlderThan": "Сохранять статистику за {0} дней.",
+ "PasswordsDoNotMatch": "Пароли не совпадают.",
+ "records": "записей",
+ "One record": "Одна запись",
+ "steamApiKeyDescription": "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ",
+ "Certificate Chain": "Цепочка сертификатов",
+ "Valid": "Действительный",
+ "Hide Tags": "Скрыть тэги",
+ "Title": "Название инцидента",
+ "Content": "Содержание инцидента",
+ "Post": "Опубликовать",
+ "Cancel": "Отмена",
+ "Created": "Создано",
+ "Unpin": "Открепить",
+ "Show Tags": "Показать тэги",
+ "recent": "Сейчас",
+ "3h": "3 часа",
+ "6h": "6 часов",
+ "24h": "24 часа",
+ "1w": "1 неделя",
+ "No monitors available.": "Нет доступных мониторов.",
+ "Add one": "Добавить новый",
+ "Backup": "Резервная копия",
+ "Security": "Безопасность",
+ "Shrink Database": "Сжать Базу Данных",
+ "Current User": "Текущий пользователь",
+ "About": "О программе",
+ "Description": "Описание",
+ "Powered by": "Работает на",
+ "shrinkDatabaseDescription": "Включает VACUUM для базы данных SQLite. Если ваша база данных была создана на версии 1.10.0 и более, AUTO_VACUUM уже включен и это действие не требуется.",
+ "deleteStatusPageMsg": "Вы действительно хотите удалить эту страницу статуса?",
+ "Style": "Стиль",
+ "info": "ИНФО",
+ "warning": "ВНИМАНИЕ",
+ "danger": "ОШИБКА",
+ "primary": "ОСНОВНОЙ",
+ "light": "СВЕТЛЫЙ",
+ "dark": "ТЕМНЫЙ",
+ "New Status Page": "Новая страница статуса",
+ "Show update if available": "Показывать доступные обновления",
+ "Also check beta release": "Проверять обновления для бета версий",
+ "Add New Status Page": "Добавить страницу статуса",
+ "Next": "Далее",
+ "Accept characters: a-z 0-9 -": "Разрешены символы: a-z 0-9 -",
+ "Start or end with a-z 0-9 only": "Начало и окончание имени только на символы: a-z 0-9",
+ "No consecutive dashes --": "Запрещено использовать тире --",
+ "HTTP Options": "HTTP Опции",
+ "Authentication": "Аутентификация",
+ "HTTP Basic Auth": "HTTP Авторизация",
+ "PushByTechulus": "Push by Techulus",
+ "clicksendsms": "ClickSend SMS",
+ "GoogleChat": "Google Chat (только Google Workspace)",
+ "apiCredentials": "API реквизиты",
+ "Done": "Готово",
+ "Info": "Инфо",
+ "Steam API Key": "Steam API-Ключ",
+ "Pick a RR-Type...": "Выберите RR-Тип…",
+ "Pick Accepted Status Codes...": "Выберите принятые коды состояния…",
+ "Default": "По умолчанию",
+ "Please input title and content": "Пожалуйста, введите название и содержание",
+ "Last Updated": "Последнее обновление",
+ "Untitled Group": "Группа без названия",
+ "Services": "Сервисы",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Пользователь (включая префикс webapi_)",
+ "serwersmsAPIPassword": "API Пароль",
+ "serwersmsPhoneNumber": "Номер телефона",
+ "serwersmsSenderName": "SMS Имя Отправителя (регистрированный через пользовательский портал)",
+ "stackfield": "Stackfield",
+ "smtpDkimSettings": "DKIM Настройки",
+ "smtpDkimDesc": "Пожалуйста ознакомьтесь с {0} Nodemailer DKIM для использования.",
+ "documentation": "документацией",
+ "smtpDkimDomain": "Имя домена",
+ "smtpDkimKeySelector": "Ключ",
+ "smtpDkimPrivateKey": "Приватный ключ",
+ "smtpDkimHashAlgo": "Алгоритм хэша (необязательно)",
+ "smtpDkimheaderFieldNames": "Заголовок ключей для подписи (необязательно)",
+ "smtpDkimskipFields": "Заголовок ключей не для подписи (опционально)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "Конечная точка API",
+ "alertaEnvironment": "Среда",
+ "alertaApiKey": "Ключ API",
+ "alertaAlertState": "Состояние алерта",
+ "alertaRecoverState": "Состояние восстановления",
+ "Proxies": "Прокси",
+ "Setup Proxy": "Настройка Прокси",
+ "Proxy Protocol": "Протокол Прокси",
+ "Proxy Server": "Прокси",
+ "Proxy server has authentication": "Прокси имеет аутентификацию",
+ "Reverse Proxy": "Обратный прокси",
+ "No Proxy": "Без прокси",
+ "default": "По умолчанию",
+ "enabled": "Включено",
+ "setAsDefault": "Установлено по умолчанию",
+ "deleteProxyMsg": "Вы действительно хотите удалить этот прокси для всех мониторов?",
+ "proxyDescription": "Прокси должны быть привязаны к монитору, чтобы работать.",
+ "enableProxyDescription": "Этот прокси не будет влиять на запросы монитора, пока не будет активирован. Вы можете контролировать временное отключение прокси для всех мониторов через статус активации.",
+ "setAsDefaultProxyDescription": "Этот прокси будет по умолчанию включен для новых мониторов. Вы всё ещё можете отдельно отключать прокси в каждом мониторе.",
+ "Invalid": "Недействительный",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "PhoneNumbers",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Шаблон СМС должен содержать параметры: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "Bark Group": "Bark Group",
+ "Bark Sound": "Bark Sound",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "Секретный Ключ",
+ "For safety, must use secret key": "В целях безопасности необходимо использовать секретный ключ",
+ "Device Token": "Токен устройства",
+ "Platform": "Платформа",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "High",
+ "Retry": "Повторить",
+ "Topic": "Тема",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "User": "Пользователь",
+ "Installed": "Установлено",
+ "Not installed": "Не установлено",
+ "Running": "Запускается",
+ "Not running": "Не запускается",
+ "Remove Token": "Удалить токен",
+ "Start": "Запустить",
+ "Stop": "Остановить",
+ "Uptime Kuma": "Uptime Kuma",
+ "Slug": "Slug",
+ "Accept characters:": "Принимаемые символы:",
+ "startOrEndWithOnly": "Начинается или заканчивается только на {0}",
+ "No consecutive dashes": "Без последовательных тире",
+ "The slug is already taken. Please choose another slug.": "Этот slug уже занят. Пожалуйста, выберите другой.",
+ "Page Not Found": "Страница не найдена",
+ "wayToGetCloudflaredURL": "(Скачать cloudflared с {0})",
+ "cloudflareWebsite": "Веб-сайт Cloudflare",
+ "Message:": "Сообщение:",
+ "Don't know how to get the token? Please read the guide:": "Не знаете, как получить токен? Пожалуйста, прочтите руководство:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Текущее соединение может быть потеряно, если вы в данный момент подключаетесь через туннель Cloudflare. Вы уверены, что хотите это остановить? Введите свой текущий пароль, чтобы подтвердить это.",
+ "HTTP Headers": "заголовки HTTP",
+ "Trust Proxy": "Доверять прокси",
+ "Other Software": "Другое программное обеспечение",
+ "For example: nginx, Apache and Traefik.": "К примеру: nginx, Apache и Traefik.",
+ "Please read": "Пожалуйста, прочитайте",
+ "Subject:": "Тема:",
+ "Valid To:": "Действителен до:",
+ "Days Remaining:": "Дней осталось:",
+ "Issuer:": "Издатель:",
+ "Fingerprint:": "Отпечаток:",
+ "No status pages": "Нет статусных страниц",
+ "Domain Name Expiry Notification": "Уведомление об истечении срока действия доменного имени",
+ "Proxy": "Прокси",
+ "Date Created": "Дата создания",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "HTTP-адрес OneBot",
+ "onebotMessageType": "Тип сообщения OneBot",
+ "onebotGroupMessage": "Группа",
+ "onebotPrivateMessage": "Private",
+ "onebotUserOrGroupId": "ID группы/пользователя",
+ "onebotSafetyTips": "В целях безопасности необходимо установить токен доступа",
+ "PushDeer Key": "ключ PushDeer",
+ "Footer Text": "Текст нижнего колонтитула",
+ "Show Powered By": "Показывать на чем создано",
+ "Domain Names": "Доменные имена",
+ "signedInDisp": "Вы вошли как {0}",
+ "signedInDispDisabled": "Аутентификация отключена.",
+ "RadiusSecret": "Секрет Radius",
+ "RadiusSecretDescription": "Общий секрет между клиентом и сервером",
+ "RadiusCalledStationId": "Идентификатор вызываемой станции",
+ "RadiusCalledStationIdDescription": "Идентификатор вызываемого устройства",
+ "RadiusCallingStationId": "Идентификатор вызывающей станции",
+ "RadiusCallingStationIdDescription": "Идентификатор вызывающего устройства",
+ "Certificate Expiry Notification": "Уведомление об истечении срока действия сертификата",
+ "API Username": "Имя пользователя API",
+ "API Key": "API ключ",
+ "Recipient Number": "Номер получателя",
+ "From Name/Number": "Имя/номер отправителя",
+ "Leave blank to use a shared sender number.": "Оставьте пустым, чтобы использовать общий номер отправителя.",
+ "Octopush API Version": "Версия API Octopush",
+ "Legacy Octopush-DM": "устаревший Octopush-DM",
+ "endpoint": "конечная точка",
+ "octopushAPIKey": "\"API key\" из учетных данных HTTP API в панели управления",
+ "octopushLogin": "\"Login\" из учетных данных HTTP API в панели управления",
+ "promosmsLogin": "Логин API",
+ "promosmsPassword": "Пароль API",
+ "pushoversounds pushover": "Pushover (по умолчанию)",
+ "pushoversounds bike": "Велосипед",
+ "pushoversounds bugle": "Горн",
+ "pushoversounds cashregister": "Кассовый аппарат",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Космический",
+ "pushoversounds falling": "Падающий",
+ "pushoversounds gamelan": "Гамелан",
+ "pushoversounds incoming": "Входящий",
+ "pushoversounds intermission": "Антракт",
+ "pushoversounds magic": "Магия",
+ "pushoversounds mechanical": "Механический",
+ "pushoversounds pianobar": "Пиано-бар",
+ "pushoversounds siren": "Сирена",
+ "pushoversounds spacealarm": "Космическая сигнализация",
+ "pushoversounds tugboat": "Буксирное судно",
+ "pushoversounds alien": "Инопланетная тревога (долгое)",
+ "pushoversounds climb": "Подъем (долгое)",
+ "pushoversounds persistent": "Стойкий (долгое)",
+ "pushoversounds echo": "Pushover Эхо (долгое)",
+ "pushoversounds updown": "Вверх вниз (долгое)",
+ "pushoversounds vibrate": "Только вибрация",
+ "pushoversounds none": "Нет (тихо)",
+ "pushyAPIKey": "Секретный ключ API",
+ "pushyToken": "Токен устройства",
+ "Using a Reverse Proxy?": "Используете обратный прокси?",
+ "Check how to config it for WebSocket": "Проверьте, как настроить его для WebSocket",
+ "Steam Game Server": "Игровой сервер Steam",
+ "Most likely causes:": "Наиболее вероятные причины:",
+ "The resource is no longer available.": "Ресурс больше не доступен.",
+ "There might be a typing error in the address.": "В адресе может быть опечатка.",
+ "What you can try:": "Что вы можете попробовать:",
+ "Retype the address.": "Повторите адрес.",
+ "Go back to the previous page.": "Вернуться на предыдущую страницу.",
+ "Coming Soon": "Скоро",
+ "wayToGetClickSendSMSToken": "Вы можете получить имя пользователя API и ключ API из {0} .",
+ "Connection String": "Строка подключения",
+ "Query": "Запрос",
+ "settingsCertificateExpiry": "Истекание TLS сертификата",
+ "certificationExpiryDescription": "HTTPS Мониторы инициируют уведомление, когда срок действия сертификата TLS истечет:",
+ "Setup Docker Host": "Настроить Docker Host",
+ "Connection Type": "Тип соединения",
+ "Docker Daemon": "Демон Docker",
+ "deleteDockerHostMsg": "Вы уверены, что хотите удалить этот узел docker для всех мониторов?",
+ "socket": "Сокет",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker контейнер",
+ "Container Name / ID": "Название контейнера / ID",
+ "Docker Host": "Хост Docker",
+ "Docker Hosts": "Хосты Docker",
+ "ntfy Topic": "тема ntfy",
+ "Domain": "Домен",
+ "Workstation": "Рабочая станция",
+ "disableCloudflaredNoAuthMsg": "Вы находитесь в режиме без авторизации, пароль не требуется.",
+ "trustProxyDescription": "Доверять заголовкам 'X-Forwarded-*'. Если вы хотите получить правильный IP-адрес клиента, а ваш Uptime Kuma находится под Nginx или Apache, вам следует включить этот параметр.",
+ "wayToGetLineNotifyToken": "Вы можете получить токен доступа в {0}",
+ "Examples": "Примеры",
+ "Home Assistant URL": "URL-адрес Home Assistant",
+ "Long-Lived Access Token": "Токен доступа с длительным сроком службы",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Токен доступа с длительным сроком действия можно создать, нажав на имя вашего профиля (внизу слева) и прокрутив его вниз, затем нажмите Создать токен. ",
+ "Notification Service": "Служба уведомлений",
+ "default: notify all devices": "по стандарту: уведомлять все устройства",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Список служб уведомлений можно найти в Home Assistant в разделе \"Инструменты разработчика > Службы\", выполнив поиск по слову \"уведомление\", чтобы найти название вашего устройства/телефона.",
+ "Automations can optionally be triggered in Home Assistant:": "При желании автоматизацию можно активировать в Home Assistant.:",
+ "Trigger type:": "Тип триггера:",
+ "Event type:": "Тип события:",
+ "Event data:": "Данные события:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Затем выберите действие, например, переключите сцену на красный индикатор RGB..",
+ "Frontend Version": "Версия интерфейса",
+ "Frontend Version do not match backend version!": "Версия интерфейса не соответствует версии серверной части!",
+ "Base URL": "Базовый URL",
+ "goAlertInfo": "GoAlert — это приложение с открытым исходным кодом для составления расписания вызовов, автоматической эскалации и уведомлений (например, SMS или голосовых звонков). Автоматически привлекайте нужного человека, нужным способом и в нужное время! {0}",
+ "goAlertIntegrationKeyInfo": "Получить общий ключ интеграции API для сервиса в этом формате \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обычно значение параметра токена скопированного URL.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Устарело: эта функция резервного копирования более не поддерживается. Поскольку добавлено множество функций, она не может создать или восстановить полную резервную копию.",
+ "backupRecommend": "Сделайте резервную копию тома или папки с данными (./data/) напрямую.",
+ "Optional": "Необязательно",
+ "squadcast": "Squadcast",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "Документация к API SMSManager ",
+ "Gateway Type": "Тип шлюза",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Вы можете делить числа с",
+ "or": "или",
+ "Maintenance": "Техобслуживание",
+ "Schedule maintenance": "Запланировать техобслуживание",
+ "affectedMonitorsDescription": "Выберите мониторы, которые будут затронуты во время техбслуживания",
+ "affectedStatusPages": "Показывать уведомление о техбслуживании на выбранных страницах статуса",
+ "atLeastOneMonitor": "Выберите больше одного затрагиваемого монитора",
+ "dnsPortDescription": "По умолчанию порт DNS сервера - 53. Мы можете изменить его в любое время.",
+ "Monitor": "Монитор | Мониторы",
+ "webhookAdditionalHeadersTitle": "Дополнительные Заголовки",
+ "recurringIntervalMessage": "Запускать 1 раз каждый день | Запускать 1 раз каждые {0} дней",
+ "error": "ошибка",
+ "statusMaintenance": "Техобслуживание",
+ "Affected Monitors": "Затронутые мониторы",
+ "Start of maintenance": "Начало техобслуживания",
+ "All Status Pages": "Все страницы статусов",
+ "Select status pages...": "Выберите страницу статуса…",
+ "resendEveryXTimes": "Повтор каждые {0} раз",
+ "resendDisabled": "Повторная отправка отключена",
+ "deleteMaintenanceMsg": "Вы действительно хотите удалить это техбслуживание?",
+ "critical": "критично",
+ "Custom Monitor Type": "Собственный тип монитора",
+ "markdownSupported": "Поддерживает синтаксис Markdown",
+ "Passive Monitor Type": "Пассивный тип монитора",
+ "Specific Monitor Type": "Специфичный тип монитора",
+ "Help": "Помощь",
+ "Game": "Игра",
+ "Resend Notification if Down X times consequently": "Повторно отправить уведомление, если не работает X раз подряд",
+ "General Monitor Type": "Основной тип монитора",
+ "weekdayShortWed": "Ср",
+ "weekdayShortThu": "Чт",
+ "weekdayShortFri": "Пт",
+ "weekdayShortSat": "Сб",
+ "weekdayShortSun": "Вс",
+ "dayOfMonth": "День месяца",
+ "Pick Affected Monitors...": "Выберите затронутые мониторы…",
+ "Custom": "Пользовательский",
+ "successMessage": "Сообщение об успехе",
+ "successMessageExplanation": "Сообщение MQTT, которое может рассматриваться как успешное",
+ "Custom CSS": "Пользовательские CSS",
+ "weekdayShortTue": "Вт",
+ "dayOfWeek": "День недели",
+ "confirmDeleteTagMsg": "Вы уверены, что хотите удалить этот тег? Мониторы, связанные с этим тегом не будут удалены.",
+ "loadingError": "Невозможно получить данные, пожалуйста попробуйте позже.",
+ "Packet Size": "Размер пакета",
+ "warningTimezone": "Используется часовой пояс сервера",
+ "weekdayShortMon": "Пн",
+ "ZohoCliq": "ZohoCliq",
+ "strategyManual": "Активен/Неактивен Вручную",
+ "lastDay": "Последний день",
+ "lastDay1": "Последний день месяца",
+ "lastDay2": "Второй последний день месяца",
+ "lastDay3": "Третий последний день месяца",
+ "lastDay4": "Четвертый последний день месяца",
+ "No Maintenance": "Нет техбслуживаний",
+ "pauseMaintenanceMsg": "Вы уверены что хотите поставить на паузу?",
+ "maintenanceStatus-under-maintenance": "На техобслуживании",
+ "maintenanceStatus-inactive": "Неактивен",
+ "maintenanceStatus-scheduled": "Запланирован(о)",
+ "maintenanceStatus-ended": "Закончился(ось)",
+ "maintenanceStatus-unknown": "Неизвестен",
+ "Display Timezone": "Показать часовой пояс",
+ "Server Timezone": "Часовой пояс сервера",
+ "statusPageMaintenanceEndDate": "Конец",
+ "IconUrl": "URL иконки",
+ "Enable DNS Cache": "Включить DNS кэш",
+ "Enable": "Включить",
+ "Disable": "Отключить",
+ "Single Maintenance Window": "Единое окно техбслуживания",
+ "Schedule Maintenance": "Запланировать техбслуживание",
+ "Date and Time": "Дата и время",
+ "DateTime Range": "Промежуток даты и времени",
+ "uninstalling": "Удаляется",
+ "dataRetentionTimeError": "Период хранения должен быть равен 0 или больше",
+ "infiniteRetention": "Установите 0 для бессрочного хранения.",
+ "enableGRPCTls": "Разрешить отправлять gRPC запрос через TLS соединение",
+ "Free Mobile API Key": "API ключ Free Mobile",
+ "Edit Tag": "Редактировать тэг",
+ "webhookAdditionalHeadersDesc": "Устанавливает дополнительные заголовки, отправляемые с помощью веб-хука.",
+ "topic": "Тема",
+ "Customize": "Персонализировать",
+ "Custom Footer": "Пользовательский footer",
+ "dnsCacheDescription": "Это может не работать на некоторых IPv6 окружениях, отключите это, если у вас возникают проблемы.",
+ "confirmUninstallPlugin": "Вы уверены, что хотите удалить этот плагин?",
+ "plugin": "Плагин | Плагины",
+ "install": "Установить",
+ "installing": "Устанавливается",
+ "uninstall": "Удалить",
+ "Recurring": "Текущий",
+ "recurringInterval": "Интервал",
+ "smseagle": "SMSEagle",
+ "Google Analytics ID": "ID Google Аналитики",
+ "wayToGetZohoCliqURL": "Вы можете узнать как создать webhook URL тут {0}.",
+ "Effective Date Range": "Даты действия (Опционально)",
+ "wayToGetKookGuildID": "Включите \"Режим разработчика\" в настройках Kook, а затем нажмите правой кнопкой по гильдии чтобы скопировать её ID",
+ "Enable TLS": "Включить TLS",
+ "Integration Key": "Ключ интеграции",
+ "Integration URL": "URL интеграции",
+ "do nothing": "ничего не делать",
+ "smseagleTo": "Номер(а) телефона",
+ "smseagleGroup": "Название(я) группы телефонной книги",
+ "smseagleContact": "Имена контактов телефонной книги",
+ "smseagleRecipientType": "Тип получателя",
+ "smseagleRecipient": "Получатель(и) (если множество, должны быть разделены запятой)",
+ "smseagleToken": "Токен доступа API",
+ "smseagleUrl": "URL вашего SMSEagle устройства",
+ "smseagleEncoding": "Отправить в юникоде",
+ "smseaglePriority": "Приоритет сообщения (0-9, по умолчанию = 0)",
+ "Server Address": "Адрес сервера",
+ "Learn More": "Узнать больше",
+ "topicExplanation": "MQTT топик для мониторинга",
+ "Guild ID": "Идентификатор гильдии",
+ "Kook": "Kook",
+ "wayToGetKookBotToken": "Создайте приложение и получите токен бота по адресу {0}",
+ "Resend Notification if Down X times consecutively": "Повторная отправка уведомления при падении несколько раз",
+ "telegramProtectContent": "Запретить пересылку/сохранение",
+ "telegramProtectContentDescription": "Если включено, сообщения бота в Telegram будут запрещены для пересылки и сохранения.",
+ "telegramSendSilently": "Отправить без звука",
+ "telegramSendSilentlyDescription": "Пользователи получат уведомление без звука.",
+ "Maintenance Time Window of a Day": "Суточный интервал для техбслуживания",
+ "Clone Monitor": "Копия",
+ "Clone": "Копия",
+ "cloneOf": "Копия {0}",
+ "notificationRegional": "Региональный",
+ "Add New Tag": "Добавить тег",
+ "Body Encoding": "Тип содержимого запроса.(JSON or XML)",
+ "Strategy": "Стратегия",
+ "Free Mobile User Identifier": "Бесплатный мобильный идентификатор пользователя",
+ "Auto resolve or acknowledged": "Автоматическое разрешение или подтверждение",
+ "auto acknowledged": "автоматическое подтверждение",
+ "auto resolve": "автоматическое разрешение",
+ "API Keys": "Ключи API",
+ "Expiry": "Срок действия",
+ "Expiry date": "Дата истечения срока действия",
+ "Don't expire": "Не истекает",
+ "Continue": "Продолжить",
+ "Add Another": "Добавить еще",
+ "Key Added": "Ключ добавлен",
+ "Add API Key": "Добавить API ключ",
+ "No API Keys": "Нет ключей API",
+ "apiKey-active": "Активный",
+ "apiKey-expired": "Истёк",
+ "apiKey-inactive": "Неактивный",
+ "Expires": "Истекает",
+ "disableAPIKeyMsg": "Вы уверены, что хотите отключить этот API ключ?",
+ "Generate": "Сгенерировать",
+ "pagertreeResolve": "Автоматическое разрешение",
+ "pagertreeDoNothing": "Ничего не делать",
+ "lunaseaTarget": "Цель",
+ "lunaseaDeviceID": "Идентификатор устройства",
+ "lunaseaUserID": "Идентификатор пользователя",
+ "Lowcost": "Бюджетный",
+ "pagertreeIntegrationUrl": "URL-адрес интеграции",
+ "pagertreeUrgency": "Срочность",
+ "pagertreeSilent": "Тихий",
+ "pagertreeLow": "Низкий",
+ "pagertreeMedium": "Средний",
+ "pagertreeHigh": "Высокий",
+ "pagertreeCritical": "Критический",
+ "high": "высокий",
+ "promosmsAllowLongSMS": "Разрешить длинные СМС",
+ "Economy": "Экономия",
+ "wayToGetPagerDutyKey": "Вы можете это получить, перейдя в Сервис -> Каталог сервисов -> (Выберите сервис) -> Интеграции -> Добавить интеграцию. Здесь вы можете искать «Events API V2». Подробнее {0}",
+ "apiKeyAddedMsg": "Ваш ключ API добавлен. Пожалуйста, обратите внимание на это сообщение, так как оно отображается один раз.",
+ "deleteAPIKeyMsg": "Вы уверены, что хотите удалить этот ключ API?",
+ "wayToGetPagerTreeIntegrationURL": "После создания интеграции Uptime Kuma в PagerTree скопируйте файл Endpoint. См. полную информацию {0}",
+ "telegramMessageThreadIDDescription": "Необязательный уникальный идентификатор для цепочки сообщений (темы) форума; только для форумов-супергрупп",
+ "grpcMethodDescription": "Имя метода преобразуется в формат cammelCase, например, sayHello, check и т. д.",
+ "Proto Service Name": "Название службы Proto",
+ "Proto Method": "Метод Proto",
+ "Proto Content": "Содержание Proto",
+ "telegramMessageThreadID": "(Необязательно) ID цепочки сообщений",
+ "statusPageRefreshIn": "Обновлять каждые: {0}",
+ "twilioAccountSID": "SID учетной записи",
+ "twilioAuthToken": "Токен авторизации",
+ "twilioFromNumber": "С номера",
+ "twilioToNumber": "На номер",
+ "sameAsServerTimezone": "Аналогично часовому поясу сервера",
+ "startDateTime": "Начальная дата и время",
+ "endDateTime": "Конечная дата и время",
+ "cronExpression": "Выражение для Cron",
+ "cronSchedule": "Расписание: ",
+ "invalidCronExpression": "Неверное выражение Cron: {0}",
+ "ntfyUsernameAndPassword": "Логин и пароль",
+ "ntfyAuthenticationMethod": "Способ входа",
+ "Monitor Setting": "Настройка монитора {0}",
+ "Show Clickable Link": "Показать кликабельную ссылку",
+ "Badge Generator": "Генератор значков для {0}",
+ "Badge Type": "Тип значка",
+ "Badge Duration": "Срок действия значка",
+ "Badge Label": "Надпись для значка",
+ "Badge Prefix": "Префикс значка",
+ "Badge Label Color": "Цвет надписи значка",
+ "Badge Color": "Цвет значка",
+ "Badge Label Prefix": "Префикс надписи для значка",
+ "Open Badge Generator": "Открыть генератор значка",
+ "Badge Up Color": "Цвет значка для статуса \"Доступен\"",
+ "Badge Pending Color": "Цвет значка для статуса \"Ожидание\"",
+ "Badge Maintenance Color": "Цвет значка для статуса \"Техобслуживание\"",
+ "Badge Style": "Стиль значка",
+ "Badge Suffix": "Суффикс значка",
+ "Badge value (For Testing only.)": "Значение значка (только для тестирования)",
+ "Badge URL": "URL значка",
+ "Group": "Группа",
+ "Monitor Group": "Группа мониторов",
+ "Show Clickable Link Description": "Если флажок установлен, все, кто имеет доступ к этой странице состояния, могут иметь доступ к URL-адресу монитора.",
+ "pushoverMessageTtl": "TTL сообщения (в секундах)",
+ "Badge Down Color": "Цвет значка для статуса \"Недоступен\"",
+ "Badge Label Suffix": "Суффикс надписи для значка",
+ "Edit Maintenance": "Редактировать техобсоуживание",
+ "Reconnecting...": "Переподключение...",
+ "Cannot connect to the socket server": "Невозможно подключиться к серверу",
+ "Badge Warn Color": "Цвет значка для предупреждения",
+ "Badge Warn Days": "Значок для \"дней предупреждения\"",
+ "Badge Down Days": "Значок для \"дней недоступности\"",
+ "Home": "Главная",
+ "noGroupMonitorMsg": "Не доступно. Создайте сначала группу мониторов.",
+ "Close": "Закрыть"
+}
diff --git a/src/lang/sk.json b/src/lang/sk.json
new file mode 100644
index 000000000..fb7e82fa7
--- /dev/null
+++ b/src/lang/sk.json
@@ -0,0 +1,205 @@
+{
+ "Settings": "Nastavenia",
+ "Help": "Nápoveda",
+ "New Update": "Nová aktualizácia",
+ "Language": "Jazyk",
+ "Appearance": "Vzhľad",
+ "Theme": "Téma",
+ "General": "Základné",
+ "Primary Base URL": "Základná URL",
+ "Version": "Verzia",
+ "List": "Zoznam",
+ "Add": "Pridať",
+ "Add New Monitor": "Pridať nové Sledovanie",
+ "Quick Stats": "Rýchly prehľad",
+ "Pending": "Čaká sa",
+ "statusMaintenance": "Údržba",
+ "Maintenance": "Údržba",
+ "General Monitor Type": "Základný typ Sledovania",
+ "Passive Monitor Type": "Pasívny typ Sledovania",
+ "Specific Monitor Type": "Špecifický typ Sledovania",
+ "pauseDashboardHome": "Pauza",
+ "Pause": "Pauza",
+ "Status": "Stav",
+ "Message": "Správa",
+ "No important events": "Žiadne dôležité udalosti",
+ "Edit": "Upraviť",
+ "Delete": "Odstrániť",
+ "Current": "Aktuálne",
+ "Cert Exp.": "Platnosť cert.",
+ "day": "deň | dni",
+ "hour": "hodina",
+ "Response": "Odpoveď",
+ "Ping": "Ping",
+ "Keyword": "Kľúčové slovo",
+ "Friendly Name": "Názov",
+ "Port": "Port",
+ "Retries": "Opakovania",
+ "Resend Notification if Down X times consecutively": "Poslať oznámenie znovu, ak je nedostupné X-krát za sebou",
+ "Advanced": "Pokročilé",
+ "checkEverySecond": "Skontrolovať každých {0} sekúnd",
+ "retryCheckEverySecond": "Zopakovať každých {0} sekúnd",
+ "resendEveryXTimes": "Znovu poslať každých {0} krát",
+ "resendDisabled": "Opakované odoslanie vypnuté",
+ "ignoreTLSError": "Ignorovať TLS/SSL chyby pre HTTPS stránky",
+ "upsideDownModeDescription": "Obrátiť stav. Pokiaľ je služba dostupná, zobrazuje sa ako NEDOSTUPNÁ.",
+ "Upside Down Mode": "Obrátený režim",
+ "Max. Redirects": "Max. počet presmerovaní",
+ "Accepted Status Codes": "Akceptované stavové kódy",
+ "Push URL": "Push URL",
+ "Save": "Uložiť",
+ "Notifications": "Notifikácie",
+ "Not available, please setup.": "Nedostupné, prosím nastavte.",
+ "Setup Notification": "Nastavenie notifikácií",
+ "Dark": "Tmavá",
+ "Light": "Svetlá",
+ "Auto": "Automaticky",
+ "Normal": "Normálna",
+ "Bottom": "Dole",
+ "None": "Žiadne",
+ "Timezone": "Časová zóna",
+ "languageName": "Slovenčina",
+ "Dashboard": "Dashboard",
+ "Check Update On GitHub": "Skontrolovať aktualizáciu na GitHub-e",
+ "Up": "Dostupné",
+ "Down": "Nedostupné",
+ "Unknown": "Neznáme",
+ "markdownSupported": "Podpora Markdown syntaxu",
+ "Name": "Názov",
+ "DateTime": "Dátum a čas",
+ "Resume": "Pokračovať",
+ "Uptime": "Doba prevádzky",
+ "Monitor": "Sledovanie | Sledovania",
+ "-day": "-dní",
+ "-hour": "-hodín",
+ "Monitor Type": "Typ Sledovania",
+ "URL": "URL",
+ "Hostname": "Adresa",
+ "Heartbeat Interval": "Heartbeat Interval",
+ "Heartbeat Retry Interval": "Interval opakovania pre Heartbeat",
+ "retriesDescription": "Maximálny počet opakovaní pred tým, ako je služba označená ako nedostupná a je zaslaná notifikácia",
+ "maxRedirectDescription": "Maximálny počet presmerovaní. Hodnota 0 vypne presmerovania.",
+ "needPushEvery": "Tuto adresu by ste mali volať každých {0} sekúnd.",
+ "pushOptionalParams": "Voliteľné parametre: {0}",
+ "Theme - Heartbeat Bar": "Téma - Heartbeat riadok",
+ "Game": "Hra",
+ "Search Engine Visibility": "Viditeľnosť vyhľadávačmi",
+ "Allow indexing": "Povoliť indexovanie",
+ "Change Password": "Zmeniť heslo",
+ "Current Password": "Aktuálne heslo",
+ "New Password": "Nové heslo",
+ "Repeat New Password": "Zopakovať nové heslo",
+ "Update Password": "Aktualizovať heslo",
+ "Disable Auth": "Vypnúť autentifikáciu",
+ "Enable Auth": "Zapnúť autentifikáciu",
+ "Please use this option carefully!": "Túto možnosť používajte opatrne!",
+ "Logout": "Odhlásiť sa",
+ "Leave": "Odísť",
+ "I understand, please disable": "Rozumiem, vypnite to",
+ "Yes": "Áno",
+ "No": "Nie",
+ "Username": "Používateľské meno",
+ "Password": "Heslo",
+ "Login": "Prihlásiť sa",
+ "No Monitors, please": "Žiadne sledovanie, prosím",
+ "add one": "pridať jeden",
+ "Notification Type": "Typ notifikácie",
+ "Email": "E-mail",
+ "Test": "Test",
+ "Certificate Info": "Informácie o certifikáte",
+ "Resolver Server": "DNS server",
+ "Last Result": "Posledný výsledok",
+ "Repeat Password": "Zopakovať heslo",
+ "Import Backup": "Importovať zálohu",
+ "Export Backup": "Exportovať zálohu",
+ "Export": "Exportovať",
+ "Import": "Importovať",
+ "respTime": "Čas odozvy (ms)",
+ "notAvailableShort": "Nie je číslo",
+ "Default enabled": "Predvolene povolené",
+ "Create": "Vytvoriť",
+ "Clear Data": "Vyčistiť dáta",
+ "Events": "Udalosti",
+ "Heartbeats": "Odpovede",
+ "Auto Get": "Získať automaticky",
+ "Schedule maintenance": "Naplánovať údržbu",
+ "Affected Monitors": "Dotknuté sledovania",
+ "Pick Affected Monitors...": "Vybrať dotknuté sledovania…",
+ "Start of maintenance": "Začiatok údržby",
+ "All Status Pages": "Všetky stavové stránky",
+ "Select status pages...": "Vybrať stránky stavu…",
+ "alertNoFile": "Vyberte súbor na import.",
+ "alertWrongFileType": "Vyberte súbor JSON.",
+ "Clear all statistics": "Vymazať všetky štatistiky",
+ "Skip existing": "Preskočiť existujúce",
+ "Overwrite": "Prepísať",
+ "Options": "Možnosti",
+ "Keep both": "Ponechať obe",
+ "Setup 2FA": "Nastavenie 2FA",
+ "Disable 2FA": "Zakázať 2FA",
+ "2FA Settings": "Nastavenia 2FA",
+ "Two Factor Authentication": "Dvojfaktorová autentifikácia",
+ "Inactive": "Neaktívne",
+ "Token": "Token",
+ "Show URI": "Zobraziť URI",
+ "Tags": "Značky",
+ "Add New below or Select...": "Pridať novú nižšie alebo vybrať…",
+ "Tag with this value already exist.": "Značka s touto hodnotou už existuje.",
+ "color": "Farba",
+ "value (optional)": "hodnota (voliteľné)",
+ "Gray": "Šedá",
+ "Red": "Červená",
+ "Orange": "Oranžová",
+ "Green": "Zelená",
+ "Indigo": "Indigo",
+ "Purple": "Fialová",
+ "Pink": "Ružová",
+ "Custom": "Vlastná",
+ "Avg. Ping": "Priemerný ping",
+ "Avg. Response": "Priemerný čas odpovede",
+ "Entry Page": "Vstupná stránka",
+ "No Services": "Žiadne služby",
+ "All Systems Operational": "Všetky systémy funkčné",
+ "Partially Degraded Service": "Čiastočne zhoršená služba",
+ "Degraded Service": "Degradovaná služba",
+ "Add Group": "Pridať skupinu",
+ "Add a monitor": "Pridať sledovanie",
+ "Edit Status Page": "Upraviť stavovú stránku",
+ "Go to Dashboard": "Prejdite na informačný panel",
+ "Status Page": "Stavová stránka",
+ "Status Pages": "Stavové stránky",
+ "defaultNotificationName": "Moje {notification} upozornenie ({number})",
+ "here": "tu",
+ "Required": "Povinné",
+ "Post URL": "Post URL",
+ "Content Type": "Druh obsahu",
+ "webhookJsonDesc": "{0} je vhodný pre všetky moderné servery HTTP, ako napríklad Express.js",
+ "webhookFormDataDesc": "{multipart} je dobré pre PHP. JSON bude potrebné analyzovať pomocou {decodeFunction}",
+ "Generate": "Generovať",
+ "Discourage search engines from indexing site": "Odradiť vyhľadávacie nástroje od indexovania stránky",
+ "disableauth.message1": "Ste si istý, že chcete vypnúť autentifikáciu ?",
+ "disableauth.message2": "Je navrhnutý pre scenáre, kde máte v úmysle implementovať autentifikáciu treťou stranou pred Uptime Kuma, ako je Cloudflare Access, Authelia alebo iné autentifikačné mechanizmy.",
+ "Confirm": "Potvrdiť",
+ "Remember me": "Zapamätať si ma",
+ "Resource Record Type": "Typ záznamu",
+ "Create your admin account": "Vytvorte si účet administrátora",
+ "Apply on all existing monitors": "Aplikujte na všetky existujúce sledovania",
+ "Verify Token": "Overiť token",
+ "Enable 2FA": "Povoliť 2FA",
+ "Active": "Aktívne",
+ "Add New Tag": "Pridať novú značku",
+ "Tag with this name already exist.": "Značka s týmto názvom už existuje.",
+ "Blue": "Modrá",
+ "Search...": "Hľadať…",
+ "statusPageNothing": "Nič tu nie je, pridajte skupinu alebo sledovanie.",
+ "webhookAdditionalHeadersTitle": "Ďalšie položky",
+ "webhookAdditionalHeadersDesc": "Nastaví ďalšie hlavičky odoslané s webovým hákom.",
+ "Webhook URL": "Webhook URL",
+ "Application Token": "Token aplikácie",
+ "Server URL": "Server URL",
+ "Priority": "Priorita",
+ "statusPageRefreshIn": "Obnovenie za: {0}",
+ "emojiCheatSheet": "Emotikony: {0}",
+ "Read more": "Prečítajte si viac",
+ "appriseInstalled": "Apprise je nainštalovaný."
+}
diff --git a/src/lang/sl-SI.json b/src/lang/sl-SI.json
new file mode 100644
index 000000000..f4ca81bd6
--- /dev/null
+++ b/src/lang/sl-SI.json
@@ -0,0 +1,356 @@
+{
+ "languageName": "Slovenščina",
+ "checkEverySecond": "Preveri na vsakih {0} sekund",
+ "retryCheckEverySecond": "Ponovno poskusi na vsakih {0} sekund",
+ "retriesDescription": "Maksimalno število poskusov predenj se storitev označi kot 'ne deluje' in se pošlje obvestilo",
+ "ignoreTLSError": "Ignoriraj TLS/SSL napake za HTTPS spletne strani",
+ "upsideDownModeDescription": "Negiraj status. Če je storitev deluje bo označena kot 'ne deluje'.",
+ "maxRedirectDescription": "Maksimalno število sledečih preusmeritev. 0 onemogoči preusmeritve.",
+ "acceptedStatusCodesDescription": "Izberi kode statusa veljavna kot uspešen odgovor.",
+ "passwordNotMatchMsg": "Ponovljeno geslo se ne ujema.",
+ "notificationDescription": "Obvestila morajo biti dodeljena monitorju, da delujejo.",
+ "keywordDescription": "Iskana ključna beseda v surovem HTML ali JSON odgovoru. Iskanje je občutljivo na začetnico.",
+ "pauseDashboardHome": "Pavza",
+ "deleteMonitorMsg": "Ste prepričani, da želite izbrisati ta monitor?",
+ "deleteNotificationMsg": "Ste prepričani, da želite izbrisati to obvestilo za vse monitorje?",
+ "resolverserverDescription": "Cloudflare je privzeti strežnik. DNS strežnik lahko spremenite kadarkoli.",
+ "rrtypeDescription": "Izberite RR tip, ki ga želite spremljati",
+ "pauseMonitorMsg": "Ste prepričani, da želite pavzirati?",
+ "enableDefaultNotificationDescription": "To obvestilo bo kot privzeto omogočeno za vse nove monitorje. Še vedno ga lahko izključite posebej za vsak monitor.",
+ "clearEventsMsg": "Ste prepričani da želite izbrisati vse dogodke tega monitorja?",
+ "clearHeartbeatsMsg": "Ste prepričani da želite izbrisati vse srčne utripe tega monitorja?",
+ "confirmClearStatisticsMsg": "Ste prepričani da želite izbrisati VSO statistiko?",
+ "importHandleDescription": "Izberite 'Preskoči obstoječe', če želite preskočiti vsak monitor ali obvestilo z istim imenom. 'Prepiši' bo prepisal vse obstoječe monitorje in obvestila.",
+ "confirmImportMsg": "Ste prepričani da želite uvoziti varnostno kopijo? Preverite da ste izbrali pravo opcijo za uvoz.",
+ "twoFAVerifyLabel": "Prosimo vnesite žeton za potrditev 2FA:",
+ "tokenValidSettingsMsg": "Žeton je veljaven! Sedaj lahko shranite 2FA nastavitev.",
+ "confirmEnableTwoFAMsg": "Ste prepričani, da želite omogočiti 2FA?",
+ "confirmDisableTwoFAMsg": "Ste prepričani, da želite onemogočiti 2FA?",
+ "Settings": "Nastavitve",
+ "Dashboard": "Nadzorna plošča",
+ "New Update": "Nova posodobitev",
+ "Language": "Jezik",
+ "Appearance": "Izgled",
+ "Theme": "Teme",
+ "General": "Splošno",
+ "Primary Base URL": "Primaren URL",
+ "Version": "Različica",
+ "Check Update On GitHub": "Preveri posodobitev na GitHub-u",
+ "List": "Seznam",
+ "Add": "Dodaj",
+ "Add New Monitor": "Dodaj nov monitor",
+ "Quick Stats": "Hitro stanje",
+ "Up": "Deluje",
+ "Down": "Ne deluje",
+ "Pending": "Na čakanju",
+ "Unknown": "Neznano",
+ "Pause": "Pavza",
+ "Name": "Ime",
+ "Status": "Status",
+ "DateTime": "DateTime",
+ "Message": "Sporočilo",
+ "No important events": "Ni pomembnih dogodkov",
+ "Resume": "Nadaljuj",
+ "Edit": "Uredi",
+ "Delete": "Izbriši",
+ "Current": "Trenutno",
+ "Uptime": "Uptime",
+ "Cert Exp.": "Potek certifikata",
+ "day": "dan | dni",
+ "-day": "-dni",
+ "hour": "ura",
+ "-hour": "-ur",
+ "Response": "Odgovor",
+ "Ping": "Ping",
+ "Monitor Type": "Tip monitorja",
+ "Keyword": "Ključna beseda",
+ "Friendly Name": "Ime za prikaz",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Vrata",
+ "Heartbeat Interval": "Interval srčnega utripa",
+ "Retries": "Ponovni poskusi",
+ "Heartbeat Retry Interval": "Ponovni poskus srčnega utripa",
+ "Advanced": "Napredno",
+ "Upside Down Mode": "Negiran način",
+ "Max. Redirects": "Max. preusmeritev",
+ "Accepted Status Codes": "Sprejete kode statusa",
+ "Push URL": "Push URL",
+ "needPushEvery": "Pokliči ta URL vsakih {0} sekund.",
+ "pushOptionalParams": "Dodatni parametri: {0}",
+ "Save": "Shrani",
+ "Notifications": "Obvestila",
+ "Not available, please setup.": "Ni na voljo, prosimo nastavite.",
+ "Setup Notification": "Nastavi obvestila",
+ "Light": "Svetlo",
+ "Dark": "Temno",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Tema - vrstica srčnega utripa",
+ "Normal": "Normalna",
+ "Bottom": "Spodaj",
+ "None": "Brez",
+ "Timezone": "Časovni pas",
+ "Search Engine Visibility": "Vidljivost v spletnih iskalnikih",
+ "Allow indexing": "Dovoli indeksiranje",
+ "Discourage search engines from indexing site": "Odvračaj spletne iskalnike od indeksiranja te strani",
+ "Change Password": "Zamenjaj geslo",
+ "Current Password": "Trenutno geslo",
+ "New Password": "Novo geslo",
+ "Repeat New Password": "Ponovi novo geslo",
+ "Update Password": "Posodobi geslo",
+ "Disable Auth": "Onemogoči auth",
+ "Enable Auth": "Omogoči auth",
+ "disableauth.message1": "Ali ste prepričani, da želite onemogočiti avtentikacijo ?",
+ "disableauth.message2": "Namenjen je nekomu, ki ima pred programom Uptime Kuma vklopljeno zunanje preverjanje pristnosti , na primer Cloudflare Access.",
+ "Please use this option carefully!": "Uporabljajte previdno.",
+ "Logout": "Odjava",
+ "Leave": "Zapusti",
+ "I understand, please disable": "Razumem, prosim onemogočite",
+ "Confirm": "Potrdi",
+ "Yes": "Da",
+ "No": "Ne",
+ "Username": "Uporabniško ime",
+ "Password": "Geslo",
+ "Remember me": "Zapomni si me",
+ "Login": "Vpis",
+ "No Monitors, please": "Prosim, brez monitorjev",
+ "add one": "Dodaj enega",
+ "Notification Type": "Tip obvestila",
+ "Email": "Email",
+ "Test": "Test",
+ "Certificate Info": "Informacije certifikata",
+ "Resolver Server": "Strežnik za razreševanje",
+ "Resource Record Type": "Vrsta zapisa o viru",
+ "Last Result": "Zadnji rezultat",
+ "Create your admin account": "Ustvari administratorski račun",
+ "Repeat Password": "Ponovi geslo",
+ "Import Backup": "Uvozi varnostno kopijo",
+ "Export Backup": "Izvozi varnostno kopijo",
+ "Export": "Izvozi",
+ "Import": "Uvozi",
+ "respTime": "Odzivni čas (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Privzeto omogočeno",
+ "Apply on all existing monitors": "Uporabi na vseh obstoječih monitorjih",
+ "Create": "Ustvari",
+ "Clear Data": "Izbriši podatke",
+ "Events": "Dogodki",
+ "Heartbeats": "Srčni utripi",
+ "Auto Get": "Auto Get",
+ "backupDescription": "Izvozite lahko vse monitorje in obvestila v JSON datoteko.",
+ "backupDescription2": "Pomni: Zgodovina in podatki dogodkov niso vključeni.",
+ "backupDescription3": "Občutljivi podatki, kot žetoni za obvestila so vlkjučeni v datoteko za izvoz; prosimo hranite na varnem.",
+ "alertNoFile": "Izberite datoteko za Uvoz.",
+ "alertWrongFileType": "Prosimo izberite JSON datoteko.",
+ "Clear all statistics": "Pobrišite vso statistiko",
+ "Skip existing": "Preskoči obstoječe",
+ "Overwrite": "Prepiši",
+ "Options": "Možnosti",
+ "Keep both": "Ohrani oboje",
+ "Verify Token": "Potrdi žeton",
+ "Setup 2FA": "Nastavi 2FA",
+ "Enable 2FA": "Omogoči 2FA",
+ "Disable 2FA": "Onemogoči 2FA",
+ "2FA Settings": "2FA nastavitve",
+ "Two Factor Authentication": "Preverjanje pristnosti z dvema dejavnikoma",
+ "Active": "Aktivno",
+ "Inactive": "Neaktivno",
+ "Token": "Žeton",
+ "Show URI": "Prikaži URI",
+ "Tags": "Značke",
+ "Add New below or Select...": "Dodaj novo spodaj ali izberi iz seznama...",
+ "Tag with this name already exist.": "Značka s tem imenom že obstaja.",
+ "Tag with this value already exist.": "Značka s to vrednostjo že obstaja.",
+ "color": "barva",
+ "value (optional)": "vrednost (po želji)",
+ "Gray": "Siva",
+ "Red": "Rdeča",
+ "Orange": "Oranžna",
+ "Green": "Zelena",
+ "Blue": "Modra",
+ "Indigo": "Indigo",
+ "Purple": "Vijolična",
+ "Pink": "Roza",
+ "Search...": "Išči...",
+ "Avg. Ping": "Avg. Ping",
+ "Avg. Response": "Avg. odziv",
+ "Entry Page": "Vstopna stran",
+ "statusPageNothing": "Nikjer nič... Dodajte skupino ali monitor.",
+ "No Services": "Ni storitev",
+ "All Systems Operational": "Vsi sistemi delujejo",
+ "Partially Degraded Service": "Delno poslabšana storitev",
+ "Degraded Service": "Poslabšana storitev",
+ "Add Group": "Dodaj skupino",
+ "Add a monitor": "Dodaj monitor",
+ "Edit Status Page": "Uredi statusno stran",
+ "Go to Dashboard": "Pojdi na nadzorno ploščo",
+ "Status Page": "Statusna stran",
+ "Status Pages": "Statusne strani",
+ "defaultNotificationName": "Moje {notification} Obvestilo ({number})",
+ "here": "tukaj",
+ "Required": "Obvezno",
+ "telegram": "Telegram",
+ "Bot Token": "Robotkov žetonček",
+ "wayToGetTelegramToken": "Lahko dobiš žeton od {0}.",
+ "Chat ID": "ID pogovora",
+ "supportTelegramChatID": "Direkten pogovor pomoči / Skupina / ID kanala",
+ "wayToGetTelegramChatID": "Id lahko dobiš, če pošlješ sporočilo robotku in odpreš ta URL, da bi videl chat_id:",
+ "YOUR BOT TOKEN HERE": "ROBOTKOV ŽETON TUKAJ",
+ "chatIDNotFound": "Ne najdem Chat Id-ja; prvo pošlji sporočilo robotku",
+ "webhook": "Webhook",
+ "Post URL": "Post URL",
+ "Content Type": "Vrsta vsebine",
+ "webhookJsonDesc": "{0} je v redu za vsak moderen HTTP strežnik, kot recimo Express.js",
+ "webhookFormDataDesc": "{multipart} je v redu za PHP. JSON bo moral biti razčlenjen s {decodeFunction}",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "Brez / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignoriraj TLS napako",
+ "From Email": "Od Email",
+ "emailCustomSubject": "Poljubna zadeva",
+ "To Email": "Za Email",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "To lahko dibiš v Server Settings -> Integrations -> Create Webhook",
+ "Bot Display Name": "Prikazno ime robotka",
+ "Prefix Custom Message": "Predpona poljubnega sporočila",
+ "Hello @everyone is...": "Pozdravljen {'@'}everyone je...",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Izvedi kako narediš webhook URL {0}.",
+ "signal": "Signal",
+ "Number": "Številka",
+ "Recipients": "Prejemniki",
+ "needSignalAPI": "Imeti moraš signal klienta z REST API.",
+ "wayToCheckSignalURL": "Kako se to naredi, lahko preveriš na tem URL-ju:",
+ "signalImportant": "POMEMBNO: Ne moreš mešati skupin in številk v prejemnikih!",
+ "gotify": "Gotify",
+ "Application Token": "Žeton za aplikacijo",
+ "Server URL": "URL Strežnika",
+ "Priority": "Prioriteta",
+ "slack": "Slack",
+ "Icon Emoji": "Emoji ikona",
+ "Channel Name": "Ime kanala",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Več o webhook-ih: {0}",
+ "aboutChannelName": "Vnesi ime kanala na {0} Channel Name polje, če želiš preskočiti webhook kanal. npr.: #drug-kanal",
+ "aboutKumaURL": "Če pustite polje Uptime Kuma URL prazno, bo nastavljeno privzeto na GitHub stran projekta.",
+ "emojiCheatSheet": "Emoji plonk listek: {0}",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (podpira 50+ storitev za obveščevanje)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "User Key",
+ "Device": "Naprava",
+ "Message Title": "Naslov sporočila",
+ "Notification Sound": "Zvok obvestila",
+ "More info on:": "Več informacij na: {0}",
+ "pushoverDesc1": "Prioriteta nujnosti (2) ima privzeto nastavitev 30 sekund časa med ponovni poskusi in poteče po 1 uri.",
+ "pushoverDesc2": "Če želite pošiljati obvestila na različne naprave izpolnite polje 'Naprava'.",
+ "SMS Type": "Vrsta SMS-a",
+ "octopushTypePremium": "Premium (hitro - priporočljivo za opozarjanje)",
+ "octopushTypeLowCost": "Cenovno ugodno (počasno - včasih jih blokira operater)",
+ "checkPrice": "preveri {0} cene:",
+ "apiCredentials": "API poverilnice",
+ "octopushLegacyHint": "Uporabljate legacy verzijo Octopush-a (2011-2020) ali novo verzijo?",
+ "Check octopush prices": "Preveri octopush cene {0}.",
+ "octopushPhoneNumber": "Telefonska številka (npr.: +386031234567) ",
+ "octopushSMSSender": "Ime SMS pošiljatelja: 3-11 alfanumeričnih znakov in presledki (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Device ID",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Primer: {0}",
+ "Read more:": "Preberi več: {0}",
+ "Status:": "Status: {0}",
+ "Read more": "Preberi več",
+ "appriseInstalled": "Apprise je nameščen.",
+ "appriseNotInstalled": "Apprise ni nameščen. {0}",
+ "Access Token": "Žeton za dostop",
+ "Channel access token": "Žeton za dostop do kanala",
+ "Line Developers Console": "Line Developers Console",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "Osnovne nastavitve",
+ "User ID": "User ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Prvo odpri {0}, ustvarite ponudnika in kanal (Messaging API), potem lahko žeton za dostop do kanala in ID uporabnika dobite iz zgoraj navedenih elementov menija.",
+ "Icon URL": "URL ikone",
+ "aboutIconURL": "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji.",
+ "aboutMattermostChannelName": "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - poceni, vendar počasen in pogosto preobremenjen. Omejeno samo na poljske prejemnike.",
+ "promosmsTypeFlash": "SMS FLASH - sporočilo se samodejno prikaže v napravi prejemnika. Omejeno samo na poljske prejemnike.",
+ "promosmsTypeFull": "SMS FULL - Premium raven SMS, Uporabite lahko svoje ime pošiljatelja (najprej morate registrirati ime). Zanesljivo za opozorila.",
+ "promosmsTypeSpeed": "SMS SPEED - Najvišja prednost v sistemu. Zelo hitro in zanesljivo, vendar drago (približno dvakratnik cene SMS FULL)..",
+ "promosmsPhoneNumber": "Telefonska številka (za poljskega prejemnika Lahko preskočite področne oznake",
+ "promosmsSMSSender": "Ime pošiljatelja SMS : vnaprej registrirano ime ali eno od privzetih: SMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "Homeserver URL (z http(s):// in vrata po želji)",
+ "Internal Room Id": "Interni ID sobe",
+ "matrixDesc1": "Notranji ID sobe lahko poiščete v naprednem razdelku nastavitev sobe v odjemalcu Matrix. Izgledati mora kot !QMdRCpUIfLwsfjxye6:home.server",
+ "matrixDesc2": "Zelo priporočljivo je, da ustvarite novega uporabnika in ne uporabljate svojega žetona za dostop uporabnika Matrix, saj bo omogočil popoln dostop do vašega računa in vseh sob, ki ste se jim pridružili. Namesto tega ustvarite novega uporabnika in ga povabite le v sobo, v kateri želite prejemati obvestila. Token dostopa lahko dobite tako, da zaženete {0}",
+ "Method": "Metoda",
+ "Body": "Telo",
+ "Headers": "Glave",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Glave zahtevka niso veljavni JSON: ",
+ "BodyInvalidFormat": "Telo zahteve ni veljaven JSON: ",
+ "Monitor History": "Zgodovina",
+ "clearDataOlderThan": "Ohrani zgodovino {0} dni.",
+ "PasswordsDoNotMatch": "Gesli se ne ujemata.",
+ "records": "vnosi",
+ "One record": "En vnos",
+ "steamApiKeyDescription": "Za spremljanje igralnega strežnika Steam potrebujete ključ spletnega vmesnika Steam. Ključ API lahko registrirate tukaj: ",
+ "Current User": "Trenuten uporabnik",
+ "recent": "Nedavno",
+ "Done": "Zaključi",
+ "Info": "Info",
+ "Security": "Varnost",
+ "Steam API Key": "Steam API Key",
+ "Shrink Database": "Stisni bazo",
+ "Pick a RR-Type...": "Izberi RR tip...",
+ "Pick Accepted Status Codes...": "Izbiranje sprejetih kod stanja...",
+ "Default": "Privzeto",
+ "HTTP Options": "HTTP možnosti",
+ "Create Incident": "Ustvari incident",
+ "Title": "Naslov",
+ "Content": "Vsebina",
+ "Style": "Stil",
+ "info": "info",
+ "warning": "opozorilo",
+ "danger": "nevarnost",
+ "primary": "primarno",
+ "light": "svetlo",
+ "dark": "temno",
+ "Post": "Objavi",
+ "Please input title and content": "Vnesi naslov in vsebino",
+ "Created": "Ustvarjeno",
+ "Last Updated": "Nazadnje posodobljeno",
+ "Unpin": "Odpni",
+ "Switch to Light Theme": "Preklopi na svetlo temo",
+ "Switch to Dark Theme": "Preklopi na temno temo",
+ "Show Tags": "Prikaži značke",
+ "Hide Tags": "Skrij značke",
+ "Description": "Opis",
+ "No monitors available.": "Nobenega monitorja ni na voljo.",
+ "Add one": "Dodaj enega",
+ "No Monitors": "Ni monitorjev",
+ "Untitled Group": "Skupina brez imena",
+ "Services": "Storitve",
+ "Discard": "zavrzi",
+ "Cancel": "Prekliči",
+ "Powered by": "Powered by",
+ "shrinkDatabaseDescription": "Sprožitev podatkovne zbirke VACUUM za SQLite. Če je vaša zbirka podatkov ustvarjena po različici 1.10.0, je funkcija AUTO_VACUUM že omogočena in ta ukrep ni potreben.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API uporabniško ime (vključno z webapi_ prefix)",
+ "serwersmsAPIPassword": "API geslo",
+ "serwersmsPhoneNumber": "Telefonska številka",
+ "serwersmsSenderName": "Ime SMS pošiljatelja (registrirani prek portala za stranke)"
+}
diff --git a/src/lang/sq.json b/src/lang/sq.json
new file mode 100644
index 000000000..a513329aa
--- /dev/null
+++ b/src/lang/sq.json
@@ -0,0 +1,25 @@
+{
+ "Settings": "Opsione",
+ "Dashboard": "FaqeKryesore",
+ "Help": "Ndihma",
+ "Language": "Gjuha",
+ "Appearance": "Paraqitja",
+ "Theme": "Theme",
+ "General": "Te pergjithshme",
+ "Game": "Loje",
+ "Primary Base URL": "ULR Baze Primare",
+ "List": "List",
+ "Add": "Shto",
+ "Add New Monitor": "Shto Monitor te Ri",
+ "Quick Stats": "Statistika Flash",
+ "Up": "Lart",
+ "Down": "Poshte",
+ "Pending": "Ne Pritje",
+ "statusMaintenance": "Mirembatje",
+ "Maintenance": "Mirembajtje",
+ "Unknown": "Panjohur",
+ "languageName": "Shqip",
+ "New Update": "Update i ri",
+ "Version": "Version",
+ "Check Update On GitHub": "Kontrollo Update ne GitHub"
+}
diff --git a/src/lang/sr-latn.json b/src/lang/sr-latn.json
new file mode 100644
index 000000000..f5134477c
--- /dev/null
+++ b/src/lang/sr-latn.json
@@ -0,0 +1,113 @@
+{
+ "languageName": "Srpski",
+ "checkEverySecond": "Proveri svakih {0} sekundi.",
+ "retriesDescription": "Maksimum pokušaja pre nego što se servis obeleži kao neaktivan i pošalje se obaveštenje.",
+ "ignoreTLSError": "Ignoriši TLS/SSL greške za HTTPS veb stranice.",
+ "upsideDownModeDescription": "Obrnite status. Ako je servis dostupan, onda je obeležen kao neaktivan.",
+ "maxRedirectDescription": "Maksimani broj preusmerenja da se prate. Postavite na 0 da bi se isključila preusmerenja.",
+ "acceptedStatusCodesDescription": "Odaberite statusne kodove koji se smatraju uspešnim odgovorom.",
+ "passwordNotMatchMsg": "Ponovljena lozinka se ne poklapa.",
+ "notificationDescription": "Molim Vas postavite obaveštenje za masmatrače da bise aktivirali.",
+ "keywordDescription": "Pretraži ključnu reč u čistom html ili JSON odgovoru sa osetljivim velikim i malim slovima",
+ "pauseDashboardHome": "Pauziraj",
+ "deleteMonitorMsg": "Da li ste sigurni da želite da obrišete ovog posmatrača?",
+ "deleteNotificationMsg": "Da li ste sigurni d aželite da uklonite ovo obaveštenje za sve posmatrače?",
+ "resolverserverDescription": "Cloudflare je podrazumevani server. Možete promeniti server za raszrešavanje u bilo kom trenutku.",
+ "rrtypeDescription": "Odaberite RR-Type koji želite da posmatrate",
+ "pauseMonitorMsg": "Da li ste sigurni da želite da pauzirate?",
+ "Settings": "Podešavanja",
+ "Dashboard": "Komandna tabla",
+ "New Update": "Nova verzija",
+ "Language": "Jezik",
+ "Appearance": "Izgled",
+ "Theme": "Tema",
+ "General": "Opšte",
+ "Version": "Verzija",
+ "Check Update On GitHub": "Proverite novu verziju na GitHub-u",
+ "List": "Lista",
+ "Add": "Dodaj",
+ "Add New Monitor": "Dodaj novog posmatrača",
+ "Quick Stats": "Brze statistike",
+ "Up": "Aktivno",
+ "Down": "Neaktivno",
+ "Pending": "Nerešeno",
+ "Unknown": "Nepoznato",
+ "Pause": "Pauziraj",
+ "Name": "Ime",
+ "Status": "Status",
+ "DateTime": "Datum i vreme",
+ "Message": "Poruka",
+ "No important events": "Nema bitnih događaja",
+ "Resume": "Nastavi",
+ "Edit": "Izmeni",
+ "Delete": "Ukloni",
+ "Current": "Trenutno",
+ "Uptime": "Vreme rada",
+ "Cert Exp.": "Istek sert.",
+ "day": "dan | dana",
+ "-day": "-dana",
+ "hour": "sat",
+ "-hour": "-sata",
+ "Response": "Odgovor",
+ "Ping": "Ping",
+ "Monitor Type": "Tip posmatrača",
+ "Keyword": "Ključna reč",
+ "Friendly Name": "Prijateljsko ime",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Interval otkucaja srca",
+ "Retries": "Pokušaji",
+ "Advanced": "Napredno",
+ "Upside Down Mode": "Naopak mod",
+ "Max. Redirects": "Maks. preusmerenja",
+ "Accepted Status Codes": "Prihvaćeni statusni kodovi",
+ "Save": "Sačuvaj",
+ "Notifications": "Obaveštenja",
+ "Not available, please setup.": "Nije dostupno, molim Vas podesite.",
+ "Setup Notification": "Postavi obaveštenje",
+ "Light": "Svetlo",
+ "Dark": "Tamno",
+ "Auto": "Automatsko",
+ "Theme - Heartbeat Bar": "Tema - Traka otkucaja srca",
+ "Normal": "Normalno",
+ "Bottom": "Dole",
+ "None": "Isključeno",
+ "Timezone": "Vremenska zona",
+ "Search Engine Visibility": "Vidljivost pretraživačima",
+ "Allow indexing": "Dozvoli indeksiranje",
+ "Discourage search engines from indexing site": "Odvraćajte pretraživače od indeksiranja sajta",
+ "Change Password": "Promeni lozinku",
+ "Current Password": "Trenutna lozinka",
+ "New Password": "Nova lozinka",
+ "Repeat New Password": "Ponovi novu lozinku",
+ "Update Password": "Izmeni lozinku",
+ "Disable Auth": "Isključi autentifikaciju",
+ "Enable Auth": "Uključi autentifikaciju",
+ "disableauth.message1": "Da li ste sigurni da želite da isključite autentifikaciju ?",
+ "disableauth.message2": "To je za one koji imaju dodatu autentifikaciju ispred Uptime Kuma kao na primer Cloudflare Access.",
+ "Please use this option carefully!": "Molim Vas koristite ovo sa pažnjom.",
+ "Logout": "Odloguj se",
+ "Leave": "Izađi",
+ "I understand, please disable": "Razumem, molim te isključi",
+ "Confirm": "Potvrdi",
+ "Yes": "Da",
+ "No": "Ne",
+ "Username": "Korisničko ime",
+ "Password": "Lozinka",
+ "Remember me": "Zapamti me",
+ "Login": "Uloguj se",
+ "No Monitors, please": "Bez posmatrača molim",
+ "add one": "dodaj jednog",
+ "Notification Type": "Tip obaveštenja",
+ "Email": "E-pošta",
+ "Test": "Test",
+ "Certificate Info": "Informacije sertifikata",
+ "Resolver Server": "Razrešivački server",
+ "Resource Record Type": "Tip zapisa resursa",
+ "Last Result": "Poslednji rezultat",
+ "Create your admin account": "Naprivi administratorski nalog",
+ "Repeat Password": "Ponovite lozinku",
+ "respTime": "Vreme odg. (ms)",
+ "notAvailableShort": "N/A"
+}
diff --git a/src/lang/sr.json b/src/lang/sr.json
new file mode 100644
index 000000000..34bec92af
--- /dev/null
+++ b/src/lang/sr.json
@@ -0,0 +1,112 @@
+{
+ "languageName": "Српски",
+ "checkEverySecond": "Провери сваких {0} секунди.",
+ "retriesDescription": "Максимум покушаја пре него што се сервис обележи као неактиван и пошаље се обавештење.",
+ "ignoreTLSError": "Игнориши TLS/SSL грешке за HTTPS веб странице.",
+ "upsideDownModeDescription": "Обрните статус. Ако је сервис доступан, онда је обележен као неактиван.",
+ "maxRedirectDescription": "Максимани број преусмерења да се прате. Поставите на 0 да би се искључила преусмерења.",
+ "acceptedStatusCodesDescription": "Одаберите статусне кодове који се сматрају успешним одговором.",
+ "passwordNotMatchMsg": "Поновљена лозинка се не поклапа.",
+ "notificationDescription": "Молим Вас поставите обавештење за масматраче да бисе активирали.",
+ "keywordDescription": "Претражи кључну реч у чистом html или JSON одговору са осетљивим великим и малим словима",
+ "pauseDashboardHome": "Паузирај",
+ "deleteMonitorMsg": "Да ли сте сигурни да желите да обришете овог посматрача?",
+ "deleteNotificationMsg": "Да ли сте сигурни д ажелите да уклоните ово обавештење за све посматраче?",
+ "resolverserverDescription": "Cloudflare је подразумевани сервер. Можете променити сервер за расзрешавање у било ком тренутку.",
+ "rrtypeDescription": "Одаберите RR-Type који желите да посматрате",
+ "pauseMonitorMsg": "Да ли сте сигурни да желите да паузирате?",
+ "Settings": "Подешавања",
+ "Dashboard": "Командна табла",
+ "New Update": "Нова верзија",
+ "Language": "Језик",
+ "Appearance": "Изглед",
+ "Theme": "Тема",
+ "General": "Опште",
+ "Version": "Верзија",
+ "Check Update On GitHub": "Проверите нову верзију на GitHub-у",
+ "List": "Листа",
+ "Add": "Додај",
+ "Add New Monitor": "Додај новог посматрача",
+ "Quick Stats": "Брзе статистике",
+ "Up": "Активно",
+ "Down": "Неактивно",
+ "Pending": "Нерешено",
+ "Unknown": "Непознато",
+ "Pause": "Паузирај",
+ "Name": "Име",
+ "Status": "Статус",
+ "DateTime": "Датум и време",
+ "Message": "Порука",
+ "No important events": "Нема битних догађаја",
+ "Resume": "Настави",
+ "Edit": "Измени",
+ "Delete": "Уклони",
+ "Current": "Тренутно",
+ "Uptime": "Време рада",
+ "Cert Exp.": "Истек серт.",
+ "day": "дан | дана",
+ "-day": "-дана",
+ "hour": "сат",
+ "-hour": "-сата",
+ "Response": "Одговор",
+ "Ping": "Пинг",
+ "Monitor Type": "Тип посматрача",
+ "Keyword": "Кључна реч",
+ "Friendly Name": "Пријатељско име",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Порт",
+ "Heartbeat Interval": "Интервал откуцаја срца",
+ "Retries": "Покушаји",
+ "Advanced": "Напредно",
+ "Upside Down Mode": "Наопак мод",
+ "Max. Redirects": "Макс. преусмерења",
+ "Accepted Status Codes": "Прихваћени статусни кодови",
+ "Save": "Сачувај",
+ "Notifications": "Обавештења",
+ "Not available, please setup.": "Није доступно, молим Вас подесите.",
+ "Setup Notification": "Постави обавештење",
+ "Light": "Светло",
+ "Dark": "Тамно",
+ "Auto": "Аутоматско",
+ "Theme - Heartbeat Bar": "Тема - Трака откуцаја срца",
+ "Normal": "Нормално",
+ "Bottom": "Доле",
+ "None": "Искључено",
+ "Timezone": "Временска зона",
+ "Search Engine Visibility": "Видљивост претраживачима",
+ "Allow indexing": "Дозволи индексирање",
+ "Discourage search engines from indexing site": "Одвраћајте претраживаче од индексирања сајта",
+ "Change Password": "Промени лозинку",
+ "Current Password": "Тренутна лозинка",
+ "New Password": "Нова лозинка",
+ "Repeat New Password": "Понови нову лозинку",
+ "Update Password": "Измени лозинку",
+ "Disable Auth": "Искључи аутентификацију",
+ "Enable Auth": "Укључи аутентификацију",
+ "disableauth.message1": "Да ли сте сигурни да желите да искључите аутентификацију ?",
+ "disableauth.message2": "То је за оне који имају додату аутентификацију испред Uptime Kuma као на пример Cloudflare Access.",
+ "Please use this option carefully!": "Молим Вас користите ово са пажњом.",
+ "Logout": "Одлогуј се",
+ "Leave": "Изађи",
+ "I understand, please disable": "Разумем, молим те искључи",
+ "Confirm": "Потврди",
+ "Yes": "Да",
+ "No": "Не",
+ "Username": "Корисничко име",
+ "Password": "Лозинка",
+ "Remember me": "Запамти ме",
+ "Login": "Улогуј се",
+ "No Monitors, please": "Без посматрача молим",
+ "add one": "додај једног",
+ "Notification Type": "Тип обавештења",
+ "Email": "Е-пошта",
+ "Test": "Тест",
+ "Certificate Info": "Информације сертификата",
+ "Resolver Server": "Разрешивачки сервер",
+ "Resource Record Type": "Тип записа ресурса",
+ "Last Result": "Последњи резултат",
+ "Create your admin account": "Наприви администраторски налог",
+ "Repeat Password": "Поновите лозинку",
+ "respTime": "Време одг. (мс)"
+}
diff --git a/src/lang/sv-SE.json b/src/lang/sv-SE.json
new file mode 100644
index 000000000..285b506c1
--- /dev/null
+++ b/src/lang/sv-SE.json
@@ -0,0 +1,141 @@
+{
+ "languageName": "Svenska",
+ "checkEverySecond": "Uppdatera var {0} sekund.",
+ "retriesDescription": "Max antal försök innan tjänsten markeras som nere och en notis skickas",
+ "ignoreTLSError": "Ignorera TLS/SSL-fel för webbsidor med HTTPS",
+ "upsideDownModeDescription": "Vänd upp och ner på statusen. Om tjänsten är nåbar visas den som NERE.",
+ "maxRedirectDescription": "Max antal omdirigeringar att följa. Välj 0 för att avaktivera omdirigeringar.",
+ "acceptedStatusCodesDescription": "Välj statuskoder som räknas som lyckade.",
+ "passwordNotMatchMsg": "Det bekräftade lösenordet stämmer ej överens.",
+ "notificationDescription": "Vänligen lägg till en notistjänst till dina övervakare.",
+ "keywordDescription": "Sök efter nyckelord i ren HTML eller JSON-svar. Sökningen är skiftkänslig.",
+ "pauseDashboardHome": "Pausa",
+ "deleteMonitorMsg": "Är du säker på att du vill ta bort den här övervakningen?",
+ "deleteNotificationMsg": "Är du säker på att du vill ta bort den här notisen för alla övervakare?",
+ "resolverserverDescription": "Cloudflare är den förvalda servern. Du kan byta resolver när som helst.",
+ "rrtypeDescription": "Välj den RR-typ du vill övervaka",
+ "pauseMonitorMsg": "Är du säker på att du vill pausa?",
+ "Settings": "Inställningar",
+ "Dashboard": "Infopanel",
+ "New Update": "Ny uppdatering",
+ "Language": "Språk",
+ "Appearance": "Utseende",
+ "Theme": "Tema",
+ "General": "Allmänt",
+ "Version": "Version",
+ "Check Update On GitHub": "Sök efter uppdatering på GitHub",
+ "List": "Lista",
+ "Add": "Lägg till",
+ "Add New Monitor": "Lägg Till Ny Övervakare",
+ "Quick Stats": "Snabbstatistik",
+ "Up": "Uppe",
+ "Down": "Nere",
+ "Pending": "Pågående",
+ "Unknown": "Okänt",
+ "Pause": "Pausa",
+ "Name": "Namn",
+ "Status": "Status",
+ "DateTime": "Datum & Tid",
+ "Message": "Meddelande",
+ "No important events": "Inga viktiga händelser",
+ "Resume": "Återuppta",
+ "Edit": "Redigera",
+ "Delete": "Ta bort",
+ "Current": "Nuvarande",
+ "Uptime": "Drifttid",
+ "Cert Exp.": "Certifikat utgår",
+ "day": "dag | dagar",
+ "-day": " dagar",
+ "hour": "timme",
+ "-hour": " timmar",
+ "Response": "Svar",
+ "Ping": "Ping",
+ "Monitor Type": "Övervakningstyp",
+ "Keyword": "Nyckelord",
+ "Friendly Name": "Namn",
+ "URL": "URL",
+ "Hostname": "Värdnamn",
+ "Port": "Port",
+ "Heartbeat Interval": "Hjärtslagsintervall",
+ "Retries": "Försök",
+ "Advanced": "Avancerat",
+ "Upside Down Mode": "Upp och ner-läge",
+ "Max. Redirects": "Max antal omdirigeringar",
+ "Accepted Status Codes": "Tillåtna statuskoder",
+ "Save": "Spara",
+ "Notifications": "Notiser",
+ "Not available, please setup.": "Ej tillgänglig, vänligen konfigurera.",
+ "Setup Notification": "Ny Notistjänst",
+ "Light": "Ljust",
+ "Dark": "Mörkt",
+ "Auto": "Automatiskt",
+ "Theme - Heartbeat Bar": "Tema - Heartbeat Bar",
+ "Normal": "Normal",
+ "Bottom": "Botten",
+ "None": "Tomt",
+ "Timezone": "Tidszon",
+ "Search Engine Visibility": "Synlighet på Sökmotorer",
+ "Allow indexing": "Tillåt indexering",
+ "Discourage search engines from indexing site": "Hindra sökmotorer från att indexera sidan",
+ "Change Password": "Byt Lösenord",
+ "Current Password": "Nuvarande Lösenord",
+ "New Password": "Nytt Lösenord",
+ "Repeat New Password": "Upprepa Nytt Lösenord",
+ "Update Password": "Uppdatera Lösenord",
+ "Disable Auth": "Avaktivera Autentisering",
+ "Enable Auth": "Aktivera Autentisering",
+ "Logout": "Logga ut",
+ "Leave": "Lämna",
+ "I understand, please disable": "Jag förstår, vänligen avaktivera",
+ "Confirm": "Bekräfta",
+ "Yes": "Ja",
+ "No": "Nej",
+ "Username": "Användarnamn",
+ "Password": "Lösenord",
+ "Remember me": "Kom ihåg mig",
+ "Login": "Logga in",
+ "No Monitors, please": "Inga Övervakare, tack",
+ "add one": "lägg till en",
+ "Notification Type": "Notistyp",
+ "Email": "Email",
+ "Test": "Test",
+ "Certificate Info": "Certifikatsinfo",
+ "Resolver Server": "Resolverserver",
+ "Resource Record Type": "RR-typ",
+ "Last Result": "Senaste resultat",
+ "Create your admin account": "Skapa ditt administratörskonto",
+ "Repeat Password": "Upprepa Lösenord",
+ "respTime": "Svarstid (ms)",
+ "Specific Monitor Type": "Applikationsspecifika övervakare",
+ "Push URL": "Push URL",
+ "Passive Monitor Type": "Passiva övervakare",
+ "markdownSupported": "Stödjer markdown-syntax",
+ "Heartbeat Retry Interval": "Omprövningsintervall",
+ "needPushEvery": "Hämta denna URL var {0} sekund",
+ "pushOptionalParams": "Valfria parametrar: {0}",
+ "disableauth.message1": "Vill du verkligen avaktivera autentisering ?",
+ "disableauth.message2": "Det är designat för när en tredjeparts autentiseringstjänst såsom Cloudflare Access eller Authelia används framför Uptime Kuma.",
+ "Please use this option carefully!": "Använd denna funktion varsamt!",
+ "Import Backup": "Importera backup",
+ "Affected Monitors": "Påverkade övervakare",
+ "Start of maintenance": "Påbörja underhåll",
+ "All Status Pages": "Alla statussidor",
+ "alertNoFile": "Välj en fil att importera.",
+ "alertWrongFileType": "Välj en JSON-formatterad fil.",
+ "Help": "Hjälp",
+ "Export": "Export",
+ "Import": "Import",
+ "Game": "Spel",
+ "resendEveryXTimes": "Omsänd efter {0} gånger",
+ "Export Backup": "Exportera backup",
+ "Schedule maintenance": "Schemalägg underhåll",
+ "Monitor": "Övervakare | Övervakare",
+ "Resend Notification if Down X times consecutively": "Sänd notis igen om nere X gånger i rad",
+ "Maintenance": "Underhåll",
+ "retryCheckEverySecond": "Ompröva var {0} sekund",
+ "statusMaintenance": "Underhåll",
+ "resendDisabled": "Omsändning inaktiverat",
+ "Pick Affected Monitors...": "Välj påverkade övervakare…",
+ "Select status pages...": "Välj statussidor…",
+ "General Monitor Type": "Allmänna övervakare"
+}
diff --git a/src/lang/th-TH.json b/src/lang/th-TH.json
new file mode 100644
index 000000000..10ddc0c90
--- /dev/null
+++ b/src/lang/th-TH.json
@@ -0,0 +1,674 @@
+{
+ "languageName": "ไทย",
+ "checkEverySecond": "ตรวจสอบทุก {0} วินาที",
+ "retryCheckEverySecond": "ลองใหม่ทุก {0} วินาที",
+ "retriesDescription": "จำนวนครั้งสูงสุดที่จะลองก่อนบริการถูกระบุว่าไม่สามารถใช้งานได้และส่งการแจ้งเตือน",
+ "ignoreTLSError": "ไม่สนใจข้อผิดพลาด TLS/SSL สำหรับเว็บไซต์ HTTPS",
+ "upsideDownModeDescription": "สลับสถานะ เช่น ถ้าบริการสามารถใช้งานได้จะถูกเปลี่ยนเป็นใช้งานไม่ได้",
+ "maxRedirectDescription": "จำนวนครั้งสูงสุดที่จะเปลี่ยนเส้นทาง, ตั้งเป็น 0 เพื่อปิดการเปลี่ยนเส้นทาง",
+ "acceptedStatusCodesDescription": "เลือกรหัสสถานะที่ถือว่าการตอบกลับสำเร็จ",
+ "passwordNotMatchMsg": "รหัสผ่านไม่ตรงกัน",
+ "notificationDescription": "การแจ้งเตือนต้องกำหนดให้มอนิเตอร์เพื่อให้สามารถใช้งานได้",
+ "keywordDescription": "ค้นหาคำสำคัญใน HTML หรือ JSON ของการตอบกลับ, คำสำคัญต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่",
+ "pauseDashboardHome": "หยุดชั่วคราว",
+ "deleteMonitorMsg": "คุณแน่ใจหรือไม่ที่จะลบมอนิเตอร์?",
+ "deleteNotificationMsg": "คุณแน่ใจหรือไม่ที่จะลบการแจ้งเตือนสำหรับมอนิเตอร์ทั้งหมด?",
+ "resolverserverDescription": "Cloudflare เป็นเซิร์ฟเวอร์ค้นหาเริ่มต้น, คุณสามารถเปลี่ยนเซิร์ฟเวอร์ได้ตลอดเวลา",
+ "rrtypeDescription": "เลือกประเภท DNS Record ที่คุณต้องการจะมอนิเตอร์",
+ "pauseMonitorMsg": "คุณแน่ใจหรือไม่ที่จะหยุดมอนิเตอร์ชั่วคราว?",
+ "enableDefaultNotificationDescription": "การแจ้งเตือนนี้จะถูกเปิดโดยค่าเริ่มต้นสำหรับมอนิเตอร์ใหม่, คุณสามารถปิดการแจ้งเตือนสำหรับแต่ละมอนิเตอร์ได้",
+ "clearEventsMsg": "คุณแน่ใจหรือไม่ที่จะลบเหตุการณ์ทั้งหมดสำหรับมอนิเตอร์นี้?",
+ "clearHeartbeatsMsg": "คุณแน่ใจหรือไม่ที่จะลบประวัติการตรวจสอบทั้งหมดสำหรับมอนิเตอร์นี้?",
+ "confirmClearStatisticsMsg": "คุณแน่ใจหรือไม่ที่จะลบสถิติทั้งหมด?",
+ "importHandleDescription": "เลือก \"ข้ามรายการที่มีอยู่แล้ว\" ถ้าคุณต้องการข้ามทุกมอนิเตอร์หรือการแจ้งเตือนที่มีชื่อซ้ำกัน, \"เขียนทับ\" จะลบทุกมอนิเตอร์หรือการแจ้งเตือนที่มีชื่อซ้ำกัน",
+ "confirmImportMsg": "คุณแน่ใจหรือไม่ที่จะนำเข้าข้อมูลสำรอง, กรุณาตรวจสอบว่าคุณเลือกข้อมูลที่ถูกต้อง",
+ "twoFAVerifyLabel": "โปรดกรอกกุญแจ 2FA ของคุณเพื่อยืนยัน:",
+ "tokenValidSettingsMsg": "กุญแจถูกต้อง, ตอนนี้คุณสามารถบันทึกการตั้งค่า 2FA ของคุณได้แล้ว",
+ "confirmEnableTwoFAMsg": "คุณแน่ใจหรือไม่ที่จะเปิดใช้งาน 2FA?",
+ "confirmDisableTwoFAMsg": "คุณแน่ใจหรือไม่ที่จะปิดใช้งาน 2FA?",
+ "Settings": "การตั้งค่า",
+ "Dashboard": "แผงควบคุม",
+ "New Update": "อัพเดทใหม่",
+ "Language": "ภาษา",
+ "Appearance": "หน้าตา",
+ "Theme": "หน้าตา",
+ "General": "ทั่วไป",
+ "Primary Base URL": "URL หลัก",
+ "Version": "เวอร์ชั่น",
+ "Check Update On GitHub": "ตรวจสอบการอัปเดตบน GitHub",
+ "List": "รายการ",
+ "Add": "เพิ่ม",
+ "Add New Monitor": "เพิ่มมอนิเตอร์ใหม่",
+ "Quick Stats": "สถิติด่วน",
+ "Up": "ใช้งานได้",
+ "Down": "ไม่สามารถใช้งานได้",
+ "Pending": "รอดำเนินการ",
+ "Unknown": "ไม่ทราบ",
+ "Pause": "หยุดชั่วคราว",
+ "Name": "ชื่อ",
+ "Status": "สถานะ",
+ "DateTime": "วันที่และเวลา",
+ "Message": "ข้อความ",
+ "No important events": "ไม่มีเหตการณ์ที่สำคัญ",
+ "Resume": "ดำเนินการต่อ",
+ "Edit": "แก้ไข",
+ "Delete": "ลบ",
+ "Current": "ปัจจุบัน",
+ "Uptime": "เวลาที่ใช้งานได้",
+ "Cert Exp.": "วันหมดอายุใบรับรอง",
+ "days": "วัน",
+ "day": "วัน",
+ "-day": "-วัน",
+ "hour": "ชั่วโมง",
+ "-hour": "-ชั่วโมง",
+ "Response": "การตอบสนอง",
+ "Ping": "การตอบสนอง",
+ "Monitor Type": "ประเภทมอนิเตอร์",
+ "Keyword": "คำสำคัญ",
+ "Friendly Name": "ชื่อที่เป็นมิตร",
+ "URL": "URL",
+ "Hostname": "ชื่อโฮสต์",
+ "Port": "พอร์ต",
+ "Heartbeat Interval": "ระยะเวลาระหว่างการทดสอบ",
+ "Retries": "จำนวนครั้งที่จะลองใหม่",
+ "Heartbeat Retry Interval": "ระยะห่างระหว่างการทดสอบใหม่หลังจากไม่สำเร็จ",
+ "Advanced": "ขั้นสูง",
+ "Upside Down Mode": "โหมดสลับ",
+ "Max. Redirects": "จำนวนการเปลี่ยนเส้นทางสูงสุด",
+ "Accepted Status Codes": "รหัสสถานะที่ยอมรับ",
+ "Push URL": "URL เป้าหมาย",
+ "needPushEvery": "คุณควรเรียก URL นี้ทุก {0} วินาที",
+ "pushOptionalParams": "ตัวแปรเสริม: {0}",
+ "Save": "บันทึก",
+ "Notifications": "การแจ้งเตือน",
+ "Not available, please setup.": "ไม่พร้อมใช้งาน, กรุณาตั้งค่า",
+ "Setup Notification": "ตั้งค่าการแจ้งเตือน",
+ "Light": "สว่าง",
+ "Dark": "มืด",
+ "Auto": "อัตโนมัติ",
+ "Theme - Heartbeat Bar": "หน้าตา - แถบการตอบสนอง",
+ "Normal": "ปกติ",
+ "Bottom": "ด้านล่าง",
+ "None": "ไม่มี",
+ "Timezone": "เขตเวลา",
+ "Search Engine Visibility": "การมองเห็นของเครื่องมือค้นหา",
+ "Allow indexing": "อนุญาตให้สร้างดัชนี",
+ "Discourage search engines from indexing site": "ปฏิเสธเครื่องมือค้นหาไม่ให้สร้างดัชนีของเว็บไซต์",
+ "Change Password": "เปลี่ยนรหัสผ่าน",
+ "Current Password": "รหัสผ่านปัจจุบัน",
+ "New Password": "รหัสผ่านใหม่",
+ "Repeat New Password": "ยืนยันรหัสผ่านใหม่",
+ "Update Password": "อัพเดทรหัสผ่าน",
+ "Disable Auth": "ปิดใช้งานการตรวจสอบสิทธิ์",
+ "Enable Auth": "เปิดใช้งานการตรวจสอบสิทธิ์",
+ "disableauth.message1": "คุณต้องการที่จะ ปิดใช้งานระบบรับรองความถูกต้องใช่หรือไม่ ?",
+ "disableauth.message2": "ระบบนี้ถูกออกแบบมาเพื่อการใช้งานกับระบบรับรองความถูกต้องของบุคคลที่สามเช่น Cloudflare Access, Authelia หรือวิธีการอื่นๆ",
+ "Please use this option carefully!": "โปรดใช้ความระมัดระวังในการเลือกใช้งานระบบนี้ !",
+ "Logout": "ออกจากระบบ",
+ "Leave": "ออก",
+ "I understand, please disable": "ฉันเข้าใจแล้ว, กรุณาปิดการใช้งาน",
+ "Confirm": "ยืนยัน",
+ "Yes": "ใช่",
+ "No": "ไม่",
+ "Username": "ชื่อผู้ใช้",
+ "Password": "รหัสผ่าน",
+ "Remember me": "จดจำฉันไว้",
+ "Login": "เข้าสู่ระบบ",
+ "No Monitors, please": "ไม่มีมอนิเตอร์, กรุณา",
+ "add one": "สร้าง",
+ "Notification Type": "ประเภทการแจ้งเตือน",
+ "Email": "อีเมล",
+ "Test": "ทดสอบ",
+ "Certificate Info": "ข้อมูลใบรับรอง",
+ "Resolver Server": "เซิร์ฟเวอร์ที่ค้นหา",
+ "Resource Record Type": "ประเภท DNS Record",
+ "Last Result": "ผลล่าสุด",
+ "Create your admin account": "สร้างบัญชีผู้ดูแลระบบ",
+ "Repeat Password": "ยืนยันรหัสผ่าน",
+ "Import Backup": "นำเข้าข้อมูลสำรอง",
+ "Export Backup": "ส่งออกข้อมูลสำรอง",
+ "Export": "ส่งออก",
+ "Import": "นำเข้า",
+ "respTime": "ระยะเวลาการตอบสนอง (ms)",
+ "notAvailableShort": "ไม่สามารถใช้งานได้",
+ "Default enabled": "เปิดใช้งานโดยค่าเริ่มต้น",
+ "Apply on all existing monitors": "ใช้กับมอนิเตอร์ทั้งหมด",
+ "Create": "สร้าง",
+ "Clear Data": "ล้างข้อมูล",
+ "Events": "เหตุการณ์",
+ "Heartbeats": "ประวัติการตรวจสอบ",
+ "Auto Get": "ดึงอัตโนมัติ",
+ "backupDescription": "คุณสามารถสำรองข้อมูลการแจ้งเตือนและมอนิเตอร์ทั้งหมดไว้ได้ในไฟล์ JSON",
+ "backupDescription2": "หมายเหตุ : ประวัติและข้อมูลเหตการณ์จะไม่ถูกสำรอง",
+ "backupDescription3": "ข้อมูลที่ละเอียดอ่อนเช่นกุญแจการแจ้งเตือนจะรวมอยู่ในไฟล์ข้อมูลสำรอง, โปรดเก็บข้อมูลสำรองอย่างปลอดภัย",
+ "alertNoFile": "กรุณาเลือกไฟล์ที่จะใช้งาน",
+ "alertWrongFileType": "กรุณาเลือกไฟล์ที่เป็น JSON",
+ "Clear all statistics": "ล้างข้อมูลสถิติทั้งหมด",
+ "Skip existing": "ข้ามรายการที่มีอยู่แล้ว",
+ "Overwrite": "เขียนทับ",
+ "Options": "ตัวเลือก",
+ "Keep both": "เก็บทั้งสอง",
+ "Verify Token": "ยืนยันกุญแจ",
+ "Setup 2FA": "ติดตั้ง 2FA",
+ "Enable 2FA": "เปิดใช้งาน 2FA",
+ "Disable 2FA": "ปิดใช้งาน 2FA",
+ "2FA Settings": "ตั้งค่า 2FA",
+ "Two Factor Authentication": "การยืนยันตัวตนแบบสองขั้นตอน",
+ "Active": "ใช้งาน",
+ "Inactive": "ไม่ใช้งาน",
+ "Token": "กุญแจ",
+ "Show URI": "แสดง URI",
+ "Tags": "แท็ก",
+ "Add New below or Select...": "เพิ่มใหม่ด้านล่างหรือเลือก…",
+ "Tag with this name already exist.": "แท็กที่มีชื่อนี้มีอยู่แล้ว",
+ "Tag with this value already exist.": "แท็กที่มีข้อมูลนี้มีอยู่แล้ว",
+ "color": "สี",
+ "value (optional)": "ข้อมูล (ไม่จำเป็น)",
+ "Gray": "เทา",
+ "Red": "แดง",
+ "Orange": "ส้ม",
+ "Green": "เขียว",
+ "Blue": "น้ำเงิน",
+ "Indigo": "ม่วง",
+ "Purple": "ม่วง",
+ "Pink": "ชมพู",
+ "Search...": "ค้นหา…",
+ "Avg. Ping": "ค่า Ping เฉลี่ย",
+ "Avg. Response": "ค่า Response เฉลี่ย",
+ "Entry Page": "หน้าต้อนรับ",
+ "statusPageNothing": "ไม่มีอะไรตรงนี้ !, กรุณาเพิ่มกลุ่มหรือมอนิเตอร์",
+ "No Services": "ไม่มีบริการ",
+ "All Systems Operational": "บริการทั้งหมดทำงานได้ปกติ",
+ "Partially Degraded Service": "บริการมีปัญหาบางส่วน",
+ "Degraded Service": "บริการมีปัญหา",
+ "Add Group": "เพิ่มกลุ่ม",
+ "Add a monitor": "เพิ่มมอนิเตอร์",
+ "Edit Status Page": "แก้ไขหน้าสถานะ",
+ "Go to Dashboard": "ไปที่หน้าควบคุม",
+ "Status Page": "หน้าสถานะ",
+ "Status Pages": "หน้าสถานะ",
+ "defaultNotificationName": "การแจ้งเตือน {notification} ของฉัน ({number})",
+ "here": "ที่นี่",
+ "Required": "จำเป็น",
+ "telegram": "Telegram",
+ "Bot Token": "กุญแจของบอท",
+ "wayToGetTelegramToken": "คุณสามารถรับกุญแจได้จาก {0}.",
+ "Chat ID": "ไอดีแชท",
+ "supportTelegramChatID": "รองรับ แชทส่วนตัว, แชทกลุ่ม, ไอดีแชท",
+ "wayToGetTelegramChatID": "คุณสามารถรับ ID แชทของคุณได้โดยส่งข้อความไปยังบอทและไปที่ URL นี้เพื่อดู chat_id :",
+ "YOUR BOT TOKEN HERE": "กุญแจของบอทของคุณที่นี่",
+ "chatIDNotFound": "ไม่พบไอดีแชท, กรุณาส่งข้อความไปที่บอท",
+ "webhook": "Webhook",
+ "Post URL": "URL โพสต์",
+ "Content Type": "ประเภทเนื้อหา",
+ "webhookJsonDesc": "{0} ดีสำหรับเซิร์ฟเวอร์ HTTP สมัยใหม่เช่น Express.js",
+ "webhookFormDataDesc": "{multipart} ดีสำหรับ PHP, ข้อมูล JSON จะต้องถูกประมวลผลด้วย {decodeFunction}",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "None / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "เพิกเฉยข้อผิดพลาด TLS",
+ "From Email": "จากอีเมล",
+ "emailCustomSubject": "หัวข้อที่กำหนดเอง",
+ "To Email": "ถึงอีเมล",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "คุณสามารถทำได้โดยการไปที่ Server Settings -> Integrations -> Create Webhook",
+ "Bot Display Name": "ชื่อบอท",
+ "Prefix Custom Message": "คำนำหน้าข้อความที่กำหนดเอง",
+ "Hello @everyone is...": "สวัสดี {'@'}everyone นี่…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "คุณสามารถเรียนรู้วิธีการสร้าง Webhook URL {0}",
+ "signal": "Signal",
+ "Number": "หมายเลข",
+ "Recipients": "ผู้รับ",
+ "needSignalAPI": "คุณต้องมี Signal Client ที่มี Rest API",
+ "wayToCheckSignalURL": "คุณสามารถตรวจสอบ URL นี้เพื่อดูวิธีตั้งค่า :",
+ "signalImportant": "สำคัญ: คุณไม่สามารถผสมกลุ่มและตัวเลขในผู้รับได้!",
+ "gotify": "Gotify",
+ "Application Token": "กุญแจของแอพพลิเคชั่น",
+ "Server URL": "Server URL",
+ "Priority": "ลำดับความสำคัญ",
+ "slack": "Slack",
+ "Icon Emoji": "Icon Emoji",
+ "Channel Name": "ชื่อห้อง",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "ข้อมูลเพิ่มเติมสำหรับ Webhooks : {0}",
+ "aboutChannelName": "ใส่ชื่อห้องใน {0} ในช่องชื่อห้องถ้าต้องการที่จะข้าม Webhook, เช่น: #ช่องอื่นๆ",
+ "aboutKumaURL": "ถ้าคุณไม่ใส่ข้อมูลในช่อง Uptime Kuma URL ค่าเริ่มต้นจะเป็นจะเป็น Uptime Kuma Github",
+ "emojiCheatSheet": "ตาราง Emoji : {0}",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push by Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (รองรับการแจ้งเตือนมากกว่า 50 บริการ)",
+ "GoogleChat": "Google Chat (สำหรับ Google Workspace เท่านั้น)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "กุญแจผู้ใช้งาน",
+ "Device": "อุปกรณ์",
+ "Message Title": "หัวข้อข้อความ",
+ "Notification Sound": "เสียงแจ้งเตือน",
+ "More info on:": "ข้อมูลเพิ่มเติม : {0}",
+ "pushoverDesc1": "ลำดับความสำคัญฉุกเฉิน (2) มีการหมดเวลาเริ่มต้น 30 วินาทีระหว่างการลองใหม่และจะหมดอายุหลังจาก 1 ชั่วโมง",
+ "pushoverDesc2": "ถ้าคุณต้องการจะส่งการแจ้งเตือนไปยังอุปกรณ์อื่นๆ สามารถกำหนดได้ที่ช่องอุปกรณ์",
+ "SMS Type": "ประเภท SMS",
+ "octopushTypePremium": "พรีเมี่ยม (เร็ว - แนะนำสำหรับการแจ้งเตือน)",
+ "octopushTypeLowCost": "ต้นทุนต่ำ (ช้า - บางครั้งจะถูกบล็อกโดยผู้ให้บริการ)",
+ "checkPrice": "ตรวจสอบราคาของ {0} :",
+ "apiCredentials": "ข้อมูลการตรวจสอบสิทธิ์ API",
+ "octopushLegacyHint": "คุณใช้เวอร์ชันดั้งเดิมของ Octopush (2011 - 2020) หรือเวอร์ชันใหม่หรือไม่?",
+ "Check octopush prices": "ตรวจสอบราคาของ Octopush {0}",
+ "octopushPhoneNumber": "หมายเลขโทรศัพท์ (รูปแบบสากล เช่น +33612345678) ",
+ "octopushSMSSender": "ชื่อผู้ส่ง SMS : ความยาว 3 - 11 ตัวอักษร, ตัวเลข และช่องว่าง (a-zA-Z0-9 )",
+ "LunaSea Device ID": "ไอดีอุปกรณ์ LunaSea",
+ "Apprise URL": "Apprise URL",
+ "Example:": "ตัวอย่าง : {0}",
+ "Read more:": "อ่านเพิ่มเติม : {0}",
+ "Status:": "สถานะ : {0}",
+ "Read more": "อ่านเพิ่มเติม",
+ "appriseInstalled": "Apprise ถูกติดตั้งแล้ว",
+ "appriseNotInstalled": "Apprise ยังไม่ถูกติดตั้ง {0}",
+ "Access Token": "กุญแจการเข้าถึง",
+ "Channel access token": "กุญแจการเข้าถึงของช่อง",
+ "Line Developers Console": "Line Developers Console",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "การตั้งค่าพื้นฐาน",
+ "User ID": "ไอดีผู้ใช้",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "ขั้นแรกให้เข้า {0} สร้างผู้ให้บริการและช่องทาง (Messaging API) จากนั้นคุณจะได้รับกุญแจการเข้าถึงช่องและไอดีผู้ใช้จากรายการเมนูที่กล่าวถึงข้างต้น",
+ "Icon URL": "Icon URL",
+ "aboutIconURL": "คุณสามารถระบุลิงก์รูปภาพใน \"URL ไอคอน\" เพื่อแทนที่รูปภาพโปรไฟล์เริ่มต้น จะไม่ถูกใช้หากมีการตั้งค่า Icon Emoji",
+ "aboutMattermostChannelName": "คุณลบช่องเริ่มต้นที่ Webhook โพสต์ได้ด้วยการป้อนชื่อช่องลงในช่อง \"ชื่อช่อง\" ต้องเปิดใช้งานในการตั้งค่า Mattermost Webhook เช่น #ช่องอื่นๆ",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - ราคาถูก แต่ช้าและมักจะโอเวอร์โหลด จำกัดเฉพาะผู้รับในโปแลนด์",
+ "promosmsTypeFlash": "SMS FLASH - ข้อความจะแสดงบนอุปกรณ์ของผู้รับโดยอัตโนมัติ จำกัดเฉพาะผู้รับในโปแลนด์",
+ "promosmsTypeFull": "SMS FULL - SMS ระดับพรีเมียม คุณสามารถใช้ชื่อผู้ส่งของคุณได้ (คุณต้องลงทะเบียนชื่อก่อน) เชื่อถือได้สำหรับการแจ้งเตือน",
+ "promosmsTypeSpeed": "SMS SPEED - ลำดับความสำคัญสูงสุดในระบบ รวดเร็วและเชื่อถือได้ แต่มีค่าใช้จ่ายสูง (ประมาณสองเท่าของราคาเต็ม SMS)",
+ "promosmsPhoneNumber": "หมายเลขโทรศัพท์ (สำหรับผู้รับโปแลนด์ คุณสามารถข้ามรหัสพื้นที่ได้)",
+ "promosmsSMSSender": "ชื่อผู้ส่ง SMS : ชื่อที่ลงทะเบียนล่วงหน้าหรือหนึ่งในค่าเริ่มต้น: InfoSMS, ข้อมูล SMS, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "URL ของโฮมเซิร์ฟเวอร์ (พร้อม http(s):// และพอร์ตเสริม)",
+ "Internal Room Id": "รหัสห้องภายใน",
+ "matrixDesc1": "คุณค้นหารหัสห้องภายในได้โดยดูในส่วนขั้นสูงของการตั้งค่าห้องในไคลเอ็นต์ Matrix มันควรจะมีลักษณะเช่น !PMdRCpsIfLwsfjIye6:kiznick.server.",
+ "matrixDesc2": "ขอแนะนำเป็นอย่างยิ่งให้คุณสร้างผู้ใช้ใหม่และอย่าใช้โทเค็นการเข้าถึงของผู้ใช้ Matrix ของคุณเอง เนื่องจากจะทำให้สามารถเข้าถึงบัญชีของคุณและห้องทั้งหมดที่คุณเข้าร่วม ให้สร้างผู้ใช้ใหม่และเชิญเฉพาะห้องที่คุณต้องการรับการแจ้งเตือนแทน คุณสามารถรับโทเค็นเพื่อการเข้าถึงได้โดยเรียกใช้ {0}",
+ "Method": "วิธี",
+ "Body": "เนื้อหา",
+ "Headers": "ส่วนหัว",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "เนื้อหาคำขอส่วนหัวไม่ใช่ JSON ที่ถูกต้อง: ",
+ "BodyInvalidFormat": "เนื้อหาคำขอไม่ใช่ JSON ที่ถูกต้อง : ",
+ "Monitor History": "ประวัติมอนิเตอร์",
+ "clearDataOlderThan": "เก็บข้อมูลมอนิเตอร์ {0} วัน",
+ "PasswordsDoNotMatch": "รหัสผ่านไม่ตรงกัน",
+ "records": "บันทึก",
+ "One record": "หนึ่งบันทึก",
+ "steamApiKeyDescription": "สำหรับการมอนิเตอร์ Steam Game Server คุณต้องมี Steam Web-API key, คุณสามารถสมัครได้จากที่นี่ : ",
+ "Current User": "ผู้ใช้ปัจจุบัน",
+ "topic": "หัวข้อ",
+ "topicExplanation": "หัวข้อ MQTT ที่จะมอนิเตอร์",
+ "successMessage": "ข้อความที่จะถือว่าประสบความสำเร็จ",
+ "successMessageExplanation": "ข้อความ MQTT ที่จะถือว่าประสบความสำเร็จ",
+ "recent": "ล่าสุด",
+ "Done": "สำเร็จ",
+ "Info": "ข้อมูล",
+ "Security": "ความปลอดภัย",
+ "Steam API Key": "Steam API Key",
+ "Shrink Database": "ย่อฐานข้อมูล",
+ "Pick a RR-Type...": "เลือกชนิด DNS Record",
+ "Pick Accepted Status Codes...": "เลือกเลขสถานะที่ยอมรับ…",
+ "Default": "ค่าเริ่มต้น",
+ "HTTP Options": "ตัวเลือก HTTP",
+ "Create Incident": "สร้างเหตุการณ์",
+ "Title": "หัวข้อ",
+ "Content": "เนื้อหา",
+ "Style": "สไตล์",
+ "info": "ข้อมูล",
+ "warning": "แจ้งเตือน",
+ "danger": "อันตราย",
+ "primary": "หลัก",
+ "light": "สว่าง",
+ "dark": "มืด",
+ "Post": "โพสต์",
+ "Please input title and content": "กรุณาใส่ชื่อและเนื้อหา",
+ "Created": "สร้าง",
+ "Last Updated": "อัพเดทล่าสุด",
+ "Unpin": "เลิกตรึง",
+ "Switch to Light Theme": "เปลี่ยนเป็นแบบสว่าง",
+ "Switch to Dark Theme": "เปลี่ยนเป็นแบบมืด",
+ "Show Tags": "แสดงแท็ก",
+ "Hide Tags": "ซ่อนแท็ก",
+ "Description": "รายละเอียด",
+ "No monitors available.": "ไม่มีมอนิเตอร์ที่สามารถใช้งานได้",
+ "Add one": "เพิ่ม",
+ "No Monitors": "ไม่มีมอนิเตอร์",
+ "Untitled Group": "กลุ่มที่ไม่มีชื่อ",
+ "Services": "บริการ",
+ "Discard": "ทิ้ง",
+ "Cancel": "ยกเลิก",
+ "Powered by": "ขับเคลื่อนโดย",
+ "shrinkDatabaseDescription": "ทริกเกอร์ฐานข้อมูล VACUUM สำหรับ SQLite หากฐานข้อมูลของคุณถูกสร้างขึ้นหลังจากเวอร์ชั่น 1.10.0 แสดงว่า AUTO_VACUUM เปิดใช้งานอยู่แล้วและไม่จำเป็นต้องดำเนินการนี้",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Username (incl. webapi_ prefix)",
+ "serwersmsAPIPassword": "API Password",
+ "serwersmsPhoneNumber": "หมายเลขโทรศัพท์",
+ "serwersmsSenderName": "ชื่อผู้ส่ง SMS (ลงทะเบียนผ่านหน้าควบคุม)",
+ "stackfield": "Stackfield",
+ "Customize": "ปรับแต่ง",
+ "Custom Footer": "ส่วนท้ายที่กำหนดเอง",
+ "Custom CSS": "CSS ที่กำหนดเอง",
+ "smtpDkimSettings": "การตั้งค่า DKIM",
+ "smtpDkimDesc": "โปรดดู Nodemailer DKIM {0} สำหรับการใช้งาน",
+ "documentation": "คู่มือการใช้งาน",
+ "smtpDkimDomain": "ชื่อโดเมน",
+ "smtpDkimKeySelector": "Key Selector",
+ "smtpDkimPrivateKey": "Private Key",
+ "smtpDkimHashAlgo": "อัลกอริทึมแฮช (ไม่บังคับ)",
+ "smtpDkimheaderFieldNames": "คีย์ส่วนหัวสำหรับลงชื่อ (ไม่บังคับ)",
+ "smtpDkimskipFields": "Header Keys ไม่ต้องเซ็น (ไม่บังคับ)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "Environment",
+ "alertaApiKey": "กุญแจ API",
+ "alertaAlertState": "แจ้งเตือนสถานะ",
+ "alertaRecoverState": "กู้คืนสถานะ",
+ "deleteStatusPageMsg": "คุณแน่ใจหรือไม่ว่าต้องการลบหน้าสถานะนี้",
+ "Proxies": "พร็อกซี",
+ "default": "ค่าเริ่มต้น",
+ "enabled": "เปิดใช้งานแล้ว",
+ "setAsDefault": "ตั้งเป็นค่าเริ่มต้น",
+ "deleteProxyMsg": "คุณแน่ใจหรือไม่ว่าต้องการลบพร็อกซีสำหรับมอนิเตอร์ทั้งหมด?",
+ "proxyDescription": "ต้องตั้งค่ามอนิเตอร์ให้ใช้พร็อกซีเพื่อให้ใช้งานได้",
+ "enableProxyDescription": "พร็อกซีนี้จะไม่ส่งผลต่อมอนิเตอร์จนกว่าจะเปิดใช้งาน คุณสามารถควบคุมการปิดใช้งานพร็อกซีชั่วคราวจากมอนิเตอร์ทั้งหมดได้ที่ส่วนสถานะการเปิดใช้งาน",
+ "setAsDefaultProxyDescription": "พร็อกซีนี้จะถูกเปิดโดนค่าเริ่มต้นสำหรับมอนิเตอร์ใหม่, คุณสามารถปิดการแจ้งเตือนสำหรับแต่ละมอนิเตอร์ได้",
+ "Certificate Chain": "ห่วงโซ่ใบรับรอง",
+ "Valid": "ถูกต้อง",
+ "Invalid": "ไม่ถูกต้อง",
+ "AccessKeyId": "กุญแจสิทธิ ID",
+ "SecretAccessKey": "กุญแจสิทธิ Secret",
+ "PhoneNumbers": "PhoneNumbers",
+ "TemplateCode": "รหัสเทมเพลต",
+ "SignName": "ป้ายชื่อ",
+ "Sms template must contain parameters: ": "เทมเพลต SMS ต้องมีพารามิเตอร์ : ",
+ "Bark Endpoint": "Bark Endpoint",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "เพื่อความปลอดภัย จำเป็นต้องตั้งค่ากุญแจการเข้าถึง",
+ "Device Token": "Device Token",
+ "Platform": "แพลตฟอร์ม",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "สูง",
+ "Retry": "ลองใหม่",
+ "Topic": "หัวข้อ",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "Setup Proxy": "ติดตั้งพร็อกซี่",
+ "Proxy Protocol": "โปรโตคอลพร็อกซี่",
+ "Proxy Server": "เซิร์ฟเวอร์พร็อกซี",
+ "Proxy server has authentication": "พร็อกซีเซิร์ฟเวอร์มีการตรวจสอบสิทธิ์",
+ "User": "ผู้ใช้",
+ "Installed": "ติดตั้งแล้ว",
+ "Not installed": "ไม่ได้ติดตั้ง",
+ "Running": "กำลังทำงาน",
+ "Not running": "ไม่ได้ทำงาน",
+ "Remove Token": "ลบกุญแจ",
+ "Start": "เริ่ม",
+ "Stop": "หยุด",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "เพิ่มหน้าสถานะใหม่",
+ "Slug": "ชื่อ",
+ "Accept characters:": "ตัวอักษรที่ใช้งานได้ :",
+ "startOrEndWithOnly": "เริ่มหรือจบด้วย {0} เท่านั้น",
+ "No consecutive dashes": "ไม่มีขีดกลางติดต่อกัน",
+ "Next": "ต่อไป",
+ "The slug is already taken. Please choose another slug.": "ชื่อนี้ถูกใช้งานแล้ว กรุณาใช้ชื่ออื่น",
+ "No Proxy": "ไม่มีพร็อกซี่",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "หน้าสถานะใหม่",
+ "Page Not Found": "ไม่พบหน้านี้",
+ "Reverse Proxy": "พร็อกซีย้อนกลับ",
+ "Backup": "สำรองข้อมูล",
+ "About": "เกี่ยวกับ",
+ "wayToGetCloudflaredURL": "(ดาวโหลด cloudflared จาก {0})",
+ "cloudflareWebsite": "เว็บไซต์ Cloudflare",
+ "Message:": "ข้อความ :",
+ "Don't know how to get the token? Please read the guide:": "ไม่รู้วิธีการรับกุญแจ? กรุณาอ่านคู่มือ:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "การเชื่อมต่อปัจุบันอาจขาดหายหากคุณกำลังเชื่อมต่อ Cloudflare Tunnel คุณแน่ใจหรือไม่ที่จะหยุด, พิมรหัสผ่านของคุณเพื่อยืนยัน",
+ "Other Software": "ซอฟต์แวร์อื่นๆ",
+ "For example: nginx, Apache and Traefik.": "เช่น: nginx, Apache และ Traefik",
+ "Please read": "กรุณาอ่าน",
+ "Subject:": "เรื่อง :",
+ "Valid To:": "ใช้ได้ถึง :",
+ "Days Remaining:": "จำนวนวันที่เหลือ :",
+ "Issuer:": "ผู้ออก :",
+ "Fingerprint:": "ลายนิ้วมือ :",
+ "No status pages": "ไม่มีหน้าสถานะ",
+ "Domain Name Expiry Notification": "แจ้งเตือนการหมดอายุของโดเมน",
+ "Proxy": "Proxy",
+ "Date Created": "วันที่สร้าง",
+ "onebotHttpAddress": "ที่อยู่ HTTP OneBot",
+ "onebotMessageType": "ชนิดข้อความ OneBot",
+ "onebotGroupMessage": "กลุ่ม",
+ "onebotPrivateMessage": "ส่วนตัว",
+ "onebotUserOrGroupId": "กลุ่ม / ไอดีผู้ใช้",
+ "onebotSafetyTips": "เพื่อความปลอดภัย จำเป็นต้องตั้งค่ากุญแจการเข้าถึง",
+ "PushDeer Key": "กุญแจ PushDeer",
+ "Footer Text": "ข้อความส่วนท้าย",
+ "Show Powered By": "แสดงข้อความ \"ขับเคลื่อนโดย\"",
+ "Domain Names": "Domain Names",
+ "signedInDisp": "เข้าใช้งานในฐานะ {0}",
+ "signedInDispDisabled": "ปิดการยืนยันตัวตน",
+ "Certificate Expiry Notification": "แจ้งเตือนใบรับรองหมดอายุ",
+ "API Username": "API Username",
+ "API Key": "API Key",
+ "Recipient Number": "หมายเลขผู้รับ",
+ "From Name/Number": "จาก ชื่อ / หมายเลข",
+ "Leave blank to use a shared sender number.": "ไม่ต้องกรอกเพื่อใช้ชื่อผู้ส่งร่วมกัน",
+ "Octopush API Version": "เวอร์ชั่น API Octopush",
+ "Legacy Octopush-DM": "Octopush-DM แบบเก่า",
+ "endpoint": "endpoint",
+ "octopushAPIKey": "\"API key\" จากข้อมูลยืนยันตัวตน HTTP API ในแผงควบคุม",
+ "octopushLogin": "\"Login\" จากข้อมูลยืนยันตัวตน HTTP API ในแผงควบคุม",
+ "promosmsLogin": "API Login Name",
+ "promosmsPassword": "API Password",
+ "pushoversounds pushover": "Pushover (default)",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Vibrate Only",
+ "pushoversounds none": "None (silent)",
+ "pushyAPIKey": "Secret API Key",
+ "pushyToken": "Device token",
+ "Show update if available": "แสดงการอัปเดตถ้ามี",
+ "Also check beta release": "ตรวจสอบรุ่นเบต้า",
+ "Using a Reverse Proxy?": "ใช้ Reverse Proxy อยู่ใช่มั้ย?",
+ "Check how to config it for WebSocket": "ตรวจสอบวิธีการตั้งค่าสำหรับ WebSocket",
+ "Steam Game Server": "Steam Game Server",
+ "Most likely causes:": "สาเหตุที่เป็นไปได้มากที่สุด :",
+ "The resource is no longer available.": "ทรัพยากรไม่สามารถใช้งานได้อีกต่อไป",
+ "There might be a typing error in the address.": "อาจมีข้อผิดพลาดในการพิมพ์ที่อยู่",
+ "What you can try:": "สิ่งที่คุณสามารถลองทำ :",
+ "Retype the address.": "พิมพ์ที่อยู่อีกครั้ง",
+ "Go back to the previous page.": "กลับไปหน้าที่แล้ว",
+ "Coming Soon": "เร็วๆ นี้",
+ "wayToGetClickSendSMSToken": "คุณสามารถรับ API Username และ API Key ได้จาก {0}",
+ "wayToGetLineNotifyToken": "คุณสามารถรับ access token ได้จาก {0}",
+ "resendEveryXTimes": "ส่งซ้ำทุก {0} ครั้ง",
+ "resendDisabled": "การส่งซ้ำถูกปิดใช้งาน",
+ "dnsPortDescription": "พอร์ตของเซิร์ฟเวอร์ DNS, ค่าเริ่มต้นคือ 53, คุณสามารถเปลี่ยนพอร์ตตอนไหนก็ได้",
+ "Resend Notification if Down X times consecutively": "ส่งการแจ้งเตือนซ้ำถ้าออฟไลน์ครบ X ครั้ง",
+ "error": "เกิดข้อผิดพลาด",
+ "critical": "วิกฤต",
+ "wayToGetPagerDutyKey": "คุณสามารถรับคีย์ได้โดยการไปที่ Service -> Service Directory -> (Select a service) -> Integrations -> Add integration, และค้นหา \"Events API V2\", สำหรับข้อมูลเพิ่มเติม {0}",
+ "Integration Key": "Integration Key",
+ "Integration URL": "Integration URL",
+ "Auto resolve or acknowledged": "แก้ไขอัตโนมัติหรือยอมรับ",
+ "do nothing": "ไม่ทำอะไร",
+ "auto acknowledged": "ยอมรับอัตโนมัติ",
+ "auto resolve": "แก้ไขอัตโนมัติ",
+ "Bark Group": "กลุ่มที่จะประกาศ",
+ "Bark Sound": "เสียงประกาศ",
+ "Authentication": "การตรวจสอบสิทธิ์",
+ "HTTP Headers": "HTTP Headers",
+ "Trust Proxy": "Trust Proxy",
+ "HomeAssistant": "Home Assistant",
+ "RadiusSecret": "Radius Secret",
+ "RadiusSecretDescription": "แบ่งปันคีย์ลับระหว่างผู้ใช้งานและเซิร์ฟเวอร์",
+ "RadiusCalledStationId": "Called Station Id",
+ "RadiusCalledStationIdDescription": "Identifier of the called device",
+ "RadiusCallingStationId": "Calling Station Id",
+ "RadiusCallingStationIdDescription": "Identifier of the calling device",
+ "Connection String": "Connection String",
+ "Query": "Query",
+ "settingsCertificateExpiry": "วันหมดอายุของใบรับรอง TLS",
+ "certificationExpiryDescription": "การตรวจสอบ HTTPS จะแจ้งเตือนถ้าใบอนุญาติ TLS จะหมดอายุใน:",
+ "Setup Docker Host": "ติดตั้ง Docker Host",
+ "Connection Type": "ประเภทการเชื่อมต่อ",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "คุณแน่ใจหรือไม่ที่จะลบ Docker host นี้สำหรับการมอนิเตอร์ทั้งหมด?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Container",
+ "Container Name / ID": "Container Name / ID",
+ "Docker Host": "Docker Host",
+ "Docker Hosts": "Docker Hosts",
+ "ntfy Topic": "หัวข้อ ntfy",
+ "Domain": "โดเมน",
+ "Workstation": "Workstation",
+ "disableCloudflaredNoAuthMsg": "คุณอยู่ในโหมดไม่มีการตรวจสอบสิทธิ์, ไม่จำเป็นต้องมีรหัสผ่าน",
+ "trustProxyDescription": "เชื่อ Header 'X-Forwarded-*', คุณควรเปิดใช้งาน ถ้าคุณต้องการ IP ของผู้ใช้ที่ถูกต้องและ Uptime Kuma อยู่ข้างหลัง Nginx หรือ Apache",
+ "Examples": "ตัวอย่าง",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "Access Token แบบมีอายุนาน",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Access Token แบบมีอายุนานสามารถสร้างได้โดยคลิกชื่อบนโปรไฟล์ (ล่างซ้าย) และเลื่อนไปข้างล่างจากนั้นคลิก \"Create Token\" ",
+ "Notification Service": "บริการแจ้งเตือน",
+ "default: notify all devices": "ค่าเริ่มต้น: แจ้งเตือนทุกอุปกรณ์",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "รายการแจ้งเตือนสามารถหาได้ใน Home Assistant ในเมนู \"Developer Tools > Services\" แล้วค้นหา \"notification\" เพื่อหาชื่ออุปกรณ์หรือชื่อโทรศัพท์",
+ "Automations can optionally be triggered in Home Assistant:": "สามารถเลือกสั่งงานระบบอัตโนมัติได้ใน Home Assistant:",
+ "Trigger type:": "ชนิดสิ่งกระตุ้น:",
+ "Event type:": "ชนิดเหตการณ์:",
+ "Event data:": "ข้อมูลกิจกรรม:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "จากนั้นเลือกการกระทำ, ตัวอย่าง เช่น เปลี่ยนเป็นไฟสีแดง",
+ "Frontend Version": "เวอร์ชั่น Frontend",
+ "Frontend Version do not match backend version!": "เวอร์ชั่น Frontend ไม่ตรงกับ Backend !",
+ "webhookAdditionalHeadersTitle": "Header เพิ่มเติม",
+ "webhookAdditionalHeadersDesc": "กำหนด Header ที่จะส่งไปหร้อมกับ Webhook",
+ "Start of maintenance": "เริ่มการซ่อมบำรุง",
+ "All Status Pages": "หน้าสถานะทั้งหมด",
+ "Custom": "กำหนดเอง",
+ "Game": "เกม",
+ "statusMaintenance": "การซ่อมบำรุง",
+ "Maintenance": "การซ่อมบำรุง",
+ "Monitor": "มอนิเตอร์ | มอนิเตอร์",
+ "Select status pages...": "เลือกหน้าสถานะ",
+ "Schedule maintenance": "กำหนดเวลาบำรุงรักษา",
+ "Affected Monitors": "มอนิเตอร์ที่ได้รับผลกระทบ",
+ "markdownSupported": "รองรับ Markdown",
+ "Help": "ช่วยเหลือ",
+ "Pick Affected Monitors...": "เลือกมอนิเตอร์ที่ได้รับผลกระทบ",
+ "Packet Size": "ขนาดของ Packet",
+ "ZohoCliq": "ZohoCliq",
+ "backupOutdatedWarning": "ไม่ได้รับการพัฒนาแล้ว : ไม่สามารถสร้างหรือกูข้อมูลสำรองได้สมบูรณ์ เนื่องจากมีฟีเจอร์ใหม่เพิ่มขึ้นมากและการแบ็คอัพไม่ได้ถูกพัฒนา",
+ "backupRecommend": "กรุณาแบ็คอัพข้อมูลทั้งหมดหรือโฟลเดอร์ Data (./data/) โดยตรงแทน",
+ "Optional": "ไม่จำเป็น",
+ "squadcast": "Squadcast",
+ "or": "หรือ",
+ "recurringInterval": "ช่วงเวลา",
+ "Recurring": "ทำซ้ำ",
+ "General Monitor Type": "ชนิดมอนิเตอร์ทั่วไป",
+ "pagertreeCritical": "วิกฤต",
+ "pagertreeDoNothing": "ไม่ต้องทำอะไร",
+ "pagertreeResolve": "แก้ไขอัตโนมัติ",
+ "wayToGetPagerTreeIntegrationURL": "หลังจากสร้างการรวม Uptime Kuma ใน PagerTree แล้ว ให้คัดลอก Endpoint, ดูรายละเอียดทั้งหมด {0}",
+ "telegramSendSilently": "ส่งอย่างเงียบ ๆ",
+ "maintenanceStatus-inactive": "ไม่ใช้งาน",
+ "telegramProtectContent": "ป้องกันการส่งต่อ/บันทึก",
+ "Add New Tag": "เพิ่มแท็กใหม่",
+ "strategyManual": "ตั่งให้ใช้งาน/ไม่ใช้งานด้วยตนเอง",
+ "warningTimezone": "ใช้เขตเวลาของเซิร์ฟเวอร์",
+ "weekdayShortMon": "จันทร์",
+ "weekdayShortTue": "วันอังคาร",
+ "weekdayShortWed": "พุธ",
+ "weekdayShortThu": "พฤหัสบดี",
+ "weekdayShortFri": "ศุกร์",
+ "weekdayShortSat": "เสาร์",
+ "weekdayShortSun": "อาทิตย์",
+ "dayOfWeek": "วันในสัปดาห์",
+ "dayOfMonth": "วันในเดือน",
+ "maintenanceStatus-under-maintenance": "อยู่ภายใต้การบำรุงรักษา",
+ "maintenanceStatus-scheduled": "กำหนดการ",
+ "maintenanceStatus-ended": "สิ้นสุด",
+ "maintenanceStatus-unknown": "ไม่ทราบ",
+ "Specific Monitor Type": "ประเภทมอนิเตอร์เฉพาะ",
+ "telegramMessageThreadID": "(ตัวเลือก) ไอดีเทรดข้อความ",
+ "telegramMessageThreadIDDescription": "ตัวระบุที่ไม่ซ้ำซึ่งเป็นทางเลือกสำหรับเธรดข้อความเป้าหมาย (หัวข้อ) ของฟอรัม สำหรับฟอรัมซูเปอร์กรุ๊ปเท่านั้น",
+ "sameAsServerTimezone": "เช่นเดียวกับเขตเวลาของเซิร์ฟเวอร์",
+ "startDateTime": "วันที่/เวลาเริ่มต้น",
+ "endDateTime": "วันที่/เวลาสิ้นสุด",
+ "cronSchedule": "กำหนดการ: ",
+ "invalidCronExpression": "นิพจน์ Cron ไม่ถูกต้อง: {0}",
+ "cronExpression": "นิพจน์ Cron",
+ "lastDay": "วันสุดท้าย",
+ "lastDay1": "วันสุดท้ายของเดือน",
+ "lastDay2": "วันที่ 2 สุดท้ายของเดือน",
+ "lastDay3": "วันที่ 3 สุดท้ายของเดือน",
+ "lastDay4": "วันที่ 4 สุดท้ายของเดือน",
+ "No Maintenance": "ไม่มีการบำรุงรักษา",
+ "pauseMaintenanceMsg": "แน่ใจไหมว่าต้องการหยุดชั่วคราว",
+ "Display Timezone": "แสดงเขตเวลา",
+ "statusPageMaintenanceEndDate": "จบ",
+ "Server Timezone": "เขตเวลาเซิร์ฟเวอร์",
+ "statusPageRefreshIn": "รีโหลดใน: {0}",
+ "telegramSendSilentlyDescription": "ส่งข้อความอย่างเงียบๆ ผู้ใช้จะได้รับการแจ้งเตือนโดยไม่มีเสียง",
+ "telegramProtectContentDescription": "หากเปิดใช้งาน ข้อความบอทใน Telegram จะได้รับการปกป้องจากการส่งต่อและการบันทึก",
+ "dnsCacheDescription": "อาจจะทำงานไม่ได้กับ IPv6, ปิดใช้งานถ้าเจอปัญหา",
+ "IconUrl": "URL ไอคอน",
+ "Enable DNS Cache": "เปิดใช้งาน DNS Cache",
+ "Enable": "เปิดใช้งาน",
+ "Disable": "ปิดใช้งาน",
+ "Single Maintenance Window": "หน้าการปรับปรุงเดี่ยว",
+ "Clone Monitor": "มอนิเตอร์",
+ "Clone": "โคลนมอนิเตอร์",
+ "cloneOf": "ชื่อเล่นมอนิเตอร์",
+ "wayToGetZohoCliqURL": "คุณสามารถดูวิธีการสร้าง Webhook URL {0}",
+ "Cannot connect to the socket server": "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ Socket",
+ "Reconnecting...": "กำลังเชื่อมต่อใหม่",
+ "Home": "หน้าหลัก",
+ "Date and Time": "วันที่และเวลา",
+ "DateTime Range": "ช่วงวันที่และเวลา",
+ "loadingError": "ไม่สามารถดึงข้อมูลได้ โปรดลองอีกครั้งในภายหลัง",
+ "plugin": "ปลั้กอิน | ปลั้กอิน",
+ "install": "ติดตั้ง",
+ "installing": "กำลังติดตั้ง",
+ "uninstall": "ถอนการติดตั้ง",
+ "uninstalling": "กำลังถอนการติดตั้ง",
+ "confirmUninstallPlugin": "แน่ใจหรือไม่ว่าต้องการถอนการติดตั้งปลั้กอินนี้?",
+ "Schedule Maintenance": "กำหนดเวลาซ่อมแซม",
+ "Edit Maintenance": "แก้ใขการบำรุงรักษา"
+}
diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json
new file mode 100644
index 000000000..f6f4d8dbc
--- /dev/null
+++ b/src/lang/tr-TR.json
@@ -0,0 +1,788 @@
+{
+ "languageName": "Türkçe",
+ "checkEverySecond": "{0} saniyede bir kontrol et",
+ "retryCheckEverySecond": "{0} saniyede bir dene",
+ "resendEveryXTimes": "Her {0} bir yeniden gönder",
+ "resendDisabled": "Yeniden gönderme devre dışı",
+ "retriesDescription": "Servisin kapalı olarak işaretlenmeden ve bir bildirim gönderilmeden önce maksimum yeniden deneme sayısı",
+ "ignoreTLSError": "HTTPS web siteleri için TLS/SSL hatasını yoksay",
+ "upsideDownModeDescription": "Servisin durumunu tersine çevirir. Servis çalışıyorsa kapalı olarak işaretler.",
+ "maxRedirectDescription": "İzlenecek maksimum yönlendirme sayısı. Yönlendirmeleri devre dışı bırakmak için 0'a ayarlayın.",
+ "acceptedStatusCodesDescription": "Başarılı bir yanıt olarak kabul edilen durum kodlarını seçin.",
+ "passwordNotMatchMsg": "Şifre eşleşmiyor.",
+ "notificationDescription": "Servislerin bildirim gönderebilmesi için bir bildirim yöntemi belirleyin.",
+ "keywordDescription": "Anahtar kelimeyi düz html veya JSON yanıtında arayın ve büyük/küçük harfe duyarlıdır.",
+ "pauseDashboardHome": "Durdur",
+ "deleteMonitorMsg": "Servisi silmek istediğinden emin misin?",
+ "deleteNotificationMsg": "Bu bildirimi tüm servisler için silmek istediğinden emin misin?",
+ "dnsPortDescription": "DNS sunucusu bağlantı noktası. Varsayılan değer 53'tür. Bağlantı noktasını istediğiniz zaman değiştirebilirsiniz.",
+ "resolverserverDescription": "Cloudflare varsayılan sunucudur, çözümleyici sunucusunu istediğiniz zaman değiştirebilirsiniz.",
+ "rrtypeDescription": "İzlemek istediğiniz servisin RR-Tipini seçin",
+ "pauseMonitorMsg": "Durdurmak istediğinden emin misin?",
+ "enableDefaultNotificationDescription": "Bu bildirim her yeni serviste aktif olacaktır. Bildirimi servisler için ayrı ayrı deaktive edebilirsiniz.",
+ "clearEventsMsg": "Bu servisin bütün kayıtlarını silmek istediğinden emin misin?",
+ "clearHeartbeatsMsg": "Bu servis için tüm sağlık durumunu silmek istediğinden emin misin?",
+ "confirmClearStatisticsMsg": "Tüm istatistikleri silmek istediğinden emin misin?",
+ "importHandleDescription": "Aynı isimdeki bütün servisleri ve bildirimleri atlamak için 'Var olanı atla' seçiniz. 'Üzerine yaz' var olan bütün servisleri ve bildirimleri silecektir.",
+ "confirmImportMsg": "Yedeği içeri aktarmak istediğinize emin misiniz? Lütfen doğru içeri aktarma seçeneğini seçtiğinizden emin olunuz.",
+ "twoFAVerifyLabel": "2FA doğrulamasını sağlamak için lütfen token bilgisini giriniz:",
+ "tokenValidSettingsMsg": "Token geçerli! Şimdi 2FA ayarlarını kaydedebilirsiniz.",
+ "confirmEnableTwoFAMsg": "2FA'ı etkinleştirmek istediğinizden emin misiniz?",
+ "confirmDisableTwoFAMsg": "2FA'ı devre dışı bırakmak istediğinize emin misiniz?",
+ "Settings": "Ayarlar",
+ "Dashboard": "Panel",
+ "New Update": "Yeni Güncelleme",
+ "Language": "Dil",
+ "Appearance": "Görünüm",
+ "Theme": "Tema",
+ "General": "Genel",
+ "Primary Base URL": "Birincil Temel URL",
+ "Version": "Versiyon",
+ "Check Update On GitHub": "GitHub'da Güncellemeyi Kontrol Edin",
+ "List": "Liste",
+ "Add": "Ekle",
+ "Add New Monitor": "Yeni Servis Ekle",
+ "Quick Stats": "Servis istatistikleri",
+ "Up": "Normal",
+ "Down": "Hatalı",
+ "Pending": "Bekliyor",
+ "Unknown": "Bilinmeyen",
+ "Pause": "Durdur",
+ "Name": "Servis ismi",
+ "Status": "Durum",
+ "DateTime": "Zaman",
+ "Message": "Mesaj",
+ "No important events": "Önemli olay yok",
+ "Resume": "Devam et",
+ "Edit": "Düzenle",
+ "Delete": "Sil",
+ "Current": "Şu anda",
+ "Uptime": "Çalışma zamanı",
+ "Cert Exp.": "Sertifika Geç. Süresi",
+ "day": "gün | günler",
+ "-day": "-gün",
+ "hour": "saat",
+ "-hour": "-saat",
+ "Response": "Cevap Süresi",
+ "Ping": "Ping",
+ "Monitor Type": "Servis Tipi",
+ "Keyword": "Anahtar Kelime",
+ "Friendly Name": "Panelde görünecek isim",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Servis Test Aralığı",
+ "Retries": "Yeniden deneme",
+ "Heartbeat Retry Interval": "Sağlık Durumları Tekrar Deneme Sıklığı",
+ "Resend Notification if Down X times consecutively": "Art arda X kez düşerse bildirimi yeniden gönder",
+ "Advanced": "Gelişmiş",
+ "Upside Down Mode": "Ters/Düz Modu",
+ "Max. Redirects": "Maksimum Yönlendirme",
+ "Accepted Status Codes": "Kabul Edilen Durum Kodları",
+ "Push URL": "Push URL",
+ "needPushEvery": "Bu URL'yi her {0} saniyede bir aramalısınız.",
+ "pushOptionalParams": "İsteğe bağlı parametreler: {0}",
+ "Save": "Kaydet",
+ "Notifications": "Bildirimler",
+ "Not available, please setup.": "Atanmış bildirim yöntemi yok. Ayarlardan belirleyebilirsiniz.",
+ "Setup Notification": "Bildirim yöntemi kur",
+ "Light": "Açık",
+ "Dark": "Koyu",
+ "Auto": "Oto",
+ "Theme - Heartbeat Bar": "Servis Bar Konumu",
+ "Normal": "Normal",
+ "Bottom": "Aşağıda",
+ "None": "Gösterme",
+ "Timezone": "Zaman Dilimi",
+ "Search Engine Visibility": "Arama Motoru Görünürlüğü",
+ "Allow indexing": "İndekslemeye izin ver",
+ "Discourage search engines from indexing site": "İndekslemeyi reddet",
+ "Change Password": "Şifre Değiştir",
+ "Current Password": "Şuan ki Şifre",
+ "New Password": "Yeni Şifre",
+ "Repeat New Password": "Yeni Şifreyi Tekrar Girin",
+ "Update Password": "Şifreyi Değiştir",
+ "Disable Auth": "Şifreli girişi iptal et",
+ "Enable Auth": "Şifreli girişi aktif et",
+ "disableauth.message1": "Şifreli girişi devre dışı bırakmak istediğinizden emin misiniz?",
+ "disableauth.message2": "Bu, Uptime Kuma'nın önünde Cloudflare Access gibi üçüncü taraf yetkilendirmesi olan kişiler içindir.",
+ "Please use this option carefully!": "Lütfen dikkatli kullanın!",
+ "Logout": "Çıkış yap",
+ "Leave": "Ayrıl",
+ "I understand, please disable": "Evet farkındayım, iptal et",
+ "Confirm": "Onayla",
+ "Yes": "Evet",
+ "No": "Hayır",
+ "Username": "Kullanıcı Adı",
+ "Password": "Şifre",
+ "Remember me": "Beni Hatırla",
+ "Login": "Giriş yap",
+ "No Monitors, please": "Servis yok, lütfen",
+ "add one": "bir servis ekleyin",
+ "Notification Type": "Bildirim Yöntemi",
+ "Email": "E-mail",
+ "Test": "Test",
+ "Certificate Info": "Sertifika Bilgisi",
+ "Resolver Server": "Çözümleyici Sunucu",
+ "Resource Record Type": "Kaynak Kayıt Türü",
+ "Last Result": "En son sonuçlar",
+ "Create your admin account": "Yönetici hesabınızı oluşturun",
+ "Repeat Password": "Şifrenizi tekrar girin",
+ "Import Backup": "Yedeği içe aktar",
+ "Export Backup": "Yedeği dışa aktar",
+ "Export": "Dışa aktar",
+ "Import": "İçe aktar",
+ "respTime": "Cevap Süresi (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Varsayılan etkinleştirilmiş",
+ "Apply on all existing monitors": "Var olan bütün servislere uygula",
+ "Create": "Oluştur",
+ "Clear Data": "Verileri Temizle",
+ "Events": "Olaylar",
+ "Heartbeats": "Sağlık Durumları",
+ "Auto Get": "Otomatik Al",
+ "backupDescription": "Bütün servisleri ve bildirimleri JSON dosyasına yedekleyebilirsiniz.",
+ "backupDescription2": "Not: Geçmiş ve etkinlik verileri içinde değildir.",
+ "backupDescription3": "Dışa aktarma dosyasında bildirim tokeni gibi hassas veriler bulunur, dikkatli bir şekilde saklayınız.",
+ "alertNoFile": "İçeri aktarmak için bir dosya seçiniz.",
+ "alertWrongFileType": "Lütfen bir JSON dosyası seçiniz.",
+ "Clear all statistics": "Bütün istatistikleri temizle",
+ "Skip existing": "Var olanı atla",
+ "Overwrite": "Üzerine yaz",
+ "Options": "Seçenekler",
+ "Keep both": "İkisini sakla",
+ "Verify Token": "Tokeni doğrula",
+ "Setup 2FA": "2FA Kur",
+ "Enable 2FA": "2FA Etkinleştir",
+ "Disable 2FA": "2FA Devre dışı bırak",
+ "2FA Settings": "2FA Ayarları",
+ "Two Factor Authentication": "İki Faktörlü Kimlik Doğrulama (2FA)",
+ "Active": "Aktif",
+ "Inactive": "İnaktif",
+ "Token": "Token",
+ "Show URI": "URI'yi göster",
+ "Tags": "Etiketler",
+ "Add New below or Select...": "Aşağıya Yeni Ekle veya Seç…",
+ "Tag with this name already exist.": "Bu ada sahip etiket zaten var.",
+ "Tag with this value already exist.": "Bu değere sahip etiket zaten var.",
+ "color": "renk",
+ "value (optional)": "değer (isteğe bağlı)",
+ "Gray": "Gri",
+ "Red": "Kırmızı",
+ "Orange": "Turuncu",
+ "Green": "Yeşil",
+ "Blue": "Mavi",
+ "Indigo": "Çivit mavisi",
+ "Purple": "Mor",
+ "Pink": "Pembe",
+ "Search...": "Ara…",
+ "Avg. Ping": "Ortalama Ping",
+ "Avg. Response": "Ortalama Cevap Süresi",
+ "Entry Page": "Giriş Sayfası",
+ "statusPageNothing": "Burada hiçbir şey yok, lütfen bir grup veya servis ekleyin.",
+ "No Services": "Hizmet Yok",
+ "All Systems Operational": "Tüm Sistemler Operasyonel",
+ "Partially Degraded Service": "Kısmen Bozulmuş Hizmet",
+ "Degraded Service": "Bozulmuş Hizmet",
+ "Add Group": "Grup Ekle",
+ "Add a monitor": "Servis Ekle",
+ "Edit Status Page": "Durum Sayfasını Düzenle",
+ "Go to Dashboard": "Panele Git",
+ "Status Page": "Durum Sayfası",
+ "Status Pages": "Durum Sayfaları",
+ "defaultNotificationName": "Benim {notification} Alarmım ({number})",
+ "here": "burada",
+ "Required": "Gerekli",
+ "telegram": "Telegram",
+ "Bot Token": "Bot Anahtarı",
+ "wayToGetTelegramToken": "{0} adresinden bir token alabilirsiniz.",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Doğrudan Sohbet / Grup / Kanalın Sohbet Kimliğini Destekleyin",
+ "wayToGetTelegramChatID": "Bot'a bir mesaj göndererek ve chat_id'yi görüntülemek için bu URL'ye giderek sohbet kimliğinizi alabilirsiniz:",
+ "YOUR BOT TOKEN HERE": "BOT TOKENİNİZ BURADA",
+ "chatIDNotFound": "Chat ID bulunamadı; lütfen önce bu bota bir mesaj gönderin",
+ "webhook": "Webhook",
+ "Post URL": "Post URL",
+ "Content Type": "Content Type",
+ "webhookJsonDesc": "{0}, Express.js gibi tüm modern HTTP sunucuları için iyidir",
+ "webhookFormDataDesc": "{multipart} PHP için iyidir. JSON'un {decodeFunction} ile ayrıştırılması gerekecek",
+ "smtp": "E-mail (SMTP)",
+ "secureOptionNone": "Hiçbiri / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "TLS Hatasını Yoksay",
+ "From Email": "E-postadan",
+ "emailCustomSubject": "Özel Konu",
+ "To Email": "E-postaya",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook Bağlantısı",
+ "wayToGetDiscordURL": "Bunu Sunucu Ayarları -> Entegrasyonlar -> Webhookları Görüntüle -> Yeni Webhook Oluştur adımını izleyerek alabilirsiniz",
+ "Bot Display Name": "Botun Görünecek Adı",
+ "Prefix Custom Message": "Önek Özel Mesaj",
+ "Hello @everyone is...": "Merhaba {'@'}everyone…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.",
+ "signal": "Sinyal",
+ "Number": "Numara",
+ "Recipients": "Alıcılar",
+ "needSignalAPI": "REST API ile bir signal istemciniz olması gerekiyor.",
+ "wayToCheckSignalURL": "Nasıl kurulacağını görmek için bu URL'yi kontrol edebilirsiniz:",
+ "signalImportant": "ÖNEMLİ: Alıcılarda grupları ve sayıları karıştıramazsınız!",
+ "gotify": "Gotify",
+ "Application Token": "Uygulama Tokeni",
+ "Server URL": "Sunucu URL",
+ "Priority": "Öncelik",
+ "Icon Emoji": "İkon Emoji",
+ "Channel Name": "Kanal Adı",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Webhook hakkında daha fazla bilgi: {0}",
+ "aboutChannelName": "Webhook kanalını atlamak istiyorsanız, {0} Kanal Adı alanına kanal adını girin. Ör: #diğer-kanal",
+ "aboutKumaURL": "Uptime Kuma URL alanını boş bırakırsanız, varsayılan olarak Project GitHub sayfası olur.",
+ "emojiCheatSheet": "Emoji referans sayfası: {0}",
+ "PushByTechulus": "Push by Techulus",
+ "apprise": "Apprise (50'den fazla Bildirim hizmetini destekler)",
+ "GoogleChat": "Google Chat (sadece Google Workspace)",
+ "pushbullet": "Pushbullet",
+ "User Key": "Kullancı Anahtarı",
+ "Device": "Cihaz",
+ "Message Title": "Mesaj Başlığı",
+ "Notification Sound": "Bilgilendirme sesi",
+ "More info on:": "Daha fazla bilgi: {0}",
+ "pushoverDesc1": "Acil durum önceliği (2), yeniden denemeler arasında varsayılan olarak 30 saniyelik bir zaman aşımına sahiptir ve 1 saat sonra sona erecektir.",
+ "pushoverDesc2": "Farklı cihazlara bildirim göndermek istiyorsanız Cihaz alanını doldurunuz.",
+ "SMS Type": "SMS Tipi",
+ "octopushTypePremium": "Premium (Hızlı - uyarı için önerilir)",
+ "octopushTypeLowCost": "Düşük Maliyet (Yavaş - bazen operatör tarafından engellenir)",
+ "checkPrice": "{0} fiyatlarını kontrol edin:",
+ "apiCredentials": "API kimlik bilgileri",
+ "octopushLegacyHint": "Octopush'un (2011-2020) eski sürümünü mü yoksa yeni sürümünü mü kullanıyorsunuz?",
+ "Check octopush prices": "Octopush fiyatlarını kontrol edin {0}.",
+ "octopushPhoneNumber": "Telefon numarası (uluslararası biçim, örneğin: +33612345678) ",
+ "octopushSMSSender": "SMS Gönderici Adı : 3-11 alfanümerik karakter ve boşluk (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea Cihaz ID",
+ "Apprise URL": "Apprise Bağlantısı",
+ "Example:": "Örnek: {0}",
+ "Read more:": "Daha fazla oku: {0}",
+ "Status:": "Durum: {0}",
+ "Read more": "Daha fazla oku",
+ "appriseInstalled": "Apprise yüklendi.",
+ "appriseNotInstalled": "Appris yüklü değil. {0}",
+ "Access Token": "Erişim Tokeni",
+ "Channel access token": "Kanal erişim tokeni",
+ "Line Developers Console": "Line Geliştirici Konsolu",
+ "lineDevConsoleTo": "Line Geliştirici Konsolu - {0}",
+ "Basic Settings": "Temel Ayarlar",
+ "User ID": "Kullanıcı ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Önce {0}'e erişin, bir sağlayıcı ve kanal (Messaging API) oluşturun, ardından yukarıda belirtilen menü öğelerinden kanal erişim tokenini ve kullanıcı id alabilirsiniz.",
+ "Icon URL": "Simge URL",
+ "aboutIconURL": "Varsayılan profil resmini geçersiz kılmak için \"Simge URL\" bölümünde bir resme bağlantı sağlayabilirsiniz. Simge Emojisi ayarlanmışsa kullanılmayacaktır.",
+ "aboutMattermostChannelName": "Kanal adını \"Kanal Adı\" alanına girerek Webhook'un gönderi yaptığı varsayılan kanalı geçersiz kılabilirsiniz. Bunun Mattermost Webhook ayarlarında etkinleştirilmesi gerekir. Ör: #diğer-kanal",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - ucuz ama yavaş ve genellikle aşırı yüklü. Yalnızca Polonyalı alıcılarla sınırlıdır.",
+ "promosmsTypeFlash": "SMS FLASH - Mesaj, alıcı cihazda otomatik olarak gösterilecektir. Yalnızca Polonyalı alıcılarla sınırlıdır.",
+ "promosmsTypeFull": "SMS FULL - Premium SMS katmanı, Gönderici Adınızı kullanabilirsiniz (Önce adınızı kaydetmeniz gerekir). Uyarılar için güvenilir.",
+ "promosmsTypeSpeed": "SMS HIZI - Sistemde en yüksek öncelik. Çok hızlı ve güvenilir ancak maliyetli (SMS FULL fiyatının yaklaşık iki katı).",
+ "promosmsPhoneNumber": "Telefon numarası (Polonyalı alıcı için Alan kodlarını atlayabilirsiniz)",
+ "promosmsSMSSender": "SMS Gönderici Adı : Ön kayıtlı ad veya varsayılanlardan biri: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "Homeserver URL (http(s):// ve isteğe bağlı olarak bağlantı noktası ile)",
+ "Internal Room Id": "Internal Room ID",
+ "matrixDesc1": "Internal Room ID'sini, Matrix istemcinizdeki oda ayarlarının gelişmiş bölümüne bakarak bulabilirsiniz. !QMdRCpUIfLwsfjxye6:home.server gibi görünmelidir.",
+ "matrixDesc2": "Hesabınıza ve katıldığınız tüm odalara tam erişime izin vereceğinden, yeni bir kullanıcı oluşturmanız ve kendi Matrix kullanıcınızın erişim belirtecini kullanmamanız şiddetle tavsiye edilir. Bunun yerine, yeni bir kullanıcı oluşturun ve onu yalnızca bildirimi almak istediğiniz odaya davet edin. {0} komutunu çalıştırarak erişim tokenini alabilirsiniz.",
+ "Method": "Yöntem",
+ "Body": "Gövde",
+ "Headers": "Başlıklar",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "İstek başlıkları geçerli JSON değil. ",
+ "BodyInvalidFormat": "İstek gövdesi geçerli JSON değil: ",
+ "Monitor History": "Servis Geçmişi",
+ "clearDataOlderThan": "{0} gün boyunca izleme geçmişi verilerini saklayın.",
+ "PasswordsDoNotMatch": "Parolalar uyuşmuyor.",
+ "records": "kayıtlar",
+ "One record": "Bir Kayıt",
+ "steamApiKeyDescription": "Bir Steam Oyun Sunucusunu izlemek için bir Steam Web-API anahtarına ihtiyacınız vardır. API anahtarınızı buradan kaydedebilirsiniz: ",
+ "Current User": "Şu anki kullanıcı",
+ "topic": "Başlık",
+ "topicExplanation": "İzlenecek MQTT servisi",
+ "successMessage": "Başarılı Mesaj",
+ "successMessageExplanation": "Başarılı olarak kabul edilecek MQTT mesajı",
+ "recent": "Son",
+ "Done": "Tamamlandı",
+ "Info": "Bilgi",
+ "Security": "Güvenlik",
+ "Steam API Key": "Steam API Anahtarı",
+ "Shrink Database": "Veritabanını Küçült",
+ "Pick a RR-Type...": "Bir RR-Tipi seçin…",
+ "Pick Accepted Status Codes...": "Kabul Edilen Durum Kodlarını Seçin…",
+ "Default": "Varsayılan",
+ "HTTP Options": "HTTP Ayarları",
+ "Create Incident": "Olay Oluştur",
+ "Title": "Başlık",
+ "Content": "İçerik",
+ "Style": "Stil",
+ "info": "info",
+ "warning": "uyarı",
+ "danger": "tehlike",
+ "error": "hata",
+ "critical": "kritik",
+ "primary": "öncelik",
+ "light": "hafif",
+ "dark": "koyu",
+ "Post": "Post",
+ "Please input title and content": "Lütfen başlık ve içerik girin",
+ "Created": "Oluşturuldu",
+ "Last Updated": "Son Güncelleme",
+ "Unpin": "Sabitlemeyi Kaldır",
+ "Switch to Light Theme": "Açık Temaya Geç",
+ "Switch to Dark Theme": "Karanlık Temaya Geç",
+ "Show Tags": "Etiketleri Göster",
+ "Hide Tags": "Etiketleri Gizle",
+ "Description": "Açıklama",
+ "No monitors available.": "Kullanılabilir servis yok.",
+ "Add one": "Bir tane ekle",
+ "No Monitors": "Servis Yok",
+ "Untitled Group": "Adsız Grup",
+ "Services": "Hizmetler",
+ "Discard": "İptal Et",
+ "Cancel": "İptal Et",
+ "Powered by": "Tarafından desteklenmektedir",
+ "shrinkDatabaseDescription": "SQLite için veritabanı VACUUM'unu tetikleyin. Veritabanınız 1.10.0'dan sonra oluşturulduysa, AUTO_VACUUM zaten etkinleştirilmiştir ve bu eyleme gerek yoktur.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Kullanıcı Adı (webapi_ öneki dahil)",
+ "serwersmsAPIPassword": "API Şifre",
+ "serwersmsPhoneNumber": "Telefon numarası",
+ "serwersmsSenderName": "SMS Gönderici Adı (müşteri portalı üzerinden kayıtlı)",
+ "stackfield": "Stackfield",
+ "Customize": "Özelleştirme",
+ "Custom Footer": "Özel Altbilgi",
+ "Custom CSS": "Özel CSS",
+ "smtpDkimSettings": "DKIM Ayarları",
+ "smtpDkimDesc": "Kullanım için lütfen Nodemailer DKIM'e {0} bakın.",
+ "documentation": "belgeler",
+ "smtpDkimDomain": "Alan adı",
+ "smtpDkimKeySelector": "Anahtar Seçici",
+ "smtpDkimPrivateKey": "Özel anahtar",
+ "smtpDkimHashAlgo": "Hash Algoritması (Opsiyonel)",
+ "smtpDkimheaderFieldNames": "İmzalanacak Başlık Anahtarları (Opsiyonel)",
+ "smtpDkimskipFields": "İmzalamayacak Başlık Anahtarları (Opsiyonel)",
+ "wayToGetPagerDutyKey": "Bunu Hizmet -> Hizmet Dizini -> (Bir hizmet seçin) -> Entegrasyonlar -> Entegrasyon ekle'ye giderek alabilirsiniz. Burada \"Events API V2\" için arama yapabilirsiniz. Daha fazla bilgi {0}",
+ "Integration Key": "Entegrasyon Anahtarı",
+ "Integration URL": "Entegrasyon URL'si",
+ "Auto resolve or acknowledged": "Otomatik çözümleme veya onaylandı",
+ "do nothing": "hiçbir şey yapma",
+ "auto acknowledged": "otomatik onaylandı",
+ "auto resolve": "otomatik çözümleme",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "Environment",
+ "alertaApiKey": "API Anahtarı",
+ "alertaAlertState": "Uyarı Durumu",
+ "alertaRecoverState": "Kurtarma Durumu",
+ "deleteStatusPageMsg": "Bu durum sayfasını silmek istediğinizden emin misiniz?",
+ "Proxies": "Proxy'ler",
+ "default": "Varsayılan",
+ "enabled": "Etkinleştirilmiş",
+ "setAsDefault": "Varsayılan Olarak Ayarla",
+ "deleteProxyMsg": "Bu proxy'yi tüm servisler için silmek istediğinizden emin misiniz?",
+ "proxyDescription": "Proxy'lerin çalışması için bir servise atanması gerekir.",
+ "enableProxyDescription": "Bu proxy, etkinleştirilene kadar izleme isteklerini etkilemeyecektir. Aktivasyon durumuna göre proxy'yi tüm servislerden geçici olarak devre dışı bırakabilirsiniz.",
+ "setAsDefaultProxyDescription": "Bu proxy, yeni servisler için varsayılan olarak etkinleştirilecektir. Yine de proxy'yi her bir servis için devre dışı bırakabilirsiniz.",
+ "Certificate Chain": "Sertifika Zinciri",
+ "Valid": "Geçerli",
+ "Invalid": "Geçersiz",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Gizli Anahtarı",
+ "PhoneNumbers": "Telefon numaraları",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Sms şablonu parametreleri içermelidir: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "Bark Group": "Bark Group",
+ "Bark Sound": "Bark Sound",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "Güvenlik için gizli anahtar kullanılmalıdır",
+ "Device Token": "Cihaz Tokeni",
+ "Platform": "Platform",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "High",
+ "Retry": "Tekrar",
+ "Topic": "Başlık",
+ "WeCom Bot Key": "WeCom Bot Anahtarı",
+ "Setup Proxy": "Proxy kur",
+ "Proxy Protocol": "Proxy Protokolü",
+ "Proxy Server": "Proxy Sunucusu",
+ "Proxy server has authentication": "Proxy sunucusunun kimlik doğrulaması var",
+ "User": "Kullanıcı",
+ "Installed": "Yüklenmiş",
+ "Not installed": "Yüklü değil",
+ "Running": "Çalışıyor",
+ "Not running": "Çalışmıyor",
+ "Remove Token": "Tokeni Kaldır",
+ "Start": "Başlat",
+ "Stop": "Durdur",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Yeni Durum Sayfası Ekle",
+ "Slug": "Slug",
+ "Accept characters:": "Kabul edilen karakterler:",
+ "startOrEndWithOnly": "Yalnızca {0} ile başlayın veya bitirin",
+ "No consecutive dashes": "Ardışık tire yok",
+ "Next": "Sonraki",
+ "The slug is already taken. Please choose another slug.": "Slug zaten alındı. Lütfen başka bir slug seçin.",
+ "No Proxy": "Proxy Yok",
+ "Authentication": "Kimlik doğrulama",
+ "HTTP Basic Auth": "HTTP Temel Yetkilendirme",
+ "New Status Page": "Yeni Durum Sayfası",
+ "Page Not Found": "Sayfa bulunamadı",
+ "Reverse Proxy": "Ters Proxy",
+ "Backup": "Yedek",
+ "About": "Hakkında",
+ "wayToGetCloudflaredURL": "(Cloudflared'i {0} adresinden indirin)",
+ "cloudflareWebsite": "Cloudflare İnt. Sitesi",
+ "Message:": "Mesaj:",
+ "Don't know how to get the token? Please read the guide:": "Tokeni nasıl alacağınızı bilmiyor musunuz? Lütfen kılavuzu okuyun:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Halihazırda Cloudflare Tüneli üzerinden bağlanıyorsanız mevcut bağlantı kesilebilir. Durdurmak istediğinden emin misin? Onaylamak için mevcut şifrenizi yazın.",
+ "HTTP Headers": "HTTP Başlıkları",
+ "Trust Proxy": "Trust Proxy",
+ "Other Software": "Diğer Yazılımlar",
+ "For example: nginx, Apache and Traefik.": "Örneğin: nginx, Apache ve Traefik.",
+ "Please read": "Lütfen oku",
+ "Subject:": "Başlık:",
+ "Valid To:": "Geçerlilik:",
+ "Days Remaining:": "Kalan günler:",
+ "Issuer:": "Veren:",
+ "Fingerprint:": "Parmak izi:",
+ "No status pages": "Durum sayfası yok",
+ "Domain Name Expiry Notification": "Alan Adı Sona Erme Bildirimi",
+ "Proxy": "Proxy",
+ "Date Created": "Tarih Oluşturuldu",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "OneBot HTTP Adresi",
+ "onebotMessageType": "OneBot Mesaj Türü",
+ "onebotGroupMessage": "Grup",
+ "onebotPrivateMessage": "Özel",
+ "onebotUserOrGroupId": "Grup/Kullanıcı Kimliği",
+ "onebotSafetyTips": "Güvenlik için erişim tokeni ayarlamalısınız",
+ "PushDeer Key": "PushDeer Anahtarı",
+ "Footer Text": "Altbilgi metni",
+ "Show Powered By": "\"Powered by\" kısmını göster",
+ "Domain Names": "Alan isimleri",
+ "signedInDisp": "{0} olarak oturum açıldı",
+ "signedInDispDisabled": "Yetkilendirme Devre Dışı.",
+ "RadiusSecret": "Radius Gizli Anahtar",
+ "RadiusSecretDescription": "İstemci ve sunucu arasında paylaşılan gizli anahtar",
+ "RadiusCalledStationId": "Aranan İstasyon Kimliği",
+ "RadiusCalledStationIdDescription": "Aranan cihazın tanımlayıcısı",
+ "RadiusCallingStationId": "Arayan İstasyon Kimliği",
+ "RadiusCallingStationIdDescription": "Arayan cihazın tanımlayıcısı",
+ "Certificate Expiry Notification": "Sertifika Sona Erme Bildirimi",
+ "API Username": "API Kullanıc Adı",
+ "API Key": "API Anahtarı",
+ "Recipient Number": "Alıcı Numarası",
+ "From Name/Number": "İsimden/Numaradan",
+ "Leave blank to use a shared sender number.": "Paylaşılan bir gönderen numarası kullanmak için boş bırakın.",
+ "Octopush API Version": "Octopush API Sürümü",
+ "Legacy Octopush-DM": "Eski Octopush-DM",
+ "endpoint": "uç nokta",
+ "octopushAPIKey": "Kontrol panelindeki HTTP API kimlik bilgilerinden \"API Key\"",
+ "octopushLogin": "Kontrol panelindeki HTTP API kimlik bilgilerinden \"Login\"",
+ "promosmsLogin": "API Oturum Açma Adı",
+ "promosmsPassword": "API Şifresi",
+ "pushoversounds pushover": "Pushover (varsayılan)",
+ "pushoversounds bike": "Bisiklet",
+ "pushoversounds bugle": "Boru",
+ "pushoversounds cashregister": "Yazar kasa",
+ "pushoversounds classical": "Klasik",
+ "pushoversounds cosmic": "Kozmik",
+ "pushoversounds falling": "Düşme",
+ "pushoversounds gamelan": "Oyun Alanı",
+ "pushoversounds incoming": "Gelen",
+ "pushoversounds intermission": "Ara",
+ "pushoversounds magic": "Büyü",
+ "pushoversounds mechanical": "Mekanik",
+ "pushoversounds pianobar": "Piano",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Uzay Alarmı",
+ "pushoversounds tugboat": "Römorkör",
+ "pushoversounds alien": "Uzaylı Alarmı (uzun)",
+ "pushoversounds climb": "Tırmanış (uzun)",
+ "pushoversounds persistent": "Sürekli (uzun)",
+ "pushoversounds echo": "Pushover Yankı (uzun)",
+ "pushoversounds updown": "Yukarı Aşağı (uzun)",
+ "pushoversounds vibrate": "Sadece titreşim",
+ "pushoversounds none": "Yok (sessiz)",
+ "pushyAPIKey": "Gizli API Anahtarı",
+ "pushyToken": "Cihaz tokeni",
+ "Show update if available": "Varsa güncellemeyi göster",
+ "Also check beta release": "Ayrıca beta sürümünü kontrol edin",
+ "Using a Reverse Proxy?": "Ters Proxy mi Kullanıyorsunuz?",
+ "Check how to config it for WebSocket": "WebSocket için nasıl yapılandırılacağını kontrol edin",
+ "Steam Game Server": "Steam Oyun Sunucusu",
+ "Most likely causes:": "En olası nedenler:",
+ "The resource is no longer available.": "Kaynak artık mevcut değil.",
+ "There might be a typing error in the address.": "Adreste bir yazım hatası olabilir.",
+ "What you can try:": "Ne deneyebilirsin:",
+ "Retype the address.": "Adresi tekrar yazın.",
+ "Go back to the previous page.": "Bir önceki sayfaya geri git.",
+ "Coming Soon": "Yakında gelecek",
+ "wayToGetClickSendSMSToken": "API Kullanıcı Adı ve API Anahtarını {0} adresinden alabilirsiniz.",
+ "Connection String": "Bağlantı dizisi",
+ "Query": "Sorgu",
+ "settingsCertificateExpiry": "TLS Sertifikasının Geçerlilik Süresi",
+ "certificationExpiryDescription": "HTTPS Monitörleri, TLS sertifikasının süresi dolduğunda bildirimi tetikler:",
+ "Setup Docker Host": "Docker Ana Bilgisayarını Kur",
+ "Connection Type": "Bağlantı türü",
+ "Docker Daemon": "Docker Daemon",
+ "deleteDockerHostMsg": "Bu docker ana bilgisayarını tüm monitörler için silmek istediğinizden emin misiniz?",
+ "socket": "Soket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Konteyner",
+ "Container Name / ID": "Konteyner Adı / Kimliği",
+ "Docker Host": "Docker Ana Bilgisayarı",
+ "Docker Hosts": "Docker Ana Bilgisayarları",
+ "ntfy Topic": "ntfy Konu",
+ "Domain": "Alan Adı",
+ "Workstation": "İş İstasyonu",
+ "disableCloudflaredNoAuthMsg": "Yetki yok modundasınız, şifre gerekli değil.",
+ "trustProxyDescription": "'X-Forwarded-*' başlıklarına güvenin. Doğru istemci IP'sini almak istiyorsanız ve Uptime Kuma'nız Nginx veya Apache gibi bir proxy'nin arkasındaysa, bunu etkinleştirmelisiniz.",
+ "wayToGetLineNotifyToken": "{0} adresinden bir erişim jetonu alabilirsiniz",
+ "Examples": "Örnekler",
+ "Home Assistant URL": "Home Assistant Bağlantısı",
+ "Long-Lived Access Token": "Long-Lived Erişim Anahtarı",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Erişim Anahtarı, profil adınıza (sol altta) tıklayarak ve aşağıya kaydırarak ve ardından Anahtar Oluştur'a tıklayarak oluşturulabilir. ",
+ "Notification Service": "Bildirim Hizmeti",
+ "default: notify all devices": "varsayılan: tüm cihazları bilgilendir",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Cihazınızın/telefonunuzun adını bulmak için Home Assistant'ta \"Geliştirici Araçları > Hizmetler\" \"bildirim\" araması altında bir Bildirim Hizmetleri listesi bulunabilir.",
+ "Automations can optionally be triggered in Home Assistant:": "Otomasyonlar isteğe bağlı olarak Home Assistant'ta tetiklenebilir:",
+ "Trigger type:": "Trigger tipi:",
+ "Event type:": "Etkinlik tipi:",
+ "Event data:": "Etkinlik verileri:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Ardından bir eylem seçin, örneğin RGB ışığının kırmızı olduğu sahneyi değiştirin.",
+ "Frontend Version": "Frontend Sürümü",
+ "Frontend Version do not match backend version!": "Frontend Sürümü, backend sürümüyle eşleşmiyor!",
+ "Base URL": "Temel URL",
+ "goAlertInfo": "GoAlert, çağrı üzerine zamanlama, otomatik eskalasyonlar ve bildirimler (SMS veya sesli çağrılar gibi) için açık kaynaklı bir uygulamadır. Doğru kişiyi, doğru şekilde ve doğru zamanda otomatik olarak devreye sokun! {0}",
+ "goAlertIntegrationKeyInfo": "Servis için genel API entegrasyon anahtarını, genellikle kopyalanan URL'nin belirteç parametresinin değeri olan \"aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biçiminde alın.",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "Kullanımdan kaldırıldı: Birçok özellik eklendiğinden ve bu yedekleme özelliği biraz bakımsız olduğundan tam bir yedekleme oluşturamaz veya geri yükleyemez.",
+ "backupRecommend": "Lütfen bunun yerine birimi veya veri klasörünü (./data/) doğrudan yedekleyin.",
+ "enableGRPCTls": "TLS bağlantısıyla gRPC isteği göndermeye izin ver",
+ "grpcMethodDescription": "Yöntem adı, sayHello, check, vb. gibi cammelCase biçimine dönüştürülür.",
+ "Maintenance": "Bakım",
+ "statusMaintenance": "Bakım",
+ "Schedule maintenance": "Bakım Planla",
+ "Affected Monitors": "Etkilenen Monitörler",
+ "Pick Affected Monitors...": "Etkilenen Monitörleri Seçin…",
+ "Start of maintenance": "Bakım başlangıcı",
+ "All Status Pages": "Tüm Durum Sayfaları",
+ "Select status pages...": "Durum sayfalarını seçin…",
+ "recurringIntervalMessage": "Her gün bir kez çalıştırın | {0} günde bir çalıştırın",
+ "affectedMonitorsDescription": "Geçerli bakımdan etkilenen monitörleri seçin",
+ "affectedStatusPages": "Bu bakım mesajını seçili durum sayfalarında göster",
+ "atLeastOneMonitor": "Etkilenen en az bir monitör seçin",
+ "deleteMaintenanceMsg": "Bu bakımı silmek istediğinizden emin misiniz?",
+ "ZohoCliq": "ZohoCliq",
+ "webhookAdditionalHeadersTitle": "Ek Başlıklar",
+ "webhookAdditionalHeadersDesc": "Webhook ile gönderilen ek başlıkları ayarlar.",
+ "wayToGetZohoCliqURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.",
+ "Kook": "Kook",
+ "wayToGetKookBotToken": "Uygulama oluşturun ve {0} adresinde bot tokenı alın",
+ "wayToGetKookGuildID": "Kook ayarında \"Geliştirici Modu\"nu açın ve kimliğini almak için guild'e sağ tıklayın",
+ "Guild ID": "Guild ID",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "Telefon numara(ları)",
+ "smseagleGroup": "Telefon defteri grubu ad(lar)ı",
+ "smseagleContact": "Telefon rehberi kişi ad(lar)ı",
+ "smseagleRecipientType": "Alıcı Türü",
+ "smseagleRecipient": "Alıcı(lar) (birden çok olanlar virgülle ayrılmalıdır)",
+ "smseagleToken": "API Erişim Tokenı",
+ "smseagleUrl": "SMSEagle cihaz URL\"niz",
+ "smseagleEncoding": "Unicode olarak gönder",
+ "smseaglePriority": "Mesaj önceliği (0-9, varsayılan = 0)",
+ "Optional": "İsteğe bağlı",
+ "squadcast": "Squadcast",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API Dökümanları ",
+ "Gateway Type": "Ağ Geçidi Türü",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "Sayıları aşağıdakilerle bölebilirsiniz",
+ "or": "veya",
+ "recurringInterval": "Sıklık",
+ "Recurring": "Yineleme",
+ "strategyManual": "Manuel olarak Aktif/Pasif",
+ "warningTimezone": "Sunucunun kullandığı saat dilimi",
+ "weekdayShortMon": "Pzt",
+ "weekdayShortTue": "Sal",
+ "weekdayShortWed": "Çar",
+ "weekdayShortThu": "Per",
+ "weekdayShortFri": "Cum",
+ "weekdayShortSat": "Cmt",
+ "weekdayShortSun": "Paz",
+ "dayOfWeek": "Haftanın Günleri",
+ "dayOfMonth": "Ayın Günleri",
+ "lastDay": "Son Gün",
+ "lastDay1": "Ayın Son Günü",
+ "lastDay2": "Ayın 2. Son Günü",
+ "lastDay3": "Ayın 3. Son Günü",
+ "lastDay4": "Ayın 4. Son Günü",
+ "No Maintenance": "Bakım Yok",
+ "pauseMaintenanceMsg": "Duraklatmak istediğinizden emin misiniz?",
+ "maintenanceStatus-under-maintenance": "Bakımda",
+ "maintenanceStatus-inactive": "Etkin Değil",
+ "maintenanceStatus-scheduled": "Planlanmış",
+ "maintenanceStatus-ended": "Bitti",
+ "maintenanceStatus-unknown": "Bilinmiyor",
+ "Display Timezone": "Saat dilimini göster",
+ "Server Timezone": "Sunucu Saat Dilimi",
+ "statusPageMaintenanceEndDate": "Bitiş Zamanı",
+ "IconUrl": "Icon URL",
+ "Enable DNS Cache": "DNS Önbelleğini Etkinleştir",
+ "Enable": "Etkin",
+ "Disable": "Devre Dışı",
+ "dnsCacheDescription": "Bazı IPv6 ortamlarında çalışmıyor olabilir, herhangi bir sorunla karşılaşırsanız devre dışı bırakın.",
+ "Single Maintenance Window": "Tek Seferlik Bakım",
+ "Maintenance Time Window of a Day": "Bür Günlük Bakım",
+ "Effective Date Range": "Geçerlilik Tarihi Aralığı (Opsiyonel)",
+ "Schedule Maintenance": "Bakım Planla",
+ "Date and Time": "Tarih ve Saat",
+ "DateTime Range": "Tarih ve Saat Aralığı",
+ "Strategy": "Strateji",
+ "Free Mobile User Identifier": "Ücretsiz Mobil Kullanıcı ID",
+ "Free Mobile API Key": "Ücretsiz Mobil API Anahtarı",
+ "Enable TLS": "TLS'yi Etkinleştir",
+ "Proto Service Name": "Proto Service İsmi",
+ "Proto Method": "Proto Method",
+ "Proto Content": "Proto İçeriği",
+ "Economy": "Ekonomik",
+ "Lowcost": "Düşük maliyetli",
+ "high": "Yüksek",
+ "General Monitor Type": "Genel Monitör Tipi",
+ "Passive Monitor Type": "Pasif Monitör Tipi",
+ "Specific Monitor Type": "Özel Monitör Tipi",
+ "Help": "Yardım",
+ "Monitor": "Monitör | Monitörler",
+ "Custom": "Özel",
+ "dataRetentionTimeError": "Saklama süresi 0 veya daha büyük olmalıdır",
+ "confirmDeleteTagMsg": "Bu etiketi silmek istediğinizden emin misiniz? Bu etiketle ilişkili monitörler silinmez.",
+ "promosmsAllowLongSMS": "Uzun SMS'e izin ver",
+ "infiniteRetention": "Sonsuza dek saklamak için 0 giriniz.",
+ "rocket.chat": "Rocket.Chat",
+ "slack": "Slack",
+ "pushover": "Pushover",
+ "Game": "Oyun",
+ "Packet Size": "Paket Boyutu",
+ "Custom Monitor Type": "Özel Monitör Tipi",
+ "clicksendsms": "ClickSend SMS",
+ "loadingError": "Veriler getirilemiyor, lütfen daha sonra tekrar deneyin.",
+ "plugin": "Eklenti | Eklentiler",
+ "install": "Yükle",
+ "installing": "Yükleniyor",
+ "uninstall": "Kaldır",
+ "uninstalling": "Yükleme kaldırılıyor",
+ "confirmUninstallPlugin": "Bu eklentiyi kaldırmak istediğinizden emin misiniz?",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "markdownSupported": "Markdown yazım formatı desteklenir",
+ "Google Analytics ID": "Google Analytics Kodu",
+ "Edit Tag": "Etiketi Düzenle",
+ "Learn More": "Daha fazla bilgi edin",
+ "Server Address": "Sunucu Adresi",
+ "telegramMessageThreadIDDescription": "Forumun hedef ileti dizisi (konusu) için isteğe bağlı benzersiz kimlik; yalnızca forum üst grupları için geçerli",
+ "telegramMessageThreadID": "(İsteğe bağlı) Mesaj Thread ID",
+ "notificationRegional": "Bölgesel",
+ "telegramSendSilently": "Sessizce Gönder",
+ "telegramSendSilentlyDescription": "Mesajı sessizce gönderir. Kullanıcılar sessiz bir bildirim alacaktır.",
+ "telegramProtectContent": "Yönlendirmeyi/Kaydetmeyi Koru",
+ "telegramProtectContentDescription": "Etkinleştirilirse, Telegram'daki bot mesajları iletilmeye ve kaydedilmeye karşı korunacaktır.",
+ "Body Encoding": "JSON veya XML olabilen HTTP İstek Gövdesinin Kodlaması. İstek İçeriği Türü olarak da bilinir: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type",
+ "Clone Monitor": "Klon Monitör",
+ "Clone": "Klon",
+ "cloneOf": "{0} Monitörünün Klonu",
+ "Expiry": "son kullanma tarihi",
+ "Expiry date": "Son kullanma tarihi",
+ "Don't expire": "sona erme",
+ "Continue": "Devam etmek",
+ "Key Added": "Anahtar Eklendi",
+ "Add API Key": "API Anahtarı Ekle",
+ "No API Keys": "API Anahtarı Yok",
+ "apiKey-active": "Aktif",
+ "apiKey-expired": "Günü geçmiş",
+ "apiKey-inactive": "etkin değil",
+ "Expires": "süresi doluyor",
+ "disableAPIKeyMsg": "Bu API anahtarını devre dışı bırakmak istediğinizden emin misiniz?",
+ "deleteAPIKeyMsg": "Bu API anahtarını silmek istediğinizden emin misiniz?",
+ "Generate": "oluştur",
+ "API Keys": "api anahtarları",
+ "Add Another": "Başka birtane ekle",
+ "apiKeyAddedMsg": "API anahtarınız eklendi. Bir daha gösterilmeyeceği için lütfen not edin.",
+ "pagertreeUrgency": "Önem",
+ "pagertreeSilent": "Sessiz",
+ "pagertreeLow": "Düşük",
+ "pagertreeMedium": "Orta",
+ "pagertreeHigh": "Yüksek",
+ "pagertreeCritical": "Kritik",
+ "pagertreeDoNothing": "Hiçbir şey yapma",
+ "wayToGetPagerTreeIntegrationURL": "PagerTree'de Uptime Kuma entegrasyonunu oluşturduktan sonra Endpoint'i kopyalayın. Tüm ayrıntıları görün {0}",
+ "pagertreeIntegrationUrl": "Entegrasyon URL",
+ "pagertreeResolve": "Otomatik Çöz",
+ "lunaseaTarget": "Hedef",
+ "Add New Tag": "Yeni Etiket Ekle",
+ "lunaseaDeviceID": "Cihaz ID",
+ "lunaseaUserID": "Kullanıcı ID",
+ "statusPageRefreshIn": "{0} içinde yenilenecek",
+ "twilioAuthToken": "Kimlik Doğrulama Jetonu",
+ "twilioFromNumber": "Gönderen Numara",
+ "twilioToNumber": "Alıcı Numara",
+ "twilioAccountSID": "Hesap ID",
+ "sameAsServerTimezone": "Sunucu Saat Dilimi ile aynı",
+ "startDateTime": "Başlangıç Tarihi/Saati",
+ "endDateTime": "Bitiş Tarihi/Saati",
+ "cronExpression": "Cron İfadesi",
+ "cronSchedule": "Zamanlama: ",
+ "invalidCronExpression": "Geçersiz Cron İfadesi: {0}",
+ "ntfyAuthenticationMethod": "Kimlik Doğrulama Yöntemi",
+ "ntfyUsernameAndPassword": "Kullanıcı adı ve şifre",
+ "pushoverMessageTtl": "Mesajın Yaşama Süresi (Saniye)",
+ "Show Clickable Link": "Tıklanabilir Bağlantıyı Göster",
+ "Open Badge Generator": "Rozet Oluşturucuyu Aç",
+ "Badge Generator": "{0} Rozet Oluşturucu",
+ "Badge Type": "Rozet Türü",
+ "Badge Duration": "Rozet Süresi",
+ "Badge Label": "Rozet Etiketi",
+ "Badge Prefix": "Rozet Öneki",
+ "Badge Suffix": "Rozet Eki",
+ "Badge Label Color": "Rozet Etiket Rengi",
+ "Badge Color": "Rozet Rengi",
+ "Badge Label Prefix": "Rozet Etiket Öneki",
+ "Badge Label Suffix": "Rozet Etiket Eki",
+ "Badge Up Color": "Rozet Normal Rengi",
+ "Badge Down Color": "Rozet Hatalı Rengi",
+ "Badge Pending Color": "Rozet Bekleyen Rengi",
+ "Badge Maintenance Color": "Rozet Bakım Rengi",
+ "Badge Warn Color": "Rozet Uyarı Rengi",
+ "Badge Warn Days": "Rozet Uyarı Günleri",
+ "Badge Down Days": "Rozet Hatalı Günleri",
+ "Badge Style": "Rozet Stili",
+ "Badge value (For Testing only.)": "Rozet değeri (Yalnızca Test için.)",
+ "Badge URL": "Rozet URL'i",
+ "Monitor Setting": "{0}'nin Monitör Ayarı",
+ "Show Clickable Link Description": "Eğer işaretlenirse, bu durum sayfasına erişimi olan herkes monitor URL'ine erişebilir.",
+ "Group": "Grup",
+ "Monitor Group": "Monitor Grup",
+ "Cannot connect to the socket server": "Soket sunucusuna bağlanılamıyor",
+ "Edit Maintenance": "Bakımı Düzenle",
+ "Reconnecting...": "Yeniden bağlanılıyor...",
+ "Home": "Anasayfa",
+ "noGroupMonitorMsg": "Uygun değil. Önce bir Grup Monitörü oluşturun.",
+ "Close": "Kapalı"
+}
diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json
new file mode 100644
index 000000000..b347956b1
--- /dev/null
+++ b/src/lang/uk-UA.json
@@ -0,0 +1,794 @@
+{
+ "languageName": "Українська",
+ "checkEverySecond": "Перевірка кожні {0} секунд",
+ "retriesDescription": "Максимальна кількість спроб перед позначенням сервісу як недоступного та надсиланням повідомлення",
+ "ignoreTLSError": "Ігнорувати помилку TLS/SSL для сайтів HTTPS",
+ "upsideDownModeDescription": "Реверс статусу сервісу. Якщо сервіс доступний, він позначається як НЕДОСТУПНИЙ.",
+ "maxRedirectDescription": "Максимальна кількість перенаправлень. Поставте 0, щоб вимкнути перенаправлення.",
+ "acceptedStatusCodesDescription": "Виберіть коди статусів для визначення доступності сервісу.",
+ "passwordNotMatchMsg": "Повторення паролю не збігається.",
+ "notificationDescription": "Прив'яжіть сповіщення до моніторів.",
+ "keywordDescription": "Пошук слова в чистому HTML або JSON-відповіді. Пошук чутливий до регістру.",
+ "pauseDashboardHome": "Пауза",
+ "deleteMonitorMsg": "Ви дійсно хочете видалити цей монітор?",
+ "deleteNotificationMsg": "Ви дійсно хочете видалити це сповіщення для всіх моніторів?",
+ "resolverserverDescription": "Cloudflare є сервером за замовчуванням. Ви завжди можете змінити цей сервер.",
+ "rrtypeDescription": "Виберіть тип ресурсного запису, який ви хочете відстежувати",
+ "pauseMonitorMsg": "Ви дійсно хочете поставити на паузу?",
+ "Settings": "Налаштування",
+ "Dashboard": "Панель керування",
+ "New Update": "Оновлення",
+ "Language": "Мова",
+ "Appearance": "Зовнішній вигляд",
+ "Theme": "Тема",
+ "General": "Загальне",
+ "Version": "Версія",
+ "Check Update On GitHub": "Перевірити оновлення на GitHub",
+ "List": "Список",
+ "Add": "Додати",
+ "Add New Monitor": "Новий монітор",
+ "Quick Stats": "Статистика",
+ "Up": "Доступний",
+ "Down": "Недоступний",
+ "Pending": "Очікування",
+ "Unknown": "Невідомо",
+ "Pause": "Пауза",
+ "Name": "Ім'я",
+ "Status": "Статус",
+ "DateTime": "Дата і час",
+ "Message": "Повідомлення",
+ "No important events": "Важливих подій немає",
+ "Resume": "Відновити",
+ "Edit": "Змінити",
+ "Delete": "Видалити",
+ "Current": "Поточний",
+ "Uptime": "Аптайм",
+ "Cert Exp.": "Сертифікат спливає",
+ "day": "день | днів",
+ "-day": "днів",
+ "hour": "година",
+ "-hour": "години",
+ "Response": "Відповідь",
+ "Ping": "Пінг",
+ "Monitor Type": "Тип монітора",
+ "Keyword": "Ключове слово",
+ "Friendly Name": "Ім'я",
+ "URL": "URL",
+ "Hostname": "Адреса хоста",
+ "Port": "Порт",
+ "Heartbeat Interval": "Частота опитування",
+ "Retries": "Спроб",
+ "Advanced": "Додатково",
+ "Upside Down Mode": "Реверс статусу",
+ "Max. Redirects": "Макс. кількість перенаправлень",
+ "Accepted Status Codes": "Припустимі коди статусу",
+ "Save": "Зберегти",
+ "Notifications": "Сповіщення",
+ "Not available, please setup.": "Доступних сповіщень немає, необхідно створити.",
+ "Setup Notification": "Створити сповіщення",
+ "Light": "Світла",
+ "Dark": "Темна",
+ "Auto": "Авто",
+ "Theme - Heartbeat Bar": "Тема - Смуга частоти опитування",
+ "Normal": "Звичайний",
+ "Bottom": "Знизу",
+ "None": "Відсутня",
+ "Timezone": "Часовий пояс",
+ "Search Engine Visibility": "Видимість для пошукових систем",
+ "Allow indexing": "Дозволити індексування",
+ "Discourage search engines from indexing site": "Заборонити індексування",
+ "Change Password": "Змінити пароль",
+ "Current Password": "Поточний пароль",
+ "New Password": "Новий пароль",
+ "Repeat New Password": "Повтор нового пароля",
+ "Update Password": "Оновити пароль",
+ "Disable Auth": "Вимкнути авторизацію",
+ "Enable Auth": "Увімкнути авторизацію",
+ "disableauth.message1": "Ви впевнені, що бажаєте вимкнути авторизацію ?",
+ "disableauth.message2": "Це підходить для тих, у кого встановлена інша авторизація пееред відкриттям Uptime Kuma, наприклад Cloudflare Access.",
+ "Please use this option carefully!": "Будь ласка, використовуйте з обережністю!",
+ "Logout": "Вийти",
+ "Leave": "Відміна",
+ "I understand, please disable": "Я розумію, все одно відключити",
+ "Confirm": "Підтвердити",
+ "Yes": "Так",
+ "No": "Ні",
+ "Username": "Логін",
+ "Password": "Пароль",
+ "Remember me": "Запам'ятати мене",
+ "Login": "Вхід до системи",
+ "No Monitors, please": "Моніторів немає, будь ласка",
+ "No Monitors": "Монітори відсутні",
+ "add one": "створіть новий",
+ "Notification Type": "Тип сповіщення",
+ "Email": "Пошта",
+ "Test": "Перевірка",
+ "Certificate Info": "Інформація про сертифікат",
+ "Resolver Server": "DNS сервер",
+ "Resource Record Type": "Тип ресурсного запису",
+ "Last Result": "Останній результат",
+ "Create your admin account": "Створіть обліковий запис адміністратора",
+ "Repeat Password": "Повторіть пароль",
+ "respTime": "Час відповіді (мс)",
+ "notAvailableShort": "Н/д",
+ "Create": "Створити",
+ "clearEventsMsg": "Ви дійсно хочете видалити всю статистику подій цього монітора?",
+ "clearHeartbeatsMsg": "Ви дійсно хочете видалити всю статистику опитувань цього монітора?",
+ "confirmClearStatisticsMsg": "Ви дійсно хочете видалити ВСЮ статистику?",
+ "Clear Data": "Видалити статистику",
+ "Events": "Події",
+ "Heartbeats": "Опитування",
+ "Auto Get": "Авто-отримання",
+ "enableDefaultNotificationDescription": "Для кожного нового монітора це сповіщення буде включено за замовчуванням. Ви все ще можете відключити сповіщення в кожному моніторі окремо.",
+ "Default enabled": "Використовувати за замовчуванням",
+ "Also apply to existing monitors": "Застосувати до існуючих моніторів",
+ "Export": "Експорт",
+ "Import": "Імпорт",
+ "backupDescription": "Ви можете зберегти резервну копію всіх моніторів та повідомлень у вигляді JSON-файлу.",
+ "backupDescription2": "P.S.: Історія та події збережені не будуть.",
+ "backupDescription3": "Важливі дані, такі як токени повідомлень, додаються під час експорту, тому зберігайте файли в безпечному місці.",
+ "alertNoFile": "Виберіть файл для імпорту.",
+ "alertWrongFileType": "Виберіть JSON-файл.",
+ "twoFAVerifyLabel": "Будь ласка, введіть свій токен, щоб перевірити роботу 2FA:",
+ "tokenValidSettingsMsg": "Токен дійсний! Тепер ви можете зберегти налаштування 2FA.",
+ "confirmEnableTwoFAMsg": "Ви дійсно хочете увімкнути 2FA?",
+ "confirmDisableTwoFAMsg": "Ви дійсно хочете вимкнути 2FA?",
+ "Apply on all existing monitors": "Застосувати до всіх існуючих моніторів",
+ "Verify Token": "Перевірити токен",
+ "Setup 2FA": "Налаштування 2FA",
+ "Enable 2FA": "Увімкнути 2FA",
+ "Disable 2FA": "Вимкнути 2FA",
+ "2FA Settings": "Налаштування 2FA",
+ "Two Factor Authentication": "Двофакторна аутентифікація",
+ "Active": "Активно",
+ "Inactive": "Неактивно",
+ "Token": "Токен",
+ "Show URI": "Показати URI",
+ "Clear all statistics": "Очистити статистику",
+ "retryCheckEverySecond": "Повтор кожні {0} секунд",
+ "importHandleDescription": "Виберіть \"Пропустити існуючі\", якщо ви хочете пропустити кожен монітор або повідомлення з таким же ім'ям. \"Перезаписати\" видалить кожен існуючий монітор або повідомлення та додасть заново. Варіант \"Не перевіряти\" примусово відновлює всі монітори і повідомлення, навіть якщо вони вже існують.",
+ "confirmImportMsg": "Ви дійсно хочете відновити резервну копію? Переконайтеся, що ви вибрали відповідний варіант імпорту.",
+ "Heartbeat Retry Interval": "Інтервал повтору опитування",
+ "Import Backup": "Імпорт",
+ "Export Backup": "Експорт",
+ "Skip existing": "Пропустити існуючі",
+ "Overwrite": "Перезаписати",
+ "Options": "Опції",
+ "Keep both": "Не перевіряти",
+ "Tags": "Теги",
+ "Add New below or Select...": "Додати новий або вибрати…",
+ "Tag with this name already exist.": "Такий тег вже існує.",
+ "Tag with this value already exist.": "Тег із таким значенням вже існує.",
+ "color": "колір",
+ "value (optional)": "значення (опціонально)",
+ "Gray": "Сірий",
+ "Red": "Червоний",
+ "Orange": "Помаранчевий",
+ "Green": "Зелений",
+ "Blue": "Синій",
+ "Indigo": "Індиго",
+ "Purple": "Пурпурний",
+ "Pink": "Рожевий",
+ "Search...": "Пошук…",
+ "Avg. Ping": "Середній пінг",
+ "Avg. Response": "Середній час відповіді",
+ "Entry Page": "Головна сторінка",
+ "statusPageNothing": "Тут порожньо. Додайте групу або монітор.",
+ "No Services": "Немає сервісів",
+ "All Systems Operational": "Всі системи працюють у штатному режимі",
+ "Partially Degraded Service": "Сервіси працюють частково",
+ "Degraded Service": "Всі сервіси не працюють",
+ "Add Group": "Додати групу",
+ "Add a monitor": "Додати монітор",
+ "Edit Status Page": "Редагувати",
+ "Go to Dashboard": "Панель управління",
+ "Status Page": "Сторінка статусу",
+ "Status Pages": "Сторінки статусу",
+ "Discard": "Скасування",
+ "Create Incident": "Створити інцидент",
+ "Switch to Dark Theme": "Темна тема",
+ "Switch to Light Theme": "Світла тема",
+ "telegram": "Telegram",
+ "webhook": "Вебхук",
+ "smtp": "Email (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Підтримка 50+ сервісів повідомлень)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "Primary Base URL": "Основна URL",
+ "Push URL": "URL пуша",
+ "needPushEvery": "Цю URL необхідно викликати кожні {0} секунд.",
+ "pushOptionalParams": "Додаткові параметри: {0}",
+ "defaultNotificationName": "Моє сповіщення {notification} ({number})",
+ "here": "тут",
+ "Required": "Потрібно",
+ "Bot Token": "Токен бота",
+ "wayToGetTelegramToken": "Ви можете взяти токен тут - {0}.",
+ "Chat ID": "ID чату",
+ "supportTelegramChatID": "Підтримуються ID чатів, груп та каналів",
+ "wayToGetTelegramChatID": "Ви можете взяти ID вашого чату, відправивши повідомлення боту і перейшовши по цьому URL для перегляду chat_id:",
+ "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ТУТ",
+ "chatIDNotFound": "ID чату не знайдено; будь ласка, відправте спочатку повідомлення боту",
+ "Post URL": "Post URL",
+ "Content Type": "Тип контенту",
+ "webhookJsonDesc": "{0} підходить для будь-яких сучасних HTTP-серверів, наприклад Express.js",
+ "webhookFormDataDesc": "{multipart} підходить для PHP. JSON-вивід необхідно буде обробити за допомогою {decodeFunction}",
+ "secureOptionNone": "Ні / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ігнорувати помилки TLS",
+ "From Email": "Від кого",
+ "emailCustomSubject": "Своя тема",
+ "To Email": "Кому",
+ "smtpCC": "Копія",
+ "smtpBCC": "Прихована копія",
+ "Discord Webhook URL": "Discord Вебхук URL",
+ "wayToGetDiscordURL": "Ви можете отримати його, перейшовши до Налаштування сервера -> Інтеграції -> Перегляд веб-хуків -> Новий веб-хук",
+ "Bot Display Name": "Ім'я бота, що відображається",
+ "Prefix Custom Message": "Свій префікс повідомлення",
+ "Hello @everyone is...": "Привіт {'@'}everyone це…",
+ "Webhook URL": "URL вебхука",
+ "wayToGetTeamsURL": "Як створити URL вебхука ви можете дізнатися тут - {0}.",
+ "Номер": "Номер",
+ "Recipients": "Одержувачі",
+ "needSignalAPI": "Вам необхідний клієнт Signal із підтримкою REST API.",
+ "wayToCheckSignalURL": "Пройдіть по цьому URL, щоб дізнатися як налаштувати такий клієнт:",
+ "signalImportant": "ВАЖЛИВО: Не можна змішувати в Одержувачах групи та номери!",
+ "Application Token": "Токен програми",
+ "Server URL": "URL сервера",
+ "Priority": "Пріоритет",
+ "Icon Emoji": "Іконка Emoji",
+ "Channel Name": "Ім'я каналу",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Більше інформації про вебхуки: {0}",
+ "aboutChannelName": "Введіть ім'я каналу в поле {0} Ім'я каналу, якщо ви хочете обійти канал вебхука. Наприклад: #other-channel",
+ "aboutKumaURL": "Якщо поле Uptime Kuma URL в налаштуваннях залишиться порожнім, за замовчуванням буде використовуватися посилання на проект на GitHub.",
+ "emojiCheatSheet": "Шпаргалка по Emoji: {0}",
+ "User Key": "Ключ користувача",
+ "Device": "Пристрій",
+ "Message Title": "Заголовок повідомлення",
+ "Notification Sound": "Звук сповіщення",
+ "More info on:": "Більше інформації: {0}",
+ "pushoverDesc1": "Екстренний пріоритет (2) має таймуут повтору за замовчуванням 30 секунд і закінчується через 1 годину.",
+ "pushoverDesc2": "Якщо ви бажаєте надсилати повідомлення різним пристроям, необхідно заповнити поле Пристрій.",
+ "SMS Type": "Тип SMS",
+ "octopushTypePremium": "Преміум (Швидкий - рекомендується для алертів)",
+ "octopushTypeLowCost": "Дешевий (Повільний - іноді блокується операторами)",
+ "checkPrice": "Тарифи {0}:",
+ "octopushLegacyHint": "Ви використовуєте стару версію Octopush (2011-2020) або нову?",
+ "Check octopush prices": "Тарифи Octopush {0}.",
+ "octopushPhoneNumber": "Номер телефону (між. формат, наприклад: +380123456789) ",
+ "octopushSMSSender": "Ім'я відправника SMS: 3-11 символів алвафіту, цифр та пробілів (a-zA-Z0-9)",
+ "LunaSea Device ID": "ID пристрою LunaSea",
+ "Apprise URL": "Apprise URL-адреса",
+ "Example:": "Приклад: {0}",
+ "Read more:": "Докладніше: {0}",
+ "Status:": "Статус: {0}",
+ "Read more": "Докладніше",
+ "appriseInstalled": "Apprise встановлено.",
+ "appriseNotInstalled": "Apprise не встановлено. {0}",
+ "Access Token": "Токен доступу",
+ "Channel access token": "Токен доступу каналу",
+ "Line Developers Console": "Консоль розробників Line",
+ "lineDevConsoleTo": "Консоль розробників Line - {0}",
+ "Basic Settings": "Базові налаштування",
+ "User ID": "ID користувача",
+ "Messaging API": "API повідомлень",
+ "wayToGetLineChannelToken": "Спочатку зайдіть в {0}, створіть провайдера та канал (API повідомлень), потім ви зможете отримати токен доступу каналу та ID користувача з вищезгаданих пунктів меню.",
+ "Icon URL": "URL іконки",
+ "aboutIconURL": "Ви можете надати посилання на іконку в полі \"URL іконки\", щоб перевизначити картинку профілю за замовчуванням. Не використовується, якщо задана іконка Emoji.",
+ "aboutMattermostChannelName": "Ви можете перевизначити канал за замовчуванням, в який пише вебхук, ввівши ім'я каналу в полі \"Ім'я каналу\". Це необхідно включити в налаштуваннях вебхука Mattermost. Наприклад: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - дешево та повільно, часто перевантажений. Тільки для одержувачів з Польщі.",
+ "promosmsTypeFlash": "SMS FLASH - повідомлення автоматично з'являться на пристрої одержувача. Тільки для одержувачів з Польщі.",
+ "promosmsTypeFull": "SMS FULL - преміум-рівень SMS, можна використовувати своє ім'я відправника (попередньо зареєструвавши його). Надійно для алертів.",
+ "promosmsTypeSpeed": "SMS SPEED - найвищий пріоритет у системі. Дуже швидко і надійно, але дуже дорого (вдвічі дорожче, ніж SMS FULL).",
+ "promosmsPhoneNumber": "Номер телефону (для одержувачів з Польщі можна пропустити код регіону)",
+ "promosmsSMSSender": "Ім'я відправника SMS: Зареєстроване або одне з імен за замовчуванням: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookURL": "Feishu WebHookURL",
+ "matrixHomeserverURL": "URL сервера (разом з http(s):// і опціонально порт)",
+ "Internal Room Id": "Внутрішній ID кімнати",
+ "matrixDesc1": "Внутрішній ID кімнати можна знайти в Подробицях у параметрах каналу вашого Matrix клієнта. Він повинен виглядати приблизно як !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Рекомендується створити нового користувача і не використовувати токен доступу особистого користувача Matrix, тому що це спричиняє повний доступ до облікового запису та до кімнат, в яких ви є. Замість цього створіть нового користувача і запросіть його тільки в ту кімнату, в якій ви хочете отримувати повідомлення.Токен доступу можна отримати, виконавши команду {0}",
+ "Method": "Метод",
+ "Body": "Тіло",
+ "Headers": "Заголовки",
+ "PushUrl": "URL пуша",
+ "HeadersInvalidFormat": "Заголовки запиту некоректні JSON: ",
+ "BodyInvalidFormat": "Тіло запиту некоректне JSON: ",
+ "Monitor History": "Статистика",
+ "clearDataOlderThan": "Зберігати статистику за {0} днів.",
+ "PasswordsDoNotMatch": "Паролі не співпадають.",
+ "records": "записів",
+ "One record": "Один запис",
+ "steamApiKeyDescription": "Для моніторингу ігрового сервера Steam вам потрібен Web-API ключ Steam. Зареєструвати його можна тут: ",
+ "Certificate Chain": "Ланцюжок сертифікатів",
+ "Valid": "Дійсний",
+ "Hide Tags": "Приховати теги",
+ "Title": "Заголовок",
+ "Content": "Зміст",
+ "Post": "Опублікувати",
+ "Cancel": "Скасувати",
+ "Created": "Створено",
+ "Unpin": "Відкріпити",
+ "Show Tags": "Показати теги",
+ "recent": "Зараз",
+ "3h": "3 години",
+ "6h": "6 годин",
+ "24h": "24 години",
+ "1w": "1 тиждень",
+ "No monitors available.": "Немає доступних моніторів.",
+ "Add one": "Додати новий",
+ "Backup": "Резервна копія",
+ "Security": "Безпека",
+ "Shrink Database": "Стиснути базу даних",
+ "Current User": "Поточний користувач",
+ "About": "Про програму",
+ "Description": "Опис",
+ "Powered by": "Працює на основі скрипту від",
+ "shrinkDatabaseDescription": "Включає VACUUM для бази даних SQLite. Якщо база даних була створена після версії 1.10.0, AUTO_VACUUM вже включений і ця дія не потрібна.",
+ "Style": "Стиль",
+ "info": "ІНФО",
+ "warning": "УВАГА",
+ "danger": "ПОМИЛКА",
+ "primary": "ОСНОВНИЙ",
+ "light": "СВІТЛИЙ",
+ "dark": "ТЕМНИЙ",
+ "New Status Page": "Нова сторінка статусу",
+ "Show update if available": "Показувати доступні оновлення",
+ "Also check beta release": "Перевіряти оновлення для бета версій",
+ "Add New Status Page": "Додати сторінку статусу",
+ "Next": "Далі",
+ "Acz characters: a-z 0-9 -": "Дозволені символи: a-z 0-9 -",
+ "Start or end with a-z 0-9 only": "Початок та закінчення імені лише на символи: a-z 0-9",
+ "No consecutive dashes --": "Заборонено використовувати тире --",
+ "HTTP Options": "HTTP Опції",
+ "Authentication": "Аутентифікація",
+ "HTTP Basic Auth": "Базова HTTP",
+ "PushByTechulus": "Push by Techulus",
+ "clicksendsms": "ClickSend SMS",
+ "GoogleChat": "Google Chat (тільки Google Workspace)",
+ "apiCredentials": "API реквізити",
+ "Done": "Готово",
+ "Info": "Інфо",
+ "Steam API Key": "Steam API-Ключ",
+ "Pick a RR-Type...": "Виберіть RR-тип…",
+ "Pick Accepted Status Codes...": "Виберіть прийняті коди стану…",
+ "Default": "За замовчуванням",
+ "Please input title and content": "Будь ласка, введіть назву та зміст",
+ "Last Updated": "Останнє Оновлення",
+ "Untitled Group": "Група без назви",
+ "Services": "Сервіси",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Користувач (включаючи префікс webapi_)",
+ "serwersmsAPIPassword": "API Пароль",
+ "serwersmsPhoneNumber": "Номер телефону",
+ "serwersmsSenderName": "SMS ім'я відправника (реєстрований через портал користувача)",
+ "stackfield": "Stackfield",
+ "smtpDkimSettings": "DKIM Налаштування",
+ "smtpDkimDesc": "Повернутися до Nodemailer DKIM {0} для використання.",
+ "documentation": "документація",
+ "smtpDkimDomain": "Ім'я домена",
+ "smtpDkimKeySelector": "Ключ",
+ "smtpDkimPrivateKey": "Приватний ключ",
+ "smtpDkimHashAlgo": "Алгоритм хеша (опціонально)",
+ "smtpDkimheaderFieldNames": "Заголовок ключів для підпису (опціонально)",
+ "smtpDkimskipFields": "Заколовок ключів не для підпису (опціонально)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "Кінцева точка API",
+ "alertaEnvironment": "Середовище",
+ "alertaApiKey": "Ключ API",
+ "alertaAlertState": "Стан алерту",
+ "alertaRecoverState": "Стан відновлення",
+ "deleteStatusPageMsg": "Дійсно хочете видалити цю сторінку статусів?",
+ "Proxies": "Проксі",
+ "default": "За замовчуванням",
+ "enabled": "Активно",
+ "setAsDefault": "Встановити за замовчуванням",
+ "deleteProxyMsg": "Ви впевнені, що хочете видалити цей проксі для всіх моніторів?",
+ "proxyDescription": "Щоб функціонувати, монітору потрібно призначити проксі.",
+ "enableProxyDescription": "Цей проксі не впливатиме на запити моніторингу, доки його не буде активовано. Ви можете контролювати тимчасове відключення проксі з усіх моніторів за статусом активації.",
+ "setAsDefaultProxyDescription": "Цей проксі буде ввімкнено за умовчанням для нових моніторів. Ви все одно можете вимкнути проксі окремо для кожного монітора.",
+ "Invalid": "Недійсний",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "PhoneNumbers",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Шаблон смс повинен містити параметри: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "Для безпеки необхідно використовувати секретний ключ",
+ "Device Token": "Токен пристрою",
+ "Platform": "Платформа",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "Високий",
+ "Retry": "Повтор",
+ "Topic": "Тема",
+ "WeCom Bot Key": "WeCom Bot ключ",
+ "Setup Proxy": "Налаштувати проксі",
+ "Proxy Protocol": "Протокол проксі",
+ "Proxy Server": "Проксі-сервер",
+ "Proxy server has authentication": "Проксі-сервер має аутентифікацію",
+ "User": "Користувач",
+ "Installed": "Встановлено",
+ "Not installed": "Не встановлено",
+ "Running": "Запущено",
+ "Not running": "Не запущено",
+ "Remove Token": "Видалити токен",
+ "Start": "Запустити",
+ "Stop": "Зупинити",
+ "Uptime Kuma": "Uptime Kuma",
+ "Slug": "Slug",
+ "Accept characters:": "Прийняти символи:",
+ "startOrEndWithOnly": "Починається або закінчується лише {0}",
+ "No consecutive dashes": "Немає послідовних тире",
+ "The slug is already taken. Please choose another slug.": "Slug вже зайнятий. Будь ласка, виберіть інший slug.",
+ "No Proxy": "Без проксі",
+ "Page Not Found": "Сторінку не знайдено",
+ "Reverse Proxy": "Реверсивний проксі",
+ "wayToGetCloudflaredURL": "(Завантажити Cloudflare з {0})",
+ "cloudflareWebsite": "Веб-сайт Cloudflare",
+ "Message:": "Повідомлення:",
+ "Don't know how to get the token? Please read the guide:": "Не знаєте, як отримати токен? Прочитайте посібник:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Поточне з’єднання може бути втрачено, якщо ви зараз під’єднуєтеся через Cloudflare Tunnel. Ви дійсно хочете зробити це? Для підтвердження введіть поточний пароль.",
+ "Other Software": "Інше програмне забезпечення",
+ "For example: nginx, Apache and Traefik.": "Наприклад: nginx, Apache and Traefik.",
+ "Please read": "Будь ласка, прочитайте",
+ "Subject:": "Тема:",
+ "Valid To:": "Дійсний до:",
+ "Days Remaining:": "Залишилось днів:",
+ "Issuer:": "Емітент:",
+ "Fingerprint:": "Відбиток:",
+ "No status pages": "Немає сторінок статусу",
+ "Domain Name Expiry Notification": "Сповіщення про закінчення терміну дії доменного імені",
+ "Proxy": "Проксі",
+ "Date Created": "Дата створення",
+ "onebotHttpAddress": "OneBot адреса HTTP",
+ "onebotMessageType": "OneBot тип повідомлення",
+ "onebotGroupMessage": "Група",
+ "onebotPrivateMessage": "Приватне",
+ "onebotUserOrGroupId": "Група/ID користувача",
+ "onebotSafetyTips": "Для безпеки необхідно встановити маркер доступу",
+ "PushDeer Key": "PushDeer ключ",
+ "Footer Text": "Текст нижнього колонтитула",
+ "Show Powered By": "Показувати платформу",
+ "Domain Names": "Доменні імена",
+ "signedInDisp": "Ви ввійшли як {0}",
+ "signedInDispDisabled": "Авторизація вимкнена.",
+ "Certificate Expiry Notification": "Сповіщення про закінчення терміну дії сертифіката",
+ "API Username": "Користувач API",
+ "API Key": "Ключ API",
+ "Recipient Number": "Номер одержувача",
+ "From Name/Number": "Від Ім'я/Номер",
+ "Leave blank to use a shared sender number.": "Залиште поле порожнім, щоб використовувати спільний номер відправника.",
+ "Octopush API Version": "Octopush API версія",
+ "Legacy Octopush-DM": "Застарілий Octopush-DM",
+ "endpoint": "кінцева точка",
+ "octopushAPIKey": "\"Ключ API\" з облікових даних HTTP API в панелі керування",
+ "octopushLogin": "\"Ім'я користувача\" з облікових даних HTTP API на панелі керування",
+ "promosmsLogin": "API Логін",
+ "promosmsPassword": "API Пароль",
+ "pushoversounds pushover": "Pushover (по замовчуванню)",
+ "pushoversounds bike": "Велосипед",
+ "pushoversounds bugle": "Горн",
+ "pushoversounds cashregister": "Касовий апарат",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Падіння",
+ "pushoversounds gamelan": "Гамелан",
+ "pushoversounds incoming": "Вхідний",
+ "pushoversounds intermission": "Антракт",
+ "pushoversounds magic": "Магія",
+ "pushoversounds mechanical": "Механічний",
+ "pushoversounds pianobar": "Піано-бар",
+ "pushoversounds siren": "Сирена",
+ "pushoversounds spacealarm": "Космічна тривога",
+ "pushoversounds tugboat": "Буксирний катер",
+ "pushoversounds alien": "Тривога прибульців (довга)",
+ "pushoversounds climb": "Підйом (довгий)",
+ "pushoversounds persistent": "Стійкий (довгий)",
+ "pushoversounds echo": "Pushover ехо (довгий)",
+ "pushoversounds updown": "Вгору вниз (довгий)",
+ "pushoversounds vibrate": "Тільки вібрація",
+ "pushoversounds none": "Нічого (тиша)",
+ "pushyAPIKey": "Секретний ключ API",
+ "pushyToken": "Токен пристрою",
+ "Using a Reverse Proxy?": "Використовувати зворотній проксі?",
+ "Check how to config it for WebSocket": "Перевірте, як налаштувати його для WebSocket",
+ "Steam Game Server": "Ігровий сервер Steam",
+ "Most likely causes:": "Найімовірніші причини:",
+ "The resource is no longer available.": "Ресурс більше не доступний.",
+ "There might be a typing error in the address.": "Можливо, в адресі є помилка.",
+ "What you can try:": "Що ви можете спробувати:",
+ "Retype the address.": "Повторно введіть адресу.",
+ "Go back to the previous page.": "Повернутися на попередню сторінку.",
+ "Coming Soon": "Незабаром",
+ "wayToGetClickSendSMSToken": "Ви можете отримати ім’я користувача API та ключ API з {0} .",
+ "Connection String": "Рядок підключення",
+ "Query": "Запит",
+ "settingsCertificateExpiry": "Закінчення терміну дії сертифіката TLS",
+ "certificationExpiryDescription": "Запуск сповіщення для HTTPS моніторів коли до закінчення терміну дії TLS сертифіката:",
+ "ntfy Topic": "ntfy Тема",
+ "Domain": "Домен",
+ "Workstation": "Робоча станція",
+ "disableCloudflaredNoAuthMsg": "Ви перебуваєте в режимі без авторизації, пароль не потрібен.",
+ "Schedule maintenance": "Графік обслуговування",
+ "Affected Monitors": "Задіяні монітори",
+ "HomeAssistant": "Home Assistant",
+ "smseaglePriority": "Пріоритет повідомлення (0-9, за замовчуванням = 0)",
+ "smseagleRecipient": "Отримувач(і) (декілька отримувачів повинні бути відокремлені комами)",
+ "markdownSupported": "Підтримується синтаксис розмітки",
+ "Resend Notification if Down X times consequently": "Повторно надсилати сповіщення, якщо падіння відбулося X разів підряд",
+ "resendEveryXTimes": "Повторно відправляти кожні {0} разів",
+ "resendDisabled": "Повторне надсилання вимкнено",
+ "Start of maintenance": "Початок обслуговування",
+ "Select status pages...": "Вибери сторінку стану…",
+ "All Status Pages": "Всі сторінки станів",
+ "Passive Monitor Type": "Пасивний моніторинг",
+ "Specific Monitor Type": "Специфічний моніторинг",
+ "Monitor": "Монітор | Монітори",
+ "smseagle": "SMSEagle",
+ "smseagleEncoding": "Надсилати в Unicode",
+ "smseagleUrl": "URL-адреса пристрою SMSEagle",
+ "smseagleToken": "Токен доступу API",
+ "smseagleRecipientType": "Тип одержувача",
+ "smseagleContact": "Телефонний контакт(и)",
+ "smseagleGroup": "Телефонна група(и)",
+ "smseagleTo": "Телефонний номер(и)",
+ "Help": "Допомога",
+ "Game": "Гра",
+ "Pick Affected Monitors...": "Виберіть задіяні монітори…",
+ "statusMaintenance": "Обслуговування",
+ "Maintenance": "Обслуговування",
+ "General Monitor Type": "Основний моніторинг",
+ "error": "Помилка",
+ "webhookAdditionalHeadersTitle": "Додаткові заголовки",
+ "webhookAdditionalHeadersDesc": "Задати додаткові заголовки, що за допомогою вебхука.",
+ "critical": "Критичний",
+ "Custom": "Нестандартний",
+ "successMessage": "Повідомлення про успіх",
+ "Customize": "Налаштувати",
+ "topic": "Тема",
+ "Body Encoding": "Кодування тіла",
+ "Event type:": "Тип події:",
+ "Event data:": "Дані подій:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Потім виберіть дію, наприклад, перемкнути сцену на червоне світло RGB.",
+ "backupRecommend": "Будь ласка, натомість створіть резервну копію тому або теки даних (./data/) напряму.",
+ "Optional": "Необов'язково",
+ "recurringInterval": "Інтервал",
+ "Recurring": "Повторюваний",
+ "strategyManual": "Активний/Неактивний вручну",
+ "telegramSendSilently": "Надіслати беззвучно",
+ "telegramSendSilentlyDescription": "Надсилає повідомлення беззвучно. Користувачі отримають сповіщення без звуку.",
+ "Trigger type:": "Тип тригера:",
+ "dayOfWeek": "День тижня",
+ "lastDay": "Останній день",
+ "warningTimezone": "Використовується часовий пояс сервера",
+ "weekdayShortMon": "Пн",
+ "weekdayShortTue": "Вт",
+ "weekdayShortWed": "Ср",
+ "weekdayShortThu": "Чт",
+ "weekdayShortFri": "Пт",
+ "weekdayShortSun": "Нд",
+ "Single Maintenance Window": "Разове технічне обслуговування",
+ "Maintenance Time Window of a Day": "Період доби для технічного обслуговування",
+ "Effective Date Range": "Діапазон дат вступу в силу (необов'язково)",
+ "Schedule Maintenance": "Розклад обслуговування",
+ "DateTime Range": "Діапазон дат і часу",
+ "loadingError": "Не вдалося отримати дані, спробуйте пізніше.",
+ "install": "Встановити",
+ "installing": "Встановлення",
+ "uninstall": "Видалити",
+ "API Keys": "API-ключі",
+ "Expiry": "Закінчення терміну дії",
+ "Expiry date": "Дата закінчення терміну дії",
+ "Don't expire": "Не прострочувати термін дії",
+ "Continue": "Продовжити",
+ "Add Another": "Додати ще",
+ "Key Added": "Ключ додано",
+ "No API Keys": "Немає API-ключів",
+ "apiKey-active": "Активний",
+ "apiKey-inactive": "Неактивний",
+ "Expires": "Термін дії закінчується",
+ "deleteAPIKeyMsg": "Ви впевнені, що хочете видалити цей API-ключ?",
+ "Generate": "Згенерувати",
+ "pagertreeIntegrationUrl": "URL-адреса інтеграції",
+ "pagertreeSilent": "Тихо",
+ "pagertreeUrgency": "Терміновість",
+ "pagertreeLow": "Низька",
+ "pagertreeMedium": "Середня",
+ "pagertreeHigh": "Висока",
+ "pagertreeCritical": "Критична",
+ "pagertreeResolve": "Автоматичне вирішення",
+ "Edit Tag": "Редагувати тег",
+ "Server Address": "Адреса сервера",
+ "Learn More": "Дізнатися більше",
+ "or": "або",
+ "uninstalling": "Видалення",
+ "confirmUninstallPlugin": "Ви дійсно хочете видалити цей плагін?",
+ "notificationRegional": "Регіональні",
+ "Clone Monitor": "Копія",
+ "Clone": "Скопіювати",
+ "cloneOf": "Копія {0}",
+ "Custom Footer": "Користувацький Footer",
+ "Strategy": "Стратегія",
+ "Free Mobile User Identifier": "ID користувача Free Mobile",
+ "SendKey": "SendKey",
+ "Gateway Type": "Тип шлюзу",
+ "You can divide numbers with": "Числа можна ділити за допомогою",
+ "Bark Group": "Bark група",
+ "Bark Sound": "Bark звук",
+ "Custom CSS": "Користувацький CSS",
+ "promosmsAllowLongSMS": "Дозволити довгі SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "auto resolve": "автоматичне вирішення",
+ "RadiusCallingStationIdDescription": "Ідентифікатор пристрою, який викликає",
+ "telegramMessageThreadID": "(Необов'язково) ID теми повідомлення",
+ "telegramMessageThreadIDDescription": "Необов'язковий ID для цільової гілки повідомлень (теми) форуму; тільки для форумів супергруп",
+ "backupOutdatedWarning": "Застаріло: Оскільки було додано багато функцій і ця функція резервного копіювання дещо застаріла, вона не може створити або відновити повну резервну копію.",
+ "dnsCacheDescription": "Це може не працювати в деяких середовищах IPv6, вимкніть це, якщо у вас виникнуть проблеми.",
+ "deleteMaintenanceMsg": "Ви дійсно хочете видалити це технічне обслуговування?",
+ "dnsPortDescription": "Порт DNS-сервера. За замовчуванням 53. Ви можете змінити порт у будь-який час.",
+ "recurringIntervalMessage": "Запускати раз на день | Запускати раз на {0} дні(в)",
+ "SMSManager API Docs": "SMSManager API документація ",
+ "Base URL": "Базова URL-адреса",
+ "goAlertInfo": "GoAlert - це програма з відкритим вихідним кодом для планування викликів, автоматичної ескалації та сповіщень (наприклад, SMS або голосових дзвінків). Автоматично залучайте потрібну людину, потрібним чином і в потрібний час! {0}",
+ "goAlertIntegrationKeyInfo": "Отримайте універсальний ключ інтеграції API для сервісу у форматі \"aaaaaaaa-bbbb-bbbb-cccc-dddd-eeeeeeeeeeee\", зазвичай це значення параметра токену скопійованої URL-адреси.",
+ "wayToGetPagerDutyKey": "Ви можете отримати його, перейшовши до Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тут ви можете шукати \"Events API V2\". Більше інформації {0}",
+ "Google Analytics ID": "Google Analytics ID",
+ "apiKeyAddedMsg": "Ваш API-ключ додано. Будь ласка, запам'ятайте його, оскільки він більше не буде показаний.",
+ "Add API Key": "Додати API-ключ",
+ "apiKey-expired": "Прострочений",
+ "disableAPIKeyMsg": "Ви впевнені, що хочете деактивувати цей API-ключ?",
+ "pagertreeDoNothing": "Нічого не робити",
+ "wayToGetPagerTreeIntegrationURL": "Після створення інтеграції Uptime Kuma в PagerTree скопіюйте Endpoint. Дивіться повну інформацію {0}",
+ "Automations can optionally be triggered in Home Assistant:": "За бажанням можна активувати автоматизацію в Home Assistant:",
+ "dayOfMonth": "День місяця",
+ "telegramProtectContent": "Захист від пересилання/збереження",
+ "telegramProtectContentDescription": "Якщо увімкнено, повідомлення бота в Telegram будуть захищені від пересилання та збереження.",
+ "Notification Service": "Сервіс сповіщень",
+ "default: notify all devices": "за замовчуванням: сповіщати всі пристрої",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Список сервісів сповіщень можна знайти в Home Assistant в розділі \"Інструменти для розробників > Служби\", виконавши пошук за словом \"notification\" і знайшовши назву свого пристрою/телефону.",
+ "weekdayShortSat": "Сб",
+ "lastDay1": "Останній день місяця",
+ "lastDay2": "2-й останній день місяця",
+ "lastDay3": "3-й останній день місяця",
+ "lastDay4": "4-й останній день місяця",
+ "No Maintenance": "Немає технічного обслуговування",
+ "pauseMaintenanceMsg": "Ви впевнені, що хочете поставити на паузу?",
+ "maintenanceStatus-under-maintenance": "Перебуває на технічному обслуговуванні",
+ "maintenanceStatus-inactive": "Неактивне",
+ "maintenanceStatus-scheduled": "Заплановане",
+ "maintenanceStatus-ended": "Завершене",
+ "maintenanceStatus-unknown": "Невідоме",
+ "Display Timezone": "Відображати часовий пояс",
+ "Server Timezone": "Часовий пояс сервера",
+ "statusPageMaintenanceEndDate": "Закінчення",
+ "IconUrl": "URL-адреса іконки",
+ "Enable DNS Cache": "Увімкнути DNS-кеш",
+ "Enable": "Увімкнути",
+ "confirmDeleteTagMsg": "Ви впевнені, що хочете видалити цей тег? Монітори, пов'язані з цим тегом, не будуть видалені.",
+ "Guild ID": "ID гільдії",
+ "Free Mobile API Key": "Free Mobile API ключ",
+ "Enable TLS": "Увімкнути TLS",
+ "Proto Service Name": "Назва Proto-сервісу",
+ "Proto Content": "Вміст Proto",
+ "Proto Method": "Метод Proto",
+ "Economy": "Економічний",
+ "Lowcost": "Дешевий",
+ "Custom Monitor Type": "Користувацький тип монітора",
+ "topicExplanation": "MQTT тема для моніторингу",
+ "successMessageExplanation": "MQTT-повідомлення, яке буде вважатися успішним",
+ "HTTP Headers": "HTTP заголовки",
+ "Trust Proxy": "Довірений проксі",
+ "RadiusSecret": "Секрет Radius",
+ "RadiusSecretDescription": "Спільний секрет між клієнтом і сервером",
+ "RadiusCalledStationId": "ID станції, що викликається",
+ "Frontend Version": "Версія інтерфейсу",
+ "Frontend Version do not match backend version!": "Версія інтерфейсу не збігається з версією бекенду!",
+ "Number": "Номер",
+ "dataRetentionTimeError": "Період зберігання повинен бути 0 або більше",
+ "infiniteRetention": "Встановіть 0 для нескінченного зберігання.",
+ "affectedMonitorsDescription": "Виберіть монітори, які зачепить поточне технічне обслуговування",
+ "affectedStatusPages": "Показувати це повідомлення про технічне обслуговування на вибраних сторінках стану",
+ "atLeastOneMonitor": "Виберіть принаймні один монітор, який зазнав впливу",
+ "wayToGetKookBotToken": "Створіть заявку та отримайте токен бота тут {0}",
+ "wayToGetKookGuildID": "Увімкніть \"Режим розробника\" в налаштуваннях Kook і клацніть правою кнопкою миші на гільдії, щоб отримати її ID",
+ "Date and Time": "Дата і час",
+ "Integration Key": "Ключ інтеграції",
+ "Integration URL": "URL-адреса інтеграції",
+ "Auto resolve or acknowledged": "Автоматично вирішено або підтверджено",
+ "do nothing": "нічого не робити",
+ "auto acknowledged": "автоматично підтверджено",
+ "plugin": "Плагін | Плагіни",
+ "RadiusCalledStationIdDescription": "Ідентифікатор пристрою, що викликається",
+ "RadiusCallingStationId": "ID станції, яка викликає",
+ "Setup Docker Host": "Налаштування Docker-хосту",
+ "Connection Type": "Тип підключення",
+ "Docker Daemon": "Docker Daemon",
+ "socket": "Сокет",
+ "tcp": "TCP / HTTP",
+ "Container Name / ID": "Назва / ID контейнера",
+ "deleteDockerHostMsg": "Ви дійсно хочете видалити цей Docker-хост для всіх моніторів?",
+ "Docker Container": "Docker-контейнер",
+ "Docker Host": "Docker-хост",
+ "Docker Hosts": "Docker-хости",
+ "wayToGetZohoCliqURL": "Ви можете дізнатися, як створити URL-адресу веб-хука {0}.",
+ "enableGRPCTls": "Дозволити надсилати gRPC-запити з TLS-з'єднанням",
+ "grpcMethodDescription": "Ім'я методу перетворюється у формат cammelCase, наприклад, sayHello, check тощо.",
+ "Packet Size": "Розмір пакету",
+ "trustProxyDescription": "Довіряти заголовкам 'X-Forwarded-*'. Якщо ви хочете отримати правильний клієнтський IP, а ваш Uptime Kuma знаходиться за проксі-сервером, таким як Nginx або Apache, вам слід увімкнути цю опцію.",
+ "wayToGetLineNotifyToken": "Ви можете отримати токен доступу з {0}",
+ "Examples": "Приклади",
+ "Home Assistant URL": "URL-адреса Home Assistant",
+ "Long-Lived Access Token": "Довготривалий токен доступу",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Довготривалий токен доступу можна створити, натиснувши на ім'я вашого профілю (внизу ліворуч), прокрутивши його донизу і натиснувши кнопку Створити токен. ",
+ "high": "високий",
+ "Disable": "Вимкнути",
+ "Resend Notification if Down X times consecutively": "Повторно надіслати сповіщення, якщо було падіння X разів поспіль",
+ "lunaseaTarget": "Ціль",
+ "Add New Tag": "Додати новий тег",
+ "lunaseaDeviceID": "ID пристрою",
+ "lunaseaUserID": "ID користувача",
+ "twilioAccountSID": "SID облікового запису",
+ "twilioAuthToken": "Токен авторизації",
+ "twilioFromNumber": "З номера",
+ "twilioToNumber": "На номер",
+ "sameAsServerTimezone": "Такий самий, як часовий пояс сервера",
+ "startDateTime": "Дата і час початку",
+ "endDateTime": "Дата і час закінчення",
+ "cronExpression": "Cron-вираз",
+ "cronSchedule": "Розклад: ",
+ "invalidCronExpression": "Неправильний Cron-вираз: {0}",
+ "statusPageRefreshIn": "Оновлювати кожні: {0}",
+ "ntfyAuthenticationMethod": "Метод автентифікації",
+ "ntfyUsernameAndPassword": "Ім'я користувача та пароль",
+ "pushoverMessageTtl": "TTL повідомлення (секунди)",
+ "Monitor Setting": "Налаштування монітора {0}",
+ "Show Clickable Link": "Показувати клікабельне посилання",
+ "Show Clickable Link Description": "Якщо позначено, кожен, хто має доступ до цієї сторінки статусу, може мати доступ до URL-адреси моніторингу.",
+ "Open Badge Generator": "Відкрити генератор бейджів",
+ "Badge Generator": "Генератор бейджів {0}",
+ "Badge Type": "Тип бейджа",
+ "Badge Duration": "Тривалість бейджа",
+ "Badge Label": "Ярлик бейджа",
+ "Badge Prefix": "Префікс бейджа",
+ "Badge Suffix": "Суфікс бейджа",
+ "Badge Label Color": "Колір ярлика бейджа",
+ "Badge Color": "Колір бейджа",
+ "Badge Label Prefix": "Префікс ярлика бейджа",
+ "Badge Label Suffix": "Суфікс ярлика бейджа",
+ "Badge Style": "Стиль бейджа",
+ "Badge value (For Testing only.)": "Значення бейджа (тільки для тестування.)",
+ "Badge URL": "URL бейджа",
+ "Badge Up Color": "Колір бейджа \"Доступний\"",
+ "Badge Down Color": "Колір бейджа \"Недоступний\"",
+ "Badge Pending Color": "Колір бейджа \"Очікування\"",
+ "Badge Warn Color": "Колір бейджа \"Попередження\"",
+ "Badge Warn Days": "Бейдж \"Днів попередження\"",
+ "Badge Maintenance Color": "Колір бейджа \"Обслуговування\"",
+ "Badge Down Days": "Бейдж \"Днів недоступний\"",
+ "Group": "Група",
+ "Monitor Group": "Група моніторів",
+ "Edit Maintenance": "Редагувати обслуговування",
+ "Cannot connect to the socket server": "Не вдається підключитися до сервера сокетів",
+ "Reconnecting...": "Повторне підключення...",
+ "Home": "Головна",
+ "noGroupMonitorMsg": "Недоступно. Спочатку створіть групу моніторів.",
+ "Close": "Закрити"
+}
diff --git a/src/lang/ur.json b/src/lang/ur.json
new file mode 100644
index 000000000..0e364e3e0
--- /dev/null
+++ b/src/lang/ur.json
@@ -0,0 +1,451 @@
+{
+ "Dashboard": "ڈیش بورڈ",
+ "New Update": "نئی تازہ کاری",
+ "Language": "زبان",
+ "Appearance": "ظہور",
+ "Theme": "خیالیہ",
+ "General": "جنرل",
+ "Game": "کھیل",
+ "Version": "ورژن",
+ "List": "فہرست",
+ "Add": "شامل کریں۔",
+ "Add New Monitor": "نیا مانیٹر شامل کریں",
+ "Quick Stats": "فوری اعدادوشمار",
+ "Up": "اوپر",
+ "Down": "نیچے",
+ "statusMaintenance": "دیکھ بھال",
+ "Maintenance": "دیکھ بھال",
+ "Unknown": "نامعلوم",
+ "General Monitor Type": "جنرل مانیٹر کی قسم",
+ "Specific Monitor Type": "مانیٹر کی مخصوص قسم",
+ "markdownSupported": "مارک ڈاون نحو کی حمایت کی گئی",
+ "pauseDashboardHome": "توقف",
+ "Pause": "توقف",
+ "Name": "نام",
+ "Status": "حالت",
+ "DateTime": "تاریخ وقت",
+ "Message": "پیغام",
+ "Resume": "دوبارہ شروع کریں",
+ "Edit": "ترمیم",
+ "Delete": "حذف کریں",
+ "Current": "کرنٹ",
+ "Uptime": "اپ ٹائم",
+ "Cert Exp.": "Cert Exp .",
+ "Monitor": "مانیٹر | مانیٹر",
+ "day": "دن | دن",
+ "-day": "-دن",
+ "hour": "گھنٹہ",
+ "Response": "جواب",
+ "Check Update On GitHub": "GitHub پر اپ ڈیٹ چیک کریں",
+ "Ping": "پنگ",
+ "Monitor Type": "مانیٹر کی قسم",
+ "Friendly Name": "دوستانہ نام",
+ "URL": "URL",
+ "Hostname": "میزبان کا نام",
+ "Port": "بندرگاہ",
+ "Heartbeat Interval": "دل کی دھڑکن کا وقفہ",
+ "Heartbeat Retry Interval": "دل کی دھڑکن دوبارہ کوشش کا وقفہ",
+ "Advanced": "اعلی درجے کی",
+ "checkEverySecond": "ہر {0} سیکنڈ میں چیک کریں",
+ "retryCheckEverySecond": "ہر {0} سیکنڈ میں دوبارہ کوشش کریں",
+ "Help": "مدد",
+ "ignoreTLSError": "HTTPS ویب سائٹس کے لیے TLS/SSL کی خرابی کو نظر انداز کریں",
+ "upsideDownModeDescription": "اسٹیٹس کو الٹا پلٹائیں۔ اگر سروس قابل رسائی ہے، تو یہ نیچے ہے۔",
+ "Upside Down Mode": "الٹا ڈاؤن موڈ",
+ "Max. Redirects": "زیادہ سے زیادہ ری ڈائریکٹ کرتا ہے",
+ "Accepted Status Codes": "قبول شدہ اسٹیٹس کوڈز",
+ "Push URL": "یو آر ایل کو پش کریں",
+ "needPushEvery": "آپ کو اس URL کو ہر {0} سیکنڈ میں کال کرنا چاہیے۔",
+ "pushOptionalParams": "اختیاری پیرامیٹرز: {0}",
+ "Save": "محفوظ کریں",
+ "Notifications": "اطلاعات",
+ "Setup Notification": "سیٹ اپ نوٹیفکیشن",
+ "Light": "روشنی",
+ "Dark": "اندھیرا",
+ "Auto": "آٹو",
+ "Theme - Heartbeat Bar": "تھیم - دل کی دھڑکن بار",
+ "Normal": "نارمل",
+ "Bottom": "نیچے",
+ "None": "کوئی نہیں۔",
+ "Search Engine Visibility": "سرچ انجن کی مرئیت",
+ "Allow indexing": "اشاریہ سازی کی اجازت دیں",
+ "Change Password": "پاس ورڈ تبدیل کریں",
+ "Current Password": "موجودہ خفیہ لفظ",
+ "New Password": "نیا پاس ورڈ",
+ "Repeat New Password": "نیا پاس ورڈ دہرائیں",
+ "Update Password": "پاس ورڈ اپ ڈیٹ کریں",
+ "Disable Auth": "Auth کو غیر فعال کریں",
+ "Enable Auth": "Auth کو فعال کریں",
+ "Please use this option carefully!": "براہ کرم اس اختیار کو احتیاط سے استعمال کریں!",
+ "Logout": "لاگ آوٹ",
+ "Leave": "چھوڑو",
+ "I understand, please disable": "میں سمجھتا ہوں، براہ کرم غیر فعال کریں",
+ "Confirm": "تصدیق کریں",
+ "Yes": "جی ہاں",
+ "No": "نہیں",
+ "Username": "صارف نام",
+ "Password": "پاس ورڈ",
+ "Remember me": "مجھے پہچانتے ہو",
+ "Login": "لاگ ان کریں",
+ "No Monitors, please": "کوئی مانیٹر نہیں، براہ کرم",
+ "add one": "ایک شامل کریں",
+ "Notification Type": "اطلاع کی قسم",
+ "Email": "ای میل",
+ "Test": "پرکھ",
+ "Certificate Info": "سرٹیفکیٹ کی معلومات",
+ "Resource Record Type": "ریسورس ریکارڈ کی قسم",
+ "goAlert": "الرٹ جاؤ",
+ "SecretAccessKey": "کلیدی ID تک رسائی حاصل کریں",
+ "PhoneNumbers": "فون نمبر",
+ "TemplateCode": "ٹیمپلیٹ کوڈ",
+ "SignName": "سائن نام",
+ "Bark Endpoint": "بارک اینڈ پوائنٹ",
+ "Bark Group": "بارک گروپ",
+ "AccessKeyId": "کلیدی ID تک رسائی حاصل کریں",
+ "languageName": "انگریزی",
+ "Settings": "ترتیبات",
+ "Primary Base URL": "بنیادی بنیاد URL",
+ "Pending": "زیر التواء",
+ "Passive Monitor Type": "غیر فعال مانیٹر کی قسم",
+ "No important events": "کوئی اہم واقعات نہیں",
+ "-hour": "-گھنٹہ",
+ "shrinkDatabaseDescription": "SQLite کے لیے ڈیٹا بیس ویکیوم کو متحرک کریں۔ اگر آپ کا ڈیٹا بیس 1.10.0 کے بعد بنتا ہے، تو AUTO_VACUUM پہلے ہی فعال ہے اور اس کارروائی کی ضرورت نہیں ہے۔",
+ "goAlertIntegrationKeyInfo": "اس فارمیٹ میں سروس کے لیے عام API انٹیگریشن کلید حاصل کریں \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee\" عام طور پر کاپی شدہ URL کے ٹوکن پیرامیٹر کی قدر۔",
+ "Sms template must contain parameters: ": "ایس ایم ایس ٹیمپلیٹ میں پیرامیٹرز ہونا ضروری ہے: ",
+ "Keyword": "کلیدی لفظ",
+ "Retries": "دوبارہ کوشش کرتا ہے",
+ "Resend Notification if Down X times consequently": "نوٹیفکیشن دوبارہ بھیجیں اگر X بار لگاتار نیچے جائیں",
+ "resendEveryXTimes": "ہر {0} بار دوبارہ بھیجیں",
+ "resendDisabled": "دوبارہ بھیجنا غیر فعال ہے",
+ "retriesDescription": "سروس کو ڈاؤن کے بطور نشان زد کرنے اور ایک اطلاع بھیجے جانے سے پہلے زیادہ سے زیادہ کوششیں کریں",
+ "maxRedirectDescription": "فالو کرنے کے لیے ری ڈائریکٹس کی زیادہ سے زیادہ تعداد۔ ری ڈائریکٹ کو غیر فعال کرنے کے لیے 0 پر سیٹ کریں۔",
+ "Not available, please setup.": "دستیاب نہیں، براہ کرم سیٹ اپ کریں۔",
+ "Timezone": "ٹائم زون",
+ "Discourage search engines from indexing site": "انڈیکسنگ سائٹ سے سرچ انجنوں کی حوصلہ شکنی کریں",
+ "disableauth.message1": "کیا آپ واقعی تصدیق کو غیر فعال کرنا چاہتے ہیں؟",
+ "disableauth.message2": "یہ ان منظرناموں کے لیے ڈیزائن کیا گیا ہے جہاں آپ کا ارادہ ہے کہ آپ فریق ثالث کی توثیق کو لاگو کریں اپ ٹائم کوما جیسے کہ Cloudflare Access، Authelia یا دیگر تصدیقی میکانزم کے سامنے۔",
+ "Resolver Server": "حل کرنے والا سرور",
+ "Last Result": "آخری نتیجہ",
+ "Create your admin account": "اپنا ایڈمن اکاؤنٹ بنائیں",
+ "Repeat Password": "پاس ورڈ دوبارہ لکھیے",
+ "Import Backup": "بیک اپ درآمد کریں",
+ "Export Backup": "بیک اپ درآمد کریں",
+ "Import": "درآمد کریں",
+ "respTime": "ریسپ وقت (ایم ایس)",
+ "notAvailableShort": "N / A",
+ "Default enabled": "ڈیفالٹ فعال ہے",
+ "Create": "بنانا",
+ "Clear Data": "واضح اعداد و شمار",
+ "Events": "تقریبات",
+ "Heartbeats": "دل کی دھڑکنیں",
+ "Auto Get": "آٹو حاصل کریں",
+ "Schedule maintenance": "شیڈول کی بحالی",
+ "Affected Monitors": "متاثرہ مانیٹر",
+ "Start of maintenance": "بحالی کا آغاز",
+ "All Status Pages": "تمام اسٹیٹس پیجز",
+ "Select status pages...": "اسٹیٹس کے صفحات منتخب کریں…",
+ "alertWrongFileType": "براہ کرم ایک JSON فائل منتخب کریں۔",
+ "Clear all statistics": "تمام اعدادوشمار کو صاف کریں",
+ "Skip existing": "موجودہ کو چھوڑ دیں",
+ "Overwrite": "اوور رائٹ کریں",
+ "Options": "اختیارات",
+ "Verify Token": "ٹوکن کی تصدیق کریں",
+ "Setup 2FA": "2FA سیٹ اپ کریں",
+ "Enable 2FA": "2FA کو فعال کریں",
+ "2FA Settings": "2FA کی ترتیبات",
+ "Two Factor Authentication": "دو عنصر کی تصدیق",
+ "Active": "فعال",
+ "Inactive": "غیر فعال",
+ "Token": "ٹوکن",
+ "Show URI": "URI دکھائیں",
+ "Tags": "ٹیگز",
+ "Tag with this name already exist.": "اس نام کا ٹیگ پہلے سے موجود ہے۔",
+ "Tag with this value already exist.": "اس قدر کے ساتھ ٹیگ پہلے سے موجود ہے۔",
+ "color": "رنگ",
+ "value (optional)": "قدر (اختیاری)",
+ "Gray": "سرمئی",
+ "Red": "سرخ",
+ "Orange": "کینو",
+ "Blue": "نیلا",
+ "Indigo": "انڈگو",
+ "Purple": "جامنی",
+ "Pink": "گلابی",
+ "Custom": "اپنی مرضی کے مطابق",
+ "Avg. Response": "اوسط جواب",
+ "No Services": "کوئی خدمات نہیں",
+ "All Systems Operational": "تمام سسٹمز آپریشنل",
+ "Partially Degraded Service": "جزوی طور پر انحطاط شدہ سروس",
+ "Degraded Service": "ڈیگریڈڈ سروس",
+ "Add Group": "گروپ شامل کریں",
+ "Add a monitor": "مانیٹر شامل کریں",
+ "Edit Status Page": "اسٹیٹس پیج میں ترمیم کریں",
+ "Go to Dashboard": "ڈیش بورڈ پر جائیں",
+ "Export": "برآمد کریں",
+ "Apply on all existing monitors": "تمام موجودہ مانیٹر پر لاگو کریں",
+ "Pick Affected Monitors...": "متاثرہ مانیٹر منتخب کریں…",
+ "alertNoFile": "براہ کرم درآمد کرنے کے لیے ایک فائل منتخب کریں۔",
+ "Keep both": "دونوں رکھو",
+ "Disable 2FA": "2FA کو غیر فعال کریں",
+ "Add New below or Select...": "ذیل میں نیا شامل کریں یا منتخب کریں…",
+ "Green": "سبز",
+ "Search...": "تلاش کریں…",
+ "Avg. Ping": "دسمبر پنگ",
+ "Entry Page": "داخلہ صفحہ",
+ "statusPageNothing": "یہاں کچھ نہیں، براہ کرم ایک گروپ یا مانیٹر شامل کریں۔",
+ "Resend Notification if Down X times consecutively": "نوٹیفکیشن دوبارہ بھیجیں اگر X بار لگاتار نیچے جائیں",
+ "Status Page": "اسٹیٹس پیج",
+ "Status Pages": "اسٹیٹس پیجز",
+ "defaultNotificationName": "میرا {notification} الرٹ ({number})",
+ "here": "یہاں",
+ "Required": "درکار ہے",
+ "webhook": "ویب ہُک",
+ "Post URL": "یو آر ایل پوسٹ کریں",
+ "Content Type": "مواد کی قسم",
+ "webhookJsonDesc": "{0} کسی بھی جدید HTTP سرورز جیسے Express.js کے لیے اچھا ہے",
+ "webhookFormDataDesc": "{multipart} پی ایچ پی کے لیے اچھا ہے۔ JSON کو {decodeFunction} کے ساتھ پارس کرنے کی ضرورت ہوگی",
+ "webhookAdditionalHeadersTitle": "اضافی ہیڈرز",
+ "webhookAdditionalHeadersDesc": "ویب ہک کے ساتھ بھیجے گئے اضافی ہیڈر سیٹ کرتا ہے۔",
+ "Webhook URL": "ابھوک دیہی",
+ "Application Token": "ایپلیکیشن ٹوکن",
+ "Server URL": "سرور URL",
+ "Priority": "ترجیح",
+ "emojiCheatSheet": "ایموجی چیٹ شیٹ: {0}",
+ "Read more": "مزید پڑھ",
+ "appriseInstalled": "اپرائز انسٹال ہے۔",
+ "appriseNotInstalled": "اپرائز انسٹال نہیں ہے۔ {0}",
+ "Method": "طریقہ",
+ "Body": "جسم",
+ "Headers": "ہیڈرز",
+ "PushUrl": "یو آر ایل کو پش کریں",
+ "HeadersInvalidFormat": "درخواست کے ہیڈر درست نہیں ہیں JSON: ",
+ "BodyInvalidFormat": "درخواست کا باڈی درست نہیں ہے JSON: ",
+ "Monitor History": "تاریخ کی نگرانی کریں",
+ "clearDataOlderThan": "مانیٹر کی سرگزشت کا ڈیٹا {0} دنوں تک رکھیں۔",
+ "PasswordsDoNotMatch": "پاس ورڈ میچ نہیں کرتے.",
+ "records": "ریکارڈز",
+ "One record": "ایک ریکارڈ",
+ "Current User": "موجودہ صارف",
+ "topic": "موضوع",
+ "topicExplanation": "نگرانی کے لیے MQTT موضوع",
+ "successMessage": "کامیابی کا پیغام",
+ "successMessageExplanation": "MQTT پیغام جسے کامیابی سمجھا جائے گا",
+ "recent": "حالیہ",
+ "Done": "ہو گیا",
+ "Info": "معلومات",
+ "Security": "سیکورٹی",
+ "Steam API Key": "بھاپ API کلید",
+ "Shrink Database": "ڈیٹا بیس کو سکڑیں",
+ "Pick a RR-Type...": "RR قسم کا انتخاب کریں…",
+ "Pick Accepted Status Codes...": "قبول شدہ اسٹیٹس کوڈز منتخب کریں…",
+ "Default": "طے شدہ",
+ "HTTP Options": "HTTP اختیارات",
+ "Create Incident": "واقعہ بنائیں",
+ "Title": "عنوان",
+ "Content": "مواد",
+ "Style": "انداز",
+ "info": "معلومات",
+ "danger": "خطرہ",
+ "error": "غلطی",
+ "critical": "تنقیدی",
+ "primary": "بنیادی",
+ "light": "روشنی",
+ "dark": "اندھیرا",
+ "Post": "پوسٹ",
+ "Created": "بنایا",
+ "Last Updated": "آخری تازہ کاری",
+ "Unpin": "بادل ساحل",
+ "Switch to Light Theme": "لائٹ تھیم پر سوئچ کریں",
+ "Switch to Dark Theme": "ڈارک تھیم پر سوئچ کریں",
+ "Hide Tags": "ٹیگز چھپائیں",
+ "Description": "تفصیل",
+ "No monitors available.": "کوئی مانیٹر دستیاب نہیں۔",
+ "Add one": "ایک شامل کریں",
+ "Untitled Group": "بلا عنوان گروپ",
+ "Services": "خدمات",
+ "Discard": "رد کر دیں",
+ "steamApiKeyDescription": "سٹیم گیم سرور کی نگرانی کے لیے آپ کو سٹیم ویب API کلید درکار ہے۔ آپ اپنی API کلید یہاں رجسٹر کر سکتے ہیں: ",
+ "warning": "انتباہ",
+ "Please input title and content": "براہ کرم عنوان اور مواد درج کریں",
+ "Show Tags": "ٹیگز دکھائیں",
+ "No Monitors": "کوئی مانیٹر نہیں",
+ "Cancel": "منسوخ کریں",
+ "Powered by": "کی طرف سے طاقت",
+ "Custom CSS": "اپنی مرضی کے مطابق سی ایس ایس",
+ "deleteProxyMsg": "کیا آپ واقعی اس پراکسی کو تمام مانیٹر کے لیے حذف کرنا چاہتے ہیں؟",
+ "enableProxyDescription": "یہ پراکسی مانیٹر کی درخواستوں پر اس وقت تک اثر نہیں کرے گی جب تک کہ اسے فعال نہ کیا جائے۔ آپ ایکٹیویشن اسٹیٹس کے ذریعے تمام مانیٹرس سے پراکسی کو عارضی طور پر غیر فعال کر سکتے ہیں۔",
+ "setAsDefaultProxyDescription": "یہ پراکسی نئے مانیٹرز کے لیے بطور ڈیفالٹ فعال ہو جائے گی۔ آپ اب بھی ہر مانیٹر کے لیے الگ الگ پراکسی کو غیر فعال کر سکتے ہیں۔",
+ "Page Not Found": "صفحہ نہیں ملا",
+ "wayToGetCloudflaredURL": "({0} سے کلاؤڈ فلارڈ ڈاؤن لوڈ کریں)",
+ "Don't know how to get the token? Please read the guide:": "ٹوکن حاصل کرنے کا طریقہ نہیں جانتے؟ براہ کرم گائیڈ پڑھیں:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "اگر آپ فی الحال Cloudflare ٹنل کے ذریعے جڑ رہے ہیں تو موجودہ کنکشن ختم ہو سکتا ہے۔ کیا آپ واقعی اسے روکنا چاہتے ہیں؟ اس کی تصدیق کے لیے اپنا موجودہ پاس ورڈ ٹائپ کریں۔",
+ "RadiusCalledStationId": "اسٹیشن آئی ڈی کو کہتے ہیں",
+ "Certificate Expiry Notification": "سرٹیفکیٹ ختم ہونے کی اطلاع",
+ "Check how to config it for WebSocket": "اسے WebSocket کے لیے ترتیب دینے کا طریقہ چیک کریں",
+ "There might be a typing error in the address.": "ایڈریس میں ٹائپنگ کی غلطی ہو سکتی ہے۔",
+ "certificationExpiryDescription": "جب TLS سرٹیفکیٹ کی میعاد ختم ہو جاتی ہے تو HTTPS مانیٹر نوٹیفکیشن کو متحرک کرتے ہیں:",
+ "telegramMessageThreadID": "(اختیاری) میسج تھریڈ آئی ڈی",
+ "telegramMessageThreadIDDescription": "فورم کے ٹارگٹ میسج تھریڈ (موضوع) کے لیے اختیاری منفرد شناخت کنندہ؛ صرف فورم کے سپر گروپس کے لیے",
+ "chatIDNotFound": "چیٹ آئی ڈی نہیں ملی۔ براہ کرم پہلے اس بوٹ کو پیغام بھیجیں",
+ "disableCloudflaredNoAuthMsg": "آپ No Auth موڈ میں ہیں، پاس ورڈ کی ضرورت نہیں ہے۔",
+ "trustProxyDescription": "'X-Forwarded-*' ہیڈر پر بھروسہ کریں۔ اگر آپ صحیح کلائنٹ آئی پی حاصل کرنا چاہتے ہیں اور آپ کا اپ ٹائم کوما پراکسی جیسے Nginx یا Apache کے پیچھے ہے، تو آپ کو اسے فعال کرنا چاہیے۔",
+ "supportTelegramChatID": "براہ راست چیٹ / گروپ / چینل کی چیٹ آئی ڈی کو سپورٹ کریں",
+ "wayToGetTelegramChatID": "آپ بوٹ کو پیغام بھیج کر اور chat_id دیکھنے کے لیے اس URL پر جا کر اپنی چیٹ ID حاصل کر سکتے ہیں:",
+ "YOUR BOT TOKEN HERE": "یہاں آپ کا بوٹ ٹوکن",
+ "wayToGetLineNotifyToken": "آپ {0} سے ایک رسائی ٹوکن حاصل کر سکتے ہیں",
+ "Examples": "مثالیں",
+ "Running": "چل رہا ہے",
+ "Not running": "نہیں چل رہا ہے",
+ "Customize": "حسب ضرورت بنائیں",
+ "Custom Footer": "حسب ضرورت فوٹر",
+ "deleteStatusPageMsg": "کیا آپ واقعی اس اسٹیٹس پیج کو حذف کرنا چاہتے ہیں؟",
+ "Proxies": "پراکسیز",
+ "default": "طے شدہ",
+ "enabled": "فعال",
+ "setAsDefault": "ڈیفالٹ کے طور پر مقرر",
+ "proxyDescription": "پراکسیز کو کام کرنے کے لیے مانیٹر کو تفویض کیا جانا چاہیے۔",
+ "Certificate Chain": "سرٹیفکیٹ چین",
+ "Valid": "درست",
+ "Invalid": "غلط",
+ "User": "صارف",
+ "Installed": "انسٹال",
+ "Not installed": "انسٹال نہیں ہے",
+ "Remove Token": "ٹوکن کو ہٹا دیں",
+ "Start": "شروع کریں",
+ "Stop": "رک جاؤ",
+ "Add New Status Page": "نیا اسٹیٹس پیج شامل کریں",
+ "Slug": "سلگ",
+ "Accept characters:": "حروف کو قبول کریں:",
+ "startOrEndWithOnly": "صرف {0} سے شروع یا ختم کریں",
+ "No consecutive dashes": "کوئی لگاتار ڈیش نہیں ہے",
+ "Next": "اگلے",
+ "The slug is already taken. Please choose another slug.": "سلگ پہلے ہی لی گئی ہے۔ براہ کرم کوئی اور سلگ منتخب کریں۔",
+ "No Proxy": "کوئی پراکسی نہیں",
+ "Authentication": "تصدیق",
+ "HTTP Basic Auth": "HTTP بنیادی توثیق",
+ "New Status Page": "نیا اسٹیٹس پیج",
+ "Reverse Proxy": "ریورس پراکسی",
+ "Backup": "بیک اپ",
+ "About": "کے بارے میں",
+ "cloudflareWebsite": "Cloudflare ویب سائٹ",
+ "Message:": "پیغام:",
+ "HTTP Headers": "HTTP ہیڈر",
+ "Trust Proxy": "پراکسی پر اعتماد کریں",
+ "Other Software": "دوسرے سافٹ ویئر",
+ "For example: nginx, Apache and Traefik.": "مثال کے طور پر: nginx، Apache اور Traefik.",
+ "Please read": "مہربانی کر کے پڑھیں",
+ "Subject:": "مضمون:",
+ "Valid To:": "اس تاریخ تک کارآمد ہ:",
+ "Days Remaining:": "باقی دنوں:",
+ "Issuer:": "جاری کنندہ:",
+ "Fingerprint:": "فنگر پرنٹ:",
+ "No status pages": "کوئی اسٹیٹس پیجز نہیں",
+ "Domain Name Expiry Notification": "ڈومین نام کی میعاد ختم ہونے کی اطلاع",
+ "Proxy": "پراکسی",
+ "Date Created": "تاریخ تخلیق",
+ "Footer Text": "فوٹر ٹیکسٹ",
+ "Show Powered By": "شو کے ذریعہ تقویت یافتہ",
+ "Domain Names": "ڈومین کے نام",
+ "signedInDisp": "بطور {0} سائن ان",
+ "signedInDispDisabled": "توثیق غیر فعال۔",
+ "RadiusSecret": "رداس راز",
+ "RadiusSecretDescription": "کلائنٹ اور سرور کے درمیان مشترکہ راز",
+ "RadiusCalledStationIdDescription": "کہلائے گئے آلے کا شناخت کنندہ",
+ "RadiusCallingStationId": "کالنگ اسٹیشن آئی ڈی",
+ "RadiusCallingStationIdDescription": "کالنگ ڈیوائس کا شناخت کنندہ",
+ "API Username": "API صارف نام",
+ "API Key": "API کلید",
+ "Show update if available": "اگر دستیاب ہو تو اپ ڈیٹ دکھائیں",
+ "Also check beta release": "بیٹا ریلیز بھی چیک کریں",
+ "Using a Reverse Proxy?": "ایک ریورس پراکسی کا استعمال کرتے ہوئے؟",
+ "Steam Game Server": "بھاپ گیم سرور",
+ "Most likely causes:": "زیادہ تر ممکنہ وجوہات:",
+ "The resource is no longer available.": "وسیلہ اب دستیاب نہیں ہے۔",
+ "What you can try:": "تم کیا کوشش کر سکتے ہو:",
+ "Retype the address.": "ایڈریس دوبارہ ٹائپ کریں۔",
+ "Go back to the previous page.": "پچھلے صفحے پر واپس جائیں۔",
+ "Coming Soon": "جلد آرہا ہے",
+ "Connection String": "کنکشن سٹرنگ",
+ "Query": "استفسار",
+ "settingsCertificateExpiry": "TLS سرٹیفکیٹ کی میعاد ختم",
+ "Setup Docker Host": "ڈوکر ہوسٹ سیٹ اپ کریں",
+ "Connection Type": "کنکشن کی قسم",
+ "Docker Daemon": "ڈوکر ڈیمون",
+ "deleteDockerHostMsg": "کیا آپ واقعی تمام مانیٹر کے لیے اس ڈاکر ہوسٹ کو حذف کرنا چاہتے ہیں؟",
+ "socket": "ساکٹ",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "ڈوکر کنٹینر",
+ "Container Name / ID": "کنٹینر کا نام / ID",
+ "Docker Host": "ڈاکر میزبان",
+ "Docker Hosts": "ڈاکر میزبان",
+ "Domain": "ڈومین",
+ "Workstation": "ورک سٹیشن",
+ "Packet Size": "پیکٹ کا سائز",
+ "Bot Token": "بوٹ ٹوکن",
+ "wayToGetTelegramToken": "آپ {0} سے ٹوکن حاصل کر سکتے ہیں۔",
+ "Chat ID": "چیٹ آئی ڈی",
+ "default: notify all devices": "ڈیفالٹ: تمام آلات کو مطلع کریں",
+ "telegramSendSilently": "خاموشی سے بھیجیں",
+ "telegramSendSilentlyDescription": "خاموشی سے پیغام بھیجتا ہے۔ صارفین کو بغیر آواز کے ایک اطلاع موصول ہوگی۔",
+ "Long-Lived Access Token": "طویل المدت رسائی ٹوکن",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "آپ کے پروفائل کے نام (نیچے بائیں) پر کلک کرکے اور نیچے تک سکرول کرکے طویل المدت رسائی کا ٹوکن بنایا جاسکتا ہے پھر ٹوکن بنائیں پر کلک کریں۔ ",
+ "backupOutdatedWarning": "فرسودہ: چونکہ بہت ساری خصوصیات شامل کی گئی ہیں اور یہ بیک اپ خصوصیت تھوڑا سا غیر برقرار ہے، یہ مکمل بیک اپ پیدا یا بحال نہیں کر سکتا۔",
+ "telegramProtectContent": "فارورڈنگ/محفوظ کرنے کی حفاظت کریں",
+ "telegramProtectContentDescription": "فعال ہونے پر، ٹیلیگرام میں بوٹ پیغامات کو آگے بھیجنے اور محفوظ کرنے سے محفوظ رکھا جائے گا۔",
+ "Home Assistant URL": "ہوم اسسٹنٹ یو آر ایل",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "آپ کے آلے/فون کا نام تلاش کرنے کے لیے \"اطلاعات\" تلاش کرنے کے لیے \"ڈیولپر ٹولز > سروسز\" کے تحت ہوم اسسٹنٹ میں اطلاعاتی خدمات کی فہرست مل سکتی ہے۔",
+ "Automations can optionally be triggered in Home Assistant:": "ہوم اسسٹنٹ میں آٹومیشن کو اختیاری طور پر متحرک کیا جا سکتا ہے:",
+ "Trigger type:": "محرک کی قسم:",
+ "Event type:": "تقریب کی قسم:",
+ "Event data:": "ایونٹ کا ڈیٹا:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "پھر ایک عمل کا انتخاب کریں، مثال کے طور پر منظر کو اس طرف تبدیل کریں جہاں RGB لائٹ سرخ ہو۔",
+ "Frontend Version": "فرنٹ اینڈ ورژن",
+ "Frontend Version do not match backend version!": "فرنٹ اینڈ ورژن پسدید ورژن سے مماثل نہیں ہے!",
+ "backupRecommend": "براہ کرم اس کے بجائے براہ راست والیوم یا ڈیٹا فولڈر (./data/) کا بیک اپ لیں۔",
+ "Optional": "اختیاری",
+ "or": "یا",
+ "Notification Service": "نوٹیفکیشن سروس",
+ "maintenanceStatus-inactive": "غیر فعال",
+ "maintenanceStatus-under-maintenance": "دیکھ بھال کے تحت",
+ "maintenanceStatus-scheduled": "طے شدہ",
+ "maintenanceStatus-ended": "ختم ہوا",
+ "recurringInterval": "وقفہ",
+ "Recurring": "بار چلنے والا",
+ "strategyManual": "دستی طور پر فعال/غیر فعال",
+ "warningTimezone": "یہ سرور کا ٹائم زون استعمال کر رہا ہے",
+ "weekdayShortMon": "پیر",
+ "weekdayShortWed": "بدھ",
+ "weekdayShortThu": "جمعرات",
+ "weekdayShortFri": "جمعہ",
+ "weekdayShortSat": "سات",
+ "weekdayShortSun": "سورج",
+ "dayOfWeek": "ہفتہ کا دن",
+ "dayOfMonth": "مہینے کا دن",
+ "lastDay": "آخری دن",
+ "lastDay1": "مہینے کا آخری دن",
+ "lastDay2": "مہینے کا دوسرا آخری دن",
+ "lastDay3": "مہینے کا تیسرا آخری دن",
+ "lastDay4": "مہینے کا چوتھا آخری دن",
+ "pauseMaintenanceMsg": "کیا آپ واقعی روکنا چاہتے ہیں؟",
+ "No Maintenance": "کوئی دیکھ بھال نہیں",
+ "weekdayShortTue": "منگل",
+ "Add New Tag": "نیا ٹیگ شامل کریں",
+ "Enable DNS Cache": "ڈی این ایس کیشے کو فعال کریں",
+ "Effective Date Range": "مؤثر تاریخ کی حد",
+ "Schedule Maintenance": "شیڈول کی بحالی",
+ "Date and Time": "تاریخ اور وقت",
+ "DateTime Range": "تاریخ کے وقت کی حد",
+ "loadingError": "ڈیٹا حاصل نہیں کیا جا سکتا، براہ کرم بعد میں دوبارہ کوشش کریں۔",
+ "Enable": "فعال",
+ "Disable": "غیر فعال کریں",
+ "dnsCacheDescription": "ہو سکتا ہے یہ کچھ IPv6 ماحول میں کام نہ کر رہا ہو، اگر آپ کو کوئی مسئلہ درپیش ہو تو اسے غیر فعال کر دیں۔",
+ "Single Maintenance Window": "سنگل مینٹیننس ونڈو",
+ "Maintenance Time Window of a Day": "ایک دن کی مینٹیننس ٹائم ونڈو",
+ "plugin": "پلگ ان | پلگ انز",
+ "install": "انسٹال کریں",
+ "statusPageRefreshIn": "اس میں ریفریش کریں: {0}",
+ "maintenanceStatus-unknown": "نامعلوم",
+ "Display Timezone": "ٹائم زون ڈسپلے کریں",
+ "Server Timezone": "سرور ٹائم زون",
+ "statusPageMaintenanceEndDate": "ختم",
+ "IconUrl": "آئیکن یو آر ایل"
+}
diff --git a/src/lang/vi-VN.json b/src/lang/vi-VN.json
new file mode 100644
index 000000000..368705d95
--- /dev/null
+++ b/src/lang/vi-VN.json
@@ -0,0 +1,495 @@
+{
+ "languageName": "Tiếng Việt",
+ "checkEverySecond": "Kiểm tra mỗi {0} giây",
+ "retryCheckEverySecond": "Thử lại mỗi {0} giây",
+ "retriesDescription": "Số lần thử lại tối đa trước khi dịch vụ được đánh dấu là down và gửi thông báo",
+ "ignoreTLSError": "Bỏ qua lỗi TLS/SSL với các web HTTPS",
+ "upsideDownModeDescription": "Chế độ đảo ngược, nếu dịch vụ có thể truy cập được nghĩa là DOWN.",
+ "maxRedirectDescription": "Số lần chuyển hướng (redirect) tối đa. Đặt thành 0 để tắt chuyển hướng.",
+ "acceptedStatusCodesDescription": "Chọn mã trạng thái được coi là phản hồi thành công.",
+ "passwordNotMatchMsg": "Mật khẩu nhập lại không khớp.",
+ "notificationDescription": "Vui lòng chỉ định một kênh thông báo.",
+ "keywordDescription": "Từ khoá tìm kiếm phản hồi ở dạng html hoặc JSON, có phân biệt chữ HOA - thường",
+ "pauseDashboardHome": "Tạm dừng",
+ "deleteMonitorMsg": "Bạn chắc chắn muốn xóa kênh theo dõi này chứ?",
+ "deleteNotificationMsg": "Bạn có chắc chắn muốn xóa kênh thông báo này cho tất cả kênh theo dõi?",
+ "resolverserverDescription": "Cloudflare là máy chủ mặc định, bạn có thể thay đổi bất cứ lúc nào.",
+ "rrtypeDescription": "Hãy chọn RR-Type mà bạn muốn giám sát",
+ "pauseMonitorMsg": "Bạn chắc chắn muốn tạm dừng chứ?",
+ "enableDefaultNotificationDescription": "Bật làm mặc định cho mọi kênh theo dõi mới về sau. Bạn vẫn có thể tắt thông báo riêng cho từng kênh theo dõi.",
+ "clearEventsMsg": "Bạn chắc chắn muốn xoá TẤT CẢ sự kiện cho kênh theo dõi này chứ?",
+ "clearHeartbeatsMsg": "Bạn chắc chắn muốn xoá TẤT CẢ heartbeats cho kênh theo dõi này chứ?",
+ "confirmClearStatisticsMsg": "Bạn chắc chắn muốn xoá TẤT CẢ số liệu thống kê?",
+ "importHandleDescription": "Chọn 'Giữ lại' nếu bạn muốn bỏ qua mọi kênh theo dõi và kênh thông báo trùng tên. 'Ghi đè' sẽ ghi đè lên tất cả các kênh theo dõi và kênh thông báo.",
+ "confirmImportMsg": "Bạn có chắc chắn muốn khôi phục bản bản sao lưu này không?.",
+ "twoFAVerifyLabel": "Vui lòng nhập mã token của bạn để xác minh rằng xác thực 2 lớp (2FA) đang hoạt động",
+ "tokenValidSettingsMsg": "Mã token hợp lệ! Bạn có thể lưu cài đặt xác thực 2 lớp (2FA) bây giờ.",
+ "confirmEnableTwoFAMsg": "Bạn chắc chắn muốn bật xác thực 2 lớp (2FA) chứ?",
+ "confirmDisableTwoFAMsg": "Bạn chắc chắn muốn tắt xác thực 2 lớp (2FA) chứ?",
+ "Settings": "Cài đặt",
+ "Dashboard": "Trang tổng quan",
+ "New Update": "Bản cập nhật mới",
+ "Language": "Ngôn ngữ",
+ "Appearance": "Giao diện",
+ "Theme": "Theme",
+ "General": "Chung",
+ "Primary Base URL": "URL chính",
+ "Version": "Phiên bản",
+ "Check Update On GitHub": "Kiểm tra bản cập nhật mới trên GitHub",
+ "List": "List",
+ "Add": "Thêm",
+ "Add New Monitor": "Thêm mới kênh theo dõi",
+ "Quick Stats": "Thống kê nhanh",
+ "Up": "Up",
+ "Down": "Down",
+ "Pending": "Chờ xử lý",
+ "Unknown": "Không xác định",
+ "Pause": "Tạm dừng",
+ "Name": "Tên",
+ "Status": "Trạng thái",
+ "DateTime": "Ngày tháng",
+ "Message": "Trạng thái request",
+ "No important events": "Không có sự kiện quan trọng nào",
+ "Resume": "Khôi phục",
+ "Edit": "Sửa",
+ "Delete": "Xoá",
+ "Current": "Hiện tại",
+ "Uptime": "Uptime",
+ "Cert Exp.": "Cert hết hạn",
+ "day": "ngày",
+ "-day": "-ngày",
+ "hour": "giờ",
+ "-hour": "-giờ",
+ "Response": "Phản hồi",
+ "Ping": "Ping",
+ "Monitor Type": "Kiểu kênh theo dõi",
+ "Keyword": "Từ khoá",
+ "Friendly Name": "Tên rút gọn",
+ "URL": "URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "Tần suất kiểm tra",
+ "Retries": "Thử lại",
+ "Heartbeat Retry Interval": "Tần suất kiểm tra lại",
+ "Advanced": "Nâng cao",
+ "Upside Down Mode": "Chế độ đảo ngược",
+ "Max. Redirects": "Số chuyển hướng tối đa",
+ "Accepted Status Codes": "Codes trạng thái chấp nhận",
+ "Push URL": "Push URL",
+ "needPushEvery": "Bạn nên gọi URL mỗi {0} giây.",
+ "pushOptionalParams": "Tuỳ chỉnh parameters: {0}",
+ "Save": "Lưu",
+ "Notifications": "Thông báo",
+ "Not available, please setup.": "Chưa sẵn sàng, hãy cài đặt.",
+ "Setup Notification": "Cài đặt thông báo",
+ "Light": "Sáng",
+ "Dark": "Tối",
+ "Auto": "Tự động",
+ "Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
+ "Normal": "Bình thường",
+ "Bottom": "Dưới",
+ "None": "Không có",
+ "Timezone": "Múi giờ",
+ "Search Engine Visibility": "Hiển thị với các công cụ tìm kiếm",
+ "Allow indexing": "Cho phép indexing",
+ "Discourage search engines from indexing site": "Ngăn chặn các công cụ tìm kiếm indexing trang",
+ "Change Password": "Thay đổi mật khẩu",
+ "Current Password": "Mật khẩu hiện tại",
+ "New Password": "Mật khẩu mới",
+ "Repeat New Password": "Lặp lại mật khẩu mới",
+ "Update Password": "Cập nhật mật khẩu",
+ "Disable Auth": "Tắt xác minh",
+ "Enable Auth": "Bật xác minh",
+ "disableauth.message1": "Bạn có muốn TẮT XÁC THỰC không?",
+ "disableauth.message2": "Điều này rất nguy hiểmBẤT KỲ AI cũng có thể truy cập và cướp quyền điều khiển.",
+ "Please use this option carefully!": "Vui lòng cẩn thận !",
+ "Logout": "Đăng xuất",
+ "Leave": "Rời",
+ "I understand, please disable": "Tôi hiểu, làm ơn hãy tắt",
+ "Confirm": "Xác nhận",
+ "Yes": "Có",
+ "No": "Không",
+ "Username": "Tài khoản",
+ "Password": "Mật khẩu",
+ "Remember me": "Lưu phiên đăng nhập",
+ "Login": "Đăng nhập",
+ "No Monitors, please": "Không có kênh theo dõi nào",
+ "add one": "Thêm mới",
+ "Notification Type": "Kiểu thông báo",
+ "Email": "Email",
+ "Test": "Thử",
+ "Certificate Info": "Thông tin Certificate",
+ "Resolver Server": "Máy chủ Resolver",
+ "Resource Record Type": "Loại bản ghi",
+ "Last Result": "Kết quả cuối cùng",
+ "Create your admin account": "Tạo tài khoản quản trị",
+ "Repeat Password": "Lặp lại mật khẩu",
+ "Import Backup": "Khôi phục bản sao lưu",
+ "Export Backup": "Xuất bản sao lưu",
+ "Export": "Xuất",
+ "Import": "Nhập",
+ "respTime": "Thời gian phản hồi (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Mặc định bật",
+ "Apply on all existing monitors": "Áp dụng cho tất cả kênh theo dõi đang có",
+ "Create": "Tạo",
+ "Clear Data": "Xoá dữ liệu",
+ "Events": "Sự kiện",
+ "Heartbeats": "Heartbeats",
+ "Auto Get": "Tự động lấy",
+ "backupDescription": "Sao lưu tất cả các kênh theo dõi và tất cả các thông báo vào một file định dạng JSON.",
+ "backupDescription2": "Lưu ý: Không bao gồm dữ liệu lịch sử các sự kiện.",
+ "backupDescription3": "Hãy lưu giữ file này cẩn thận, trong file đó chứa cả các token thông báo.",
+ "alertNoFile": "Hãy chọn file để khôi phục.",
+ "alertWrongFileType": "Hãy chọn file định dạng JSON.",
+ "Clear all statistics": "Xoá tất cả thống kê",
+ "Skip existing": "Giữ lại",
+ "Overwrite": "Ghi đè",
+ "Options": "Tuỳ chọn",
+ "Keep both": "Giữ lại cả hai",
+ "Verify Token": "Xác minh Token",
+ "Setup 2FA": "Cài đặt xác thực 2 lớp (2FA)",
+ "Enable 2FA": "Bật xác thực 2 lớp (2FA)",
+ "Disable 2FA": "Tắt xác thực 2 lớp (2FA)",
+ "2FA Settings": "Cài đặt xác thực 2 lớp (2FA)",
+ "Two Factor Authentication": "Xác thực hai yếu tố",
+ "Active": "Hoạt động",
+ "Inactive": "Ngừng hoạt động",
+ "Token": "Token",
+ "Show URI": "Hiển thị URI",
+ "Tags": "Tags",
+ "Add New below or Select...": "Thêm mới ở dưới hoặc Chọn…",
+ "Tag with this name already exist.": "Tag với tên này đã tồn tại.",
+ "Tag with this value already exist.": "Tag với giá trị này đã tồn tại.",
+ "color": "Màu sắc",
+ "value (optional)": "Giá trị (tuỳ chọn)",
+ "Gray": "Xám",
+ "Red": "Đỏ",
+ "Orange": "Cam",
+ "Green": "Xanh lá",
+ "Blue": "Xanh da trời",
+ "Indigo": "Chàm",
+ "Purple": "Tím",
+ "Pink": "Hồng",
+ "Search...": "Tìm kiếm…",
+ "Avg. Ping": "Ping trung bình",
+ "Avg. Response": "Phản hồi trung bình",
+ "Entry Page": "Entry Page",
+ "statusPageNothing": "Chưa có thông tin gì, hãy thêm nhóm kênh theo dõi hoặc kênh theo dõi.",
+ "No Services": "Không có dịch vụ",
+ "All Systems Operational": "Tất cả các hệ thống hoạt động bình thường",
+ "Partially Degraded Service": "Có hệ thống bị ngưng",
+ "Degraded Service": "Toàn bộ hệ thống bị ngưng",
+ "Add Group": "Thêm nhóm",
+ "Add a monitor": "Thêm kênh theo dõi",
+ "Edit Status Page": "Sửa trang trạng thái",
+ "Go to Dashboard": "Đi tới Dashboard",
+ "Status Page": "Trang trạng thái",
+ "Status Pages": "Trang trạng thái",
+ "defaultNotificationName": "My {notification} Alerts ({number})",
+ "here": "tại đây",
+ "Required": "Bắt buộc",
+ "telegram": "Telegram",
+ "Bot Token": "Bot Token",
+ "wayToGetTelegramToken": "Bạn có thể lấy mã token từ",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "Hỗ trợ chat trực tiếp / Nhóm / Kênh Chat ID",
+ "wayToGetTelegramChatID": "Bạn có thể lấy chat id của mình bằng cách gửi tin nhắn tới bot và truy cập url này để xem chat_id:",
+ "YOUR BOT TOKEN HERE": "MÃ BOT TOKEN CỦA BẠN",
+ "chatIDNotFound": "Không tìm thấy Chat ID, vui lòng gửi tin nhắn cho bot này trước",
+ "webhook": "Webhook",
+ "Post URL": "URL webhook",
+ "Content Type": "Loại nội dung",
+ "webhookJsonDesc": "{0} tương thích với máy chủ HTTP ví dụ như Express.js",
+ "webhookFormDataDesc": "{multipart} tương thích với máy chủ PHP, bạn chỉ cần phân tích cú pháp json bằng {decodeFunction}",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "None/STARTTLS(25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Bỏ qua lỗi TLS",
+ "From Email": "Email gửi",
+ "emailCustomSubject": "Tuỳ chỉnh tiêu đề",
+ "To Email": "Email nhận",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook URL",
+ "wayToGetDiscordURL": "Để lấy Discord, hãy vào: Server Settings -> Integrations -> Create Webhook",
+ "Bot Display Name": "Tên hiển thị của BOT",
+ "Prefix Custom Message": "Tiền tố tin nhắn tuỳ chọn",
+ "Hello @everyone is...": "Xin chào {'@'} mọi người đang...",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook URL",
+ "wayToGetTeamsURL": "Bạn có thể học cách tạo webhook url {0}.",
+ "signal": "Tín hiệu",
+ "Number": "Số",
+ "Recipients": "Người nhận",
+ "needSignalAPI": "Bạn cần một tín hiệu kết nối với REST API.",
+ "wayToCheckSignalURL": "Bạn có thể kiểm tra URL này để xem cách thiết lập:",
+ "signalImportant": "QUAN TRỌNG: Bạn không thể kết hợp các nhóm và số trong người nhận!",
+ "gotify": "Gotify",
+ "Application Token": "Mã Token ứng dụng",
+ "Server URL": "URL máy chủ",
+ "Priority": "Mức ưu tiên",
+ "slack": "Slack",
+ "Icon Emoji": "Icon Emoji",
+ "Channel Name": "Tên Channel",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "Thông tin thêm về webhook trên: {0}",
+ "aboutChannelName": "Nhập tên kênh trên {0} trường Channel Name nếu bạn muốn bỏ qua kênh webhook. vd: #other-channel",
+ "aboutKumaURL": "Nếu bạn để trống trường Uptime Kuma URL, mặc định sẽ là trang Project Github.",
+ "emojiCheatSheet": "Bảng tra cứu Emoji: {0}",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push by Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (Hỗ trợ trên 50 dịch vụ thông báo)",
+ "GoogleChat": "Google Chat (Google Workspace only)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "User Key",
+ "Device": "Thiết bị",
+ "Message Title": "Tiêu đề tin nhắn",
+ "Notification Sound": "Âm thanh thông báo",
+ "More info on:": "Thông tin chi tiết tại: {0}",
+ "pushoverDesc1": "Mức ưu tiên khẩn cấp (2) có thời gian chờ mặc định là 30 giây giữa các lần thử lại và sẽ hết hạn sau 1 giờ.",
+ "pushoverDesc2": "Nếu bạn muốn gửi thông báo đến các thiết bị khác nhau, hãy điền vào trường Thiết bị.",
+ "SMS Type": "SMS Type",
+ "octopushTypePremium": "Premium (Nhanh - Khuyến nghị nên dùng cho cảnh báo)",
+ "octopushTypeLowCost": "Giá rẻ (Chậm, thỉnh thoảng bị chặn)",
+ "checkPrice": "Kiểm tra giá {0}:",
+ "apiCredentials": "API credentials",
+ "octopushLegacyHint": "Bạn muốn sử dụng phiên bản cũ của Octopush (2011-2020) hay phiên bản mới?",
+ "Check octopush prices": "Kiểm tra giá octopush {0}.",
+ "octopushPhoneNumber": "Số điện thoại (Định dạng intl, vd : +84692341165) ",
+ "octopushSMSSender": "SMS người gửi : 3-11 ký tự chữ, số và dấu cách (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea ID thiết bị",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Ví dụ: {0}",
+ "Read more:": "Đọc thêm: {0}",
+ "Status:": "Trạng thái: {0}",
+ "Read more": "Đọc thêm",
+ "appriseInstalled": "Đã cài đặt Apprise.",
+ "appriseNotInstalled": "Chưa cài đặt Apprise. {0}",
+ "Access Token": "Token truy cập",
+ "Channel access token": "Token kênh truy cập",
+ "Line Developers Console": "Line Developers Console",
+ "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "Cài đặt cơ bản",
+ "User ID": "User ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "Trước tiên, hãy truy cập {0},tạo nhà cung cấp và kênh (Messaging API), sau đó bạn có thể nhận mã token truy cập kênh và id người dùng từ các mục menu được đề cập ở trên.",
+ "Icon URL": "Icon URL",
+ "aboutIconURL": "Bạn có thể cung cấp liên kết đến ảnh trong \"Icon URL\" để ghi đè ảnh hồ sơ mặc định. Sẽ không được sử dụng nếu Biểu tượng cảm xúc được thiết lập.",
+ "aboutMattermostChannelName": "Bạn có thể ghi đè kênh mặc định mà webhook đăng lên bằng cách nhập tên kênh vào trường \"Channel Name\". Điều này cần được bật trong cài đặt Mattermost webhook. Ví dụ: #other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - rẻ nhưng chậm và thường xuyên quá tải. Chỉ dành cho người Ba Lan.",
+ "promosmsTypeFlash": "SMS FLASH - Tin nhắn sẽ tự động hiển thị trên thiết bị của người nhận. Chỉ dành cho người Ba Lan.",
+ "promosmsTypeFull": "SMS FULL - SMS cao cấp, Bạn có thể sử dụng Tên Người gửi (Bạn cần đăng ký tên trước). Đáng tin cậy cho các cảnh báo.",
+ "promosmsTypeSpeed": "SMS SPEED - Ưu tiên cao nhất trong hệ thống. Rất nhanh chóng và đáng tin cậy nhưng tốn kém, (giá gấp đôi SMS FULL).",
+ "promosmsPhoneNumber": "Số điện thoại (Bỏ qua mã vùng với người Ba Lan)",
+ "promosmsSMSSender": "SMS Tên người gửi: Tên đã đăng ký trước hoặc tên mặc định: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookUrl": "Feishu WebHookUrl",
+ "matrixHomeserverURL": "Homeserver URL (với http(s):// và port tuỳ chỉnh)",
+ "Internal Room Id": "Room ID Nội bộ",
+ "matrixDesc1": "Bạn có thể tìm thấy room ID nội bộ bằng cách tìm trong mục advanced của phần room settings trong Matrix client của bạn. Nó có dạng giống như !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Bạn nên tạo người dùng mới và đừng sử dụng mã token truy cập của Matrix user vì nó sẽ cho phép truy cập toàn quyền vào tài khoản của bạn và tất cả các phòng bạn đã tham gia. Thay vào đó, hãy tạo một người dùng mới và chỉ mời người đó vào phòng mà bạn muốn nhận thông báo. Bạn có thể lấy được mã token truy cập bằng cách chạy {0}",
+ "Method": "Method",
+ "Body": "Body",
+ "Headers": "Headers",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Header request không hợp lệ JSON: ",
+ "BodyInvalidFormat": "Tequest body không hợp lệ JSON: ",
+ "Monitor History": "Lịch sử kênh theo dõi",
+ "clearDataOlderThan": "Giữ dữ liệu lịch sử kênh theo dõi {0} ngày.",
+ "PasswordsDoNotMatch": "Passwords không khớp.",
+ "records": "records",
+ "One record": "One record",
+ "steamApiKeyDescription": "Để theo dõi các Steam Game Server bạn cần một Steam Web-API key. Bạn có thể đăng ký API key tại đây: ",
+ "Current User": "User hiện tại",
+ "topic": "Topic",
+ "topicExplanation": "MQTT topic to monitor",
+ "successMessage": "Success Message",
+ "successMessageExplanation": "MQTT message that will be considered as success",
+ "recent": "Gần đây",
+ "Done": "Hoàn thành",
+ "Info": "Thông tin",
+ "Security": "Bảo mật",
+ "Steam API Key": "Steam API Key",
+ "Shrink Database": "Shrink Database",
+ "Pick a RR-Type...": "Pick a RR-Type...",
+ "Pick Accepted Status Codes...": "Chọn các Codes trạng thái chấp nhận được...",
+ "Default": "Mặc định",
+ "HTTP Options": "Tuỳ chọn HTTP",
+ "Create Incident": "Tạo Incident",
+ "Title": "Tiêu đề",
+ "Content": "Nội dung",
+ "Style": "Style",
+ "info": "thông tin",
+ "warning": "cảnh báo",
+ "danger": "nguy hiểm",
+ "primary": "cơ sở",
+ "light": "sáng",
+ "dark": "tối",
+ "Post": "Post",
+ "Please input title and content": "Hãy nhập tiêu đề và nội dung",
+ "Created": "Đã tạo",
+ "Last Updated": "Cập nhật mới nhất",
+ "Unpin": "Bỏ ghim",
+ "Switch to Light Theme": "Chuyển sang giao diện Sáng",
+ "Switch to Dark Theme": "Chuyển sang giao diện Tối",
+ "Show Tags": "Hiện Tags",
+ "Hide Tags": "Ẩn Tags",
+ "Description": "Mô tả",
+ "No monitors available.": "Không có kênh theo dõi nào.",
+ "Add one": "Thêm mới",
+ "No Monitors": "Không có kênh theo dõi",
+ "Untitled Group": "Nhóm không có tiêu đề",
+ "Services": "Dịch vụ",
+ "Discard": "Bỏ",
+ "Cancel": "Hủy",
+ "Powered by": "Được cung cấp bởi",
+ "shrinkDatabaseDescription": "Khởi chạy database VACCUM cho SQLite. Nếu database được tạo sau version 1.10.0, AUTO_VACCUM đã được bật sẵn, hành động này không cần thiết.",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API Username (incl. webapi_ prefix)",
+ "serwersmsAPIPassword": "API Password",
+ "serwersmsPhoneNumber": "Số điện thoại",
+ "serwersmsSenderName": "Tên người gửi SMS (Đã đăng ký qua portal)",
+ "stackfield": "Stackfield",
+ "Customize": "Customize",
+ "Custom Footer": "Custom Footer",
+ "Custom CSS": "Custom CSS",
+ "smtpDkimSettings": "Cài đặt xác thực Email(DKIM)",
+ "smtpDkimDesc": "Xem hướng dẫn tại {0}.",
+ "documentation": "Nodemailer DKIM",
+ "smtpDkimDomain": "Mail domain",
+ "smtpDkimKeySelector": "DKIM Key Selector",
+ "smtpDkimPrivateKey": "Private Key",
+ "smtpDkimHashAlgo": "Hash Algorithm (Tuỳ chọn)",
+ "smtpDkimheaderFieldNames": "Header Keys to sign (Tuỳ chọn)",
+ "smtpDkimskipFields": "Header Keys not to sign (Tuỳ chọn)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "Environment",
+ "alertaApiKey": "API Key",
+ "alertaAlertState": "Alert State",
+ "alertaRecoverState": "Recover State",
+ "deleteStatusPageMsg": "Bạn có chắc chắn muốn xoá trang status này?",
+ "Proxies": "Proxies",
+ "default": "Mặc định",
+ "enabled": "Enabled",
+ "setAsDefault": "Set As Default",
+ "deleteProxyMsg": "Bạn muốn xoá proxy này cho tất cả monitors?",
+ "proxyDescription": "Proxies must be assigned to a monitor to function.",
+ "enableProxyDescription": "Proxy này chưa ảnh hưởng tới monitor requests cho tới khi được activated. Bạn có thể tạm thời tắt proxy cho tất cả monitors bằng trạng thái activation.",
+ "setAsDefaultProxyDescription": "Proxy này sẽ bật mặc định cho tất cả monitors mới. Bạn có thể tắt riêng lẻ proxy trên mỗi monitor.",
+ "Certificate Chain": "Certificate Chain",
+ "Valid": "Hợp lệ",
+ "Invalid": "Không hợp lệ",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey Secret",
+ "PhoneNumbers": "PhoneNumbers",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Sms template must contain parameters: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "Để an toàn, hãy dùng secret key",
+ "Device Token": "Device Token",
+ "Platform": "Platform",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "Huawei",
+ "High": "High",
+ "Retry": "Retry",
+ "Topic": "Topic",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "Setup Proxy": "Setup Proxy",
+ "Proxy Protocol": "Proxy Protocol",
+ "Proxy Server": "Proxy Server",
+ "Proxy server has authentication": "Proxy server has authentication",
+ "User": "User",
+ "Installed": "Installed",
+ "Not installed": "Not installed",
+ "Running": "Running",
+ "Not running": "Not running",
+ "Remove Token": "Remove Token",
+ "Start": "Start",
+ "Stop": "Stop",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Thêm mới Status Page",
+ "Slug": "Slug",
+ "Accept characters:": "Accept characters:",
+ "startOrEndWithOnly": "Start or end with {0} only",
+ "No consecutive dashes": "No consecutive dashes",
+ "Next": "Next",
+ "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.",
+ "No Proxy": "No Proxy",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "New Status Page",
+ "Page Not Found": "Page Not Found",
+ "Reverse Proxy": "Reverse Proxy",
+ "Backup": "Backup",
+ "About": "About",
+ "wayToGetCloudflaredURL": "(Download cloudflared from {0})",
+ "cloudflareWebsite": "Cloudflare Website",
+ "Message:": "Message:",
+ "Don't know how to get the token? Please read the guide:": "Chưa biết cách lấy token? Xem hướng dẫn tại:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Nếu bạn đang dùng Cloudflare Tunnel, kết nối hiện tại có thể đang bị mất. Bạn có muốn dừng lại? Nhập lại password để xác nhận.",
+ "Other Software": "Phần mềm khác",
+ "For example: nginx, Apache and Traefik.": "Ví dụ: Nginx, Apache hay Traefik.",
+ "Please read": "Hãy xem qua",
+ "Subject:": "Subject:",
+ "Valid To:": "Valid To:",
+ "Days Remaining:": "Số ngày còn lại:",
+ "Issuer:": "Issuer:",
+ "Fingerprint:": "Fingerprint:",
+ "No status pages": "No status pages",
+ "Domain Name Expiry Notification": "Cảnh báo hạn hạn Domain Name",
+ "Proxy": "Proxy",
+ "Date Created": "Ngày khởi tạo",
+ "onebotHttpAddress": "OneBot HTTP Address",
+ "onebotMessageType": "OneBot Message Type",
+ "onebotGroupMessage": "Group",
+ "onebotPrivateMessage": "Private",
+ "onebotUserOrGroupId": "Group/User ID",
+ "onebotSafetyTips": "Để đảm bảo an toàn, hãy thiết lập access token",
+ "Custom": "Tùy chỉnh",
+ "Add New Tag": "Thêm thẻ mới",
+ "webhookAdditionalHeadersDesc": "Đặt header bổ sung được gửi cùng với webhook.",
+ "error": "lỗi",
+ "HTTP Headers": "HTTP Headers",
+ "recurringIntervalMessage": "Chạy một lần mỗi ngày | Chạy một lần mỗi {0} ngày",
+ "Retype the address.": "Nhập lại địa chỉ.",
+ "enableGRPCTls": "Cho phép gửi yêu cầu gRPC với kết nối TLS",
+ "affectedMonitorsDescription": "Chọn kênh theo dõi bị ảnh hưởng bởi lịch bảo trì này",
+ "statusMaintenance": "Bảo trì",
+ "Maintenance": "Bảo trì",
+ "Affected Monitors": "Kênh theo dõi bị ảnh hưởng",
+ "Schedule maintenance": "Thêm lịch bảo trì",
+ "markdownSupported": "Có hỗ trợ Markdown",
+ "Start of maintenance": "Bắt đầu bảo trì",
+ "All Status Pages": "Tất cả các trang trạng thái",
+ "Select status pages...": "Chọn trang trạng thái…",
+ "Certificate Expiry Notification": "Thông báo hết hạn chứng chỉ",
+ "Show update if available": "Hiển thị cập nhật (nếu có)",
+ "What you can try:": "Bạn có thể thử:",
+ "trustProxyDescription": "Tin tưởng các header 'X-Forwarded-*'. Nếu bạn muốn lấy đúng IP máy khách và Uptime Kuma của bạn đứng sau một proxy như Nginx hoặc Apache, bạn nên kích hoạt tính năng này.",
+ "webhookAdditionalHeadersTitle": "Header bổ sung",
+ "Help": "Trợ giúp",
+ "Game": "Trò chơi",
+ "Pick Affected Monitors...": "Chọn kênh theo dõi…",
+ "statusPageRefreshIn": "Làm mới trong: {0}",
+ "Authentication": "Xác thực",
+ "Using a Reverse Proxy?": "Bạn đang sử dụng Reverse Proxy?",
+ "Check how to config it for WebSocket": "Kiểm tra cách cấu hình nó cho WebSocket",
+ "Go back to the previous page.": "Quay trở lại trang trước.",
+ "wayToGetLineNotifyToken": "Bạn có thể lấy access token từ {0}",
+ "Resend Notification if Down X times consecutively": "Gửi lại thông báo nếu Down X lần liên tiếp"
+}
diff --git a/src/lang/xh.json b/src/lang/xh.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/src/lang/xh.json
@@ -0,0 +1 @@
+{}
diff --git a/src/lang/yue.json b/src/lang/yue.json
new file mode 100644
index 000000000..f2a5c4760
--- /dev/null
+++ b/src/lang/yue.json
@@ -0,0 +1,102 @@
+{
+ "languageName": "繁體中文 (廣東話 / 粵語)",
+ "Settings": "設定",
+ "General": "一般",
+ "Dashboard": "表板",
+ "Help": "幫助",
+ "New Update": "有新版本",
+ "Language": "語言",
+ "Appearance": "外觀",
+ "Theme": "主題",
+ "Game": "遊戲",
+ "Version": "版本",
+ "Check Update On GitHub": "去 GitHub 睇下有冇更新",
+ "List": "列表",
+ "Add": "新增",
+ "Primary Base URL": "主要 Base URL",
+ "Heartbeat Retry Interval": "確定為離線的重試間隔",
+ "retryCheckEverySecond": "每 {0} 秒重試一次",
+ "add one": "加一個",
+ "upsideDownModeDescription": "反轉狀態,如果網址係可以正常瀏覽,會被判定為 '離線/DOWN'",
+ "Not available, please setup.": "未可以用,需要設定。",
+ "Discourage search engines from indexing site": "唔建議搜尋器索引",
+ "Remember me": "記住我",
+ "Test": "測試",
+ "DateTime": "日期時間",
+ "Resume": "恢復",
+ "statusMaintenance": "維護緊",
+ "Maintenance": "維護",
+ "Unknown": "唔知",
+ "pauseDashboardHome": "暫停",
+ "Pause": "暫停",
+ "Status": "狀態",
+ "Message": "內容",
+ "No important events": "冇重要事件",
+ "Edit": "編輯",
+ "Delete": "刪除",
+ "Current": "目前",
+ "Uptime": "上線率",
+ "day": "日 | 日",
+ "-day": "日",
+ "hour": "個鐘",
+ "-hour": "個鐘",
+ "Response": "反應時間",
+ "Ping": "反應時間",
+ "URL": "網址",
+ "Retries": "重試數次確定為離線",
+ "Advanced": "進階",
+ "ignoreTLSError": "唔理 TLS/SSL 錯誤",
+ "Upside Down Mode": "反轉模式",
+ "Accepted Status Codes": "接受為上線嘅 HTTP 狀態碼",
+ "Save": "儲存",
+ "Notifications": "通知",
+ "Setup Notification": "設定通知",
+ "Light": "明亮",
+ "Dark": "暗黑",
+ "Auto": "自動",
+ "Normal": "一般",
+ "Bottom": "下方",
+ "None": "冇",
+ "Timezone": "時區",
+ "Search Engine Visibility": "係咪允許搜尋器索引",
+ "Allow indexing": "允許索引",
+ "Change Password": "改密碼",
+ "Current Password": "而家嘅密碼",
+ "New Password": "新密碼",
+ "Repeat New Password": "確認新密碼",
+ "Update Password": "更新密碼",
+ "Disable Auth": "取消登入認証",
+ "Enable Auth": "開啟登入認証",
+ "disableauth.message1": "你係咪確認想取消登入認証 ?",
+ "Please use this option carefully!": "請小心使用。",
+ "Logout": "登出",
+ "Leave": "離開",
+ "I understand, please disable": "我知,唔該取消登入認証",
+ "Confirm": "確認",
+ "Yes": "係",
+ "No": "唔係",
+ "Username": "帳號",
+ "Password": "密碼",
+ "Login": "登入",
+ "Notification Type": "通知類型",
+ "Email": "電郵",
+ "Repeat Password": "重複密碼",
+ "Up": "上線",
+ "Down": "離線",
+ "Pending": "待定",
+ "Name": "名稱",
+ "General Monitor Type": "一般監測器類型",
+ "Passive Monitor Type": "被動監測器類型",
+ "Specific Monitor Type": "特定監測器類型",
+ "Monitor": "監測器 | 監測器",
+ "Keyword": "關鍵字",
+ "Friendly Name": "名稱",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "No Monitors, please": "冇監測器,請",
+ "Monitor Type": "監測器類型",
+ "Heartbeat Interval": "檢查間距",
+ "Add New Monitor": "新增監測器",
+ "Quick Stats": "綜合數據",
+ "markdownSupported": "可以用 Markdown"
+}
diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json
new file mode 100644
index 000000000..1f45d93c0
--- /dev/null
+++ b/src/lang/zh-CN.json
@@ -0,0 +1,790 @@
+{
+ "languageName": "简体中文",
+ "checkEverySecond": "检测频率 {0} 秒",
+ "retryCheckEverySecond": "重试间隔 {0} 秒",
+ "resendEveryXTimes": "每 {0} 次失败则重复发送一次",
+ "resendDisabled": "禁用重复发送",
+ "retriesDescription": "服务被标记为故障并发送通知之前的最大重试次数",
+ "ignoreTLSError": "忽略 HTTPS 站点的 TLS/SSL 错误",
+ "upsideDownModeDescription": "反转状态监控,如果服务可访问,则认为是故障。",
+ "maxRedirectDescription": "允许的最大重定向次数。设置为 0 禁用重定向。",
+ "enableGRPCTls": "允许通过 TLS 连接发送 gRPC 请求",
+ "grpcMethodDescription": "方法名会转换为小驼峰格式,例如 sayHello、check 等等。",
+ "acceptedStatusCodesDescription": "选择被视为成功响应的状态码。",
+ "Maintenance": "维护",
+ "statusMaintenance": "维护",
+ "Schedule maintenance": "计划维护",
+ "Affected Monitors": "受影响的监控项",
+ "Pick Affected Monitors...": "选择受影响的监控项…",
+ "Start of maintenance": "维护开始",
+ "All Status Pages": "所有状态页面",
+ "Select status pages...": "选择状态页面…",
+ "recurringIntervalMessage": "每天一次 | 每 {0} 天一次",
+ "affectedMonitorsDescription": "选择受当前维护影响的监控项",
+ "affectedStatusPages": "在所选状态页面上显示此维护消息",
+ "atLeastOneMonitor": "至少选择一个受影响的监控项",
+ "passwordNotMatchMsg": "两次输入的密码不一致。",
+ "notificationDescription": "通知必须被分配给监控项才能正常工作。",
+ "keywordDescription": "在纯 HTML 或 JSON 响应中搜索关键字,区分大小写。",
+ "pauseDashboardHome": "暂停",
+ "deleteMonitorMsg": "确定要删除此监控项吗?",
+ "deleteMaintenanceMsg": "确定要删除此维护吗?",
+ "deleteNotificationMsg": "确定要为所有监控项删除此通知吗?",
+ "dnsPortDescription": "DNS 服务器端口,默认为 53,您可以在任何时候更改此端口。",
+ "resolverserverDescription": "默认服务器是 Cloudflare。您随时可以修改解析服务器。",
+ "rrtypeDescription": "选择要监控的资源记录类型",
+ "pauseMonitorMsg": "确定要暂停吗?",
+ "enableDefaultNotificationDescription": "新的监控项将默认启用此通知,您仍然为每个监控项单独禁用。",
+ "clearEventsMsg": "确定要删除此监控项的所有事件吗?",
+ "clearHeartbeatsMsg": "确定要删除此监控项的所有心跳状态吗?",
+ "confirmClearStatisticsMsg": "确定要删除所有统计信息吗?",
+ "importHandleDescription": "如果想跳过同名的监控项或消息通知,请选择“跳过已存在”。“覆盖”将删除所有现有的监控项和通知。",
+ "confirmImportMsg": "确定要导入备份吗?请确保已经选择了正确的导入选项。",
+ "twoFAVerifyLabel": "请输入令牌码以确认二次验证:",
+ "tokenValidSettingsMsg": "令牌码有效!您现在可以保存二次验证设置了。",
+ "confirmEnableTwoFAMsg": "确定要启用二次验证吗?",
+ "confirmDisableTwoFAMsg": "确定要禁用二次验证吗?",
+ "Settings": "设置",
+ "Dashboard": "仪表盘",
+ "New Update": "有新版本",
+ "Language": "语言",
+ "Appearance": "外观",
+ "Theme": "主题",
+ "General": "常规",
+ "Primary Base URL": "站点主 URL",
+ "Version": "版本",
+ "Check Update On GitHub": "检查 GitHub 上的更新",
+ "List": "列表",
+ "Add": "添加",
+ "Add New Monitor": "添加监控项",
+ "Quick Stats": "状态速览",
+ "Up": "正常",
+ "Down": "故障",
+ "Pending": "重试中",
+ "Unknown": "未知",
+ "Pause": "暂停",
+ "Name": "名称",
+ "Status": "状态",
+ "DateTime": "日期时间",
+ "Message": "消息",
+ "No important events": "暂无重要事件",
+ "Resume": "恢复",
+ "Edit": "编辑",
+ "Delete": "删除",
+ "Current": "当前",
+ "Uptime": "在线时间",
+ "Cert Exp.": "证书有效期",
+ "day": "天",
+ "-day": "天",
+ "hour": "小时",
+ "-hour": "小时",
+ "Response": "响应",
+ "Ping": "Ping",
+ "Monitor Type": "监控类型",
+ "Keyword": "关键字",
+ "Friendly Name": "显示名称",
+ "URL": "URL",
+ "Hostname": "主机名",
+ "Port": "端口",
+ "Heartbeat Interval": "心跳间隔",
+ "Retries": "重试次数",
+ "Heartbeat Retry Interval": "心跳重试间隔",
+ "Resend Notification if Down X times consecutively": "连续失败时重复发送通知的间隔次数",
+ "Advanced": "高级",
+ "Upside Down Mode": "反转模式",
+ "Max. Redirects": "最大重定向次数",
+ "Accepted Status Codes": "有效状态码",
+ "Push URL": "推送 URL",
+ "needPushEvery": "您需要每 {0} 秒调用一次该 URL。",
+ "pushOptionalParams": "可选参数:{0}",
+ "Save": "保存",
+ "Notifications": "通知",
+ "Not available, please setup.": "暂不可用,请先设置。",
+ "Setup Notification": "设置通知",
+ "Light": "明亮",
+ "Dark": "黑暗",
+ "Auto": "自动",
+ "Theme - Heartbeat Bar": "主题 - 心跳栏",
+ "Normal": "正常",
+ "Bottom": "靠下",
+ "None": "不显示",
+ "Timezone": "时区",
+ "Search Engine Visibility": "搜索引擎可见性",
+ "Allow indexing": "允许索引",
+ "Discourage search engines from indexing site": "阻止搜索引擎索引网站",
+ "Change Password": "修改密码",
+ "Current Password": "当前密码",
+ "New Password": "新密码",
+ "Repeat New Password": "重复新密码",
+ "Update Password": "更新密码",
+ "Disable Auth": "禁用身份验证",
+ "Enable Auth": "启用身份验证",
+ "disableauth.message1": "是否确定 取消登录验证 ?",
+ "disableauth.message2": "这是为 有第三方认证 的用户提供的功能,如 Cloudflare Access。",
+ "Please use this option carefully!": "请谨慎使用!",
+ "Logout": "退出",
+ "Leave": "离开",
+ "I understand, please disable": "我已了解,继续禁用",
+ "Confirm": "确认",
+ "Yes": "是",
+ "No": "否",
+ "Username": "用户名",
+ "Password": "密码",
+ "Remember me": "记住我",
+ "Login": "登录",
+ "No Monitors, please": "还没有监控项,",
+ "add one": "点击添加",
+ "Notification Type": "通知类型",
+ "Email": "邮件",
+ "Test": "测试",
+ "Certificate Info": "证书信息",
+ "Resolver Server": "解析服务器",
+ "Resource Record Type": "资源记录类型",
+ "Last Result": "上次结果",
+ "Create your admin account": "创建管理员账户",
+ "Repeat Password": "重复密码",
+ "Import Backup": "导入备份",
+ "Export Backup": "导出备份",
+ "Export": "导出",
+ "Import": "导入",
+ "respTime": "响应时间(毫秒)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "默认开启",
+ "Apply on all existing monitors": "应用到所有现有监控项",
+ "Create": "创建",
+ "Clear Data": "清除数据",
+ "Events": "事件",
+ "Heartbeats": "心跳",
+ "Auto Get": "自动获取",
+ "backupDescription": "您可以将所有监控项和通知备份到 JSON 文件。",
+ "backupDescription2": "注意: 不包括历史状态和事件数据。",
+ "backupDescription3": "导出的文件可能包含敏感信息,例如通知的令牌,请小心存放。",
+ "alertNoFile": "请选择要导入的文件。",
+ "alertWrongFileType": "请选择一个 JSON 文件。",
+ "Clear all statistics": "清除所有统计数据",
+ "Skip existing": "跳过已存在",
+ "Overwrite": "覆盖",
+ "Options": "选项",
+ "Keep both": "全部保留",
+ "Verify Token": "验证令牌",
+ "Setup 2FA": "设置二次验证",
+ "Enable 2FA": "启用二次验证",
+ "Disable 2FA": "禁用二次验证",
+ "2FA Settings": "二次验证设置",
+ "Two Factor Authentication": "二次验证",
+ "Active": "激活",
+ "Inactive": "停用",
+ "Token": "令牌",
+ "Show URI": "显示 URI",
+ "Tags": "标签",
+ "Add New below or Select...": "在下面添加或选择…",
+ "Tag with this name already exist.": "相同名称的标签已存在。",
+ "Tag with this value already exist.": "相同内容的标签已存在。",
+ "color": "颜色",
+ "value (optional)": "值(可选)",
+ "Gray": "灰色",
+ "Red": "红色",
+ "Orange": "橙色",
+ "Green": "绿色",
+ "Blue": "蓝色",
+ "Indigo": "靛蓝",
+ "Purple": "紫色",
+ "Pink": "粉色",
+ "Search...": "搜索…",
+ "Avg. Ping": "平均 Ping",
+ "Avg. Response": "平均响应",
+ "Entry Page": "入口页面",
+ "statusPageNothing": "这里什么也没有,请添加一个分组或一个监控项。",
+ "No Services": "无服务",
+ "All Systems Operational": "所有服务运行正常",
+ "Partially Degraded Service": "部分服务出现故障",
+ "Degraded Service": "全部服务出现故障",
+ "Add Group": "添加分组",
+ "Add a monitor": "添加监控项",
+ "Edit Status Page": "编辑状态页面",
+ "Go to Dashboard": "前往仪表盘",
+ "Status Page": "状态页面",
+ "Status Pages": "状态页面",
+ "defaultNotificationName": "{notification} 通知({number})",
+ "here": "这里",
+ "Required": "必填",
+ "telegram": "Telegram",
+ "ZohoCliq": "ZohoCliq",
+ "Bot Token": "机器人令牌",
+ "wayToGetTelegramToken": "您可以从 {0} 获取 Token。",
+ "Chat ID": "Chat ID",
+ "supportTelegramChatID": "支持对话/群组/频道的 Chat ID",
+ "wayToGetTelegramChatID": "您可以发送一条消息给您的机器人,然后访问此链接来查看 chat_id:",
+ "YOUR BOT TOKEN HERE": "这里替换成您的 BOT TOKEN",
+ "chatIDNotFound": "未找到 Chat ID,请先给您的机器人发送一条消息",
+ "webhook": "Webhook",
+ "Post URL": "Post URL",
+ "Content Type": "Content Type",
+ "webhookJsonDesc": "{0} 适合现代的 HTTP 服务器,例如 Express.js",
+ "webhookFormDataDesc": "{multipart} 适合 PHP,其中 JSON 需要使用 {decodeFunction} 解码",
+ "webhookAdditionalHeadersTitle": "额外 Header",
+ "webhookAdditionalHeadersDesc": "设置通过此 Webhook 发送的额外 Header。",
+ "smtp": "电子邮件(SMTP)",
+ "secureOptionNone": "无 / STARTTLS(常用端口 25、587)",
+ "secureOptionTLS": "TLS(常用端口 465)",
+ "Ignore TLS Error": "忽略 TLS 错误",
+ "From Email": "发信人",
+ "emailCustomSubject": "邮件主题",
+ "To Email": "收信人",
+ "smtpCC": "抄送",
+ "smtpBCC": "密送",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook 网址",
+ "wayToGetDiscordURL": "可在服务器设置 -> 整合 -> Webhook -> 创建 Webhook 中获取",
+ "Bot Display Name": "机器人显示名称",
+ "Prefix Custom Message": "自定义消息前缀",
+ "Hello @everyone is...": "{'@'}everyone,……",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook 网址",
+ "wayToGetTeamsURL": "您可以在{0}了解如何获取 Webhook URL。",
+ "wayToGetZohoCliqURL": "您可以在{0}了解如何创建 Webhook URL。",
+ "signal": "Signal",
+ "Number": "号码",
+ "Recipients": "收件人",
+ "needSignalAPI": "您需要有一个支持 REST API 的 Signal 客户端。",
+ "wayToCheckSignalURL": "您可以通过下面的 URL 了解如何设置:",
+ "signalImportant": "重要:您不能混合设定收件人的分组和号码!",
+ "gotify": "Gotify",
+ "Application Token": "应用程序令牌",
+ "Server URL": "服务器 URL",
+ "Priority": "优先级",
+ "slack": "Slack",
+ "Icon Emoji": "Emoji 图标",
+ "Channel Name": "频道名称",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "aboutWebhooks": "关于 Webhook 的更多信息:{0}",
+ "aboutChannelName": "如果您想绕过 Webhook 频道,请在 {0} 字段输入所需的频道名称。例如:#other-channel",
+ "aboutKumaURL": "如果保留 Uptime Kuma URL 为空,将会默认指向项目的 GitHub 页面。",
+ "emojiCheatSheet": "Emoji 速查:{0}",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "使用 Techulus 推送",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (支持 50+ 种通知服务)",
+ "GoogleChat": "Google Chat(仅 Google Workspace)",
+ "pushbullet": "Pushbullet",
+ "Kook": "Kook",
+ "wayToGetKookBotToken": "在 {0} 创建应用并获取机器人 Token",
+ "wayToGetKookGuildID": "在 Kook 设置中打开“开发者模式”,然后右键点击频道可获取其 ID",
+ "Guild ID": "频道 ID",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "用户密钥",
+ "Device": "设备",
+ "Message Title": "消息标题",
+ "Notification Sound": "通知铃声",
+ "More info on:": "更多信息:{0}",
+ "pushoverDesc1": "紧急优先级(2)会在一小时内每隔 30 秒重试一次。",
+ "pushoverDesc2": "如果您想发送通知给不同的设备,请填写“设备”字段。",
+ "SMS Type": "短信类型",
+ "octopushTypePremium": "Premium(快 - 推荐用于警报)",
+ "octopushTypeLowCost": "Low Cost(慢 - 有时会被运营商屏蔽)",
+ "checkPrice": "查看 {0} 的价格:",
+ "apiCredentials": "API Credentials",
+ "octopushLegacyHint": "您是否在使用旧版本的 Octopush(2011-2020)?",
+ "Check octopush prices": "查看 Octopush 的价格 {0}。",
+ "octopushPhoneNumber": "电话号码(国际格式,例如:+33612345678) ",
+ "octopushSMSSender": "短信发送名称:3-11 位大小写字母、数字和空格(a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea 设备 ID",
+ "Apprise URL": "Apprise 网址",
+ "Example:": "例如:{0}",
+ "Read more:": "了解更多:{0}",
+ "Status:": "状态:{0}",
+ "Read more": "了解更多",
+ "appriseInstalled": "Apprise 已安装。",
+ "appriseNotInstalled": "Apprise 未安装。{0}",
+ "Access Token": "访问令牌",
+ "Channel access token": "频道 Access Token",
+ "Line Developers Console": "Line 开发者控制台",
+ "lineDevConsoleTo": "Line 开发者控制台 - {0}",
+ "Basic Settings": "基本设置",
+ "User ID": "用户 ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "首先访问 {0},创建一个提供者和频道(Messaging API),然后您就可以从上面提到的菜单获取频道的 Access Token 和用户 ID。",
+ "Icon URL": "图标 URL",
+ "aboutIconURL": "您可以在“图标 URL”中提供一个图片链接来覆盖默认的资料图片。如果设置了 Emoji 图标则此字段会被忽略。",
+ "aboutMattermostChannelName": "您可以覆盖 Webhook 发送消息的默认频道,只需在“频道名称”字段中输入您想要的频道名。这需要在 Mattermost 的 Webhook 设置中启用。例如:#other-channel",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收信人。",
+ "promosmsTypeFlash": "SMS FLASH - 消息会自动显示在收信人设备上。仅限波兰地区的收信人。",
+ "promosmsTypeFull": "SMS FULL - 高级短信,您可以使用您自己的发信人名称(需要先注册)。对于警报来说更可靠。",
+ "promosmsTypeSpeed": "SMS SPEED - 最高优先级。非常快速可靠,但更贵(大约两倍 SMS FULL 的价格)。",
+ "promosmsPhoneNumber": "电话号码(波兰地区收信人可以不填区号)",
+ "promosmsSMSSender": "短信发信人名称:已注册的名称或以下默认值之一:InfoSMS、SMS Info、MaxSMS、INFO、SMS",
+ "Feishu": "飞书",
+ "Feishu WebHookUrl": "飞书 WebHook URL",
+ "matrixHomeserverURL": "服务器 URL(包含 http(s):// 和可选的端口号)",
+ "Internal Room Id": "内部房间 ID",
+ "matrixDesc1": "您可以在 Matrix 客户端房间设置的高级选项内找到内部房间 ID。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。",
+ "matrixDesc2": "请不要使用您自己的 Access Token,这将开放您所有的账户权限和您已加入房间的权限。我们强烈建议您创建一个新用户并邀请它至您接收通知的房间中。您可以运行以下命令来获取 Access Token:{0}",
+ "Method": "方法",
+ "Body": "请求体",
+ "Headers": "请求头",
+ "PushUrl": "推送 URL",
+ "HeadersInvalidFormat": "请求头不是有效的 JSON: ",
+ "BodyInvalidFormat": "请求体不是有效的 JSON: ",
+ "Monitor History": "监控历史",
+ "clearDataOlderThan": "保留监控历史数据 {0} 天。",
+ "PasswordsDoNotMatch": "密码不匹配。",
+ "records": "记录",
+ "One record": "一条记录",
+ "steamApiKeyDescription": "要监控 Steam 游戏服务器,您需要 Steam Web-API 密钥。您可以在这里注册您的 API 密钥: ",
+ "Current User": "当前用户",
+ "topic": "Topic",
+ "topicExplanation": "要监控的 MQTT Topic",
+ "successMessage": "成功消息",
+ "successMessageExplanation": "视为成功的 MQTT 消息",
+ "recent": "最近",
+ "Done": "完成",
+ "Info": "信息",
+ "Security": "安全性",
+ "Steam API Key": "Steam API 密钥",
+ "Shrink Database": "压缩数据库",
+ "Pick a RR-Type...": "选择资源记录类型…",
+ "Pick Accepted Status Codes...": "选择有效的状态码…",
+ "Default": "默认",
+ "HTTP Options": "HTTP 选项",
+ "Create Incident": "创建事件",
+ "Title": "标题",
+ "Content": "内容",
+ "Style": "类型",
+ "info": "信息",
+ "warning": "警告",
+ "danger": "危险",
+ "error": "错误",
+ "critical": "关键",
+ "primary": "主要",
+ "light": "明亮",
+ "dark": "黑暗",
+ "Post": "发布",
+ "Please input title and content": "请输入标题和内容",
+ "Created": "创建时间",
+ "Last Updated": "更新时间",
+ "Unpin": "取消钉选",
+ "Switch to Light Theme": "切换到浅色主题",
+ "Switch to Dark Theme": "切换到深色主题",
+ "Show Tags": "显示标签",
+ "Hide Tags": "隐藏标签",
+ "Description": "描述",
+ "No monitors available.": "没有可用的监控项。",
+ "Add one": "添加一个",
+ "No Monitors": "没有监控项",
+ "Untitled Group": "无标题分组",
+ "Services": "服务",
+ "Discard": "放弃",
+ "Cancel": "取消",
+ "Powered by": "技术支持:",
+ "shrinkDatabaseDescription": "触发 SQLite 数据库的 VACUUM 命令,如果您的数据库是在 1.10.0 版本之后创建的,则已启用 AUTO_VACUUM,不再需要此操作。",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API 用户名(包括 webapi_ 前缀)",
+ "serwersmsAPIPassword": "API 密码",
+ "serwersmsPhoneNumber": "电话号码",
+ "serwersmsSenderName": "SMS 发信人名称(需要在客户中心注册)",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "电话号码",
+ "smseagleGroup": "通讯录群组名",
+ "smseagleContact": "通讯录联系人",
+ "smseagleRecipientType": "收信人类型",
+ "smseagleRecipient": "收信人(多个需用半角逗号分隔)",
+ "smseagleToken": "API 访问令牌",
+ "smseagleUrl": "您的 SMSEagle 设备 URL",
+ "smseagleEncoding": "以 Unicode 发送",
+ "smseaglePriority": "消息优先级(0-9,默认为 0)",
+ "stackfield": "Stackfield",
+ "Customize": "自定义",
+ "Custom Footer": "自定义底部",
+ "Custom CSS": "自定义 CSS",
+ "smtpDkimSettings": "DKIM 设置",
+ "smtpDkimDesc": "请访问 Nodemailer DKIM {0} 了解配置方法。",
+ "documentation": "文档",
+ "smtpDkimDomain": "域名",
+ "smtpDkimKeySelector": "前缀选择器",
+ "smtpDkimPrivateKey": "密钥",
+ "smtpDkimHashAlgo": "哈希算法(可选)",
+ "smtpDkimheaderFieldNames": "包含在哈希计算对象内的 Header 列表(可选)",
+ "smtpDkimskipFields": "不包含在哈希计算对象内的 Header 列表(可选)",
+ "wayToGetPagerDutyKey": "您可以在 Service -> Service Directory -> (选择一个 Service) -> Integrations -> Add integration 页面中搜索“Events API V2”以获取此 Integration Key,更多信息请看{0}",
+ "Integration Key": "集成密钥",
+ "Integration URL": "集成网址",
+ "Auto resolve or acknowledged": "自动标记为已解决或已读",
+ "do nothing": "不做任何操作",
+ "auto acknowledged": "自动标记为已读",
+ "auto resolve": "自动标记为已解决",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API 接入点",
+ "alertaEnvironment": "环境参数",
+ "alertaApiKey": "API 密钥",
+ "alertaAlertState": "报警时的严重性",
+ "alertaRecoverState": "恢复后的严重性",
+ "deleteStatusPageMsg": "您确认要删除此状态页吗?",
+ "Proxies": "代理",
+ "default": "默认",
+ "enabled": "启用",
+ "setAsDefault": "设为默认",
+ "deleteProxyMsg": "您确认要在所有监控项中删除此代理吗?",
+ "proxyDescription": "代理必须配置到至少一个监控项后才会工作。",
+ "enableProxyDescription": "此代理必须启用才能对监控项的网络请求起作用。您可以通过修改激活状态,临时在所有监控项中禁用此代理。",
+ "setAsDefaultProxyDescription": "此代理会对新创建的监控项默认激活,您仍可以在监控项配置中单独禁用此代理。",
+ "Certificate Chain": "证书链",
+ "Valid": "有效",
+ "Invalid": "无效",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey 密码",
+ "PhoneNumbers": "PhoneNumbers",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "短信模板必须包含以下变量: ",
+ "Bark Endpoint": "Bark 接入点",
+ "Bark Group": "Bark 群组",
+ "Bark Sound": "Bark 铃声",
+ "WebHookUrl": "钉钉自定义机器人 Webhook 地址",
+ "SecretKey": "钉钉自定义机器人加签密钥",
+ "For safety, must use secret key": "出于安全考虑,必须使用加签密钥",
+ "Device Token": "Apple Device Token",
+ "Platform": "平台",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "华为",
+ "High": "高",
+ "Retry": "重试次数",
+ "Topic": "Gorush Topic",
+ "WeCom": "企业微信群机器人",
+ "WeCom Bot Key": "企业微信群机器人 Key",
+ "Setup Proxy": "设置代理",
+ "Proxy Protocol": "代理协议",
+ "Proxy Server": "代理服务器",
+ "Server Address": "服务器地址",
+ "Proxy server has authentication": "代理服务器启用了身份验证功能",
+ "User": "用户名",
+ "Installed": "已安装",
+ "Not installed": "未安装",
+ "Running": "运行中",
+ "Not running": "未运行",
+ "Remove Token": "移除 Token",
+ "Start": "启动",
+ "Stop": "停止",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "添加新的状态页",
+ "Slug": "路径",
+ "Accept characters:": "可接受的字符:",
+ "startOrEndWithOnly": "开头和结尾必须为 {0}",
+ "No consecutive dashes": "不能有连续的破折号",
+ "Next": "下一步",
+ "The slug is already taken. Please choose another slug.": "该路径已被使用。请选择其他路径。",
+ "No Proxy": "无代理",
+ "Authentication": "验证",
+ "HTTP Basic Auth": "HTTP 基础身份验证",
+ "New Status Page": "新的状态页",
+ "Page Not Found": "未找到该页面",
+ "Reverse Proxy": "反向代理",
+ "Backup": "备份",
+ "About": "关于",
+ "wayToGetCloudflaredURL": "(可从 {0} 下载 cloudflared)",
+ "cloudflareWebsite": "Cloudflare 网站",
+ "Message:": "信息:",
+ "Don't know how to get the token? Please read the guide:": "不知道如何获取 Token?请阅读指南:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您正在通过 Cloudflare Tunnel 访问网站,则停止可能会导致当前连接断开。您确定要停止吗?请输入密码以确认。",
+ "HTTP Headers": "HTTP 头",
+ "Trust Proxy": "可信的代理类字段",
+ "Other Software": "其他软件",
+ "For example: nginx, Apache and Traefik.": "例如:nginx、Apache 和 Traefik。",
+ "Please read": "请阅读",
+ "Subject:": "颁发给:",
+ "Valid To:": "有效期至:",
+ "Days Remaining:": "剩余有效天数:",
+ "Issuer:": "颁发者:",
+ "Fingerprint:": "指纹:",
+ "No status pages": "无状态页",
+ "Domain Name Expiry Notification": "域名到期时通知",
+ "Proxy": "代理",
+ "Date Created": "创建于",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "OneBot HTTP 地址",
+ "onebotMessageType": "OneBot 消息类型",
+ "onebotGroupMessage": "群聊",
+ "onebotPrivateMessage": "私聊",
+ "onebotUserOrGroupId": "群组/用户 ID",
+ "onebotSafetyTips": "出于安全原因,请务必设置 AccessToken",
+ "PushDeer Key": "PushDeer 密钥",
+ "Footer Text": "底部自定义文本",
+ "Show Powered By": "显示 Powered By",
+ "Domain Names": "域名",
+ "signedInDisp": "当前用户: {0}",
+ "signedInDispDisabled": "已禁用身份验证。",
+ "RadiusSecret": "Radius 共享机密",
+ "RadiusSecretDescription": "客户端和服务器之间共享的密钥",
+ "RadiusCalledStationId": "NAS 网络访问服务器号码(Called Station Id)",
+ "RadiusCalledStationIdDescription": "所访问的服务器的标识",
+ "RadiusCallingStationId": "呼叫方号码(Calling Station Id)",
+ "RadiusCallingStationIdDescription": "发出请求的设备的标识",
+ "Certificate Expiry Notification": "证书到期时通知",
+ "API Username": "API 用户名",
+ "API Key": "API 密钥",
+ "Recipient Number": "收件人手机号码",
+ "From Name/Number": "发件人名称/手机号码",
+ "Leave blank to use a shared sender number.": "留空以使用平台共享的发件人手机号码。",
+ "Octopush API Version": "Octopush API 版本",
+ "Legacy Octopush-DM": "旧版本 Octopush-DM",
+ "endpoint": "接入点",
+ "octopushAPIKey": "控制台 HTTP API credentials 里的 \"API key\"",
+ "octopushLogin": "控制台 HTTP API credentials 里的 \"Login\"",
+ "promosmsLogin": "API 登录名",
+ "promosmsPassword": "API 密码",
+ "pushoversounds pushover": "Pushover(默认)",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm(长铃声)",
+ "pushoversounds climb": "Climb(长铃声)",
+ "pushoversounds persistent": "Persistent(长铃声)",
+ "pushoversounds echo": "Pushover Echo(长铃声)",
+ "pushoversounds updown": "Up Down(长铃声)",
+ "pushoversounds vibrate": "仅震动",
+ "pushoversounds none": "无(静音)",
+ "pushyAPIKey": "API 密钥",
+ "pushyToken": "设备 Token",
+ "Show update if available": "有更新时通知",
+ "Also check beta release": "一并检查 Beta 版更新",
+ "Using a Reverse Proxy?": "正在使用反向代理?",
+ "Check how to config it for WebSocket": "查看如何将反向代理与 WebSocket 一起使用",
+ "Steam Game Server": "Steam 游戏服务器",
+ "Most likely causes:": "最可能的原因:",
+ "The resource is no longer available.": "您所请求的资源已不再可用。",
+ "There might be a typing error in the address.": "您输入的地址可能有误。",
+ "What you can try:": "您可以尝试以下操作:",
+ "Retype the address.": "重新输入地址。",
+ "Go back to the previous page.": "返回到上一页面。",
+ "Coming Soon": "即将推出",
+ "wayToGetClickSendSMSToken": "您可以在{0}获取 API Username 和 API Key。",
+ "Connection String": "连接字符串",
+ "Query": "查询语句",
+ "settingsCertificateExpiry": "TLS 证书过期通知",
+ "certificationExpiryDescription": "HTTPS 监控项发现被监控目标的 TLS 证书剩余有效期少于以下天数时将发出通知:",
+ "Setup Docker Host": "配置 Docker 宿主信息",
+ "Connection Type": "连接方式",
+ "Docker Daemon": "Docker 守护进程",
+ "deleteDockerHostMsg": "您确定要为所有监控项删除此 Docker 宿主设置吗?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker 容器",
+ "Container Name / ID": "容器名称 / ID",
+ "Docker Host": "Docker 宿主",
+ "Docker Hosts": "Docker 宿主",
+ "ntfy Topic": "ntfy 主题",
+ "Domain": "域名",
+ "Workstation": "工作站",
+ "disableCloudflaredNoAuthMsg": "您现在正处于 No Auth 模式,无需输入密码。",
+ "trustProxyDescription": "信任 'X-Forwarded-*' 头。如果您的 Uptime Kuma 是通过 Nginx 或 Apache 等反代服务对外提供访问的话,则您应当启用本功能以获取正确的客户端 IP。",
+ "wayToGetLineNotifyToken": "您可以在 {0} 获取 Access token",
+ "Examples": "例如",
+ "Home Assistant URL": "Home Assistant 地址",
+ "Long-Lived Access Token": "长期访问令牌",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "长期访问令牌可通过点击左下角您的用户名,滚动到页面底部并点击 Create Token 按钮获取。 ",
+ "Notification Service": "Notification Service",
+ "default: notify all devices": "默认:通知所有设备",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "通知服务的列表可在 Home Assistant 中的 Developer Tools > Services 通过搜索您的设备或手机的名称来获得。",
+ "Automations can optionally be triggered in Home Assistant:": "可以在 Home Assistant 使用下列模板设置自动化操作的触发条件:",
+ "Trigger type:": "触发类型:",
+ "Event type:": "事件类型:",
+ "Event data:": "事件数据:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "然后您可以选择关联操作,例如切换到 RGB 灯发出红光的场景。",
+ "Frontend Version": "前端版本",
+ "Frontend Version do not match backend version!": "前端版本与后端版本不匹配!",
+ "Base URL": "API 基础地址",
+ "goAlertInfo": "GoAlert 是一个用于呼叫调度、自动汇报和通知(如 SMS 或语音呼叫)的开源应用程序。在正确的时间以正确的方式自动让正确的人参与!{0}",
+ "goAlertIntegrationKeyInfo": "使用形如 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 的通用 API 集成密钥,通常是复制来的链接中的 token 参数值。",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "已弃用:由于大量新功能的加入,以及备份功能没有时时维护,现在备份功能已经无法生成完整的备份和恢复完整的设置。",
+ "backupRecommend": "请改为直接备份 docker 卷或者数据文件夹(./data/)。",
+ "Optional": "可选的",
+ "squadcast": "Squadcast",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API 文档 ",
+ "Gateway Type": "网关类型",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "可用的数字分隔符包括",
+ "or": "或",
+ "recurringInterval": "时间间隔",
+ "Recurring": "重复",
+ "strategyManual": "手动启用/禁用",
+ "warningTimezone": "使用服务器时区",
+ "weekdayShortMon": "周一",
+ "weekdayShortTue": "周二",
+ "weekdayShortWed": "周三",
+ "weekdayShortThu": "周四",
+ "weekdayShortFri": "周五",
+ "weekdayShortSat": "周六",
+ "weekdayShortSun": "周日",
+ "dayOfWeek": "每周计划",
+ "dayOfMonth": "每月计划",
+ "lastDay": "结束日",
+ "lastDay1": "每月最后一天",
+ "lastDay2": "每月倒数第二天",
+ "lastDay3": "每月倒数第三天",
+ "lastDay4": "每月倒数第四天",
+ "No Maintenance": "无维护计划",
+ "pauseMaintenanceMsg": "确定要暂停吗?",
+ "maintenanceStatus-under-maintenance": "正在维护",
+ "maintenanceStatus-inactive": "未启用",
+ "maintenanceStatus-scheduled": "已计划",
+ "maintenanceStatus-ended": "已结束",
+ "maintenanceStatus-unknown": "未知",
+ "Display Timezone": "显示时区",
+ "Server Timezone": "服务器时区",
+ "statusPageMaintenanceEndDate": "结束时间",
+ "IconUrl": "图标 URL",
+ "Enable DNS Cache": "启用 DNS 缓存",
+ "Enable": "启用",
+ "Disable": "禁用",
+ "dnsCacheDescription": "可能无法在某些 IPv6 环境工作,如果遇到问题请禁用。",
+ "Single Maintenance Window": "单一时间窗口",
+ "Maintenance Time Window of a Day": "每日维护时间窗口",
+ "Effective Date Range": "生效日期范围(可选)",
+ "Schedule Maintenance": "计划维护",
+ "Date and Time": "日期时间",
+ "DateTime Range": "日期时间范围",
+ "Strategy": "策略",
+ "Free Mobile User Identifier": "Free Mobile 用户 ID",
+ "Free Mobile API Key": "Free Mobile API Key",
+ "Enable TLS": "启用 TLS",
+ "Proto Service Name": "Proto 服务名称",
+ "Proto Method": "Proto 方法",
+ "Proto Content": "Proto 内容",
+ "Economy": "经济",
+ "Lowcost": "低价",
+ "high": "高价",
+ "General Monitor Type": "常规监控类型",
+ "Passive Monitor Type": "被动监控类型",
+ "Specific Monitor Type": "特殊监控类型",
+ "dataRetentionTimeError": "保留期必须为0或更大",
+ "Monitor": "监控项",
+ "Custom": "自定义",
+ "promosmsAllowLongSMS": "允许长的短信",
+ "confirmDeleteTagMsg": "您确定要删除这个标签?与此标签关联的监控项不会被删除。",
+ "infiniteRetention": "设为0表示无限保留期。",
+ "Help": "帮助",
+ "Game": "游戏",
+ "Packet Size": "数据包大小",
+ "loadingError": "无法获取数据,请稍后重试。",
+ "plugin": "插件 | 插件",
+ "install": "安装",
+ "installing": "正在安装",
+ "uninstall": "卸载",
+ "uninstalling": "正在卸载",
+ "confirmUninstallPlugin": "您确定要卸载此插件吗?",
+ "Custom Monitor Type": "自定义监控类型",
+ "markdownSupported": "支持 Markdown 语法",
+ "Google Analytics ID": "Google Analytics(分析)ID",
+ "Learn More": "了解更多",
+ "Edit Tag": "编辑标签",
+ "telegramMessageThreadID": "(可选)话题 ID",
+ "telegramMessageThreadIDDescription": "可选的唯一标识符,用以向该标识符对应的话题发送消息,仅限启用了话题功能的超级群组可用",
+ "notificationRegional": "地区性通知平台",
+ "telegramSendSilently": "静默发送",
+ "Body Encoding": "请求体编码",
+ "telegramSendSilentlyDescription": "静默地发送消息。消息发布后用户会收到无声通知。",
+ "telegramProtectContent": "阻止转发/保存",
+ "telegramProtectContentDescription": "如果启用,Telegram 中的机器人消息将受到保护,不会被转发和保存。",
+ "Clone Monitor": "克隆监控项",
+ "Clone": "克隆",
+ "cloneOf": "{0} 的克隆",
+ "Expiry": "过期",
+ "Expiry date": "过期时间",
+ "Continue": "继续",
+ "Add Another": "添加另一个",
+ "Add API Key": "添加 API 密钥",
+ "No API Keys": "没有 API 密钥",
+ "apiKey-active": "有效",
+ "apiKey-expired": "已过期",
+ "Expires": "过期时间",
+ "apiKey-inactive": "已禁用",
+ "disableAPIKeyMsg": "您确定要禁用这个 API 密钥?",
+ "deleteAPIKeyMsg": "您确定要删除这个 API 密钥?",
+ "Generate": "生成",
+ "API Keys": "API 密钥",
+ "Don't expire": "从不过期",
+ "Key Added": "API 密钥已生成",
+ "apiKeyAddedMsg": "您的 API 密钥已生成。此页只会显示一次,请妥当保存。",
+ "pagertreeUrgency": "紧急程度",
+ "pagertreeLow": "低",
+ "pagertreeCritical": "严重",
+ "pagertreeIntegrationUrl": "集成 URL 地址",
+ "pagertreeSilent": "静默",
+ "pagertreeMedium": "中",
+ "pagertreeHigh": "高",
+ "pagertreeResolve": "自动解除",
+ "pagertreeDoNothing": "什么都不做",
+ "wayToGetPagerTreeIntegrationURL": "在 PagerTree 中创建 Uptime Kuma 集成后,复制端点 URL 到此处。在 {0} 查看详情",
+ "Add New Tag": "添加新标签",
+ "lunaseaDeviceID": "设备 ID",
+ "lunaseaTarget": "目标",
+ "lunaseaUserID": "用户 ID",
+ "statusPageRefreshIn": "将于 {0} 后刷新",
+ "twilioAccountSID": "账户 SID",
+ "twilioAuthToken": "验证 Token",
+ "twilioFromNumber": "发信号码",
+ "twilioToNumber": "收信号码",
+ "sameAsServerTimezone": "使用服务器时区",
+ "startDateTime": "开始日期/时间",
+ "invalidCronExpression": "无效的 Cron 表达式:{0}",
+ "endDateTime": "结束日期/时间",
+ "cronExpression": "Cron 表达式",
+ "cronSchedule": "计划: ",
+ "ntfyAuthenticationMethod": "鉴权方式",
+ "ntfyUsernameAndPassword": "用户名和密码",
+ "pushoverMessageTtl": "消息存活时间(秒)",
+ "Monitor Setting": "{0} 监控项设置",
+ "Badge Color": "徽章内容颜色",
+ "Badge Suffix": "徽章内容后缀",
+ "Badge Prefix": "徽章内容前缀",
+ "Badge Label": "徽章标签",
+ "Badge Duration": "徽章显示时段",
+ "Badge Type": "徽章类型",
+ "Badge Generator": "{0} 徽章生成器",
+ "Open Badge Generator": "打开徽章生成器",
+ "Badge Style": "徽章样式",
+ "Badge Down Days": "徽章证书到期故障天数",
+ "Badge Warn Days": "徽章证书到期警告天数",
+ "Badge Warn Color": "警告状态下徽章颜色",
+ "Badge Maintenance Color": "维护状态下徽章颜色",
+ "Badge Down Color": "故障状态下徽章颜色",
+ "Badge Up Color": "正常状态下徽章颜色",
+ "Badge Label Suffix": "徽章标签后缀",
+ "Badge URL": "徽章网址",
+ "Badge value (For Testing only.)": "徽章内容(仅供测试)",
+ "Badge Pending Color": "重试中状态下徽章颜色",
+ "Badge Label Prefix": "徽章标签前缀",
+ "Badge Label Color": "徽章标签颜色",
+ "Show Clickable Link Description": "勾选后所有能访问本状态页的访客均可查看该监控项网址。",
+ "Show Clickable Link": "显示可点击的监控项链接",
+ "Group": "组",
+ "Monitor Group": "监控项组",
+ "Cannot connect to the socket server": "无法连接到后端服务器",
+ "Reconnecting...": "重连中……",
+ "Edit Maintenance": "编辑维护计划",
+ "Home": "首页",
+ "noGroupMonitorMsg": "暂无可用,请先创建一个监控项组。",
+ "Close": "关闭"
+}
diff --git a/src/lang/zh-HK.json b/src/lang/zh-HK.json
new file mode 100644
index 000000000..fd5d35e36
--- /dev/null
+++ b/src/lang/zh-HK.json
@@ -0,0 +1,723 @@
+{
+ "languageName": "繁體中文 (香港)",
+ "Settings": "設定",
+ "Dashboard": "主控台",
+ "New Update": "有更新",
+ "Language": "語言",
+ "Appearance": "外觀",
+ "Theme": "主題",
+ "General": "一般",
+ "Version": "版本",
+ "Check Update On GitHub": "到 Github 查看更新",
+ "List": "列表",
+ "Add": "新增",
+ "Add New Monitor": "新增監測器",
+ "Quick Stats": "綜合數據",
+ "Up": "上線",
+ "Down": "離線",
+ "Pending": "待定",
+ "Unknown": "不明",
+ "Pause": "暫停",
+ "pauseDashboardHome": "暫停",
+ "Name": "名稱",
+ "Status": "狀態",
+ "DateTime": "日期時間",
+ "Message": "內容",
+ "No important events": "沒有重要事件",
+ "Resume": "恢復",
+ "Edit": "編輯",
+ "Delete": "刪除",
+ "Current": "目前",
+ "Uptime": "上線率",
+ "Cert Exp.": "証書期限",
+ "day": "日",
+ "-day": "日",
+ "hour": "小時",
+ "-hour": "小時",
+ "checkEverySecond": "每 {0} 秒檢查一次",
+ "Response": "反應時間",
+ "Ping": "反應時間",
+ "Monitor Type": "監測器類型",
+ "Keyword": "關鍵字",
+ "Friendly Name": "名稱",
+ "URL": "網址 URL",
+ "Hostname": "Hostname",
+ "Port": "Port",
+ "Heartbeat Interval": "檢查間距",
+ "Retries": "重試數次確定為離線",
+ "retriesDescription": "重試多少次後才判定為離線及傳送通知。如數值為 0 會即判定為離線及傳送通知。",
+ "Advanced": "進階",
+ "ignoreTLSError": "忽略 TLS/SSL 錯誤",
+ "Upside Down Mode": "反轉模式",
+ "upsideDownModeDescription": "反轉狀態,如網址是可正常瀏覽,會被判定為 '離線/DOWN'",
+ "Max. Redirects": "跟隨重新導向 (Redirect) 的次數",
+ "maxRedirectDescription": "設為 0 即不跟蹤",
+ "Accepted Status Codes": "接受為上線的 HTTP 狀態碼",
+ "acceptedStatusCodesDescription": "可多選",
+ "Save": "儲存",
+ "Notifications": "通知",
+ "Not available, please setup.": "無法使用,需要設定",
+ "Setup Notification": "設定通知",
+ "Light": "明亮",
+ "Dark": "暗黑",
+ "Auto": "自動",
+ "Theme - Heartbeat Bar": "監測器列表 狀態條外觀",
+ "Normal": "一般",
+ "Bottom": "下方",
+ "None": "沒有",
+ "Timezone": "時區",
+ "Search Engine Visibility": "是否允許搜尋器索引",
+ "Allow indexing": "允許索引",
+ "Discourage search engines from indexing site": "不建議搜尋器索引",
+ "Change Password": "變更密碼",
+ "Current Password": "目前密碼",
+ "New Password": "新密碼",
+ "Repeat New Password": "確認新密碼",
+ "passwordNotMatchMsg": "密碼不一致",
+ "Update Password": "更新密碼",
+ "Disable Auth": "取消登入認証",
+ "Enable Auth": "開啟登入認証",
+ "disableauth.message1": "你是否確認取消登入認証 ?",
+ "disableauth.message2": "這個功能是設計給已有第三方認証 的用家,例如 Cloudflare Access。",
+ "Please use this option carefully!": "請小心使用。",
+ "Logout": "登出",
+ "notificationDescription": "新增後,你需要在監測器裡啟用。",
+ "Leave": "離開",
+ "I understand, please disable": "我明白,請取消登入認証",
+ "Confirm": "確認",
+ "Yes": "是",
+ "No": "否",
+ "Username": "帳號",
+ "Password": "密碼",
+ "Remember me": "記住我",
+ "Login": "登入",
+ "No Monitors, please": "沒有監測器,請",
+ "add one": "新增",
+ "Notification Type": "通知類型",
+ "Email": "電郵",
+ "Test": "測試",
+ "keywordDescription": "搜索 HTML 或 JSON 裡是否有出現關鍵字(注意英文大細階)",
+ "Certificate Info": "憑證詳細資料",
+ "deleteMonitorMsg": "是否確定刪除這個監測器?",
+ "deleteNotificationMsg": "是否確定刪除這個通知設定?如監測器啟用了這個通知,將會收不到通知。",
+ "Resolver Server": "DNS 伺服器",
+ "Resource Record Type": "DNS 記錄類型",
+ "resolverserverDescription": "預設為 Cloudflare DNS 伺服器,你可以轉用其他 DNS 伺服器。",
+ "rrtypeDescription": "請選擇 DNS 記錄類型",
+ "pauseMonitorMsg": "是否確定要暫停?",
+ "Last Result": "最後結果",
+ "Create your admin account": "建立管理員帳號",
+ "Repeat Password": "重複密碼",
+ "respTime": "反應時間 (ms)",
+ "notAvailableShort": "N/A",
+ "Create": "建立",
+ "clearEventsMsg": "是否確定刪除這個監測器的所有事件?",
+ "clearHeartbeatsMsg": "是否確定刪除這個監測器的所有脈搏資料?",
+ "confirmClearStatisticsMsg": "是否確定刪除所有監測器的脈搏資料?(您的監測器會繼續正常運作)",
+ "Clear Data": "清除資料",
+ "Events": "事件",
+ "Heartbeats": "脈搏",
+ "Auto Get": "自動獲取",
+ "enableDefaultNotificationDescription": "新增監測器時這個通知會預設啟用,當然每個監測器亦可分別控制開關。",
+ "Default enabled": "預設通知",
+ "Also apply to existing monitors": "同時取用至目前所有監測器",
+ "Export": "匯出",
+ "Import": "匯入",
+ "backupDescription": "您可以備份所有監測器及所有通知。",
+ "backupDescription2": "註:此備份不包括歷史記錄。",
+ "backupDescription3": "此備份可能包含了一些敏感資料如通知裡的 Token,請小心保存備份。",
+ "alertNoFile": "請選擇一個檔案",
+ "alertWrongFileType": "請選擇 JSON 檔案",
+ "twoFAVerifyLabel": "請輸入 Token 以確認 2FA:",
+ "tokenValidSettingsMsg": "Token 有效!您現在可以儲存 2FA 設定。",
+ "confirmEnableTwoFAMsg": "您確定要啟用 2FA 嗎?",
+ "confirmDisableTwoFAMsg": "您確定要停用 2FA 嗎?",
+ "Apply on all existing monitors": "套用至目前所有監測器",
+ "Verify Token": "驗証 Token",
+ "Setup 2FA": "設定 2FA",
+ "Enable 2FA": "開啟 2FA",
+ "Disable 2FA": "關閉 2FA",
+ "2FA Settings": "2FA 設定",
+ "Two Factor Authentication": "雙重認證",
+ "Active": "生效",
+ "Inactive": "未生效",
+ "Token": "Token",
+ "Show URI": "顯示 URI",
+ "Clear all statistics": "清除所有歷史記錄",
+ "retryCheckEverySecond": "Retry every {0} seconds.",
+ "importHandleDescription": "\"略過已存在的\" 會跳過所有相同名稱的監測器或通知。 '覆蓋' 將刪除所有現有的監測器及通知。",
+ "confirmImportMsg": "您確定要匯入備份嗎?請確認你已選擇正確的匯入設定。",
+ "Heartbeat Retry Interval": "Heartbeat Retry Interval",
+ "Import Backup": "匯入備份",
+ "Export Backup": "匯出備份",
+ "Skip existing": "略過已存在的",
+ "Overwrite": "覆蓋",
+ "Options": "選項",
+ "Keep both": "兩者並存",
+ "Tags": "標籤",
+ "Add New below or Select...": "在下方新增或選取…",
+ "Tag with this name already exist.": "Tag with this name already exist.",
+ "Tag with this value already exist.": "Tag with this value already exist.",
+ "color": "顏色",
+ "value (optional)": "值 (非必需)",
+ "Gray": "灰",
+ "Red": "紅",
+ "Orange": "橙",
+ "Green": "綠",
+ "Blue": "藍",
+ "Indigo": "靛",
+ "Purple": "紫",
+ "Pink": "粉紅",
+ "Search...": "搜尋…",
+ "Avg. Ping": "平均反應時間",
+ "Avg. Response": "平均反應時間",
+ "Entry Page": "Entry Page",
+ "statusPageNothing": "Nothing here, please add a group or a monitor.",
+ "No Services": "沒有服務",
+ "All Systems Operational": "一切正常",
+ "Partially Degraded Service": "部份服務受阻",
+ "Degraded Service": "服務受阻",
+ "Add Group": "新增群組",
+ "Add a monitor": "新增監測器",
+ "Edit Status Page": "編輯 Status Page",
+ "Go to Dashboard": "前往主控台",
+ "Status Page": "Status Page",
+ "Status Pages": "Status Pages",
+ "telegram": "Telegram",
+ "webhook": "Webhook",
+ "smtp": "電郵 (SMTP)",
+ "discord": "Discord",
+ "teams": "Microsoft Teams",
+ "signal": "Signal",
+ "gotify": "Gotify",
+ "slack": "Slack",
+ "rocket.chat": "Rocket.chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (支援 50 多種通知)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "deleteStatusPageMsg": "是否確定刪除這個 Status Page?",
+ "Push URL": "推送網址",
+ "needPushEvery": "您應每 {0} 秒呼叫此網址。",
+ "pushOptionalParams": "選填參數:{0}",
+ "defaultNotificationName": "我的 {notification} 通知 ({number})",
+ "here": "此處",
+ "Required": "必填",
+ "Bot Token": "機器人權杖",
+ "wayToGetTelegramToken": "您可以從 {0} 取得 Token。",
+ "Chat ID": "聊天 ID",
+ "supportTelegramChatID": "支援 對話/群組/頻道的聊天 ID",
+ "wayToGetTelegramChatID": "傳送訊息給機器人,並前往以下網址以取得您的 chat ID:",
+ "YOUR BOT TOKEN HERE": "在此填入您的機器人權杖",
+ "chatIDNotFound": "找不到 Chat ID;請先傳送訊息給機器人",
+ "Post URL": "Post 網址",
+ "Content Type": "Content Type",
+ "webhookJsonDesc": "{0} 適合任何現代的 HTTP 伺服器,如 Express.js",
+ "webhookFormDataDesc": "{multipart} 適合 PHP。 JSON 必須先經由 {decodeFunction} 剖析。",
+ "secureOptionNone": "無 / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "忽略 TLS 錯誤",
+ "From Email": "寄件人",
+ "emailCustomSubject": "自訂主旨",
+ "To Email": "收件人",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord Webhook 網址",
+ "wayToGetDiscordURL": "您可以前往 伺服器設定 -> 整合 -> Webhook -> 新 Webhook 以取得",
+ "Bot Display Name": "機器人顯示名稱",
+ "Prefix Custom Message": "前綴自訂訊息",
+ "Webhook URL": "Webhook 網址",
+ "wayToGetTeamsURL": "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。",
+ "Number": "號碼",
+ "Recipients": "收件人",
+ "needSignalAPI": "您需要有 REST API 的 Signal 客戶端。",
+ "wayToCheckSignalURL": "您可以前往下列網址以了解如何設定:",
+ "signalImportant": "注意: 不得混合收件人的群組和號碼!",
+ "Application Token": "應用程式權杖",
+ "Server URL": "伺服器網址",
+ "Priority": "優先度",
+ "Icon Emoji": "Emoji 圖示",
+ "Channel Name": "頻道名稱",
+ "Uptime Kuma URL": "Uptime Kuma 網址",
+ "aboutWebhooks": "更多關於 Webhook 的資訊: {0}",
+ "aboutChannelName": "如果您不想使用 Webhook 頻道,請在 {0} 頻道名稱欄位填入您想使用的頻道。例如: #其他頻道",
+ "aboutKumaURL": "如果您未填入 Uptime Kuma 網址。將預設使用專案 Github 頁面。",
+ "emojiCheatSheet": "Emoji 一覽表: {0}",
+ "PushByTechulus": "Push by Techulus",
+ "clicksendsms": "ClickSend SMS",
+ "GoogleChat": "Google Chat (僅限 Google Workspace)",
+ "User Key": "使用者金鑰",
+ "Device": "裝置",
+ "Message Title": "訊息標題",
+ "Notification Sound": "通知音效",
+ "More info on:": "更多資訊: {0}",
+ "pushoverDesc1": "緊急優先度 (2) 的重試間隔為 30 秒並且會在 1 小時後過期。",
+ "pushoverDesc2": "如果您想要傳送通知到不同裝置,請填寫裝置欄位。",
+ "SMS Type": "簡訊類型",
+ "octopushTypePremium": "Premium (快速 - 建議用於警報)",
+ "octopushTypeLowCost": "Low Cost (緩慢 - 有時會被營運商阻擋)",
+ "checkPrice": "查看 {0} 價格:",
+ "apiCredentials": "API 認證",
+ "octopushLegacyHint": "您使用的是舊版的 Octopush (2011-2020) 還是新版?",
+ "Check octopush prices": "查看 octopush 價格 {0}。",
+ "octopushPhoneNumber": "電話號碼 (intl 格式,例如:+33612345678) ",
+ "octopushSMSSender": "簡訊寄件人名稱:3-11位英數字元及空白 (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea 裝置 ID",
+ "Apprise URL": "Apprise 網址",
+ "Example:": "範例:{0}",
+ "Read more:": "深入瞭解:{0}",
+ "Status:": "狀態:{0}",
+ "Read more": "深入瞭解",
+ "appriseInstalled": "已安裝 Apprise。",
+ "appriseNotInstalled": "尚未安裝 Apprise。{0}",
+ "Access Token": "存取權杖",
+ "Channel access token": "頻道存取權杖",
+ "Line Developers Console": "Line 開發者控制台",
+ "lineDevConsoleTo": "Line 開發者控制台 - {0}",
+ "Basic Settings": "基本設定",
+ "User ID": "使用者 ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "首先,前往 {0},建立 provider 和 channel (Messaging API)。接著您就可以從上面提到的選單項目中取得頻道存取權杖及使用者 ID。",
+ "Icon URL": "圖示網址",
+ "aboutIconURL": "您可以在 \"圖示網址\" 中提供圖片網址以覆蓋預設個人檔案圖片。若已設定 Emoji 圖示,將忽略此設定。",
+ "aboutMattermostChannelName": "您可以在 \"頻道名稱\" 欄位中填寫頻道名稱以覆蓋 Webhook 的預設頻道。必須在 Mattermost 的 Webhook 設定中啟用。例如:#其他頻道",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - 便宜,但是很慢且經常過載。僅限位於波蘭的收件人。",
+ "promosmsTypeFlash": "SMS FLASH - 訊息會自動在收件人的裝置上顯示。僅限位於波蘭的收件人。",
+ "promosmsTypeFull": "SMS FULL - 高級版,您可以使用您的寄件人名稱 (必須先註冊名稱。對於警報來說十分可靠。",
+ "promosmsTypeSpeed": "SMS SPEED - 系統中的最高優先度。快速、可靠,但昂貴 (約 SMS FULL 的兩倍價格)。",
+ "promosmsPhoneNumber": "電話號碼 (若收件人位於波蘭則無需輸入區域代碼)",
+ "promosmsSMSSender": "簡訊寄件人名稱:預先註冊的名稱或以下的預設名稱:InfoSMS、SMS Info、MaxSMS、INFO、SMS",
+ "Feishu WebHookUrl": "飛書 WebHook 網址",
+ "matrixHomeserverURL": "Homeserver 網址 (開頭為 http(s)://,結尾可能帶連接埠)",
+ "Internal Room Id": "Internal Room ID",
+ "matrixDesc1": "您可以在 Matrix 客戶端的房間設定中的進階選項找到 internal room ID。應該看起來像 !QMdRCpUIfLwsfjxye6:home.server。",
+ "matrixDesc2": "使用您自己的 Matrix 使用者存取權杖將賦予存取您的帳號和您加入的房間的完整權限。建議建立新使用者,並邀請至您想要接收通知的房間中。您可以執行 {0} 以取得存取權杖",
+ "Method": "方法",
+ "Body": "主體",
+ "Headers": "標頭",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "要求標頭不是有效的 JSON:",
+ "BodyInvalidFormat": "請求主體不是有效的 JSON:",
+ "Monitor History": "監測器歷史紀錄",
+ "clearDataOlderThan": "保留 {0} 天內的監測器歷史紀錄。",
+ "PasswordsDoNotMatch": "密碼不相符。",
+ "records": "記錄",
+ "One record": "一項記錄",
+ "Showing {from} to {to} of {count} records": "正在顯示 {count} 項記錄中的 {from} 至 {to} 項",
+ "steamApiKeyDescription": "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:",
+ "Current User": "目前使用者",
+ "recent": "最近",
+ "Done": "完成",
+ "Info": "資訊",
+ "Security": "安全性",
+ "Steam API Key": "Steam API Key",
+ "Shrink Database": "壓縮資料庫",
+ "Pick a RR-Type...": "選擇資源記錄類型…",
+ "Pick Accepted Status Codes...": "選擇可接受的狀態碼…",
+ "Default": "預設",
+ "HTTP Options": "HTTP 選項",
+ "Create Incident": "建立事件",
+ "Title": "標題",
+ "Content": "內容",
+ "Style": "樣式",
+ "info": "資訊",
+ "warning": "警告",
+ "danger": "危險",
+ "primary": "主要",
+ "light": "淺色",
+ "dark": "暗色",
+ "Post": "發佈",
+ "Please input title and content": "請輸入標題及內容",
+ "Created": "建立",
+ "Last Updated": "最後更新",
+ "Unpin": "取消釘選",
+ "Switch to Light Theme": "切換至淺色佈景主題",
+ "Switch to Dark Theme": "切換至深色佈景主題",
+ "Show Tags": "顯示標籤",
+ "Hide Tags": "隱藏標籤",
+ "Description": "描述",
+ "No monitors available.": "沒有可用的監測器。",
+ "Add one": "新增一個",
+ "No Monitors": "無監測器",
+ "Untitled Group": "未命名群組",
+ "Services": "服務",
+ "Discard": "捨棄",
+ "Cancel": "取消",
+ "shrinkDatabaseDescription": "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API 使用者名稱 (包括 webapi_ 前綴)",
+ "serwersmsAPIPassword": "API 密碼",
+ "serwersmsPhoneNumber": "電話號碼",
+ "serwersmsSenderName": "SMS 寄件人名稱 (由客戶入口網站註冊)",
+ "stackfield": "Stackfield",
+ "smtpDkimSettings": "DKIM 設定",
+ "smtpDkimDesc": "請參考 Nodemailer DKIM {0} 使用方式。",
+ "documentation": "文件",
+ "smtpDkimDomain": "網域名稱",
+ "smtpDkimKeySelector": "Key Selector",
+ "smtpDkimPrivateKey": "私密金鑰",
+ "smtpDkimHashAlgo": "雜湊演算法 (選填)",
+ "smtpDkimheaderFieldNames": "要簽署的郵件標頭 (選填)",
+ "smtpDkimskipFields": "不簽署的郵件標頭 (選填)",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API Endpoint",
+ "alertaEnvironment": "環境",
+ "alertaApiKey": "API 金鑰",
+ "alertaAlertState": "警示狀態",
+ "alertaRecoverState": "恢復狀態",
+ "Proxies": "代理伺服器",
+ "default": "預設",
+ "enabled": "啟用",
+ "setAsDefault": "設為預設",
+ "deleteProxyMsg": "您確定要為所有監測器刪除此 Proxy 嗎?",
+ "proxyDescription": "必須將 Proxy 指派給監測器才能運作。",
+ "enableProxyDescription": "此 Proxy 在啟用前不會在監測器上生效,您可以藉由控制啟用狀態來暫時對所有的監測器停用 Proxy。",
+ "setAsDefaultProxyDescription": "預設情況下,新監測器將啟用此 Proxy。您仍可分別停用各監測器的 Proxy。",
+ "Maintenance": "維護",
+ "statusMaintenance": "維護中",
+ "Enable DNS Cache": "啟用 DNS 快取",
+ "Enable": "啟用",
+ "Disable": "停用",
+ "Schedule maintenance": "計劃維護",
+ "Help": "幫助",
+ "Valid To:": "有效期至:",
+ "Date Created": "新增日期",
+ "resendEveryXTimes": "每 {0} 次便重新傳送",
+ "resendDisabled": "重新傳送已停用",
+ "enableGRPCTls": "允許以 TLS 連線傳送 gRPC 要求",
+ "recurringIntervalMessage": "每天一次 | 每 {0} 天一次",
+ "affectedMonitorsDescription": "選擇受目前維護影響的監測器",
+ "affectedStatusPages": "在已選取的狀態頁中顯示此維護訊息",
+ "Primary Base URL": "主要 Base URL",
+ "Passive Monitor Type": "被動監測器類型",
+ "Resend Notification if Down X times consecutively": "每 X 次心跳皆離線,重新傳送通知",
+ "Game": "遊戲",
+ "Specific Monitor Type": "特定監測器類型",
+ "Monitor": "監測器 | 監測器",
+ "General Monitor Type": "一般監測器類型",
+ "Affected Monitors": "受影響的監測器",
+ "Powered by": "技術支持:",
+ "Add New Status Page": "新增 Status Page",
+ "Page Not Found": "找不到頁面",
+ "Start of maintenance": "維護開始時間",
+ "All Status Pages": "所有 Status Page",
+ "webhookAdditionalHeadersTitle": "額外 Header",
+ "successMessage": "成功訊息",
+ "error": "錯誤",
+ "critical": "嚴重",
+ "Customize": "自定義",
+ "Custom Footer": "自訂 Footer",
+ "Custom CSS": "自訂 CSS",
+ "Valid": "有效",
+ "Invalid": "無效",
+ "Installed": "已安裝",
+ "Not installed": "未安裝",
+ "Running": "執行中",
+ "Stop": "停止",
+ "Next": "下一步",
+ "No Proxy": "無 Proxy",
+ "Backup": "備份",
+ "Pick Affected Monitors...": "挑選受影響的監測器…",
+ "Custom": "自訂",
+ "Not running": "未執行",
+ "Remove Token": "移除 Token",
+ "Start": "開始",
+ "User": "使用者",
+ "trustProxyDescription": "信任 'X-Forwarded-*' 的 Header。如果您想取得正確的 Client IP,且您的 Uptime Kuma 架設於 Nginx 或 Apache Proxy 之後,您應啟用此選項。",
+ "Reverse Proxy": "反向 Proxy",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "若要取得長期有效 Access Token,請按您的個人檔案名稱 (左下角),捲動至最下方,然後按建立 Token。 ",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "您可以在 Home Assistant 中查看通知服務的列表,在\"開發者工具 > 服務\"下搜尋\"通知\"來找到您的裝置/手機的名稱。",
+ "loadingError": "未能取得數據,請重新再試。",
+ "uninstall": "解除安裝",
+ "wayToGetZohoCliqURL": "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。",
+ "Select status pages...": "選擇 Status Page…",
+ "webhookAdditionalHeadersDesc": "設定傳送 Webhook 時使用的額外 Header。",
+ "topic": "Topic",
+ "topicExplanation": "監測 MQTT 中的一個 Topic",
+ "successMessageExplanation": "MQTT 中收到視為成功的訊息",
+ "Certificate Chain": "証書信任鏈",
+ "Slug": "Slug",
+ "Accept characters:": "可用字元:",
+ "startOrEndWithOnly": "只能使用 {0} 開頭或結尾",
+ "No consecutive dashes": "不得連續使用破折號",
+ "The slug is already taken. Please choose another slug.": "此 slug 已被使用。請選擇其他 slug。",
+ "Authentication": "驗證",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "新 Status Page",
+ "Docker Daemon": "Docker Daemon",
+ "About": "關於",
+ "wayToGetCloudflaredURL": "(到 {0} 下載 cloudflared)",
+ "cloudflareWebsite": "Cloudflare 網頁",
+ "Message:": "訊息:",
+ "Don't know how to get the token? Please read the guide:": "不知道如何取得權杖?請閱讀指南:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您正透過 Cloudflare Tunnel 連線,可能會導致連線中斷。您確定要停止嗎?請輸入密碼以確認。",
+ "HTTP Headers": "HTTP Headers",
+ "Trust Proxy": "信任 Proxy",
+ "Other Software": "其他軟件",
+ "For example: nginx, Apache and Traefik.": "例如 nginx、Apache 和 Traefik。",
+ "Please read": "請閱覽",
+ "Subject:": "標題:",
+ "Days Remaining:": "餘下日數:",
+ "Issuer:": "簽發者:",
+ "Fingerprint:": "指紋:",
+ "No status pages": "無 Status Page",
+ "Domain Name Expiry Notification": "Domain 到期通知",
+ "Footer Text": "Footer 文字",
+ "Show Powered By": "顯示 \"Powered By\"",
+ "Domain Names": "Domain",
+ "signedInDisp": "登入為 {0}",
+ "signedInDispDisabled": "驗證已停用。",
+ "RadiusSecret": "Radius Secret",
+ "RadiusSecretDescription": "Client 與 Server 之間的共享 Secret",
+ "RadiusCalledStationId": "Called Station Id",
+ "RadiusCallingStationId": "Calling Station Id",
+ "Certificate Expiry Notification": "証書過期通知",
+ "API Username": "API 使用者名稱",
+ "API Key": "API Key",
+ "Show update if available": "有更新時顯示",
+ "Also check beta release": "檢查 Beta 版本",
+ "Using a Reverse Proxy?": "正在使用反向代理 (Reverse Proxy)?",
+ "Check how to config it for WebSocket": "查看如何加入 WebSocket 設定",
+ "Steam Game Server": "Steam 遊戲 Server",
+ "Most likely causes:": "最可能原因:",
+ "The resource is no longer available.": "資源已不能存取。",
+ "There might be a typing error in the address.": "網址可能輸入錯誤。",
+ "What you can try:": "您可以嘗試:",
+ "Retype the address.": "重新輸入網址。",
+ "Go back to the previous page.": "返回上一頁。",
+ "Coming Soon": "即將推出",
+ "Connection String": "Connection String",
+ "Query": "Query",
+ "settingsCertificateExpiry": "TLS 証書到期",
+ "certificationExpiryDescription": "証書將於 X 天後到期時觸發 HTTPS 監測器通知:",
+ "Setup Docker Host": "設定 Docker 主機",
+ "Connection Type": "連線方式",
+ "deleteDockerHostMsg": "您確定要為所有監測器刪除此 Docker 主機嗎?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Container",
+ "Container Name / ID": "Container 名稱 / ID",
+ "Docker Host": "Docker 主機",
+ "Docker Hosts": "Docker 主機",
+ "Domain": "Domain",
+ "Workstation": "Workstation",
+ "ZohoCliq": "ZohoCliq",
+ "disableCloudflaredNoAuthMsg": "您處於無驗證模式。無須輸入密碼。",
+ "wayToGetLineNotifyToken": "您可以從 {0} 取得 Access Token。",
+ "Examples": "例子",
+ "Home Assistant URL": "Home Assistant 網址",
+ "Long-Lived Access Token": "長期有效 Access Token",
+ "Notification Service": "通知服務",
+ "default: notify all devices": "預設:通知所有服務",
+ "Automations can optionally be triggered in Home Assistant:": "可以選擇在 Home Assistant 中觸發自動程序:",
+ "Trigger type:": "觸發類型:",
+ "backupRecommend": "請直接備份 Docker Volume 或 ./data/ 資料夾。",
+ "squadcast": "Squadcast",
+ "or": "或",
+ "recurringInterval": "間隔",
+ "Recurring": "重複性",
+ "strategyManual": "手動啟用/停用",
+ "warningTimezone": "正在使用 Server 的時區",
+ "weekdayShortMon": "一",
+ "weekdayShortTue": "二",
+ "weekdayShortWed": "三",
+ "weekdayShortThu": "四",
+ "weekdayShortFri": "五",
+ "weekdayShortSat": "六",
+ "weekdayShortSun": "日",
+ "dayOfWeek": "每周特定一天",
+ "dayOfMonth": "每月特定一天",
+ "lastDay": "最後一天",
+ "lastDay1": "每月最後一天",
+ "maintenanceStatus-ended": "已結束",
+ "maintenanceStatus-unknown": "未知",
+ "Display Timezone": "顯示時區",
+ "Schedule Maintenance": "排程維護",
+ "Date and Time": "日期與時間",
+ "DateTime Range": "日期與時間範圍",
+ "plugin": "插件 | 插件",
+ "install": "安裝",
+ "installing": "正在安装",
+ "uninstalling": "正在解除安裝",
+ "confirmUninstallPlugin": "你確定要解除安裝?",
+ "dataRetentionTimeError": "保留限期必需為 0 或正數",
+ "infiniteRetention": "設定為 0 以作無限期保留。",
+ "Effective Date Range": "有效日期範圍 (可選)",
+ "Hello @everyone is...": "Hello {'@'}everyone is…",
+ "Packet Size": "Packet 大小",
+ "Event type:": "事件類型:",
+ "Event data:": "事件資料:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "然後選擇操作,例如切換至 RGB 燈為紅色的場景。",
+ "Frontend Version": "前端版本",
+ "Frontend Version do not match backend version!": "前端版本與後端版本不符!",
+ "lastDay2": "每月倒數第二天",
+ "lastDay3": "每月倒數第三天",
+ "lastDay4": "每月倒數第四天",
+ "No Maintenance": "無維護",
+ "pauseMaintenanceMsg": "您確定要暫停嗎?",
+ "maintenanceStatus-under-maintenance": "維護中",
+ "maintenanceStatus-inactive": "已停用",
+ "maintenanceStatus-scheduled": "已排程",
+ "Server Timezone": "伺服器時區",
+ "statusPageMaintenanceEndDate": "結束",
+ "IconUrl": "Icon 網址",
+ "dnsCacheDescription": "在某些情況 IPv6 可能會出現異常,如果您遇到任何問題,請停用。",
+ "Single Maintenance Window": "單一維護時段",
+ "Maintenance Time Window of a Day": "每日維護時段",
+ "Proxy": "Proxy",
+ "backupOutdatedWarning": "過時:由於備份功能未顧及新功能的增加,因此備份功能無法產生或復原完整的備份。",
+ "Optional": "可選填",
+ "markdownSupported": "支援 Markdown",
+ "Custom Monitor Type": "自訂監測器",
+ "Google Analytics ID": "Google Analytics ID",
+ "Learn More": "了解更多",
+ "Server Address": "Server 地址",
+ "Edit Tag": "編輯標籤",
+ "confirmDeleteTagMsg": "你確定你要刪除此標籤?相關的監測器不會被刪除。",
+ "pushoversounds pushover": "Pushover (預設)",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushyToken": "裝置 Token",
+ "Proto Content": "Proto 內容",
+ "onebotHttpAddress": "OneBot HTTP 地址",
+ "HomeAssistant": "Home Assistant",
+ "Leave blank to use a shared sender number.": "留空以使用平台共享的發送人號碼。",
+ "auto acknowledged": "自動標記已讀",
+ "wayToGetPagerDutyKey": "您可以前往 Service -> Service Directory -> (Select a service) -> Integrations -> Add integration 以取得。您可以搜尋 \"Events API V2\"。詳細資訊 {0}",
+ "Kook": "Kook",
+ "wayToGetKookBotToken": "到 {0} 創建應用並取得 Bot Token",
+ "grpcMethodDescription": "Method 名稱將被轉換成 cammelCase 命名,如 sayHello、check 等。",
+ "deleteMaintenanceMsg": "您確定要刪除此維護嗎?",
+ "dnsPortDescription": "DNS 伺服器 port。預設為 53。您可以隨時變更 port。",
+ "atLeastOneMonitor": "選擇至少一個受影響的監測器",
+ "endpoint": "endpoint",
+ "octopushAPIKey": "在控制台的 HTTP API 憑證取得的 \"API Key\"",
+ "octopushLogin": "在控制台的 HTTP API 憑證取得的 \"Login\"",
+ "promosmsLogin": "API 登入名稱",
+ "promosmsPassword": "API 密碼",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Vibrate Only",
+ "pushoversounds none": "None (silent)",
+ "pushyAPIKey": "Secret API Key",
+ "Guild ID": "Guild ID",
+ "Strategy": "策略",
+ "Free Mobile User Identifier": "Free Mobile User Identifier",
+ "Free Mobile API Key": "Free Mobile API Key",
+ "Enable TLS": "使用 TLS",
+ "Proto Service Name": "Proto 服務名稱",
+ "Proto Method": "Proto 方式",
+ "onebotGroupMessage": "群組",
+ "onebotMessageType": "OneBot 訊息類型",
+ "ntfy Topic": "ntfy Topic",
+ "Legacy Octopush-DM": "舊版 Octopush-DM",
+ "Octopush API Version": "Octopush API 版本",
+ "From Name/Number": "發送人名稱/號碼",
+ "Recipient Number": "收件人號碼",
+ "smseaglePriority": "訊息優先度 (0-9,預設 = 0)",
+ "smseagleEncoding": "以 Unicode 傳送",
+ "smseagleUrl": "您的 SMSEagle 裝置 URL",
+ "smseagleToken": "API 存取 Token",
+ "smseagleRecipient": "收件者 (以逗號分隔)",
+ "smseagleRecipientType": "收件者類型",
+ "smseagleContact": "聯絡人名稱",
+ "smseagleGroup": "群組名稱",
+ "smseagleTo": "電話號碼",
+ "smseagle": "SMSEagle",
+ "auto resolve": "自動解決",
+ "do nothing": "不進行任何操作",
+ "Auto resolve or acknowledged": "自動解決或標記已讀",
+ "Integration URL": "Integration URL",
+ "Integration Key": "Integration Key",
+ "wayToGetClickSendSMSToken": "您可以到 {0} 取得 API 使用者名稱和 API Key。",
+ "PushDeer Key": "PushDeer Key",
+ "onebotSafetyTips": "為了安全起見,必須設置存取 Token",
+ "onebotUserOrGroupId": "群組/使用者 ID",
+ "onebotPrivateMessage": "私人",
+ "notificationRegional": "地區性",
+ "RadiusCalledStationIdDescription": "Called Device 識別碼",
+ "telegramSendSilently": "靜音發送",
+ "telegramMessageThreadID": "(選填) Message Thread ID",
+ "RadiusCallingStationIdDescription": "Calling Device 識別碼",
+ "Body Encoding": "Body Encoding",
+ "API Keys": "API Keys",
+ "deleteAPIKeyMsg": "你確定要刪除此 API Key?",
+ "disableAPIKeyMsg": "你確定要停用此 API Key?",
+ "apiKey-inactive": "已停用",
+ "apiKey-active": "有效",
+ "No API Keys": "沒有 API Keys",
+ "Add API Key": "新增 API Key",
+ "Expiry date": "失效時間",
+ "Don't expire": "不會失效",
+ "apiKey-expired": "已失效",
+ "Expires": "失效時間",
+ "Key Added": "API Key 已產生",
+ "Add Another": "加另一個",
+ "Continue": "繼續",
+ "Generate": "產生",
+ "apiKeyAddedMsg": "你的 API Key 已被產生。此頁只會顯示一次,請適當保存。",
+ "Expiry": "過期",
+ "telegramSendSilentlyDescription": "選擇以靜音發送。用戶會收到無聲通知。",
+ "Clone Monitor": "複製監察器",
+ "Clone": "複製",
+ "cloneOf": "複製的 {0}",
+ "Proxy server has authentication": "Proxy 伺服器啟用了驗證功能",
+ "Proxy Server": "Proxy 伺服器",
+ "Proxy Protocol": "Proxy 通訊協定",
+ "Setup Proxy": "設定 Proxy",
+ "Topic": "Topic",
+ "Retry": "重試",
+ "High": "高",
+ "Huawei": "華為",
+ "Android": "Android",
+ "For safety, must use secret key": "為安全起見,必須使用 Secret Key",
+ "SecretKey": "SecretKey",
+ "WebHookUrl": "WebHookUrl",
+ "Bark Sound": "Bark 鈴聲",
+ "Bark Group": "Bark 群組",
+ "Bark Endpoint": "Bark Endpoint",
+ "Platform": "平台",
+ "Device Token": "裝置 Token",
+ "telegramProtectContent": "禁止轉發/儲存",
+ "telegramProtectContentDescription": "如果選擇,用戶將不能轉發/儲存收到的信息。",
+ "Add New Tag": "加新標籤",
+ "Economy": "經濟",
+ "Lowcost": "平價",
+ "high": "高價",
+ "statusPageRefreshIn": "將於 {0} 後重新整理",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API 文件 ",
+ "startDateTime": "開始時間",
+ "pagertreeLow": "低",
+ "endDateTime": "結束時間",
+ "cronExpression": "Cron 表達式",
+ "cronSchedule": "排程: ",
+ "invalidCronExpression": "無效 Cron 表達式:{0}",
+ "sameAsServerTimezone": "使用伺服器時區",
+ "WeCom Bot Key": "WeCom 機器人 Key",
+ "pagertreeMedium": "中",
+ "pagertreeHigh": "高"
+}
diff --git a/src/lang/zh-TW.json b/src/lang/zh-TW.json
new file mode 100644
index 000000000..3d651990b
--- /dev/null
+++ b/src/lang/zh-TW.json
@@ -0,0 +1,748 @@
+{
+ "languageName": "繁體中文 (台灣)",
+ "checkEverySecond": "每 {0} 秒檢查一次",
+ "retryCheckEverySecond": "每 {0} 秒重試一次",
+ "resendEveryXTimes": "每 {0} 次便重新傳送",
+ "resendDisabled": "重新傳送已停用",
+ "retriesDescription": "在服務被標記為離線並傳送通知前的最大重試次數",
+ "ignoreTLSError": "忽略 HTTPS 網站的 TLS/SSL 錯誤",
+ "upsideDownModeDescription": "反轉顯示狀態。若服務可以連線,將顯示離線。",
+ "maxRedirectDescription": "最大重新導向跟隨次數。設為 0 將停用重新導向。",
+ "enableGRPCTls": "允許以 TLS 連線傳送 gRPC 要求",
+ "grpcMethodDescription": "方法名稱將轉換至駝峰式命名,如 sayHello、check 等。",
+ "acceptedStatusCodesDescription": "選擇視為成功回應的狀態碼。",
+ "Maintenance": "維護",
+ "statusMaintenance": "維護",
+ "Schedule maintenance": "排程維護",
+ "Affected Monitors": "受影響的監測器",
+ "Pick Affected Monitors...": "挑選受影響的監測器…",
+ "Start of maintenance": "維護起始",
+ "All Status Pages": "所有狀態頁",
+ "Select status pages...": "選擇狀態頁…",
+ "recurringIntervalMessage": "每日執行 | 每 {0} 天執行",
+ "affectedMonitorsDescription": "選擇受目前維護影響的監測器",
+ "affectedStatusPages": "在已選取的狀態頁中顯示此維護訊息",
+ "atLeastOneMonitor": "至少選擇一個受影響的監測器",
+ "passwordNotMatchMsg": "密碼不相符。",
+ "notificationDescription": "必須將通知指派給監測器才能運作。",
+ "keywordDescription": "HTML 或 JSON 回應的搜尋關鍵字。區分大小寫。",
+ "pauseDashboardHome": "暫停",
+ "deleteMonitorMsg": "您確定要刪除此監測器嗎?",
+ "deleteMaintenanceMsg": "您確定要刪除此維護嗎?",
+ "deleteNotificationMsg": "您確定要為所有監測器刪除此通知嗎?",
+ "dnsPortDescription": "DNS 伺服器連接埠。預設為 53。您可以隨時變更連接埠。",
+ "resolverserverDescription": "Cloudflare 為預設伺服器。您可以隨時更換解析伺服器。",
+ "rrtypeDescription": "選擇您想要監測的資源記錄類型",
+ "pauseMonitorMsg": "您確定要暫停嗎?",
+ "enableDefaultNotificationDescription": "預設情況下,新監測器將啟用此通知。您仍可分別停用各監測器的通知。",
+ "clearEventsMsg": "您確定要刪除此監測器的所有事件嗎?",
+ "clearHeartbeatsMsg": "您確定要刪除此監測器的所有心跳嗎?",
+ "confirmClearStatisticsMsg": "您確定要刪除所有統計資料嗎?",
+ "importHandleDescription": "若您想跳過所有相同名稱的監測器或通知,請選擇 '略過現有'。選擇 '覆寫' 將刪除所有現有的監測器及通知。",
+ "confirmImportMsg": "您確定要匯入備份嗎?請確認是否選擇正確的匯入設定。",
+ "twoFAVerifyLabel": "請輸入權杖以驗證雙步驟驗證:",
+ "tokenValidSettingsMsg": "權杖有效!您可以儲存雙步驟驗證設定了。",
+ "confirmEnableTwoFAMsg": "您確定要啟用雙步驟驗證嗎?",
+ "confirmDisableTwoFAMsg": "您確定要停用雙步驟驗證嗎?",
+ "Settings": "設定",
+ "Dashboard": "儀表板",
+ "New Update": "新版本",
+ "Language": "語言",
+ "Appearance": "外觀",
+ "Theme": "主題",
+ "General": "一般",
+ "Primary Base URL": "主要基底網址",
+ "Version": "版本",
+ "Check Update On GitHub": "在 GitHub 檢查更新",
+ "List": "清單",
+ "Add": "新增",
+ "Add New Monitor": "新增監測器",
+ "Quick Stats": "狀態概覽",
+ "Up": "正常",
+ "Down": "離線",
+ "Pending": "等待中",
+ "Unknown": "未知",
+ "Pause": "暫停",
+ "Name": "名稱",
+ "Status": "狀態",
+ "DateTime": "日期時間",
+ "Message": "訊息",
+ "No important events": "無重要事件",
+ "Resume": "繼續",
+ "Edit": "編輯",
+ "Delete": "刪除",
+ "Current": "目前",
+ "Uptime": "運作率",
+ "Cert Exp.": "憑證期限",
+ "day": "天",
+ "-day": "天",
+ "hour": "小時",
+ "-hour": "小時",
+ "Response": "回應",
+ "Ping": "Ping",
+ "Monitor Type": "監測器類型",
+ "Keyword": "關鍵字",
+ "Friendly Name": "易記名稱",
+ "URL": "網址",
+ "Hostname": "主機名稱",
+ "Port": "連接埠",
+ "Heartbeat Interval": "心跳間隔",
+ "Retries": "重試次數",
+ "Heartbeat Retry Interval": "心跳重試間隔",
+ "Resend Notification if Down X times consecutively": "若 X 次心跳皆離線,重新傳送通知",
+ "Advanced": "進階",
+ "Upside Down Mode": "顛倒模式",
+ "Max. Redirects": "最大重新導向次數",
+ "Accepted Status Codes": "可接受的狀態碼",
+ "Push URL": "推送網址",
+ "needPushEvery": "您應每 {0} 秒呼叫此網址。",
+ "pushOptionalParams": "選填參數:{0}",
+ "Save": "儲存",
+ "Notifications": "通知",
+ "Not available, please setup.": "無法使用,請先設定。",
+ "Setup Notification": "設定通知",
+ "Light": "亮色",
+ "Dark": "深色",
+ "Auto": "自動",
+ "Theme - Heartbeat Bar": "主題 - 心跳條",
+ "Normal": "正常",
+ "Bottom": "下方",
+ "None": "無",
+ "Timezone": "時區",
+ "Search Engine Visibility": "搜尋引擎可見度",
+ "Allow indexing": "允許索引",
+ "Discourage search engines from indexing site": "不建議搜尋引擎索引網頁",
+ "Change Password": "修改密碼",
+ "Current Password": "目前密碼",
+ "New Password": "新密碼",
+ "Repeat New Password": "確認新密碼",
+ "Update Password": "更新密碼",
+ "Disable Auth": "停用驗證",
+ "Enable Auth": "啟用驗證",
+ "disableauth.message1": ">你是否要取消登入驗證 ?",
+ "disableauth.message2": "此功能是設計給已有第三方認證 的使用者,例如 Cloudflare Access。",
+ "Please use this option carefully!": "請謹慎使用。",
+ "Logout": "登出",
+ "Leave": "離開",
+ "I understand, please disable": "我了解了,請停用",
+ "Confirm": "確認",
+ "Yes": "是",
+ "No": "否",
+ "Username": "使用者名稱",
+ "Password": "密碼",
+ "Remember me": "記住我",
+ "Login": "登入",
+ "No Monitors, please": "沒有監測器,請",
+ "add one": "新增",
+ "Notification Type": "通知類型",
+ "Email": "電子郵件",
+ "Test": "測試",
+ "Certificate Info": "憑證資訊",
+ "Resolver Server": "解析伺服器",
+ "Resource Record Type": "資源記錄類型",
+ "Last Result": "最後結果",
+ "Create your admin account": "建立您的管理員帳號",
+ "Repeat Password": "確認密碼",
+ "Import Backup": "匯入備份",
+ "Export Backup": "匯出備份",
+ "Export": "匯出",
+ "Import": "匯入",
+ "respTime": "回應時間 (毫秒)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "啟用預設",
+ "Apply on all existing monitors": "套用到目前所有的監測器",
+ "Create": "建立",
+ "Clear Data": "清除資料",
+ "Events": "活動",
+ "Heartbeats": "心跳",
+ "Auto Get": "自動取得",
+ "backupDescription": "您可以將所有監測器及通知備份成一個 JSON 檔案。",
+ "backupDescription2": "提醒:不包含歷史紀錄及活動紀錄。",
+ "backupDescription3": "如通知權杖等機密資料也會一同匯出。請妥善保存。",
+ "alertNoFile": "請選擇要匯入的檔案。",
+ "alertWrongFileType": "請選擇 JSON 檔案。",
+ "Clear all statistics": "清除所有統計資料",
+ "Skip existing": "略過現有",
+ "Overwrite": "覆寫",
+ "Options": "選項",
+ "Keep both": "保留兩者",
+ "Verify Token": "認證權杖",
+ "Setup 2FA": "設置雙步驟驗證",
+ "Enable 2FA": "啟用雙步驟驗證",
+ "Disable 2FA": "停用雙步驟驗證",
+ "2FA Settings": "雙步驟驗證設定",
+ "Two Factor Authentication": "雙步驟驗證",
+ "Active": "啟用",
+ "Inactive": "停用",
+ "Token": "權杖",
+ "Show URI": "顯示 URI",
+ "Tags": "標籤",
+ "Add New below or Select...": "在下方新增或選取…",
+ "Tag with this name already exist.": "已存在相同名稱的標籤。",
+ "Tag with this value already exist.": "已存在相同數值的標籤。",
+ "color": "顏色",
+ "value (optional)": "數值 (選填)",
+ "Gray": "灰色",
+ "Red": "紅色",
+ "Orange": "橘色",
+ "Green": "綠色",
+ "Blue": "藍色",
+ "Indigo": "靛色",
+ "Purple": "紫色",
+ "Pink": "粉色",
+ "Search...": "搜尋…",
+ "Avg. Ping": "平均 Ping",
+ "Avg. Response": "平均回應",
+ "Entry Page": "入口頁面",
+ "statusPageNothing": "空空如也,請新增群組或監測器。",
+ "No Services": "無服務",
+ "All Systems Operational": "所有系統正常運作",
+ "Partially Degraded Service": "部分服務效能降低",
+ "Degraded Service": "服務效能降低",
+ "Add Group": "新增群組",
+ "Add a monitor": "加入監測器",
+ "Edit Status Page": "編輯狀態頁",
+ "Go to Dashboard": "前往儀表板",
+ "Status Page": "狀態頁",
+ "Status Pages": "狀態頁",
+ "defaultNotificationName": "我的 {notification} 通知 ({number})",
+ "here": "此處",
+ "Required": "必填",
+ "telegram": "Telegram",
+ "Bot Token": "機器人權杖",
+ "wayToGetTelegramToken": "您可以從 {0} 取得權杖。",
+ "Chat ID": "聊天 ID",
+ "supportTelegramChatID": "支援 對話/群組/頻道的聊天 ID",
+ "wayToGetTelegramChatID": "傳送訊息給機器人,並前往以下網址以取得您的 chat ID:",
+ "YOUR BOT TOKEN HERE": "在此填入您的機器人權杖",
+ "chatIDNotFound": "找不到 Chat ID;請先傳送訊息給機器人",
+ "webhook": "Webhook",
+ "Post URL": "Post 網址",
+ "Content Type": "內容類型",
+ "webhookJsonDesc": "{0} 適合任何現代的 HTTP 伺服器,如 Express.js",
+ "webhookFormDataDesc": "{multipart} 適合 PHP。 JSON 必須先經由 {decodeFunction} 剖析。",
+ "webhookAdditionalHeadersTitle": "額外標頭",
+ "webhookAdditionalHeadersDesc": "設定與 webhook 一同傳送的額外標頭。",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "無 / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "忽略 TLS 錯誤",
+ "From Email": "寄件人",
+ "emailCustomSubject": "自訂主旨",
+ "To Email": "收件者",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "discord": "Discord",
+ "Discord Webhook URL": "Discord Webhook 網址",
+ "wayToGetDiscordURL": "您可以前往伺服器設定 (Server Settings) -> 整合 (Integrations) -> 檢視 Webhooks (View Webhooks) -> 新 Webhook (New Webhook) 以取得新的 Webhook",
+ "Bot Display Name": "機器人顯示名稱",
+ "Prefix Custom Message": "前綴自訂訊息",
+ "Hello @everyone is...": "Hello {'@'}everyone is…",
+ "teams": "Microsoft Teams",
+ "Webhook URL": "Webhook 網址",
+ "wayToGetTeamsURL": "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。",
+ "signal": "Signal",
+ "Number": "號碼",
+ "Recipients": "收件者",
+ "needSignalAPI": "您需要有 REST API 的 Signal 客戶端。",
+ "wayToCheckSignalURL": "您可以前往下列網址以了解如何設定:",
+ "signalImportant": "注意: 不得混合收件者的群組和號碼!",
+ "gotify": "Gotify",
+ "Application Token": "應用程式權杖",
+ "Server URL": "伺服器網址",
+ "Priority": "優先度",
+ "slack": "Slack",
+ "Icon Emoji": "Emoji 圖示",
+ "Channel Name": "頻道名稱",
+ "Uptime Kuma URL": "Uptime Kuma 網址",
+ "aboutWebhooks": "更多關於 Webhook 的資訊: {0}",
+ "aboutChannelName": "如果您不想使用 Webhook 頻道,請在 {0} 頻道名稱欄位填入您想使用的頻道。例如: #其他頻道",
+ "aboutKumaURL": "如果您未填入 Uptime Kuma 網址。將預設使用專案 Github 頁面。",
+ "emojiCheatSheet": "Emoji 一覽表: {0}",
+ "rocket.chat": "Rocket.Chat",
+ "pushover": "Pushover",
+ "pushy": "Pushy",
+ "PushByTechulus": "Push by Techulus",
+ "octopush": "Octopush",
+ "promosms": "PromoSMS",
+ "clicksendsms": "ClickSend SMS",
+ "lunasea": "LunaSea",
+ "apprise": "Apprise (支援 50 種以上的通知服務)",
+ "GoogleChat": "Google Chat (僅限 Google Workspace)",
+ "pushbullet": "Pushbullet",
+ "line": "Line Messenger",
+ "mattermost": "Mattermost",
+ "User Key": "使用者金鑰",
+ "Device": "裝置",
+ "Message Title": "訊息標題",
+ "Notification Sound": "通知音效",
+ "More info on:": "更多資訊: {0}",
+ "pushoverDesc1": "緊急優先度 (2) 的重試間隔為 30 秒並且會在 1 小時後過期。",
+ "pushoverDesc2": "如果您想要傳送通知到不同裝置,請填寫裝置欄位。",
+ "SMS Type": "簡訊類型",
+ "octopushTypePremium": "Premium (快速 - 建議用於警報)",
+ "octopushTypeLowCost": "Low Cost (緩慢 - 有時會被營運商阻擋)",
+ "checkPrice": "查看 {0} 價格:",
+ "apiCredentials": "API 認證",
+ "octopushLegacyHint": "您使用的是舊版的 Octopush (2011-2020) 還是新版?",
+ "Check octopush prices": "查看 octopush 價格 {0}。",
+ "octopushPhoneNumber": "電話號碼 (intl 格式,例如:+33612345678) ",
+ "octopushSMSSender": "簡訊寄件人名稱:3-11位英數字元及空白 (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea 裝置 ID",
+ "Apprise URL": "Apprise 網址",
+ "Example:": "範例:{0}",
+ "Read more:": "深入瞭解:{0}",
+ "Status:": "狀態:{0}",
+ "Read more": "深入瞭解",
+ "appriseInstalled": "已安裝 Apprise。",
+ "appriseNotInstalled": "尚未安裝 Apprise。{0}",
+ "Access Token": "存取權杖",
+ "Channel access token": "頻道存取權杖",
+ "Line Developers Console": "Line 開發者控制台",
+ "lineDevConsoleTo": "Line 開發者控制台 - {0}",
+ "Basic Settings": "基本設定",
+ "User ID": "使用者 ID",
+ "Messaging API": "Messaging API",
+ "wayToGetLineChannelToken": "首先,前往 {0},建立 provider 和 channel (Messaging API)。接著您就可以從上面提到的選單項目中取得頻道存取權杖及使用者 ID。",
+ "Icon URL": "圖示網址",
+ "aboutIconURL": "您可以在 \"圖示網址\" 中提供圖片網址以覆蓋預設個人檔案圖片。若已設定 Emoji 圖示,將忽略此設定。",
+ "aboutMattermostChannelName": "您可以在 \"頻道名稱\" 欄位中填寫頻道名稱以覆蓋 Webhook 的預設頻道。必須在 Mattermost 的 Webhook 設定中啟用。例如:#其他頻道",
+ "matrix": "Matrix",
+ "promosmsTypeEco": "SMS ECO - 便宜,但是很慢且經常過載。僅限位於波蘭的收件者。",
+ "promosmsTypeFlash": "SMS FLASH - 訊息會自動在收件者的裝置上顯示。僅限位於波蘭的收件者。",
+ "promosmsTypeFull": "SMS FULL - 高級版,您可以使用您的寄件人名稱 (必須先註冊名稱。對於警報來說十分可靠。",
+ "promosmsTypeSpeed": "SMS SPEED - 系統中的最高優先度。快速、可靠,但昂貴 (約 SMS FULL 的兩倍價格)。",
+ "promosmsPhoneNumber": "電話號碼 (若收件者位於波蘭則無需輸入區域代碼)",
+ "promosmsSMSSender": "簡訊寄件人名稱:預先註冊的名稱或以下的預設名稱:InfoSMS、SMS Info、MaxSMS、INFO、SMS",
+ "Feishu WebHookUrl": "飛書 WebHook 網址",
+ "matrixHomeserverURL": "Homeserver 網址 (開頭為 http(s)://,結尾可能帶連接埠)",
+ "Internal Room Id": "Internal Room ID",
+ "matrixDesc1": "您可以在 Matrix 客戶端的房間設定中的進階選項找到 internal room ID。應該看起來像 !QMdRCpUIfLwsfjxye6:home.server。",
+ "matrixDesc2": "使用您自己的 Matrix 使用者存取權杖將賦予存取您的帳號和您加入的房間的完整權限。建議建立新使用者,並邀請至您想要接收通知的房間中。您可以執行 {0} 以取得存取權杖",
+ "Method": "方法",
+ "Body": "主體",
+ "Headers": "標頭",
+ "PushUrl": "Push 網址",
+ "HeadersInvalidFormat": "要求標頭不是有效的 JSON:",
+ "BodyInvalidFormat": "要求主體不是有效的 JSON:",
+ "Monitor History": "監測器歷史紀錄",
+ "clearDataOlderThan": "保留 {0} 天內的監測器歷史紀錄。",
+ "PasswordsDoNotMatch": "密碼不相符。",
+ "records": "記錄",
+ "One record": "一項記錄",
+ "steamApiKeyDescription": "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:",
+ "Current User": "目前使用者",
+ "topic": "Topic",
+ "topicExplanation": "要監測的 MQTT Topic",
+ "successMessage": "成功訊息",
+ "successMessageExplanation": "視為成功的 MQTT 訊息",
+ "recent": "最近",
+ "Done": "完成",
+ "Info": "資訊",
+ "Security": "安全性",
+ "Steam API Key": "Steam API 金鑰",
+ "Shrink Database": "壓縮資料庫",
+ "Pick a RR-Type...": "選擇資源記錄類型…",
+ "Pick Accepted Status Codes...": "選擇可接受的狀態碼…",
+ "Default": "預設",
+ "HTTP Options": "HTTP 選項",
+ "Create Incident": "建立事件",
+ "Title": "標題",
+ "Content": "內容",
+ "Style": "樣式",
+ "info": "資訊",
+ "warning": "警告",
+ "danger": "危險",
+ "error": "錯誤",
+ "critical": "嚴重",
+ "primary": "主要",
+ "light": "淺色",
+ "dark": "暗色",
+ "Post": "發佈",
+ "Please input title and content": "請輸入標題及內容",
+ "Created": "建立",
+ "Last Updated": "最後更新",
+ "Unpin": "取消釘選",
+ "Switch to Light Theme": "切換至淺色佈景主題",
+ "Switch to Dark Theme": "切換至深色佈景主題",
+ "Show Tags": "顯示標籤",
+ "Hide Tags": "隱藏標籤",
+ "Description": "說明",
+ "No monitors available.": "沒有可用的監測器。",
+ "Add one": "新增一個",
+ "No Monitors": "無監測器",
+ "Untitled Group": "未命名群組",
+ "Services": "服務",
+ "Discard": "捨棄",
+ "Cancel": "取消",
+ "Powered by": "技術支援",
+ "shrinkDatabaseDescription": "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。",
+ "serwersms": "SerwerSMS.pl",
+ "serwersmsAPIUser": "API 使用者名稱 (包括 webapi_ 前綴)",
+ "serwersmsAPIPassword": "API 密碼",
+ "serwersmsPhoneNumber": "電話號碼",
+ "serwersmsSenderName": "SMS 寄件人名稱 (由客戶入口網站註冊)",
+ "smseagle": "SMSEagle",
+ "smseagleTo": "電話號碼",
+ "smseagleGroup": "電話簿群組名稱",
+ "smseagleContact": "電話簿聯絡人名稱",
+ "smseagleRecipientType": "收件者類型",
+ "smseagleRecipient": "收件者 (用逗號分隔)",
+ "smseagleToken": "API 存取權杖",
+ "smseagleUrl": "您的 SMSEagle 裝置網址",
+ "smseagleEncoding": "以 Unicode 傳送",
+ "smseaglePriority": "訊息優先度 (0-9,預設 = 0)",
+ "stackfield": "Stackfield",
+ "Customize": "自訂",
+ "Custom Footer": "自訂頁尾",
+ "Custom CSS": "自訂 CSS",
+ "smtpDkimSettings": "DKIM 設定",
+ "smtpDkimDesc": "請參考 Nodemailer DKIM {0} 使用方式。",
+ "documentation": "文件",
+ "smtpDkimDomain": "網域名稱",
+ "smtpDkimKeySelector": "DKIM 選取器",
+ "smtpDkimPrivateKey": "私密金鑰",
+ "smtpDkimHashAlgo": "雜湊演算法 (選填)",
+ "smtpDkimheaderFieldNames": "要簽署的郵件標頭 (選填)",
+ "smtpDkimskipFields": "不簽署的郵件標頭 (選填)",
+ "wayToGetPagerDutyKey": "您可以前往服務 -> 服務目錄 -> (選取服務) -> 整合 -> 新增整合以取得。您可以搜尋 \"Events API V2\"。詳細資訊 {0}",
+ "Integration Key": "整合金鑰",
+ "Integration URL": "整合網址",
+ "Auto resolve or acknowledged": "自動解決或認可",
+ "do nothing": "不進行任何操作",
+ "auto acknowledged": "自動認可",
+ "auto resolve": "自動解決",
+ "gorush": "Gorush",
+ "alerta": "Alerta",
+ "alertaApiEndpoint": "API 端點",
+ "alertaEnvironment": "環境",
+ "alertaApiKey": "API 金鑰",
+ "alertaAlertState": "警示狀態",
+ "alertaRecoverState": "恢復狀態",
+ "deleteStatusPageMsg": "您確定要刪除此狀態頁嗎?",
+ "Proxies": "代理伺服器",
+ "default": "預設",
+ "enabled": "啟用",
+ "setAsDefault": "設為預設",
+ "deleteProxyMsg": "您確定要為所有監測器刪除此代理伺服器嗎?",
+ "proxyDescription": "必須將代理伺服器指派給監測器才能運作。",
+ "enableProxyDescription": "此代理伺服器在啟用前不會在監測器上生效,您可以藉由控制啟用狀態來暫時對所有的監測器停用代理伺服器。",
+ "setAsDefaultProxyDescription": "預設情況下,新監測器將啟用此代理伺服器。您仍可分別停用各監測器的代理伺服器。",
+ "Certificate Chain": "憑證鏈結",
+ "Valid": "有效",
+ "Invalid": "無效",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey 密碼",
+ "PhoneNumbers": "PhoneNumbers",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Sms 範本必須包含參數:",
+ "Bark Endpoint": "Bark 端點",
+ "Bark Group": "Bark 群組",
+ "Bark Sound": "Bark 鈴聲",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "SecretKey",
+ "For safety, must use secret key": "為了安全起見,必須使用秘密金鑰",
+ "Device Token": "裝置權杖",
+ "Platform": "平台",
+ "iOS": "iOS",
+ "Android": "Android",
+ "Huawei": "華為",
+ "High": "高",
+ "Retry": "重試",
+ "Topic": "Topic",
+ "WeCom Bot Key": "WeCom 機器人金鑰",
+ "Setup Proxy": "設置 Proxy",
+ "Proxy Protocol": "Proxy 通訊協定",
+ "Proxy Server": "Proxy 伺服器",
+ "Proxy server has authentication": "Proxy 伺服器啟用了驗證功能",
+ "User": "使用者",
+ "Installed": "已安裝",
+ "Not installed": "未安裝",
+ "Running": "執行中",
+ "Not running": "未執行",
+ "Remove Token": "移除權杖",
+ "Start": "開始",
+ "Stop": "停止",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "新增狀態頁",
+ "Slug": "Slug",
+ "Accept characters:": "可用字元:",
+ "startOrEndWithOnly": "僅能使用 {0} 開頭或結尾",
+ "No consecutive dashes": "不得連續使用破折號",
+ "Next": "下一步",
+ "The slug is already taken. Please choose another slug.": "此 slug 已被使用。請選擇其他 slug。",
+ "No Proxy": "無 Proxy",
+ "Authentication": "驗證",
+ "HTTP Basic Auth": "HTTP 基本驗證",
+ "New Status Page": "新狀態頁",
+ "Page Not Found": "找不到頁面",
+ "Reverse Proxy": "反向代理",
+ "Backup": "備份",
+ "About": "關於",
+ "wayToGetCloudflaredURL": "(從 {0} 下載 cloudflared)",
+ "cloudflareWebsite": "Cloudflare 網站",
+ "Message:": "訊息:",
+ "Don't know how to get the token? Please read the guide:": "不知道如何取得權杖嗎?請閱讀指南:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您目前正透過 Cloudflare Tunnel 連線,可能會導致連線中斷。您確定要停止嗎?請輸入密碼以確認。",
+ "HTTP Headers": "HTTP 標頭",
+ "Trust Proxy": "信任的 Proxy",
+ "Other Software": "其他軟體",
+ "For example: nginx, Apache and Traefik.": "例如 nginx、Apache 和 Traefik。",
+ "Please read": "請閱覽",
+ "Subject:": "簽發給:",
+ "Valid To:": "有效期限:",
+ "Days Remaining:": "剩餘天數:",
+ "Issuer:": "簽發者:",
+ "Fingerprint:": "指紋:",
+ "No status pages": "無狀態頁",
+ "Domain Name Expiry Notification": "網域名稱到期通知",
+ "Proxy": "Proxy",
+ "Date Created": "建立日期",
+ "HomeAssistant": "Home Assistant",
+ "onebotHttpAddress": "OneBot HTTP 位址",
+ "onebotMessageType": "OneBot 訊息類型",
+ "onebotGroupMessage": "群組",
+ "onebotPrivateMessage": "私人",
+ "onebotUserOrGroupId": "群組/使用者 ID",
+ "onebotSafetyTips": "為了安全起見,必須設置存取權杖",
+ "PushDeer Key": "PushDeer 金鑰",
+ "Footer Text": "頁尾文字",
+ "Show Powered By": "顯示技術支援文字",
+ "Domain Names": "網域名稱",
+ "signedInDisp": "以 {0} 身分登入",
+ "signedInDispDisabled": "驗證已停用。",
+ "RadiusSecret": "Radius Secret",
+ "RadiusSecretDescription": "客戶端與伺服器端的共享機密",
+ "RadiusCalledStationId": "被叫站 Id",
+ "RadiusCalledStationIdDescription": "被呼叫裝置的識別碼",
+ "RadiusCallingStationId": "呼叫站 Id",
+ "RadiusCallingStationIdDescription": "呼叫裝置的識別碼",
+ "Certificate Expiry Notification": "憑證到期通知",
+ "API Username": "API 使用者名稱",
+ "API Key": "API 金鑰",
+ "Recipient Number": "收件者號碼",
+ "From Name/Number": "來自名字/號碼",
+ "Leave blank to use a shared sender number.": "留空以使用共享寄件人號碼。",
+ "Octopush API Version": "Octopush API 版本",
+ "Legacy Octopush-DM": "舊版 Octopush-DM",
+ "endpoint": "端",
+ "octopushAPIKey": "在控制台的 HTTP API 憑證取得的 \"API 金鑰\"",
+ "octopushLogin": "在控制台的 HTTP API 憑證取得的 \"Login\"",
+ "promosmsLogin": "API 登入名稱",
+ "promosmsPassword": "API 密碼",
+ "pushoversounds pushover": "Pushover (預設)",
+ "pushoversounds bike": "車鈴",
+ "pushoversounds bugle": "號角",
+ "pushoversounds cashregister": "收銀機",
+ "pushoversounds classical": "古典",
+ "pushoversounds cosmic": "宇宙",
+ "pushoversounds falling": "下落",
+ "pushoversounds gamelan": "甘美朗",
+ "pushoversounds incoming": "來電",
+ "pushoversounds intermission": "中場休息",
+ "pushoversounds magic": "魔法",
+ "pushoversounds mechanical": "機械",
+ "pushoversounds pianobar": "鋼琴酒吧",
+ "pushoversounds siren": "警鈴",
+ "pushoversounds spacealarm": "太空鬧鐘",
+ "pushoversounds tugboat": "汽笛",
+ "pushoversounds alien": "外星鬧鐘 (長)",
+ "pushoversounds climb": "爬升 (長)",
+ "pushoversounds persistent": "持續 (長)",
+ "pushoversounds echo": "Pushover 回音 (長)",
+ "pushoversounds updown": "上下 (長)",
+ "pushoversounds vibrate": "僅震動",
+ "pushoversounds none": "無 (靜音)",
+ "pushyAPIKey": "API 密鑰",
+ "pushyToken": "裝置權杖",
+ "Show update if available": "顯示可用更新",
+ "Also check beta release": "檢查 Beta 版",
+ "Using a Reverse Proxy?": "正在使用反向代理?",
+ "Check how to config it for WebSocket": "查看如何為 WebSocket 設定",
+ "Steam Game Server": "Steam 遊戲伺服器",
+ "Most likely causes:": "可能原因:",
+ "The resource is no longer available.": "資源已不可用。",
+ "There might be a typing error in the address.": "網址可能有誤。",
+ "What you can try:": "您可以嘗試:",
+ "Retype the address.": "重新輸入網址。",
+ "Go back to the previous page.": "返回上一頁。",
+ "Coming Soon": "即將推出",
+ "wayToGetClickSendSMSToken": "您可以從 {0} 取得 API 使用者名稱和金鑰。",
+ "Connection String": "連線字串",
+ "Query": "查詢",
+ "settingsCertificateExpiry": "TLS 憑證到期",
+ "certificationExpiryDescription": "TLS 將於 X 天後到期時觸發 HTTPS 監測器通知:",
+ "Setup Docker Host": "設定 Docker 主機",
+ "Connection Type": "連線類型",
+ "Docker Daemon": "Docker 精靈",
+ "deleteDockerHostMsg": "您確定要為所有監測器刪除此 Docker 主機嗎?",
+ "socket": "通訊端",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker 容器",
+ "Container Name / ID": "容器名稱 / ID",
+ "Docker Host": "Docker 主機",
+ "Docker Hosts": "Docker 主機",
+ "ntfy Topic": "ntfy 主題",
+ "Domain": "網域",
+ "Workstation": "工作站",
+ "disableCloudflaredNoAuthMsg": "您處於無驗證模式。無須輸入密碼。",
+ "trustProxyDescription": "信任 'X-Forwarded-*' 標頭。如果您想要取得正確的客戶端 IP,且您的 Uptime Kuma 架設於 Nginx 或 Apache 後方,您應啟用此選項。",
+ "wayToGetLineNotifyToken": "您可以從 {0} 取得存取權杖",
+ "Examples": "範例",
+ "Home Assistant URL": "Home Assistant 網址",
+ "Long-Lived Access Token": "長期有效存取權杖",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "若要建立長期有效存取權杖,請點擊您的個人檔案名稱 (左下角),捲動至最下方,然後點擊建立權杖。",
+ "Notification Service": "通知服務",
+ "default: notify all devices": "預設:通知所有服務",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "您可以在 Home Assistant 中查看通知服務的列表,在\"開發者工具 > 服務\"下搜尋\"通知\"來找到您的裝置/手機的名稱。",
+ "Automations can optionally be triggered in Home Assistant:": "可以選擇在 Home Assistant 中觸發自動化程序:",
+ "Trigger type:": "觸發器類型:",
+ "Event type:": "事件類型:",
+ "Event data:": "事件資料:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "然後選擇動作,例如切換至 RGB 燈為紅色的場景。",
+ "Frontend Version": "前端版本",
+ "Frontend Version do not match backend version!": "前端版本與後端版本不符!",
+ "Base URL": "基底網址",
+ "goAlertInfo": "GoAlert 是用於待命排程、升級自動化,以及通知 (如簡訊或語音通話) 的開源應用程式。自動在正確的時間、用洽當的方法、聯絡合適的人! {0}",
+ "goAlertIntegrationKeyInfo": "取得服務的通用 API 整合金鑰,格式為 \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\"。通常是已複製的網址的權杖參數值。",
+ "goAlert": "GoAlert",
+ "backupOutdatedWarning": "即將棄用:由於專案新增了大量新功能,且備份功能未被妥善維護,故此功能無法產生或復原完整備份。",
+ "backupRecommend": "請直接備份磁碟區或 ./data/ 資料夾。",
+ "Optional": "選填",
+ "squadcast": "Squadcast",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager API 文件 ",
+ "Gateway Type": "閘道類型",
+ "SMSManager": "SMSManager",
+ "You can divide numbers with": "若要除數,您可以使用",
+ "or": "或是",
+ "recurringInterval": "間隔",
+ "Recurring": "週期性",
+ "strategyManual": "手動切換使用中/非使用中",
+ "warningTimezone": "正在使用伺服器的時區",
+ "weekdayShortMon": "一",
+ "weekdayShortTue": "二",
+ "weekdayShortWed": "三",
+ "weekdayShortThu": "四",
+ "weekdayShortFri": "五",
+ "weekdayShortSat": "六",
+ "weekdayShortSun": "日",
+ "dayOfWeek": "每周特定一天",
+ "dayOfMonth": "每月特定一天",
+ "lastDay": "最後一天",
+ "lastDay1": "每月的最後一天",
+ "lastDay2": "每月的倒數第二天",
+ "lastDay3": "每月的倒數第三天",
+ "lastDay4": "每月的倒數第四天",
+ "No Maintenance": "無維護",
+ "pauseMaintenanceMsg": "您確定要暫停嗎?",
+ "maintenanceStatus-under-maintenance": "維護中",
+ "maintenanceStatus-inactive": "非使用中",
+ "maintenanceStatus-scheduled": "已排程",
+ "maintenanceStatus-ended": "已結束",
+ "maintenanceStatus-unknown": "未知",
+ "Display Timezone": "顯示時區",
+ "Server Timezone": "伺服器時區",
+ "statusPageMaintenanceEndDate": "結束",
+ "IconUrl": "圖示網址",
+ "Enable DNS Cache": "啟用 DNS 快取",
+ "Enable": "啟用",
+ "Disable": "停用",
+ "dnsCacheDescription": "在某些 IPv6 環境可能會無法運作,如果您遇到任何問題,請停用。",
+ "Single Maintenance Window": "單一維護時段",
+ "Maintenance Time Window of a Day": "每日的維護時段",
+ "Effective Date Range": "有效的日期範圍(可選)",
+ "Schedule Maintenance": "排程維護",
+ "Date and Time": "時間和日期",
+ "DateTime Range": "DateTime 範圍",
+ "Strategy": "策略",
+ "Free Mobile User Identifier": "Free Mobile User Identifier",
+ "Free Mobile API Key": "Free Mobile API 金鑰",
+ "Enable TLS": "啟用 TLS",
+ "Proto Service Name": "Proto 服務名稱",
+ "Proto Method": "Proto 方式",
+ "Proto Content": "Proto 內容",
+ "Economy": "節約",
+ "Lowcost": "低費率",
+ "high": "高",
+ "General Monitor Type": "一般監測器類型",
+ "Passive Monitor Type": "被動監測器類型",
+ "Specific Monitor Type": "指定監測器類型",
+ "plugin": "插件 | 插件",
+ "install": "安裝",
+ "Game": "遊戲",
+ "Help": "幫助",
+ "Monitor": "監測器 | 監測器",
+ "Custom": "自訂",
+ "sameAsServerTimezone": "使用服務器時區",
+ "cronExpression": "Cron 表達式",
+ "telegramSendSilently": "靜默發送到 Telegram",
+ "telegramSendSilentlyDescription": "靜默地發送消息。消息發布後用戶會收到無聲通知。",
+ "pagertreeDoNothing": "什麼都不做",
+ "Add New Tag": "添加新標籤",
+ "telegramMessageThreadIDDescription": "(可選) Telegram 話題描述",
+ "telegramMessageThreadID": "(可選)話題 ID",
+ "startDateTime": "開始日期/時間",
+ "endDateTime": "結束日期/時間",
+ "cronSchedule": "計劃: ",
+ "invalidCronExpression": "無效的 Cron 表達式:{0}",
+ "telegramProtectContent": "阻止轉發/保存",
+ "telegramProtectContentDescription": "如果啟用,Telegram 中的機器人消息將受到保護,不會被轉發和保存。",
+ "installing": "安裝中",
+ "uninstall": "卸載",
+ "loadingError": "無法獲取數據, 請重試",
+ "markdownSupported": "支持Markdown語法",
+ "Packet Size": "數據包大小",
+ "statusPageRefreshIn": "將於 {0} 後刷新",
+ "confirmUninstallPlugin": "是否要卸載這個插件?",
+ "Key Added": "已創建金鑰",
+ "Clone Monitor": "複製監控項目",
+ "Clone": "複製",
+ "cloneOf": "從 {0} 複製",
+ "uninstalling": "移除中",
+ "notificationRegional": "地區限定",
+ "wayToGetZohoCliqURL": "您可以前往此頁面以了解如何建立 webhook 網址 {0}。",
+ "wayToGetKookBotToken": "到 {0} 創建應用程式並取得 bot token",
+ "dataRetentionTimeError": "保留期限必須為 0 或正數",
+ "infiniteRetention": "設定為 0 以作無限期保留。",
+ "confirmDeleteTagMsg": "你確定你要刪除此標籤?相關的監測器不會被刪除。",
+ "twilioAuthToken": "認證 Token",
+ "twilioAccountSID": "帳號 SID",
+ "ntfyUsernameAndPassword": "使用者名稱和密碼",
+ "ntfyAuthenticationMethod": "認證類型",
+ "API Keys": "API 金鑰",
+ "Expiry": "到期",
+ "apiKey-inactive": "無效",
+ "apiKey-expired": "過期",
+ "Reconnecting...": "重新連線...",
+ "Expiry date": "到期時間",
+ "Don't expire": "不要過期",
+ "Continue": "繼續",
+ "Add Another": "新增作者",
+ "Add API Key": "新增 API 金鑰",
+ "Generate": "產生",
+ "lunaseaTarget": "目標",
+ "lunaseaDeviceID": "裝置 ID",
+ "lunaseaUserID": "使用者 ID",
+ "Cannot connect to the socket server": "無法連線到 Socket 伺服器",
+ "Edit Maintenance": "編輯維護",
+ "deleteAPIKeyMsg": "您確定要刪除這個 API 金鑰?",
+ "Custom Monitor Type": "自訂監視器類型",
+ "Google Analytics ID": "Google Analytics ID",
+ "Server Address": "伺服器位置",
+ "Edit Tag": "編輯標籤",
+ "pagertreeMedium": "中",
+ "pagertreeHigh": "高",
+ "pagertreeResolve": "自動解決",
+ "pagertreeLow": "低",
+ "Learn More": "閱讀更多",
+ "pushoverMessageTtl": "Message TTL (秒)",
+ "apiKeyAddedMsg": "您的 API 金鑰已建立。金鑰不會再次顯示,請將它放在安全的地方。",
+ "No API Keys": "無 API 金鑰",
+ "apiKey-active": "活躍",
+ "Expires": "過期",
+ "disableAPIKeyMsg": "您確定要停用這個 API 金鑰?",
+ "Monitor Setting": "{0} 的監視器設定",
+ "Guild ID": "Guild ID"
+}
diff --git a/src/languages/README.md b/src/languages/README.md
deleted file mode 100644
index c217ea0f4..000000000
--- a/src/languages/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# How to translate
-
-1. Fork this repo.
-2. Run `npm install`
-3. Run `npm run update-language-files --language=` where ``
- is a valid ISO language code:
- http://www.lingoes.net/en/translator/langcode.htm. You can also use
- this command to check if there are new strings to
- translate for your language.
-4. Your language file should be filled in. You can translate now.
-5. Add it into `languageList` constant.
-6. Make a [pull request](https://github.com/louislam/uptime-kuma/pulls) when you have done.
-
-If you do not have programming skills, let me know in [the issues section](https://github.com/louislam/uptime-kuma/issues). I will assist you. 😏
diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js
deleted file mode 100644
index d8a789f3c..000000000
--- a/src/languages/bg-BG.js
+++ /dev/null
@@ -1,678 +0,0 @@
-export default {
- languageName: "Български",
- checkEverySecond: "Ще се извършва на всеки {0} секунди",
- retryCheckEverySecond: "Ще се извършва на всеки {0} секунди",
- retriesDescription: "Максимален брой опити преди маркиране на услугата като недостъпна и изпращане на известие",
- ignoreTLSError: "Игнорирай TLS/SSL грешки за HTTPS уеб сайтове",
- upsideDownModeDescription: "Обръща статуса от достъпен на недостъпен. Ако услугата е достъпна, ще се вижда като НЕДОСТЪПНА.",
- maxRedirectDescription: "Максимален брой пренасочвания, които да бъдат следвани. Въведете 0 за да изключите пренасочване.",
- acceptedStatusCodesDescription: "Изберете статус кодове, които да се считат за успешен отговор.",
- passwordNotMatchMsg: "Повторената парола не съвпада.",
- notificationDescription: "Моля, задайте известието към монитор(и), за да функционира.",
- keywordDescription: "Търси ключова дума в чист html или JSON отговор - чувствителна е към регистъра",
- pauseDashboardHome: "Пауза",
- deleteMonitorMsg: "Наистина ли желаете да изтриете този монитор?",
- deleteNotificationMsg: "Наистина ли желаете да изтриете това известие за всички монитори?",
- resolverserverDescription: "Cloudflare е сървърът по подразбиране, но можете да го промените по всяко време.",
- rrtypeDescription: "Изберете ресурсния запис, който желаете да наблюдавате",
- pauseMonitorMsg: "Наистина ли желаете да поставите в режим пауза?",
- enableDefaultNotificationDescription: "За всеки нов монитор това известие ще бъде активирано по подразбиране. Можете да го изключите за всеки отделен монитор.",
- clearEventsMsg: "Наистина ли желаете да изтриете всички събития за този монитор?",
- clearHeartbeatsMsg: "Наистина ли желаете да изтриете всички записи за честотни проверки на този монитор?",
- confirmClearStatisticsMsg: "Наистина ли желаете да изтриете всички статистически данни?",
- importHandleDescription: "Изберете 'Пропусни съществуващите', ако желаете да пропуснете всеки монитор или известие със същото име. 'Презапис' ще изтрие всеки съществуващ монитор и известие.",
- confirmImportMsg: "Сигурни ли сте, че желаете импортирането на архива? Моля, уверете се, че сте избрали правилната опция за импортиране.",
- twoFAVerifyLabel: "Моля, въведете вашия токен код, за да проверите дали 2FA работи",
- tokenValidSettingsMsg: "Токен кодът е валиден! Вече можете да запазите настройките за 2FA.",
- confirmEnableTwoFAMsg: "Сигурни ли сте, че желаете да активирате 2FA?",
- confirmDisableTwoFAMsg: "Сигурни ли сте, че желаете да изключите 2FA?",
- Settings: "Настройки",
- Dashboard: "Табло",
- "New Update": "Налична е актуализация",
- Language: "Език",
- Appearance: "Изглед",
- Theme: "Тема",
- General: "Общи",
- Version: "Версия",
- "Check Update On GitHub": "Проверка за актуализация в GitHub",
- List: "Списък",
- Add: "Добави",
- "Add New Monitor": "Добави монитор",
- "Quick Stats": "Кратка статистика",
- Up: "Достъпен",
- Down: "Недостъпен",
- Pending: "Изчаква",
- Unknown: "Неизвестен",
- Pause: "Пауза",
- Name: "Име",
- Status: "Статус",
- DateTime: "Дата и час",
- Message: "Отговор",
- "No important events": "Все още няма събития",
- Resume: "Възобнови",
- Edit: "Редактирай",
- Delete: "Изтрий",
- Current: "Текущ",
- Uptime: "Достъпност",
- "Cert Exp.": "Вал. сертификат",
- day: "ден | дни",
- "-day": "-дни",
- hour: "час",
- "-hour": "-часa",
- Response: "Отговор",
- Ping: "Пинг",
- "Monitor Type": "Монитор тип",
- Keyword: "Ключова дума",
- "Friendly Name": "Псевдоним",
- URL: "URL Адрес",
- Hostname: "Име на хост",
- Port: "Порт",
- "Heartbeat Interval": "Честота на проверка",
- Retries: "Повторни опити",
- "Heartbeat Retry Interval": "Честота на повторните опити",
- Advanced: "Разширени",
- "Upside Down Mode": "Обърнат режим",
- "Max. Redirects": "Макс. брой пренасочвания",
- "Accepted Status Codes": "Допустими статус кодове",
- Save: "Запази",
- Notifications: "Известия",
- "Not available, please setup.": "Не са налични. Моля, настройте.",
- "Setup Notification": "Настрой известие",
- Light: "Светла",
- Dark: "Тъмна",
- Auto: "Автоматично",
- "Theme - Heartbeat Bar": "Тема - поле проверки",
- Normal: "Нормално",
- Bottom: "Долу",
- None: "Без",
- Timezone: "Часова зона",
- "Search Engine Visibility": "Видимост за търсачки",
- "Allow indexing": "Разреши индексиране",
- "Discourage search engines from indexing site": "Не позволявай на търсачките да индексират този сайт",
- "Change Password": "Промяна на парола",
- "Current Password": "Текуща парола",
- "New Password": "Нова парола",
- "Repeat New Password": "Повторете новата парола",
- "Update Password": "Актуализирай паролата",
- "Disable Auth": "Изключи удостоверяване",
- "Enable Auth": "Активирай удостоверяване",
- "disableauth.message1": "Сигурни ли сте, че желаете да изключите удостоверяването ?",
- "disableauth.message2": "Използва се в случаите, когато има настроен алтернативен метод за удостоверяване преди Uptime Kuma, например Cloudflare Access, Authelia или друг механизъм за удостоверяване.",
- "Please use this option carefully!": "Моля, използвайте с повишено внимание.",
- Logout: "Изход от профила",
- Leave: "Отказ",
- "I understand, please disable": "Разбирам. Моля, изключи",
- Confirm: "Потвърдете",
- Yes: "Да",
- No: "Не",
- Username: "Потребител",
- Password: "Парола",
- "Remember me": "Запомни ме",
- Login: "Вход",
- "No Monitors, please": "Все още няма монитори. Моля, добавете поне ",
- "add one": "един.",
- "Notification Type": "Тип известие",
- Email: "Имейл",
- Test: "Тест",
- "Certificate Info": "Информация за сертификат",
- "Resolver Server": "Преобразуващ (DNS) сървър",
- "Resource Record Type": "Тип запис",
- "Last Result": "Последен резултат",
- "Create your admin account": "Създаване на администриращ акаунт",
- "Repeat Password": "Повторете паролата",
- "Import Backup": "Импорт на архив",
- "Export Backup": "Експорт на архив",
- Export: "Експорт",
- Import: "Импорт",
- respTime: "Време за отговор (ms)",
- notAvailableShort: "Няма",
- "Default enabled": "Активирано по подразбиране",
- "Apply on all existing monitors": "Приложи върху всички съществуващи монитори",
- Create: "Създай",
- "Clear Data": "Изтрий данни",
- Events: "Събития",
- Heartbeats: "Проверки",
- "Auto Get": "Авт. попълване",
- backupDescription: "Можете да архивирате всички монитори и всички известия в JSON файл.",
- backupDescription2: "PS: Имайте предвид, че данните за история и събития няма да бъдат включени.",
- backupDescription3: "Чувствителни данни, като токен кодове за известия, се съдържат в експортирания файл. Моля, бъдете внимателни с неговото съхранение.",
- alertNoFile: "Моля, изберете файл за импортиране.",
- alertWrongFileType: "Моля, изберете JSON файл.",
- "Clear all statistics": "Изтрий цялата статистика",
- "Skip existing": "Пропусни съществуващите",
- Overwrite: "Презапиши",
- Options: "Опции",
- "Keep both": "Запази двете",
- "Verify Token": "Провери токен код",
- "Setup 2FA": "Настройка 2FA",
- "Enable 2FA": "Активирай 2FA",
- "Disable 2FA": "Деактивирай 2FA",
- "2FA Settings": "Настройка за 2FA",
- "Two Factor Authentication": "Двуфакторно удостоверяване",
- Active: "Активно",
- Inactive: "Неактивно",
- Token: "Токен код",
- "Show URI": "Покажи URI",
- Tags: "Етикети",
- "Add New below or Select...": "Добавете нов по-долу или изберете...",
- "Tag with this name already exist.": "Етикет с това име вече съществува.",
- "Tag with this value already exist.": "Етикет с тази стойност вече съществува.",
- color: "цвят",
- "value (optional)": "стойност (по желание)",
- Gray: "Сиво",
- Red: "Червено",
- Orange: "Оранжево",
- Green: "Зелено",
- Blue: "Синьо",
- Indigo: "Индиго",
- Purple: "Лилаво",
- Pink: "Розово",
- "Search...": "Търси...",
- "Avg. Ping": "Ср. пинг",
- "Avg. Response": "Ср. отговор",
- "Entry Page": "Основна страница",
- statusPageNothing: "Все още няма нищо тук. Моля, добавете група или монитор.",
- "No Services": "Няма Услуги",
- "All Systems Operational": "Всички услуги са достъпни",
- "Partially Degraded Service": "Част от услугите са недостъпни",
- "Degraded Service": "Всички услуги са недостъпни",
- "Add Group": "Добави група",
- "Add a monitor": "Добави монитор",
- "Edit Status Page": "Редактиране Статус страница",
- "Go to Dashboard": "Към Таблото",
- telegram: "Telegram",
- webhook: "Уеб кука",
- smtp: "Имейл (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Поддържа 50+ услуги за известяване)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "Status Page": "Статус страница",
- "Status Pages": "Статус страници",
- "Primary Base URL": "Основен базов URL адрес",
- "Push URL": "Генериран Push URL адрес",
- needPushEvery: "Необходимо е да извършвате заявка към този URL адрес на всеки {0} секунди",
- pushOptionalParams: "Допълнителни, но не задължителни параметри: {0}",
- defaultNotificationName: "Моето {notification} известие ({number})",
- here: "тук",
- Required: "Задължително поле",
- "Bot Token": "Бот токен",
- wayToGetTelegramToken: "Можете да получите токен от {0}.",
- "Chat ID": "Чат ID",
- supportTelegramChatID: "Поддържа Direct Chat / Group / Channel's Chat ID",
- wayToGetTelegramChatID: "Можете да получите вашето чат ID, като изпратите съобщение на бота, след което е нужно да посетите този URL адрес за да го видите:",
- "YOUR BOT TOKEN HERE": "ВАШИЯТ БОТ ТОКЕН ТУК",
- chatIDNotFound: "Чат ID не е намерено. Моля, първо изпратете съобщение до този бот",
- "Post URL": "Post URL адрес",
- "Content Type": "Тип съдържание",
- webhookJsonDesc: "{0} е подходящ за всички съвременни http сървъри, като например express.js",
- webhookFormDataDesc: "{multipart} е подходящ за PHP, нужно е да анализирате json чрез {decodeFunction}",
- secureOptionNone: "Няма (25) / STARTTLS (587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Игнорирай TLS грешките",
- "From Email": "От имейл адрес",
- emailCustomSubject: "Модифициране на тема",
- "To Email": "Получател имейл адрес",
- smtpCC: "Явно копие до имейл адрес:",
- smtpBCC: "Скрито копие до имейл адрес:",
- "Discord Webhook URL": "Discord URL адрес на уеб кука",
- wayToGetDiscordURL: "Може да създадете, от меню \"Настройки на сървъра\" -> \"Интеграции\" -> \"Уеб куки\" -> \"Нова уеб кука\"",
- "Bot Display Name": "Име на бота, което да се показва",
- "Prefix Custom Message": "Модифицирано обръщение",
- "Hello @everyone is...": "Здравейте, {'@'}everyone е...",
- "Webhook URL": "Уеб кука URL адрес",
- wayToGetTeamsURL: "Можете да научите как се създава URL адрес за уеб кука {0}.",
- Number: "Номер",
- Recipients: "Получатели",
- needSignalAPI: "Необходимо е да разполагате със Signal клиент с REST API.",
- wayToCheckSignalURL: "Може да посетите този URL адрес, ако се нуждаете от помощ при настройването:",
- signalImportant: "ВАЖНО: Не може да смесвате \"Групи\" и \"Номера\" в поле \"Получатели\"!",
- "Application Token": "Токен код за приложението",
- "Server URL": "URL адрес на сървъра",
- Priority: "Приоритет",
- "Icon Emoji": "Иконка Емотикон",
- "Channel Name": "Канал име",
- "Uptime Kuma URL": "Uptime Kuma URL адрес",
- aboutWebhooks: "Повече информация относно уеб куки на: {0}",
- aboutChannelName: "Въведете името на канала в поле {0} \"Канал име\", ако желаете да заобиколите канала от уеб куката. Например: #other-channel",
- aboutKumaURL: "Ако оставите празно полето \"Uptime Kuma URL адрес\", по подразбиране ще се използва GitHub страницата на проекта.",
- emojiCheatSheet: "Подсказки за емотикони: {0}",
- "User Key": "Потребителски ключ",
- Device: "Устройство",
- "Message Title": "Заглавие на съобщението",
- "Notification Sound": "Звуков сигнал",
- "More info on:": "Повече информация на: {0}",
- pushoverDesc1: "Приоритет Спешно (2) по подразбиране изчаква 30 секунди между повторните опити и изтича след 1 час.",
- pushoverDesc2: "Ако желаете да изпратите известия до различни устройства, попълнете полето Устройство.",
- "SMS Type": "SMS тип",
- octopushTypePremium: "Премиум (Бърз - препоръчителен в случай на тревога)",
- octopushTypeLowCost: "Евтин (Бавен - понякога бива блокиран от оператора)",
- checkPrice: "Тарифни планове на {0}:",
- octopushLegacyHint: "Дали използвате съвместима версия на Octopush (2011-2020) или нова версия?",
- "Check octopush prices": "Тарифни планове на octopush {0}.",
- octopushPhoneNumber: "Телефонен номер (в международен формат, например: +33612345678) ",
- octopushSMSSender: "SMS подател Име: 3-11 знака - букви, цифри и интервал (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea ID на устройство",
- "Apprise URL": "Apprise URL адрес",
- "Example:": "Пример: {0}",
- "Read more:": "Научете повече: {0}",
- "Status:": "Статус: {0}",
- "Read more": "Научете повече",
- appriseInstalled: "Apprise е инсталиран.",
- appriseNotInstalled: "Apprise не е инсталиран. {0}",
- "Access Token": "Токен код за достъп",
- "Channel access token": "Канал токен код",
- "Line Developers Console": "Line - Конзола за разработчици",
- lineDevConsoleTo: "Line - Конзола за разработчици - {0}",
- "Basic Settings": "Основни настройки",
- "User ID": "Потребител ID",
- "Messaging API": "API за съобщаване",
- wayToGetLineChannelToken: "Необходимо е първо да посетите {0}, за да създадете (Messaging API) за доставчик и канал, след което може да вземете токен кода за канал и потребителско ID от споменатите по-горе елементи на менюто.",
- "Icon URL": "URL адрес за иконка",
- aboutIconURL: "Може да предоставите линк към картинка в поле \"URL Адрес за иконка\" за да отмените картинката на профила по подразбиране. Няма да се използва, ако вече сте настроили емотикон.",
- aboutMattermostChannelName: "Може да замените канала по подразбиране, към който публикува уеб куката, като въведете името на канала в полето \"Канал име\". Трябва да бъде активирано в настройките за уеб кука на Mattermost. Например: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - евтин, но бавен. Често е претоварен. Само за получатели от Полша.",
- promosmsTypeFlash: "SMS FLASH - Съобщението автоматично се показва на устройството на получателя. Само за получатели от Полша.",
- promosmsTypeFull: "SMS FULL - Високо ниво на SMS услуга. Може да използвате Вашето име като подател (Необходимо е първо да регистрирате името). Надежден метод за съобщения тип тревога.",
- promosmsTypeSpeed: "SMS SPEED - Най-висок приоритет в системата. Много бърза и надеждна, но същевременно скъпа услуга. (Около два пъти по-висока цена в сравнение с SMS FULL).",
- promosmsPhoneNumber: "Телефонен номер (за получатели от Полша, може да пропуснете въвеждането на код за населено място)",
- promosmsSMSSender: "SMS Подател име: Предварително регистрирано име или някое от имената по подразбиране: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu URL адрес за уеб кука",
- matrixHomeserverURL: "Сървър URL адрес (започва с http(s):// и порт по желание)",
- "Internal Room Id": "ID на вътрешна стая",
- matrixDesc1: "Може да намерите \"ID на вътрешна стая\" в разширените настройки на стаята във вашия Matrix клиент. Примерен изглед: !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Силно препоръчваме да създадете НОВ потребител и да НЕ използвате токен кодът на вашия личен Matrix потребител, т.к. той позволява пълен достъп до вашия акаунт и всички стаи към които сте се присъединили. Вместо това създайте нов потребител и го поканете само в стаята, където желаете да получавате известията. Токен код за достъп ще получите изпълнявайки {0}",
- Method: "Метод",
- Body: "Съобщение",
- Headers: "Хедъри",
- PushUrl: "Push URL адрес",
- HeadersInvalidFormat: "Заявените хедъри не са валидни JSON: ",
- BodyInvalidFormat: "Заявеното съобщение не е валиден JSON: ",
- "Monitor History": "История на мониторите",
- clearDataOlderThan: "Ще се съхранява за {0} дни.",
- records: "записа",
- "One record": "Един запис",
- steamApiKeyDescription: "За да мониторирате Steam Gameserver се нуждаете от Steam Web-API ключ. Може да регистрирате Вашия API ключ тук: ",
- clicksendsms: "ClickSend SMS",
- apiCredentials: "API удостоверяване",
- PasswordsDoNotMatch: "Паролите не съвпадат.",
- "Current User": "Текущ потребител",
- recent: "Скорошни",
- shrinkDatabaseDescription: "Инициира \"VACUUM\" за \"SQLite\" база данни. Ако Вашата база данни е създадена след версия 1.10.0, \"AUTO_VACUUM\" функцията е активна и това действие не е нужно.",
- Done: "Готово",
- Info: "Информация",
- Security: "Сигурност",
- "Steam API Key": "Steam API ключ",
- "Shrink Database": "Редуцирай базата данни",
- "Pick a RR-Type...": "Изберете вида на ресурсния запис за мониториране...",
- "Pick Accepted Status Codes...": "Изберете статус кодове, които да се считат за успешен отговор...",
- Default: "По подразбиране",
- "HTTP Options": "HTTP Опции",
- "Create Incident": "Създаване на инцидент",
- Title: "Заглавие",
- Content: "Съдържание",
- Style: "Стил",
- info: "информация",
- warning: "предупреждение",
- danger: "опасност",
- primary: "основен",
- light: "светъл",
- dark: "тъмен",
- Post: "Публикувай",
- "Please input title and content": "Моля, въведете заглавие и съдържание",
- Created: "Създаден",
- "Last Updated": "Последно обновен",
- Unpin: "Откачи",
- "Switch to Light Theme": "Превключи към светла тема",
- "Switch to Dark Theme": "Превключи към тъмна тема",
- "Show Tags": "Покажи етикети",
- "Hide Tags": "Скрий етикети",
- Description: "Описание",
- "No monitors available.": "Няма налични монитори.",
- "Add one": "Добави един",
- "No Monitors": "Няма монитори",
- "Untitled Group": "Група без заглавие",
- Services: "Услуги",
- Discard: "Отмени",
- Cancel: "Отмени",
- "Powered by": "Създадено чрез",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Потребителско име (вкл. webapi_ prefix)",
- serwersmsAPIPassword: "API Парола",
- serwersmsPhoneNumber: "Телефон номер",
- serwersmsSenderName: "SMS Подател име (регистриран през клиентския портал)",
- stackfield: "Stackfield",
- smtpDkimSettings: "DKIM Настройки",
- smtpDkimDesc: "Моля, вижте {0} на Nodemailer DKIM за инструкции.",
- documentation: "документацията",
- smtpDkimDomain: "Домейн",
- smtpDkimKeySelector: "Селектор на ключ",
- smtpDkimPrivateKey: "Частен ключ",
- smtpDkimHashAlgo: "Хеш алгоритъм (по желание)",
- smtpDkimheaderFieldNames: "Хедър ключове за подписване (по желание)",
- smtpDkimskipFields: "Хедър ключове, които да не се подписват (по желание)",
- PushByTechulus: "Push от Techulus",
- GoogleChat: "Google Chat (Само за работното пространство на Google)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "Крайна точка на API",
- alertaEnvironment: "Среда",
- alertaApiKey: "API Ключ",
- alertaAlertState: "Състояние на тревога",
- alertaRecoverState: "Състояние на възстановяване",
- deleteStatusPageMsg: "Сигурни ли сте, че желаете да изтриете тази статус страница?",
- Proxies: "Прокси",
- default: "По подразбиране",
- enabled: "Активирано",
- setAsDefault: "Зададен по подразбиране",
- deleteProxyMsg: "Сигурни ли сте, че желаете да изтриете това прокси за всички монитори?",
- proxyDescription: "За да функционират трябва да бъдат зададени към монитор.",
- enableProxyDescription: "Това прокси няма да има ефект върху заявките за мониторинг, докато не бъде активирано. Може да контролирате временното деактивиране на проксито от всички монитори чрез статуса на активиране.",
- setAsDefaultProxyDescription: "Това прокси ще бъде активно по подразбиране за новите монитори. Може да го изключите по отделно за всеки един монитор.",
- "Certificate Chain": "Верига на сертификата",
- Valid: "Валиден",
- Invalid: "Невалиден",
- AccessKeyId: "ID на ключ за достъп",
- SecretAccessKey: "Тайна на ключа за достъп",
- PhoneNumbers: "Телефонни номера",
- TemplateCode: "Шаблон Код",
- SignName: "Знак име",
- "Sms template must contain parameters: ": "SMS шаблонът трябва да съдържа следните параметри: ",
- "Bark Endpoint": "Bark крайна точка",
- WebHookUrl: "URL адрес на уеб кука",
- SecretKey: "Таен ключ",
- "For safety, must use secret key": "За сигурност, трябва да се използва таен ключ",
- "Device Token": "Токен за устройство",
- Platform: "Платформа",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Висок",
- Retry: "Повтори",
- Topic: "Тема",
- "WeCom Bot Key": "WeCom бот ключ",
- "Setup Proxy": "Настрой прокси",
- "Proxy Protocol": "Прокси протокол",
- "Proxy Server": "Прокси сървър",
- "Proxy server has authentication": "Прокси сървърът е с удостоверяване",
- User: "Потребител",
- Installed: "Инсталиран",
- "Not installed": "Не е инсталиран",
- Running: "Работи",
- "Not running": "Не работи",
- "Remove Token": "Премахни токен",
- Start: "Стартирай",
- Stop: "Спри",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Добави нова статус страница",
- Slug: "Слъг",
- "Accept characters:": "Приеми символи:",
- startOrEndWithOnly: "Започва или завършва само с {0}",
- "No consecutive dashes": "Без последователни тирета",
- Next: "Следващ",
- "The slug is already taken. Please choose another slug.": "Този слъг вече се използва. Моля изберете друг.",
- "No Proxy": "Без прокси",
- Authentication: "Удостоверяване",
- "HTTP Basic Auth": "HTTP основно удостоверяване",
- "New Status Page": "Нова статус страница",
- "Page Not Found": "Страницата не е открита",
- "Reverse Proxy": "Ревърс прокси",
- Backup: "Архивиране",
- About: "Относно",
- wayToGetCloudflaredURL: "(Свалете \"cloudflared\" от {0})",
- cloudflareWebsite: "Cloudflare уеб сайт",
- "Message:": "Съобщение:",
- "Don't know how to get the token? Please read the guide:": "Не знаете как да вземете токен? Моля, прочетете ръководството:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Текущата връзка може да прекъсне ако в момента сте свързани чрез \"Cloudflare Tunnel\". Сигурни ли сте, че желаете да го спрете? Въведете Вашата текуща парола за да потвърдите.",
- "Other Software": "Друг софтуер",
- "For example: nginx, Apache and Traefik.": "Например: Nginx, Apache и Traefik.",
- "Please read": "Моля, прочетете",
- "Subject:": "Тема:",
- "Valid To:": "Валиден до:",
- "Days Remaining:": "Оставащи дни:",
- "Issuer:": "Издател:",
- "Fingerprint:": "Пръстов отпечатък:",
- "No status pages": "Няма статус страници",
- topic: "Тема",
- topicExplanation: "MQTT тема за мониториране",
- successMessage: "Съобщение при успех",
- successMessageExplanation: "MQTT съобщение, което ще бъде считано за успех",
- Customize: "Персонализирай",
- "Custom Footer": "Персонализиран долен колонтитул",
- "Custom CSS": "Потребителски CSS",
- "Domain Name Expiry Notification": "Известие при изтичащ домейн",
- Proxy: "Прокси",
- "Date Created": "Дата на създаване",
- onebotHttpAddress: "OneBot HTTP адрес",
- onebotMessageType: "OneBot тип съобщение",
- onebotGroupMessage: "Група",
- onebotPrivateMessage: "Лично",
- onebotUserOrGroupId: "Група/Потребител ID",
- onebotSafetyTips: "С цел безопасност трябва да зададете токен код за достъп",
- "PushDeer Key": "PushDeer ключ",
- "Footer Text": "Текст долен колонтитул",
- "Show Powered By": "Покажи \"Създадено чрез\"",
- "Domain Names": "Домейни",
- signedInDisp: "Вписан като {0}",
- signedInDispDisabled: "Удостоверяването е изключено.",
- "Certificate Expiry Notification": "Известие за изтичане валидността на сертификата",
- "API Username": "API Потребител",
- "API Key": "API Ключ",
- "Recipient Number": "Номер на получателя",
- "From Name/Number": "От Име/Номер",
- "Leave blank to use a shared sender number.": "Оставете празно, за да използвате споделен номер на подател.",
- "Octopush API Version": "Octopush API версия",
- "Legacy Octopush-DM": "Octopush-DM старa версия",
- endpoint: "крайна точка",
- octopushAPIKey: "\"API ключ\" от HTTP API удостоверяване в контролния панел",
- octopushLogin: "\"Вписване\" от HTTP API удостоверяване в контролния панел",
- promosmsLogin: "API Потребителско име",
- promosmsPassword: "API Парола",
- "pushoversounds pushover": "Pushover (по подразбиране)",
- "pushoversounds bike": "Велосипед",
- "pushoversounds bugle": "Тромпет",
- "pushoversounds cashregister": "Касов апарат",
- "pushoversounds classical": "Класическа музика",
- "pushoversounds cosmic": "Космически",
- "pushoversounds falling": "Падащ",
- "pushoversounds gamelan": "Игра в мрежа",
- "pushoversounds incoming": "Входящ",
- "pushoversounds intermission": "Прекъсване",
- "pushoversounds magic": "Магия",
- "pushoversounds mechanical": "Механичен",
- "pushoversounds pianobar": "Пиано бар",
- "pushoversounds siren": "Сирена",
- "pushoversounds spacealarm": "Космическа аларма",
- "pushoversounds tugboat": "Буксир",
- "pushoversounds alien": "Извънземна аларма (дълъг)",
- "pushoversounds climb": "Изкачване (дълъг)",
- "pushoversounds persistent": "Постоянен (дълъг)",
- "pushoversounds echo": "Pushover ехо (дълъг)",
- "pushoversounds updown": "Горе долу (дълъг)",
- "pushoversounds vibrate": "Само вибрация",
- "pushoversounds none": "Без (тих)",
- pushyAPIKey: "Таен API ключ",
- pushyToken: "Токен на устройство",
- "Show update if available": "Покажи актуализация, ако е налична",
- "Also check beta release": "Проверявай и за бета версии",
- "Using a Reverse Proxy?": "Използвате ревърс прокси?",
- "Check how to config it for WebSocket": "Проверете как да го конфигурирате за WebSocket",
- "Steam Game Server": "Steam Game сървър",
- "Most likely causes:": "Най-вероятни причини:",
- "The resource is no longer available.": "Ресурсът вече не е наличен.",
- "There might be a typing error in the address.": "Възможно е да е допусната грешка при изписването на адреса.",
- "What you can try:": "Може да опитате:",
- "Retype the address.": "Повторно въвеждане на адреса.",
- "Go back to the previous page.": "Да се върнете към предишната страница.",
- "Coming Soon": "Очаквайте скоро",
- wayToGetClickSendSMSToken: "Може да получите API потребителско име и API ключ от {0} .",
- dnsPortDescription: "DNS порт на сървъра. По подразбиране е 53, но може да бъде променен по всяко време.",
- error: "грешка",
- critical: "критично",
- wayToGetPagerDutyKey: "Може да го получите като посетите Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тук трябва да потърсите \"Events API V2\". Повече информация {0}",
- "Integration Key": "Ключ за интегриране",
- "Integration URL": "URL адрес за интеграция",
- "Auto resolve or acknowledged": "Автоматично разрешаване или потвърждаване",
- "do nothing": "не прави нищо",
- "auto acknowledged": "автоматично потвърждаване",
- "auto resolve": "автоматично разрешаване",
- "Connection String": "Стринг за връзка",
- Query: "Заявка",
- settingsCertificateExpiry: "Изтичане валидността на TLS сертификата",
- certificationExpiryDescription: "HTTPS мониторите ще задействат известие, ако е наличен изтичащ TLS сертификат, през следващите:",
- "ntfy Topic": "ntfy Тема",
- Domain: "Домейн",
- Workstation: "Работна станция",
- disableCloudflaredNoAuthMsg: "Тъй като сте в режим \"No Auth mode\", парола не се изисква.",
- wayToGetLineNotifyToken: "Може да получите токен код за достъп от {0}",
- resendEveryXTimes: "Изпращай повторно на всеки {0} пъти",
- resendDisabled: "Повторното изпращане е изключено",
- "Resend Notification if Down X times consequently": "Повторно изпращане на известие, ако е недостъпен X пъти последователно",
- "Bark Group": "Bark група",
- "Bark Sound": "Bark звук",
- "HTTP Headers": "HTTP хедъри",
- "Trust Proxy": "Trust Proxy",
- HomeAssistant: "Home Assistant",
- RadiusSecret: "Radius таен код",
- RadiusSecretDescription: "Споделен таен код между клиент и сървър",
- RadiusCalledStationId: "Повиквана станция ID",
- RadiusCalledStationIdDescription: "Идентификатор на повикваното устройство",
- RadiusCallingStationId: "Повикваща станция ID",
- RadiusCallingStationIdDescription: "Идентификатор на повикващото устройство",
- "Setup Docker Host": "Настройка на Docker хост",
- "Connection Type": "Тип свързване",
- "Docker Daemon": "Docker демон",
- deleteDockerHostMsg: "Сигурни ли сте, че желаете да изтриете този Docker хост за всички монитори?",
- socket: "Сокет",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker контейнер",
- "Container Name / ID": "Име на контейнер / ID",
- "Docker Host": "Docker хост",
- "Docker Hosts": "Docker хостове",
- trustProxyDescription: "Trust 'X-Forwarded-*' headers. Ако искате да получавате правилния IP адрес на клиента, а Uptime Kuma е зад системи като Nginx или Apache, трябва да разрешите тази опция.",
- Examples: "Примери",
- "Home Assistant URL": "Home Assistant URL адрес",
- "Long-Lived Access Token": "Long-Lived Access Token",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token можете да създадете, като кликнете върху името на профила си (долу ляво) и превъртите до най-долу, след това кликнете върху Създаване на токен. ",
- "Notification Service": "Услуга за известяване",
- "default: notify all devices": "по подразбиране: извести всички устройства",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Списък с услугите за известяване може да бъде намерен в Home Assistant под \"Developer Tools > Services\", там потърсете \"notification\", за да намерите името на вашето устройство/телефон.",
- "Automations can optionally be triggered in Home Assistant:": "Автоматизациите могат да се задействат при нужда в Home Assistant:",
- "Trigger type:": "Задействане тип:",
- "Event type:": "Събитие тип:",
- "Event data:": "Събитие данни:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "След което изберете действие, например да превключите сцената, където RGB светлината е червена.",
- "Frontend Version": "Фронтенд версия",
- "Frontend Version do not match backend version!": "Фронтенд версията не съвпада с Бекенд версията!",
- "Base URL": "Базов URL адрес",
- goAlertInfo: "GoAlert е приложение с отворен код за планиране на повиквания, автоматизирани ескалации и известия (като SMS или гласови повиквания). Автоматично ангажирайте точния човек, по точния начин и в точното време! {0}",
- goAlertIntegrationKeyInfo: "Вземете общ API интеграционен ключ за услугата във формат \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обикновено стойността на параметъра token на копирания URL адрес.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Отпаднало: Тъй като са добавени много функции, тази опция за архивиране не е достатъчно поддържана и не може да генерира или възстанови пълен архив.",
- backupRecommend: "Моля, архивирайте дяла или папката (./data/) директно вместо това.",
- Maintenance: "Поддръжка",
- statusMaintenance: "Поддръжка",
- "Schedule maintenance": "Планиране на поддръжка",
- "Affected Monitors": "Засегнати монитори",
- "Pick Affected Monitors...": "Изберете засегнати монитори...",
- "Start of maintenance": "Стартирай поддръжка",
- "All Status Pages": "Всички статус страници",
- "Select status pages...": "Изберете статус страници...",
- recurringIntervalMessage: "Изпълнявай ежедневно | Изпълнявай всеки {0} дни",
- affectedMonitorsDescription: "Изберете монитори, засегнати от текущата поддръжка",
- affectedStatusPages: "Покажи това съобщение за поддръжка на избрани статус страници",
- atLeastOneMonitor: "Изберете поне един засегнат монитор",
- deleteMaintenanceMsg: "Сигурни ли сте, че желаете да изтриете тази поддръжка?",
- Optional: "По желание",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "SMSManager API Документация ",
- "Gateway Type": "Тип на шлюза",
- SMSManager: "SMSManager",
- "You can divide numbers with": "Може да разделяте числата с",
- or: "или",
- recurringInterval: "Интервал",
- Recurring: "Повтаряне",
- strategyManual: "Активен/Неактивен ръчно",
- warningTimezone: "Използва се часовата зона на сървъра",
- weekdayShortMon: "Пон",
- weekdayShortTue: "Вт",
- weekdayShortWed: "Ср",
- weekdayShortThu: "Чет",
- weekdayShortFri: "Пет",
- weekdayShortSat: "Съб",
- weekdayShortSun: "Нед",
- dayOfWeek: "Ден",
- dayOfMonth: "Дата",
- lastDay: "Последен ден",
- lastDay1: "Последен ден от месеца",
- lastDay2: "2-ри последен ден на месеца",
- lastDay3: "3-ти последен ден на месеца",
- lastDay4: "4-ти последен ден на месеца",
- "No Maintenance": "Няма поддръжка",
- pauseMaintenanceMsg: "Сигурни ли сте, че желаете да направите пауза?",
- "maintenanceStatus-under-maintenance": "В режим поддръжка",
- "maintenanceStatus-inactive": "Неактивна",
- "maintenanceStatus-scheduled": "Планирана",
- "maintenanceStatus-ended": "Приключена",
- "maintenanceStatus-unknown": "Неизвестна",
- "Display Timezone": "Покажи часова зона",
- "Server Timezone": "Часова зона на сървъра",
- statusPageMaintenanceEndDate: "Край",
- enableGRPCTls: "Разреши изпращане на gRPC заявка с TLS връзка",
- grpcMethodDescription: "Името на метода се форматира в \"cammelCase\", например sayHello, check, и т.н.",
- smseagle: "SMSEagle",
- smseagleTo: "Тел. номер(а)",
- smseagleGroup: "Име на група/и от тел. указател",
- smseagleContact: "Име(на) от тел. указател",
- smseagleRecipientType: "Получател тип",
- smseagleRecipient: "Получател(и) (при повече от един разделете със запетая)",
- smseagleToken: "API токен за достъп",
- smseagleUrl: "Вашият SMSEagle URL на устройството",
- smseagleEncoding: "Изпрати като Unicode",
- smseaglePriority: "Приоритет на съобщението (0-9, по подразбиране = 0)",
- IconUrl: "Икона URL адрес",
- webhookAdditionalHeadersTitle: "Допълнителни хедъри",
- webhookAdditionalHeadersDesc: "Задава допълнителни хедъри, изпратени с уеб куката.",
- "Enable DNS Cache": "Активирай DNS кеширане",
- Enable: "Активирай",
- Disable: "Деактивирай",
- dnsCacheDescription: "Възможно е да не работи в IPv6 среда - деактивирайте, ако срещнете проблеми.",
- "Single Maintenance Window": "Единичен времеви интервал за поддръжка",
- "Maintenance Time Window of a Day": "Времеви интервал от деня за поддръжка",
- "Effective Date Range": "Интервал от дни на влизане в сила",
- "Schedule Maintenance": "Планирай поддръжка",
- "Date and Time": "Дата и час",
- "DateTime Range": "Изтрий времеви интервал",
- Strategy: "Стратегия",
- "Free Mobile User Identifier": "Free Mobile потребителски идентификатор",
- "Free Mobile API Key": "Free Mobile API ключ",
- "Enable TLS": "Активирай TLS",
- "Proto Service Name": "Proto име на услугата",
- "Proto Method": "Proto метод",
- "Proto Content": "Proto съдържание",
- Economy: "Икономичен",
- Lowcost: "Евтин",
- high: "висок",
- "General Monitor Type": "Общ тип монитор",
- "Passive Monitor Type": "Пасивет тип монитор",
- "Specific Monitor Type": "Специфичен тип монитор",
- ZohoCliq: "ZohoCliq",
- wayToGetZohoCliqURL: "Можете да научите как се създава URL адрес за уеб кука {0}.",
- Kook: "Kook",
- wayToGetKookBotToken: "Създайте приложение и вземете вашия бот токен на {0}",
- wayToGetKookGuildID: "Превключете в 'Developer Mode' в 'Kook' настройките, след което десен клик върху 'guild' за да вземете неговото 'ID'",
- "Guild ID": "Guild ID",
-};
diff --git a/src/languages/cs-CZ.js b/src/languages/cs-CZ.js
deleted file mode 100644
index 99ae9ef0a..000000000
--- a/src/languages/cs-CZ.js
+++ /dev/null
@@ -1,626 +0,0 @@
-export default {
- languageName: "Czech",
- checkEverySecond: "Kontrolovat každých {0} sekund",
- retryCheckEverySecond: "Opakovat každých {0} sekund",
- resendEveryXTimes: "Znovu zaslat {0}krát",
- resendDisabled: "Opakované zasílání je vypnuté",
- retriesDescription: "Maximální počet pokusů před označením služby jako nedostupné a odesláním oznámení",
- ignoreTLSError: "Ignorovat TLS/SSL chyby na HTTPS stránkách",
- upsideDownModeDescription: "Pomocí této možnosti změníte způsob vyhodnocování stavu. Pokud je služba dosažitelná, je NEDOSTUPNÁ.",
- maxRedirectDescription: "Maximální počet přesměrování, která se mají následovat. Nastavením hodnoty 0 zakážete přesměrování.",
- acceptedStatusCodesDescription: "Vyberte stavové kódy, které jsou považovány za úspěšnou odpověď.",
- passwordNotMatchMsg: "Hesla se neshodují",
- notificationDescription: "Pro zajištění funkčnosti oznámení je nutné jej přiřadit dohledu.",
- keywordDescription: "Vyhledat klíčové slovo v prosté odpovědi HTML nebo JSON. Při hledání se rozlišuje velikost písmen.",
- pauseDashboardHome: "Pozastavit",
- deleteMonitorMsg: "Opravdu chcete odstranit tento dohled?",
- deleteNotificationMsg: "Opravdu chcete odstranit toto oznámení pro všechny dohledy?",
- dnsPortDescription: "Port DNS serveru. Standardně běží na portu 53. V případě potřeby jej můžete kdykoli změnit.",
- resolverserverDescription: "Cloudflare je výchozí server. V případě potřeby můžete Resolver server kdykoli změnit.",
- rrtypeDescription: "Vyberte typ záznamu o prostředku, který chcete monitorovat",
- pauseMonitorMsg: "Opravdu chcete dohled pozastavit?",
- enableDefaultNotificationDescription: "Toto oznámení bude standardně aktivní pro nové dohledy. V případě potřeby můžete oznámení stále zakázat na úrovni jednotlivých dohledů.",
- clearEventsMsg: "Opravdu chcete odstranit všechny události pro tento dohled?",
- clearHeartbeatsMsg: "Opravdu chcete odstranit všechny heartbeaty pro tento dohled?",
- confirmClearStatisticsMsg: "Opravdu chcete smazat VŠECHNY statistiky?",
- importHandleDescription: "Možnost 'Přeskočit existující' vyberte v případě, že chcete přeskočit všechny dohledy nebo oznámení se stejným názvem. Vybráním možnosti 'Přepsat' dojde k odstranění všech existujících dohledů a oznámení.",
- confirmImportMsg: "Opravdu chcete importovat zálohu? Prosím ověřte, zda jste vybrali správnou možnost importu.",
- twoFAVerifyLabel: "Prosím, zadejte svůj token pro ověření 2FA:",
- tokenValidSettingsMsg: "Token je platný! Nyní můžete uložit nastavení 2FA.",
- confirmEnableTwoFAMsg: "Opravdu chcete zapnout 2FA?",
- confirmDisableTwoFAMsg: "Opravdu chcete deaktivovat 2FA?",
- Settings: "Nastavení",
- Dashboard: "Nástěnka",
- "New Update": "Nová aktualizace",
- Language: "Jazyk",
- Appearance: "Vzhled",
- Theme: "Motiv",
- General: "Obecné",
- "Primary Base URL": "Primární URL adresa",
- Version: "Verze",
- "Check Update On GitHub": "Zkontrolovat aktualizace na GitHubu",
- List: "Seznam",
- Add: "Přidat",
- "Add New Monitor": "Přidat nový dohled",
- "Quick Stats": "Rychlé statistiky",
- Up: "Běží",
- Down: "Nedostupný",
- Pending: "Čekám",
- Unknown: "Neznámý",
- Pause: "Pozastaveno",
- Name: "Název",
- Status: "Stav",
- DateTime: "Časové razítko",
- Message: "Zpráva",
- "No important events": "Žádné důležité události",
- Resume: "Pokračovat",
- Edit: "Změnit",
- Delete: "Vymazat",
- Current: "Aktuální",
- Uptime: "Doba provozu",
- "Cert Exp.": "Platnost certifikátu",
- day: "den | dny/í",
- "-day": "-dní",
- hour: "hodina",
- "-hour": "-hodin",
- Response: "Odpověď",
- Ping: "Ping",
- "Monitor Type": "Typ dohledu",
- Keyword: "Klíčové slovo",
- "Friendly Name": "Obecný název",
- URL: "URL",
- Hostname: "Adresa serveru",
- Port: "Port",
- "Heartbeat Interval": "Heartbeat interval",
- Retries: "Počet pokusů",
- "Heartbeat Retry Interval": "Interval opakování heartbeatu",
- "Resend Notification if Down X times consequently": "Znovu zaslat oznámení, pokud je služba nedostupná Xkrát za sebou",
- Advanced: "Rozšířené",
- "Upside Down Mode": "Inverzní režim",
- "Max. Redirects": "Max. přesměrování",
- "Accepted Status Codes": "Akceptované stavové kódy",
- "Push URL": "Push URL",
- needPushEvery: "Tuto URL adresu byste měli volat každých {0} sekund.",
- pushOptionalParams: "Volitelné parametry: {0}",
- Save: "Uložit",
- Notifications: "Oznámení",
- "Not available, please setup.": "Není k dispozici, prosím nastavte.",
- "Setup Notification": "Nastavení oznámení",
- Light: "Světlý",
- Dark: "Tmavý",
- Auto: "Automaticky",
- "Theme - Heartbeat Bar": "Motiv – Heartbeat panel",
- Normal: "Normální",
- Bottom: "Dole",
- None: "Žádné",
- Timezone: "Časové pásmo",
- "Search Engine Visibility": "Viditelnost pro vyhledávače",
- "Allow indexing": "Povolit indexování",
- "Discourage search engines from indexing site": "Zabránit vyhledávačům v indexování stránky",
- "Change Password": "Změnit heslo",
- "Current Password": "Aktuální heslo",
- "New Password": "Nové heslo",
- "Repeat New Password": "Znovu zadat nové heslo",
- "Update Password": "Aktualizovat heslo",
- "Disable Auth": "Deaktivovat ověřování",
- "Enable Auth": "Povolit ověřování",
- "disableauth.message1": "Opravdu chcete deaktivovat autentifikaci ?",
- "disableauth.message2": "Tato možnost je určena pro případy, kdy máte autentifikaci zajištěnou třetí stranou ještě před přístupem do Uptime Kuma, například prostřednictvím Cloudflare Access.",
- "Please use this option carefully!": "Používejte ji prosím s rozmyslem.",
- Logout: "Odhlásit",
- Leave: "Odejít",
- "I understand, please disable": "Rozumím, chci ji deaktivovat",
- Confirm: "Potvrzení",
- Yes: "Ano",
- No: "Ne",
- Username: "Uživatelské jméno",
- Password: "Heslo",
- "Remember me": "Zapamatovat si mě",
- Login: "Přihlášení",
- "No Monitors, please": "Žádné dohledy, prosím",
- "add one": "přidat jeden",
- "Notification Type": "Typ oznámení",
- Email: "E-mail",
- Test: "Test",
- "Certificate Info": "Informace o certifikátu",
- "Resolver Server": "Resolver Server",
- "Resource Record Type": "Typ záznamu o prostředku",
- "Last Result": "Poslední výsledek",
- "Create your admin account": "Vytvořit účet administrátora",
- "Repeat Password": "Znovu zadat heslo",
- "Import Backup": "Importovat zálohu",
- "Export Backup": "Exportovat zálohu",
- Export: "Exportovat",
- Import: "Importovat",
- respTime: "Doba odezvy (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Standardně povoleno",
- "Apply on all existing monitors": "Použít pro všechny existující dohledy",
- Create: "Vytvořit",
- "Clear Data": "Vymazat data",
- Events: "Události",
- Heartbeats: "Heartbeaty",
- "Auto Get": "Získat automaticky",
- backupDescription: "Všechny dohledy a oznámení můžete zálohovat do souboru ve formátu JSON.",
- backupDescription2: "Poznámka: Nezahrnuje historii a data událostí.",
- backupDescription3: "Součástí exportovaného souboru jsou citlivá data jako tokeny oznámení; export si prosím bezpečně uložte.",
- alertNoFile: "Vyberte soubor, který chcete importovat.",
- alertWrongFileType: "Vyberte soubor ve formátu JSON.",
- "Clear all statistics": "Vymazat všechny statistiky",
- "Skip existing": "Přeskočit existující",
- Overwrite: "Přepsat",
- Options: "Možnosti",
- "Keep both": "Ponechat obojí",
- "Verify Token": "Ověřit token",
- "Setup 2FA": "Nastavení 2FA",
- "Enable 2FA": "Povolit 2FA",
- "Disable 2FA": "Deaktivovat 2FA",
- "2FA Settings": "Nastavení 2FA",
- "Two Factor Authentication": "Dvoufaktorová autentifikace",
- Active: "Zapnuto",
- Inactive: "Neaktivní",
- Token: "Token",
- "Show URI": "Zobrazit URI",
- Tags: "Štítky",
- "Add New below or Select...": "Níže přidejte nový nebo vyberte existující…",
- "Tag with this name already exist.": "Štítek s tímto názvem již existuje.",
- "Tag with this value already exist.": "Štítek touto hodnotou již existuje.",
- color: "barva",
- "value (optional)": "hodnota (volitelné)",
- Gray: "Šedá",
- Red: "Červená",
- Orange: "Oranžová",
- Green: "Zelená",
- Blue: "Modrá",
- Indigo: "Indigo",
- Purple: "Purpurová",
- Pink: "Růžová",
- "Search...": "Hledat…",
- "Avg. Ping": "Průměr Ping",
- "Avg. Response": "Průměr Odpověď",
- "Entry Page": "Vstupní stránka",
- statusPageNothing: "Nic tady není, přidejte prosím skupinu nebo dohled.",
- "No Services": "Žádné služby",
- "All Systems Operational": "Všechny systémy běží",
- "Partially Degraded Service": "Částečně zhoršená služba",
- "Degraded Service": "Zhoršená služba",
- "Add Group": "Přidat skupinu",
- "Add a monitor": "Přidání dohledu",
- "Edit Status Page": "Upravit stavovou stránku",
- "Go to Dashboard": "Přejít na nástěnku",
- "Status Page": "Stavová stránka",
- "Status Pages": "Stavová stránka",
- defaultNotificationName: "Moje {notification} upozornění ({číslo})",
- here: "sem",
- Required: "Vyžadováno",
- telegram: "Telegram",
- "Bot Token": "Token robota",
- wayToGetTelegramToken: "Token můžete získat od {0}.",
- "Chat ID": "ID chatu",
- supportTelegramChatID: "Podpora přímého chatu / skupiny / ID chatu kanálu",
- wayToGetTelegramChatID: "ID chatu můžete získat tak, že robotovi zašlete zprávu a přejdete na tuto adresu URL, kde zobrazíte chat_id:",
- "YOUR BOT TOKEN HERE": "SEM ZADEJTE TOKEN VAŠEHO CHATBOTA",
- chatIDNotFound: "ID chatu nebylo nalezeno; nejprve tomuto robotovi zašlete zprávu",
- webhook: "Webhook",
- "Post URL": "URL adresa příspěvku",
- "Content Type": "Typ obsahu",
- webhookJsonDesc: "{0} je vhodný pro všechny moderní servery HTTP, jako je Express.js",
- webhookFormDataDesc: "{multipart} je vhodné pro PHP. JSON bude nutné analyzovat prostřednictvím {decodeFunction}",
- smtp: "E-mail (SMTP)",
- secureOptionNone: "Žádné / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ignorovat chybu TLS",
- "From Email": "Odesílatel",
- emailCustomSubject: "Vlastní předmět",
- "To Email": "Příjemce",
- smtpCC: "Kopie",
- smtpBCC: "Skrytá kopie",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Získáte tak, že přejdete do Nastavení serveru - > Integrace - > Vytvořit Webhook",
- "Bot Display Name": "Zobrazované jméno robota",
- "Prefix Custom Message": "Předpona vlastní zprávy",
- "Hello @everyone is...": "Dobrý den, {'@'}všichni jsou…",
- teams: "Microsoft Teams",
- "Webhook URL": "URL adresa webhooku",
- wayToGetTeamsURL: "Informace o tom, jak vytvořit URL adresu webhooku naleznete {0}.",
- signal: "Signal",
- Number: "Číslo",
- Recipients: "Příjemci",
- needSignalAPI: "Musíte mít Signal klienta s REST API.",
- wayToCheckSignalURL: "Pro zobrazení instrukcí, jak službu nastavit, přejděte na následující adresu:",
- signalImportant: "Důležité V seznamu příjemců není možné současně použít skupiny a čísla!",
- gotify: "Gotify",
- "Application Token": "Token aplikace",
- "Server URL": "URL adresa serveru",
- Priority: "Priorita",
- slack: "Slack",
- "Icon Emoji": "Ikona smajlíka",
- "Channel Name": "Název kanálu",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Více informací o Webhoocích naleznete na adrese: {0}",
- aboutChannelName: "Pro vynechání Webhook kanálu zadejte jeho název do pole Název kanálu {0}. Příklad: #jiny-kanal",
- aboutKumaURL: "Pokud ponecháte pole URL adresa Uptime Kuma prázdné, použije se domovská stránka GitHub projektu.",
- emojiCheatSheet: "Tahák smajlíků: {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (podpora více než 50 oznamovacích služeb)",
- GoogleChat: "Google Chat (pouze Google Workspace)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "Klíč uživatele",
- Device: "Zařízení",
- "Message Title": "Nadpis zprávy",
- "Notification Sound": "Zvuk oznámení",
- "More info on:": "Více informací naleznete na adrese: {0}",
- pushoverDesc1: "Výchozí časový limit pro emergency prioritu (2) je 30 sekund mezi opakovanými pokusy a vyprší po 1 hodině.",
- pushoverDesc2: "Pokud chcete odesílat oznámení do různých zařízení, vyplňte pole Zařízení.",
- "SMS Type": "Typ SMS",
- octopushTypePremium: "Premium (rychlé – doporučeno pro upozornění)",
- octopushTypeLowCost: "Nízké náklady (pomalé – někdy blokované operátorem)",
- checkPrice: "Ceny {0} zjistíte na adrese:",
- apiCredentials: "API přihlašovací údaje",
- octopushLegacyHint: "Používáte starší verzi Octopush (2011-2020) nebo novou verzi?",
- "Check octopush prices": "Ceny octopush naleznete na adrese {0}.",
- octopushPhoneNumber: "Telefonní číslo (v mezinárodním formátu, např: +42012345678) ",
- octopushSMSSender: "Odesílatel SMS: 3-11 alfanumerických znaků a mezera (a-zA-Z0-9)",
- "LunaSea Device ID": "ID zařízení LunaSea",
- "Apprise URL": "Apprise URL",
- "Example:": "Příklad: {0}",
- "Read more:": "Více informací: {0}",
- "Status:": "Stav: {0}",
- "Read more": "Více informací",
- appriseInstalled: "Apprise je nainstalován.",
- appriseNotInstalled: "Apprise není nainstalován. {0}",
- "Access Token": "Přístupový token",
- "Channel access token": "Přístupový token ke kanálu",
- "Line Developers Console": "Konzole Line Developers",
- lineDevConsoleTo: "Konzole Line Developers - {0}",
- "Basic Settings": "Obecné nastavení",
- "User ID": "ID uživatele",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "Nejprve otevřete {0}, vytvořte poskytovatele a kanál (Messaging API). Poté můžete získat přístupový token ke kanálu a ID uživatele, v sekci uvedené výše.",
- "Icon URL": "URL adresa ikony",
- aboutIconURL: "Pro přepsání výchozího profilového obrázku můžete do pole \"URL adresa ikony\" zadat odkaz na obrázek. Nebude použito, pokud je nastavena ikona smajlíka.",
- aboutMattermostChannelName: "Výchozí kanál, do kterého jsou zasílány Webhook příspěvky, můžete přepsat zadáním názvu kanálu do pole \"Název kanálu\". Tato možnost musí být povolena v nastavení Mattermost Webhooku. Příklad: #jiny-kanal",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO – levné, ale pomalé a často přetížené. Omezeno pouze na polské příjemce.",
- promosmsTypeFlash: "SMS FLASH –zpráva se automaticky zobrazí na zařízení příjemce. Omezeno pouze na polské příjemce.",
- promosmsTypeFull: "SMS FULL – prémiová úroveň SMS. Můžete definovat odesílatele (vyžadována registrace jména). Spolehlivý pro výstrahy.",
- promosmsTypeSpeed: "SMS SPEED – nejvyšší priorita v systému. Velmi rychlé a spolehlivé, ale nákladné (přibližně dvojnásobek ceny SMS FULL).",
- promosmsPhoneNumber: "Telefonní číslo (polští příjemci mohou vynechat telefonní předvolbu)",
- promosmsSMSSender: "Odesílatel SMS: Předem zaregistrovaný název nebo jeden z výchozích: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "URL adresa domácího serveru (s http(s):// a volitelně portem)",
- "Internal Room Id": "ID interní místnosti",
- matrixDesc1: "ID interní místnosti naleznete v Matrix klientovi v rozšířeném nastavení místnosti. Mělo by být ve tvaru !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Důrazně doporučujeme vytvořit nového uživatele a nepoužívat váš vlastní přístupový token uživatele Matrix. Pomocí něj je možné získat přístup k vašemu účtu a všem místnostem, ke kterým jste se připojili. Místo toho vytvořte nového uživatele a pozvěte jej pouze do místnosti, do které chcete oznámení dostávat. Přístupový token můžete získat spuštěním {0}",
- Method: "Metoda",
- Body: "Tělo",
- Headers: "Hlavičky",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "Hlaviča žádosti není platný JSON: ",
- BodyInvalidFormat: "Text žádosti není platný JSON: ",
- "Monitor History": "Historie dohledu",
- clearDataOlderThan: "Historie dohledu bude uchovávána po dobu {0} dní.",
- PasswordsDoNotMatch: "Hesla se neshodují.",
- records: "záznamů",
- "One record": "Jeden záznam",
- steamApiKeyDescription: "Pro monitorování Steam Game Serveru je nutné zadat Steam Web-API klíč. Svůj API klíč získáte na následující stránce: ",
- "Current User": "Aktuálně přihlášený uživatel",
- topic: "Topic",
- topicExplanation: "MQTT topic, který chcete sledovat",
- successMessage: "Zpráva o úspěchu",
- successMessageExplanation: "MQTT zpráva považovaná za úspěšnou",
- recent: "Poslední",
- Done: "Hotovo",
- Info: "Informace",
- Security: "Bezpečnost",
- "Steam API Key": "API klíč služby Steam",
- "Shrink Database": "Zmenšit databázi",
- "Pick a RR-Type...": "Vyberte typ záznamu o prostředku…",
- "Pick Accepted Status Codes...": "Vyberte stavové kódy, které chcete akceptovat…",
- Default: "Výchozí",
- "HTTP Options": "Možnosti protokolu HTTP",
- "Create Incident": "Vytvořit incident",
- Title: "Předmět",
- Content: "Obsah",
- Style: "Styl",
- info: "informace",
- warning: "upozornění",
- danger: "riziko",
- error: "chyba",
- critical: "kritické",
- primary: "primární",
- light: "světlý",
- dark: "tmavý",
- Post: "Publikovat",
- "Please input title and content": "Zadejte prosím název a obsah",
- Created: "Vytvořen",
- "Last Updated": "Poslední aktualizace",
- Unpin: "Odepnout",
- "Switch to Light Theme": "Přepnout na světlý motiv",
- "Switch to Dark Theme": "Přepnout na tmavý motiv",
- "Show Tags": "Zobrazit štítky",
- "Hide Tags": "Skrýt štítky",
- Description: "Popis",
- "No monitors available.": "Není dostupný žádný dohled.",
- "Add one": "Přidat jeden",
- "No Monitors": "Žádný dohled",
- "Untitled Group": "Skupina bez názvu",
- Services: "Služby",
- Discard: "Zahodit",
- Cancel: "Zrušit",
- "Powered by": "Poskytuje",
- shrinkDatabaseDescription: "Pomocí této možnosti provedete příkaz VACUUM nad SQLite databází. Pokud byla databáze vytvořena po vydání verze 1.10.0, AUTO_VACUUM je již povolena a tato akce není vyžadována.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API uživatelské jméno (včetně předpony webapi_)",
- serwersmsAPIPassword: "API heslo",
- serwersmsPhoneNumber: "Telefonní číslo",
- serwersmsSenderName: "Odesílatel SMS (registrováno prostřednictvím zákaznického portálu)",
- "stackfield": "Stackfield",
- Customize: "Přizpůsobit",
- "Custom Footer": "Vlastní patička",
- "Custom CSS": "Vlastní CSS",
- smtpDkimSettings: "Nastavení DKIM",
- smtpDkimDesc: "Informace o použití naleznete v {0} Nodemailer DKIM.",
- documentation: "dokumentaci",
- smtpDkimDomain: "Název domény",
- smtpDkimKeySelector: "Selektor klíče",
- smtpDkimPrivateKey: "Privátní klíč",
- smtpDkimHashAlgo: "Hashovací algoritmus (volitelné)",
- smtpDkimheaderFieldNames: "Podepisovat tyto hlavičky (volitelné)",
- smtpDkimskipFields: "Nepodepisovat tyto hlavičky (volitelné)",
- wayToGetPagerDutyKey: "Získat jej můžete v sekci Service -> Service Directory -> (vyberte službu) -> Integrations -> Add integration. Následně vyhledejte \"Events API V2\". Více informace naleznete na adrese {0}",
- "Integration Key": "Integration Key",
- "Integration URL": "Integration URL",
- "Auto resolve or acknowledged": "Auto resolve or acknowledged",
- "do nothing": "do nothing",
- "auto acknowledged": "auto acknowledged",
- "auto resolve": "auto resolve",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "Prostředí",
- alertaApiKey: "API Key",
- alertaAlertState: "Stav upozornění",
- alertaRecoverState: "Stav obnovení",
- deleteStatusPageMsg: "Opravdu chcete odstranit tuto stavovou stránku?",
- Proxies: "Proxy",
- default: "Výchozí",
- enabled: "Zapnuto",
- setAsDefault: "Nastavit jako výchozí",
- deleteProxyMsg: "Opravdu chcete odstranit tuto proxy ze všech dohledů?",
- proxyDescription: "Pro zajištění funkčnosti musí být proxy přiřazena dohledům.",
- enableProxyDescription: "Tato proxy neovlivní žádosti dohledu do doby, než ji aktivujete. Změnou tohoto nastavení dočasně zakážete použití proxy ve všech dohledech.",
- setAsDefaultProxyDescription: "Tato proxy se použije pro všechny nové dohledy. V případě potřeby můžete její využívání zakázat v konkrétním dohledu.",
- "Certificate Chain": "Řetězec certifikátu",
- Valid: "Platný",
- Invalid: "Neplatný",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Sms template must contain parameters: ",
- "Bark Endpoint": "Bark Endpoint",
- "Bark Group": "Bark Group",
- "Bark Sound": "Bark Sound",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "Z důvodu bezpečnosti použijte secret key",
- "Device Token": "Token zařízení",
- Platform: "Platforma",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Vysoký",
- Retry: "Opakovat",
- Topic: "Topic",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "Nastavit proxy",
- "Proxy Protocol": "Protokol proxy",
- "Proxy Server": "Proxy Server",
- "Proxy server has authentication": "Proxy server vyžaduje ověření",
- User: "Uživatel",
- Installed: "Nainstalováno",
- "Not installed": "Nenainstalováno",
- Running: "Běží",
- "Not running": "Neběží",
- "Remove Token": "Odstranit token",
- Start: "Spustit",
- Stop: "Zastavit",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Přidat novou stavovou stránku",
- Slug: "Slug",
- "Accept characters:": "Přípustné znaky:",
- startOrEndWithOnly: "Počáteční a koncový znak může být pouze {0}",
- "No consecutive dashes": "Nesmí se opakovat pomlčky",
- Next: "Další",
- "The slug is already taken. Please choose another slug.": "Slug s tímto názvem již existuje. Prosím, zadejte jiný název.",
- "No Proxy": "Žádná proxy",
- Authentication: "Ověření",
- "HTTP Basic Auth": "HTTP Basic ověření",
- "New Status Page": "Nová stavová stránka",
- "Page Not Found": "Stránka nenalezena",
- "Reverse Proxy": "Reverzní proxy",
- Backup: "Záloha",
- About: "O programu",
- wayToGetCloudflaredURL: "(Stáhnout cloudflared z {0})",
- cloudflareWebsite: "Webová stránka Cloudflare",
- "Message:": "Zpráva:",
- "Don't know how to get the token? Please read the guide:": "Nevíte jak získat? Prosím, přečtěte si tuto příručku:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Stávající připojení mohlo být ztraceno, pokud jste připojeni prostřednictvím Cloudflare tunelu. Opravdu jej chcete zastavit? Pro potvrzení zadejte své současné heslo.",
- "HTTP Headers": "HTTP hlavičky",
- "Trust Proxy": "Důvěryhodná proxy",
- "Other Software": "Jiný software",
- "For example: nginx, Apache and Traefik.": "Například nginx, Apache nebo Traefik.",
- "Please read": "Prosím, přečtěte si informace na adrese",
- "Subject:": "Předmět:",
- "Valid To:": "Platnost do:",
- "Days Remaining:": "Počet zbývajících dní:",
- "Issuer:": "Vydavatel:",
- "Fingerprint:": "Otisk:",
- "No status pages": "Žádná stavová stránka",
- "Domain Name Expiry Notification": "Oznámení na blížící se konec platnosti doménového jména",
- Proxy: "Proxy",
- "Date Created": "Datum vytvoření",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP adresa",
- onebotMessageType: "Typ OneBot zprávy",
- onebotGroupMessage: "Skupinová",
- onebotPrivateMessage: "Soukromá",
- onebotUserOrGroupId: "ID skupiny/uživatele",
- onebotSafetyTips: "Z důvodu bezpečnosti je nutné zadat přístupový token",
- "PushDeer Key": "PushDeer klíč",
- "Footer Text": "Text v patičce",
- "Show Powered By": "Zobrazit \"Poskytuje\"",
- "Domain Names": "Názvy domén",
- signedInDisp: "Přihlášen jako {0}",
- signedInDispDisabled: "Ověření je vypnuté.",
- RadiusSecret: "Radius Secret",
- RadiusSecretDescription: "Sdílený tajný klíč mezi klientem a serverem",
- RadiusCalledStationId: "ID volaného zařízení",
- RadiusCalledStationIdDescription: "Identifikátor volaného zařízení",
- RadiusCallingStationId: "ID volajícího zařízení",
- RadiusCallingStationIdDescription: "Identifikátor volajícího zařízení",
- "Certificate Expiry Notification": "Oznámení na blížící se konec platnosti certifikátu",
- "API Username": "API Username",
- "API Key": "API Key",
- "Recipient Number": "Číslo příjemce",
- "From Name/Number": "Jméno/číslo odesílatele",
- "Leave blank to use a shared sender number.": "Ponechte prázdné, pokud chcete použít číslo sdíleného příjemce.",
- "Octopush API Version": "Octopush API verze",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "endpoint",
- octopushAPIKey: "\"API key\" ze sekce HTTP API credentials na nástěnce",
- octopushLogin: "\"Login\" ze sekce HTTP API credentials na nástěnce",
- promosmsLogin: "API Login Name",
- promosmsPassword: "API Password",
- "pushoversounds pushover": "Pushover (výchozí)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (dlouhý)",
- "pushoversounds climb": "Climb (dlouhý)",
- "pushoversounds persistent": "Persistent (dlouhý)",
- "pushoversounds echo": "Pushover Echo (dlouhý)",
- "pushoversounds updown": "Up Down (dlouhý)",
- "pushoversounds vibrate": "Pouze vibrace",
- "pushoversounds none": "Žádný (ticho)",
- pushyAPIKey: "Secret API Key",
- pushyToken: "Token zařízení",
- "Show update if available": "Upozornit na aktualizace, pokud jsou k dispozici",
- "Also check beta release": "Kontrolovat také dostupnost beta verzí",
- "Using a Reverse Proxy?": "Používáte reverzní proxy?",
- "Check how to config it for WebSocket": "Zjistěte, jak ji nakonfigurovat pro WebSockety",
- "Steam Game Server": "Steam Game Server",
- "Most likely causes:": "Nejčastější důvody:",
- "The resource is no longer available.": "Zdroj již není k dispozici.",
- "There might be a typing error in the address.": "Při zadávání adresy jste udělali chybu.",
- "What you can try:": "Co můžete vyzkoušet:",
- "Retype the address.": "Znovu zadat adresu.",
- "Go back to the previous page.": "Vrátit se na předchozí stránku.",
- "Coming Soon": "Připravujeme",
- wayToGetClickSendSMSToken: "API Username a API Key získáte na adrese {0} .",
- "Connection String": "Connection String",
- Query: "Dotaz",
- settingsCertificateExpiry: "Platnost TLS certifikátu",
- certificationExpiryDescription: "Aktivovat oznámení nad HTTPS dohledy, pokud platnost TLS certifikátu vyprší za:",
- "Setup Docker Host": "Nastavit Docker hostitele",
- "Connection Type": "Typ připojení",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "Opravdu chcete odstranit tohoto docker hostitele ze všech dohledů?",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker kontejner",
- "Container Name / ID": "ID / název kontejneru",
- "Docker Host": "Docker hostitel",
- "Docker Hosts": "Docker hostitelé",
- "ntfy Topic": "ntfy Topic",
- "Domain": "Doména",
- "Workstation": "Pracovní stanice",
- disableCloudflaredNoAuthMsg: "Používáte režim bez ověření, heslo není vyžadováno.",
- trustProxyDescription: "Důvěřovat 'X-Forwarded-*' hlavičkám. Pokud chcete získat správnou IP adresu klientů a vaše instance Uptime Kuma je schována za Nginx nebo Apache, měli byste tuto možnost zapnout.",
- wayToGetLineNotifyToken: "Přístupový token můžete získat na adrese {0}",
- Examples: "Příklady",
- "Home Assistant URL": "Home Assistant URL",
- "Long-Lived Access Token": "Dlouhodobý přístupový token",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Pro vytvoření dlouhodobého přístupový tokenu klikněte na název svého profilu (v levém dolním rohu) a následně v dolní části stránky klikněte na tlačítko Create Token. ",
- "Notification Service": "Oznamovací služba",
- "default: notify all devices": "výchozí: upozornit všechny zařízení",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Seznam dostupných oznamovacích služeb naleznete v Home Assistant v sekci \"Developer Tools > Services\", kde vyhledejte \"notification\" pro zjištění názvu zařízení.",
- "Automations can optionally be triggered in Home Assistant:": "Automatizaci můžete volitelně aktivovat prostřednictvím Home Assistant:",
- "Trigger type:": "Typ podmínky spuštění:",
- "Event type:": "Typ události:",
- "Event data:": "Data události:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Následně vyberte akci, například přepnutí scény z RGB světla na červenou.",
- "Frontend Version": "Verze frontendu",
- "Frontend Version do not match backend version!": "Verze frontendu neodpovídá verzi backendu!",
- "Base URL": "Primární URL adresa",
- goAlertInfo: "GoAlert je aplikace s otevřeným zdrojovým kódem pro plánování hovorů, automatické eskalace a upozornění (jako jsou SMS nebo hlasové hovory). Automaticky zapojte správnou osobu, správným způsobem a ve správný čas! {0}",
- goAlertIntegrationKeyInfo: "Obecný API integrační klíč pro danou službu ve formátu \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" se obvykle nachází ve zkopírované URL jako hodnota parametru token.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Zastaralé: V poslední době byla funkčnost aplikace značně rozšířena, nicméně součást pro zálohování nepokrývá všechny možnosti. Z tohoto důvodu není možné vygenerovat úplnou zálohu a zajistit obnovení všech dat.",
- backupRecommend: "Prosím, zálohujte si ručně celý svazek nebo datovou složku (./data/).",
- "Optional": "Volitelný",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "SMSManager API Docs ",
- "Gateway Type": "Gateway Typ",
- SMSManager: "SMSManager",
- "You can divide numbers with": "Čísla můžete dělit pomocí",
- "or": "nebo",
- recurringInterval: "Interval",
- "Recurring": "Recurring",
- strategyManual: "Aktivní/Neaktivní Ručně",
- warningTimezone: "Používá se časové pásmo serveru",
- weekdayShortMon: "Po",
- weekdayShortTue: "Út",
- weekdayShortWed: "St",
- weekdayShortThu: "Čt",
- weekdayShortFri: "Pá",
- weekdayShortSat: "So",
- weekdayShortSun: "Ne",
- dayOfWeek: "Den v týdnu",
- dayOfMonth: "Den v měsíci",
- lastDay: "Poslední den",
- lastDay1: "1. poslední den v měsíci",
- lastDay2: "2. poslední den v měsíci",
- lastDay3: "3. poslední den v měsíci",
- lastDay4: "4. poslední den v měsíci",
- "No Maintenance": "Žádna údržba",
- pauseMaintenanceMsg: "Jsi si jistý, že chceš pozastavit údržbu?",
- "maintenanceStatus-under-maintenance": "Údržba",
- "maintenanceStatus-inactive": "Neaktivní",
- "maintenanceStatus-scheduled": "Naplánováno",
- "maintenanceStatus-ended": "Ukončeno",
- "maintenanceStatus-unknown": "Neznámý",
- "Display Timezone": "Zobrazit časové pásmo",
- "Server Timezone": "Časové pásmo serveru",
- statusPageMaintenanceEndDate: "Konec",
- IconUrl: "Adresa URL ikony",
- "Enable DNS Cache": "Povolit DNS Cache",
- "Enable": "Povolit",
- "Disable": "Zakázat",
- dnsCacheDescription: "V některých prostředích IPv6 nemusí fungovat. Pokud narazíte na nějaké problémy, vypněte jej.",
-};
diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js
deleted file mode 100644
index 83cd97bae..000000000
--- a/src/languages/da-DK.js
+++ /dev/null
@@ -1,355 +0,0 @@
-export default {
- languageName: "Danish (Danmark)",
- Settings: "Indstillinger",
- Dashboard: "Betjeningspanel",
- "New Update": "Opdatering tilgængelig",
- Language: "Sprog",
- Appearance: "Udseende",
- Theme: "Tema",
- General: "Generelt",
- Version: "Version",
- "Check Update On GitHub": "Tjek efter opdateringer på Github",
- List: "Liste",
- Add: "Tilføj",
- "Add New Monitor": "Tilføj ny Overvåger",
- "Quick Stats": "Oversigt",
- Up: "Aktiv",
- Down: "Inaktiv",
- Pending: "Afventer",
- Unknown: "Ukendt",
- Pause: "Stands",
- pauseDashboardHome: "Standset",
- Name: "Navn",
- Status: "Status",
- DateTime: "Dato / Tid",
- Message: "Beskeder",
- "No important events": "Inden vigtige begivenheder",
- Resume: "Fortsæt",
- Edit: "Rediger",
- Delete: "Slet",
- Current: "Aktuelt",
- Uptime: "Oppetid",
- "Cert Exp.": "Certifikatets udløb",
- day: "Dag | Dage",
- "-day": "-Dage",
- hour: "Timer",
- "-hour": "-Timer",
- checkEverySecond: "Tjek hvert {0} sekund",
- Response: "Respons",
- Ping: "Ping",
- "Monitor Type": "Overvåger Type",
- Keyword: "Nøgleord",
- "Friendly Name": "Visningsnavn",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "Taktinterval",
- Retries: "Gentagelser",
- retriesDescription: "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.",
- Advanced: "Avanceret",
- ignoreTLSError: "Ignorere TLS/SSL web fejl",
- "Upside Down Mode": "Omvendt tilstand",
- upsideDownModeDescription: "Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.",
- "Max. Redirects": "Maks. Omdirigeringer",
- maxRedirectDescription: "Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.",
- "Accepted Status Codes": "Tilladte HTTP-Statuskoder",
- acceptedStatusCodesDescription: "Vælg de statuskoder, der stadig skal vurderes som vellykkede.",
- Save: "Gem",
- Notifications: "Underretninger",
- "Not available, please setup.": "Ikke tilgængelige, opsæt venligst.",
- "Setup Notification": "Opsæt underretninger",
- Light: "Lys",
- Dark: "Mørk",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Tema - Tidslinje",
- Normal: "Normal",
- Bottom: "Bunden",
- None: "Ingen",
- Timezone: "Tidszone",
- "Search Engine Visibility": "Søgemaskine synlighed",
- "Allow indexing": "Tillad indeksering",
- "Discourage search engines from indexing site": "Frabed søgemaskiner at indeksere webstedet",
- "Change Password": "Ændre adgangskode",
- "Current Password": "Nuværende adgangskode",
- "New Password": "Ny adgangskode",
- "Repeat New Password": "Gentag den nye adgangskode",
- passwordNotMatchMsg: "Adgangskoderne er ikke ens.",
- "Update Password": "Opdater adgangskode",
- "Disable Auth": "Deaktiver autentificering",
- "Enable Auth": "Aktiver autentificering",
- Logout: "Log ud",
- notificationDescription: "Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.",
- Leave: "Verlassen",
- "I understand, please disable": "Jeg er indforstået, deaktiver venligst",
- Confirm: "Bekræft",
- Yes: "Ja",
- No: "Nej",
- Username: "Brugernavn",
- Password: "Adgangskode",
- "Remember me": "Husk mig",
- Login: "Log ind",
- "No Monitors, please": "Ingen Overvågere",
- "add one": "tilføj en",
- "Notification Type": "Underretningstype",
- Email: "E-Mail",
- Test: "Test",
- "Certificate Info": "Certifikatoplysninger",
- keywordDescription: "Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.",
- deleteMonitorMsg: "Er du sikker på, at du vil slette overvågeren?",
- deleteNotificationMsg: "Er du sikker på, at du vil slette denne underretning for alle overvågere? ",
- resolverserverDescription: "Cloudflare er standardserveren, den kan til enhver tid ændres.",
- "Resolver Server": "Navne-server",
- rrtypeDescription: "Vælg den type RR, du vil overvåge.",
- "Last Result": "Seneste resultat",
- pauseMonitorMsg: "Er du sikker på, at du vil standse Overvågeren?",
- "Create your admin account": "Opret din administratorkonto",
- "Repeat Password": "Gentag adgangskoden",
- "Resource Record Type": "Resource Record Type",
- respTime: "Resp. Tid (ms)",
- notAvailableShort: "N/A",
- Create: "Opret",
- clearEventsMsg: "Er du sikker på vil slette alle events for denne Overvåger?",
- clearHeartbeatsMsg: "Er du sikker på vil slette alle hjerteslag for denne Overvåger?",
- confirmClearStatisticsMsg: "Vil du helt sikkert slette ALLE statistikker?",
- "Clear Data": "Ryd Data",
- Events: "Events",
- Heartbeats: "Hjerteslag",
- "Auto Get": "Auto-hent",
- enableDefaultNotificationDescription: "For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.",
- "Default enabled": "Standard aktiveret",
- "Also apply to existing monitors": "Anvend også på eksisterende overvågere",
- Export: "Eksport",
- Import: "Import",
- backupDescription: "Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.",
- backupDescription2: "PS: Historik og hændelsesdata er ikke inkluderet.",
- backupDescription3: "Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.",
- alertNoFile: "Vælg en fil der skal importeres.",
- alertWrongFileType: "Vælg venligst en JSON-fil.",
- twoFAVerifyLabel: "Indtast venligst dit token for at bekræfte, at 2FA fungerer",
- tokenValidSettingsMsg: "Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.",
- confirmEnableTwoFAMsg: "Er du sikker på at du vil aktivere 2FA?",
- confirmDisableTwoFAMsg: "Er du sikker på at du vil deaktivere 2FA?",
- "Apply on all existing monitors": "Anvend på alle eksisterende overvågere",
- "Verify Token": "Verificere Token",
- "Setup 2FA": "Opsæt 2FA",
- "Enable 2FA": "Aktiver 2FA",
- "Disable 2FA": "Deaktiver 2FA",
- "2FA Settings": "2FA Indstillinger",
- "Two Factor Authentication": "To-Faktor Autentificering",
- Active: "Aktive",
- Inactive: "Inaktive",
- Token: "Token",
- "Show URI": "Vis URI",
- "Clear all statistics": "Ryd alle Statistikker",
- retryCheckEverySecond: "Prøv igen hvert {0} sekund.",
- importHandleDescription: "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.",
- confirmImportMsg: "Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.",
- "Heartbeat Retry Interval": "Hjerteslag Gentagelsesinterval",
- "Import Backup": "Importer Backup",
- "Export Backup": "Eksporter Backup",
- "Skip existing": "Spring over eksisterende",
- Overwrite: "Overskriv",
- Options: "Valgmuligheder",
- "Keep both": "Behold begge",
- Tags: "Etiketter",
- "Add New below or Select...": "Tilføj Nyt nedenfor eller Vælg ...",
- "Tag with this name already exist.": "Et Tag med dette navn findes allerede.",
- "Tag with this value already exist.": "Et Tag med denne værdi findes allerede.",
- color: "farve",
- "value (optional)": "værdi (valgfri)",
- Gray: "Grå",
- Red: "Rød",
- Orange: "Orange",
- Green: "Grøn",
- Blue: "Blå",
- Indigo: "Indigo",
- Purple: "Lilla",
- Pink: "Pink",
- "Search...": "Søg...",
- "Avg. Ping": "Gns. Ping",
- "Avg. Response": "Gns. Respons",
- "Entry Page": "Entry Side",
- statusPageNothing: "Intet her, tilføj venligst en Gruppe eller en Overvåger.",
- "No Services": "Ingen Tjenester",
- "All Systems Operational": "Alle Systemer i Drift",
- "Partially Degraded Service": "Delvist Forringet Service",
- "Degraded Service": "Forringet Service",
- "Add Group": "Tilføj Gruppe",
- "Add a monitor": "Tilføj en Overvåger",
- "Edit Status Page": "Rediger Statusside",
- "Go to Dashboard": "Gå til Betjeningspanel",
- "Status Page": "Statusside",
- "Status Pages": "Statusside",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Understøtter 50+ Notifikationstjenester)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "Primary Base URL": "Primær Basis-URL",
- "Push URL": "Push URL",
- needPushEvery: "Du bør kalde denne webadresse hvert {0} sekund.",
- pushOptionalParams: "Valgfrie parametre: {0}",
- defaultNotificationName: "Min {notification} Advarsel ({number})",
- here: "her",
- Required: "Påkrævet",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "Du kan få et token fra {0}.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID",
- wayToGetTelegramChatID: "Du kan få dit chat-ID ved at sende en besked til bot'en og gå til denne URL for at se chat_id'et:",
- "YOUR BOT TOKEN HERE": "DIT BOT TOKEN HER",
- chatIDNotFound: "Chat-ID blev ikke fundet; send venligst en besked til denne bot først ",
- "Post URL": "Post URL",
- "Content Type": "Indholdstype",
- webhookJsonDesc: "{0} er god til alle moderne HTTP-servere som f.eks Express.js",
- webhookFormDataDesc: "{multipart} er god til PHP. JSON'en skal parses med {decodeFunction}",
- secureOptionNone: "Ingen / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ignorer TLS-fejl",
- "From Email": "Afsender Email",
- emailCustomSubject: "Brugerdefineret Emne",
- "To Email": "Modtager Email",
- smtpCC: "CC",
- smtpBCC: "BCC",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Du kan få dette ved at gå til Serverindstillinger -> Integrationer -> Opret webhook ",
- "Bot Display Name": "Bot Visningsnavn",
- "Prefix Custom Message": "Præfiks Brugerdefineret Besked",
- "Hello @everyone is...": "Hello {'@'}everyone is...",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Du kan lære, hvordan du laver en webhook URL {0}.",
- Number: "Nummer",
- Recipients: "Modtagere",
- needSignalAPI: "Du skal have en Signal-klient med REST API.",
- wayToCheckSignalURL: "Du kan tjekke denne URL for at se, hvordan du konfigurerer en:",
- signalImportant: "VIGTIGT: Du kan ikke blande grupper og numre i modtagere!",
- "Application Token": "Program Token",
- "Server URL": "Server URL",
- Priority: "Prioritet",
- "Icon Emoji": "Icon Emoji",
- "Channel Name": "Kanalnavn",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Mere info om Webhooks på: {0}",
- aboutChannelName: "Indtast kanalnavnet i {0} Kanalnavn feltet, hvis du vil omgå Webhook-kanalen. Eks: #anden-kanal",
- aboutKumaURL: "Hvis du efterlader Uptime Kuma URL-feltet tomt, vil det som standard gå til projektets GitHub-siden.",
- emojiCheatSheet: "Emoji cheat sheet: {0}",
- clicksendsms: "ClickSend SMS",
- "User Key": "Bruger-Nøgle",
- Device: "Enhed",
- "Message Title": "Besked Titel",
- "Notification Sound": "Notifikationslyd",
- "More info on:": "Mere info på: {0}",
- pushoverDesc1: "Nødprioritet (2) har som standard 30 sekunders timeout mellem genforsøg og udløber efter 1 time.",
- pushoverDesc2: "Hvis du vil sende meddelelser til forskellige enheder, skal du udfylde feltet Enhed.",
- "SMS Type": "SMS Type",
- octopushTypePremium: "Premium (Hurtig - anbefales til advarsel)",
- octopushTypeLowCost: "Lavpris (Langsom - nogle gange blokeret af operatøren)",
- checkPrice: "Tjek {0} priser:",
- apiCredentials: "API legitimationsoplysninger",
- octopushLegacyHint: "Bruger du den ældre version af Octopush (2011-2020) eller den nye version?",
- "Check octopush prices": "Tjek octopush priser {0}.",
- octopushPhoneNumber: "Telefonnummer (intl format, f.eks : +4512345678) ",
- octopushSMSSender: "SMS Afsender Navn : 3-11 alfanumeriske tegn og mellemrum (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Enhed-ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Eksempel: {0}",
- "Read more:": "Læs mere: {0}",
- "Status:": "Status: {0}",
- "Read more": "Læs mere",
- appriseInstalled: "Apprise er installeret.",
- appriseNotInstalled: "Apprise er ikke installeret. {0}",
- "Access Token": "Access Token",
- "Channel access token": "kanaladgangstoken",
- "Line Developers Console": "Line Udviklerkonsol",
- lineDevConsoleTo: "Line Udviklerkonsol - {0}",
- "Basic Settings": "Basisindstillinger",
- "User ID": "Bruger-ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.",
- "Icon URL": "Ikon URL",
- aboutIconURL: "Du kan angive et link til et billede i \"Ikon URL\" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.",
- aboutMattermostChannelName: "Du kan tilsidesætte standardkanalen, som Webhoo'en sender til ved at indtaste kanalnavnet i feltet \"Kanalnavn\". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.",
- promosmsTypeFlash: "SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.",
- promosmsTypeFull: "SMS FULL - Premium-niveau af SMS, Du kan bruge dit \"Sender Name\" (Du skal først registrere navn). Pålidelig til advarsler.",
- promosmsTypeSpeed: "SMS SPEED - Højeste prioritet i systemet. Meget hurtig og pålidelig, men dyr (ca. to gange af SMS FULL pris).",
- promosmsPhoneNumber: "Telefonnummer (polske numre behøver ikke angive områdenumre)",
- promosmsSMSSender: "SMS Sender Name : Forudregistreret navn eller en af standarderne: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "Hjemmeserver-URL (med http(s):// og eventuel port)",
- "Internal Room Id": "Intern Rum-ID",
- matrixDesc1: "Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}",
- Method: "Metode",
- Body: "Body",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "\"request headers\"-erne er ikke gyldige JSON: ",
- BodyInvalidFormat: "\"request body\"-en er ikke gyldige JSON: ",
- "Monitor History": "Overvåger Historik",
- clearDataOlderThan: "Gem overvågningshistorikdata i {0} dage.",
- PasswordsDoNotMatch: "Adgangskoderne stemmer ikke overens.",
- records: "forekomster",
- "One record": "Én forekomst",
- steamApiKeyDescription: "For at overvåge en Steam Game Server skal du bruge en Steam Web-API nøgle. Du kan registrere din API-nøgle her: ",
- "Current User": "Nuværende Bruger",
- recent: "Seneste",
- Done: "Færdig",
- Info: "Info",
- Security: "Sikkerhed",
- "Steam API Key": "Steam API-nøgle",
- "Shrink Database": "Krymp Database",
- "Pick a RR-Type...": "Vælg en RR-Type...",
- "Pick Accepted Status Codes...": "Vælg Accepterede Statuskoder...",
- Default: "Standard",
- "HTTP Options": "HTTP Valgmuligheder",
- "Create Incident": "Opret Annoncering",
- Title: "Titel",
- Content: "Indhold",
- Style: "Type",
- info: "info",
- warning: "advarsel",
- danger: "fare",
- primary: "primær",
- light: "lys",
- dark: "mørk",
- Post: "Udgiv",
- "Please input title and content": "Indtast venligst titel og indhold",
- Created: "Oprettet",
- "Last Updated": "Sidst Opdateret",
- Unpin: "Frigør",
- "Switch to Light Theme": "Skift til Lys Tema",
- "Switch to Dark Theme": "Skift til Mørkt Tema",
- "Show Tags": "Vis Etiketter",
- "Hide Tags": "Skjul Etiketter",
- Description: "Beskrivelse",
- "No monitors available.": "No monitors available.",
- "Add one": "Tilføj en",
- "No Monitors": "Ingen Overvågere",
- "Untitled Group": "Unavngivet Gruppe",
- Services: "Tjenester",
- Discard: "Kassér",
- Cancel: "Annullér",
- "Powered by": "Drevet af",
- shrinkDatabaseDescription: "Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Brugernavn (inkl. webapi_ prefix)",
- serwersmsAPIPassword: "API Adgangskode",
- serwersmsPhoneNumber: "Telefonnummer",
- serwersmsSenderName: "SMS Afsender Navn (registreret via kundeportal)",
- stackfield: "Stackfield",
-};
diff --git a/src/languages/de-CH.js b/src/languages/de-CH.js
deleted file mode 100644
index 922657d03..000000000
--- a/src/languages/de-CH.js
+++ /dev/null
@@ -1,634 +0,0 @@
-export default {
- languageName: "Deutsch (Schweiz)",
- Settings: "Einstellungen",
- Dashboard: "Dashboard",
- "New Update": "Update verfügbar",
- Language: "Sprache",
- Appearance: "Erscheinungsbild",
- Theme: "Erscheinungsbild",
- General: "Allgemein",
- Version: "Version",
- "Check Update On GitHub": "Auf GitHub nach Updates suchen",
- List: "Liste",
- Add: "Hinzufügen",
- "Add New Monitor": "Neuen Monitor hinzufügen",
- "Quick Stats": "Übersicht",
- Up: "Aktiv",
- Down: "Inaktiv",
- Pending: "Ausstehend",
- Unknown: "Unbekannt",
- Pause: "Pausieren",
- pauseDashboardHome: "Pausiert",
- Name: "Name",
- Status: "Status",
- DateTime: "Datum / Uhrzeit",
- Message: "Nachricht",
- "No important events": "Keine wichtigen Ereignisse",
- Resume: "Fortsetzen",
- Edit: "Bearbeiten",
- Delete: "Löschen",
- Current: "Aktuell",
- Uptime: "Verfügbarkeit",
- "Cert Exp.": "Zertifikatsablauf",
- day: "Tag | Tage",
- "-day": "-Tage",
- hour: "Stunde",
- "-hour": "-Stunden",
- checkEverySecond: "Überprüfe alle {0} Sekunden",
- Response: "Antwortzeit",
- Ping: "Ping",
- "Monitor Type": "Monitor-Typ",
- Keyword: "Suchwort",
- "Friendly Name": "Anzeigename",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "Prüfintervall",
- Retries: "Wiederholungen",
- retriesDescription: "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.",
- Advanced: "Erweitert",
- ignoreTLSError: "Ignoriere TLS-/SSL-Fehler von Webseiten",
- "Upside Down Mode": "Umgekehrter Modus",
- upsideDownModeDescription: "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.",
- "Max. Redirects": "Max. Weiterleitungen",
- maxRedirectDescription: "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.",
- "Accepted Status Codes": "Erlaubte HTTP-Statuscodes",
- acceptedStatusCodesDescription: "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.",
- Save: "Speichern",
- Notifications: "Benachrichtigungen",
- "Not available, please setup.": "Nicht verfügbar, bitte einrichten.",
- "Setup Notification": "Benachrichtigung einrichten",
- Light: "Hell",
- Dark: "Dunkel",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste",
- Normal: "Normal",
- Bottom: "Unten",
- None: "Keine",
- Timezone: "Zeitzone",
- "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen",
- "Allow indexing": "Indizierung zulassen",
- "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren",
- "Change Password": "Passwort ändern",
- "Current Password": "Aktuelles Passwort",
- "New Password": "Neues Passwort",
- "Repeat New Password": "Neues Passwort wiederholen",
- passwordNotMatchMsg: "Passwörter stimmen nicht überein.",
- "Update Password": "Passwort aktualisieren",
- "Disable Auth": "Authentifizierung deaktivieren",
- "Enable Auth": "Authentifizierung aktivieren",
- "disableauth.message1": "Bist du sicher das du die Authentifizierung deaktivieren möchtest?",
- "disableauth.message2": "Dies ist für Szenarien gedacht, in denen man eine externe Authentifizierung vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.",
- "Please use this option carefully!": "Bitte mit Vorsicht nutzen.",
- Logout: "Ausloggen",
- notificationDescription: "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.",
- Leave: "Verlassen",
- "I understand, please disable": "Ich verstehe, bitte deaktivieren",
- Confirm: "Bestätigen",
- Yes: "Ja",
- No: "Nein",
- Username: "Benutzername",
- Password: "Passwort",
- "Remember me": "Angemeldet bleiben",
- Login: "Einloggen",
- "No Monitors, please": "Keine Monitore, bitte",
- "add one": "hinzufügen",
- "Notification Type": "Benachrichtigungsdienst",
- Email: "E-Mail",
- Test: "Test",
- "Certificate Info": "Zertifikatsinformation",
- keywordDescription: "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Gross-/Kleinschreibung unterschieden.",
- deleteMonitorMsg: "Bist du sicher, dass du den Monitor löschen möchtest?",
- deleteNotificationMsg: "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?",
- resolverserverDescription: "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.",
- "Resolver Server": "Auflösungsserver",
- rrtypeDescription: "Wähle den RR-Typ aus, welchen du überwachen möchtest.",
- "Last Result": "Letztes Ergebnis",
- pauseMonitorMsg: "Bist du sicher, dass du den Monitor pausieren möchtest?",
- clearEventsMsg: "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?",
- clearHeartbeatsMsg: "Bist du sicher, dass du alle Statistiken für diesen Monitor löschen möchtest?",
- "Clear Data": "Lösche Daten",
- Events: "Ereignisse",
- Heartbeats: "Statistiken",
- confirmClearStatisticsMsg: "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?",
- "Create your admin account": "Erstelle dein Admin-Konto",
- "Repeat Password": "Passwort erneut eingeben",
- "Resource Record Type": "Ressourcen Record Typ",
- Export: "Export",
- Import: "Import",
- respTime: "Antw.-Zeit (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Standardmässig aktiviert",
- "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden",
- enableDefaultNotificationDescription: "Für jeden neuen Monitor wird diese Benachrichtigung standardmässig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.",
- Create: "Erstellen",
- "Auto Get": "Auto Get",
- backupDescription: "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.",
- backupDescription2: "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.",
- backupDescription3: "Sensible Daten wie Benachrichtigungs-Token sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.",
- alertNoFile: "Bitte wähle eine Datei zum Importieren aus.",
- alertWrongFileType: "Bitte wähle eine JSON-Datei aus.",
- "Clear all statistics": "Lösche alle Statistiken",
- importHandleDescription: "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.",
- "Skip existing": "Vorhandene überspringen",
- Overwrite: "Überschreiben",
- Options: "Optionen",
- confirmImportMsg: "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.",
- "Keep both": "Beide behalten",
- twoFAVerifyLabel: "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert",
- "Verify Token": "Token verifizieren",
- "Setup 2FA": "2FA einrichten",
- "Enable 2FA": "2FA aktivieren",
- "Disable 2FA": "2FA deaktivieren",
- "2FA Settings": "2FA-Einstellungen",
- confirmEnableTwoFAMsg: "Bist du sicher, dass du 2FA aktivieren möchtest?",
- confirmDisableTwoFAMsg: "Bist du sicher, dass du 2FA deaktivieren möchtest?",
- tokenValidSettingsMsg: "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.",
- "Two Factor Authentication": "Zwei-Faktor-Authentifizierung",
- Active: "Aktiv",
- Inactive: "Inaktiv",
- Token: "Token",
- "Show URI": "URI anzeigen",
- Tags: "Tags",
- "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen...",
- "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.",
- "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.",
- color: "Farbe",
- "value (optional)": "Wert (optional)",
- Gray: "Grau",
- Red: "Rot",
- Orange: "Orange",
- Green: "Grün",
- Blue: "Blau",
- Indigo: "Indigo",
- Purple: "Lila",
- Pink: "Pink",
- "Search...": "Suchen...",
- "Heartbeat Retry Interval": "Überprüfungsintervall",
- "Resend Notification if Down X times consequently": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander",
- retryCheckEverySecond: "Alle {0} Sekunden neu versuchen",
- resendEveryXTimes: "Erneut versenden alle {0} mal",
- resendDisabled: "Erneut versenden deaktiviert",
- "Import Backup": "Backup importieren",
- "Export Backup": "Backup exportieren",
- "Avg. Ping": "Ping ø",
- "Avg. Response": "Antwortzeit ø",
- "Entry Page": "Einstiegsseite",
- statusPageNothing: "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.",
- "No Services": "Keine Dienste",
- "All Systems Operational": "Alle Systeme betriebsbereit",
- "Partially Degraded Service": "Teilweise beeinträchtigter Dienst",
- "Degraded Service": "Eingeschränkter Dienst",
- "Add Group": "Gruppe hinzufügen",
- "Add a monitor": "Monitor hinzufügen",
- "Edit Status Page": "Bearbeite Status-Seite",
- "Go to Dashboard": "Gehe zum Dashboard",
- "Status Page": "Status-Seite",
- "Status Pages": "Status-Seiten",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "E-Mail (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)",
- GoogleChat: "Google Chat (nur Google Workspace)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "Primary Base URL": "Primär URL",
- "Push URL": "Push URL",
- needPushEvery: "Du solltest diese URL alle {0} Sekunden aufrufen",
- pushOptionalParams: "Optionale Parameter: {0}",
- defaultNotificationName: "Mein {notification} Alarm ({number})",
- here: "hier",
- Required: "Erforderlich",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "Hier kannst du einen Token erhalten {0}.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's",
- wayToGetTelegramChatID: "Du kannst die Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id: zu sehen.",
- "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN",
- chatIDNotFound: "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot",
- "Post URL": "Post URL",
- "Content Type": "Content Type",
- webhookJsonDesc: "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet",
- webhookFormDataDesc: "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden",
- secureOptionNone: "Keine / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "TLS-Fehler ignorieren",
- "From Email": "Absender E-Mail",
- emailCustomSubject: "Benutzerdefinierter Betreff",
- "To Email": "Empfänger E-Mail",
- smtpCC: "CC",
- smtpBCC: "BCC",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> Neuer Webhook",
- "Bot Display Name": "Bot-Anzeigename",
- "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix",
- "Hello @everyone is...": "Hallo {'@'}everyone ist...",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.",
- Number: "Nummer",
- Recipients: "Empfänger",
- needSignalAPI: "Es wird ein Signal Client mit REST-API benötigt.",
- wayToCheckSignalURL: "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:",
- signalImportant: "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!",
- "Application Token": "Anwendungstoken",
- "Server URL": "Server URL",
- Priority: "Priorität",
- "Icon Emoji": "Icon Emoji",
- "Channel Name": "Kanalname",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Weitere Informationen zu Webhooks auf: {0}",
- aboutChannelName: "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel",
- aboutKumaURL: "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird standardmässig die GitHub Projekt Seite verwendet.",
- emojiCheatSheet: "Emoji Cheat Sheet: {0}",
- "User Key": "Benutzerschlüssel",
- Device: "Gerät",
- "Message Title": "Nachrichtentitel",
- "Notification Sound": "Benachrichtigungston",
- "More info on:": "Mehr Infos auf: {0}",
- pushoverDesc1: "Notfallpriorität (2) hat standardmässig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.",
- pushoverDesc2: "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.",
- "SMS Type": "SMS Typ",
- octopushTypePremium: "Premium (Schnell - zur Benachrichtigung empfohlen)",
- octopushTypeLowCost: "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)",
- checkPrice: "Prüfe {0} Preise:",
- octopushLegacyHint: "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?",
- "Check octopush prices": "Vergleiche die Oktopush Preise {0}.",
- octopushPhoneNumber: "Telefonnummer (Internationales Format, z.B : +49612345678) ",
- octopushSMSSender: "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Geräte ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Beispiel: {0}",
- "Read more:": "Weiterlesen: {0}",
- "Status:": "Status: {0}",
- "Read more": "Weiterlesen",
- appriseInstalled: "Apprise ist installiert.",
- appriseNotInstalled: "Apprise ist nicht installiert. {0}",
- "Access Token": "Access Token",
- "Channel access token": "Channel access token",
- "Line Developers Console": "Line Developers Console",
- lineDevConsoleTo: "Line Developers Console - {0}",
- "Basic Settings": "Basic Settings",
- "User ID": "User ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.",
- "Icon URL": "Icon URL",
- aboutIconURL: "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.",
- aboutMattermostChannelName: "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.",
- promosmsTypeFlash: "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.",
- promosmsTypeFull: "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.",
- promosmsTypeSpeed: "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).",
- promosmsPhoneNumber: "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)",
- promosmsSMSSender: "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu Webhook URL",
- matrixHomeserverURL: "Heimserver URL (mit http(s):// und optionalen Ports)",
- "Internal Room Id": "Interne Raum-ID",
- matrixDesc1: "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}",
- Method: "Method",
- Body: "Body",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "Der Header ist kein gültiges JSON: ",
- BodyInvalidFormat: "Der Body ist kein gültiges JSON: ",
- "Monitor History": "Monitor Verlauf",
- clearDataOlderThan: "Bewahre die Aufzeichnungsdaten für {0} Tage auf.",
- PasswordsDoNotMatch: "Passwörter stimmen nicht überein.",
- records: "Einträge",
- "One record": "Ein Eintrag",
- steamApiKeyDescription: "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ",
- "Current User": "Aktueller Benutzer",
- recent: "Letzte",
- Done: "Fertig",
- Info: "Info",
- Security: "Sicherheit",
- "Steam API Key": "Steam API Key",
- "Shrink Database": "Datenbank verkleinern",
- "Pick a RR-Type...": "Wähle ein RR-Typ aus...",
- "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus...",
- Default: "Standard",
- "HTTP Options": "HTTP Optionen",
- "Create Incident": "Vorfall erstellen",
- Title: "Titel",
- Content: "Inhalt",
- Style: "Stil",
- info: "info",
- warning: "warnung",
- danger: "gefahr",
- primary: "primär",
- light: "hell",
- dark: "dunkel",
- Post: "Eintrag",
- "Please input title and content": "Bitte Titel und Inhalt eingeben",
- Created: "Erstellt",
- "Last Updated": "Zuletzt aktualisiert",
- Unpin: "Loslösen",
- "Switch to Light Theme": "Zu hellem Thema wechseln",
- "Switch to Dark Theme": "Zum dunklen Thema wechseln",
- "Show Tags": "Tags anzeigen",
- "Hide Tags": "Tags ausblenden",
- Description: "Beschreibung",
- "No monitors available.": "Keine Monitore verfügbar.",
- "Add one": "Hinzufügen",
- "No Monitors": "Keine Monitore",
- "Untitled Group": "Gruppe ohne Titel",
- Services: "Dienste",
- Discard: "Verwerfen",
- Cancel: "Abbrechen",
- "Powered by": "Powered by",
- shrinkDatabaseDescription: "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Benutzername (inkl. webapi_ prefix)",
- serwersmsAPIPassword: "API Passwort",
- serwersmsPhoneNumber: "Telefonnummer",
- serwersmsSenderName: "Name des SMS-Absenders (über Kundenportal registriert)",
- stackfield: "Stackfield",
- clicksendsms: "ClickSend SMS",
- apiCredentials: "API Zugangsdaten",
- smtpDkimSettings: "DKIM Einstellungen",
- smtpDkimDesc: "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.",
- documentation: "Dokumentation",
- smtpDkimDomain: "Domain Name",
- smtpDkimKeySelector: "Schlüssel Auswahl",
- smtpDkimPrivateKey: "Privater Schlüssel",
- smtpDkimHashAlgo: "Hash-Algorithmus (Optional)",
- smtpDkimheaderFieldNames: "Zu validierende Header-Schlüssel (optional)",
- smtpDkimskipFields: "Zu ignorierende Header Schlüssel (optional)",
- PushByTechulus: "Push by Techulus",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpunkt",
- alertaEnvironment: "Umgebung",
- alertaApiKey: "API Schlüssel",
- alertaAlertState: "Alarmstatus",
- alertaRecoverState: "Wiederherstellungsstatus",
- deleteStatusPageMsg: "Bist du sicher, dass du diese Status-Seite löschen willst?",
- Proxies: "Proxies",
- default: "Standard",
- enabled: "Aktiviert",
- setAsDefault: "Als Standard setzen",
- deleteProxyMsg: "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?",
- proxyDescription: "Proxies müssen einem Monitor zugewiesen werden, um zu funktionieren.",
- enableProxyDescription: "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.",
- setAsDefaultProxyDescription: "Dieser Proxy wird standardmässig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.",
- "Certificate Chain": "Zertifikatskette",
- Valid: "Gültig",
- Invalid: "Ungültig",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "Telefonnummern",
- TemplateCode: "Vorlagencode",
- SignName: "Signaturname",
- "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ",
- "Bark Endpoint": "Bark Endpunkt",
- WebHookUrl: "Webhook URL",
- SecretKey: "Geheimer Schlüssel",
- "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden",
- "Device Token": "Gerätetoken",
- Platform: "Platform",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Hoch",
- Retry: "Wiederholungen",
- Topic: "Thema",
- "WeCom Bot Key": "WeCom Bot Schlüssel",
- "Setup Proxy": "Proxy einrichten",
- "Proxy Protocol": "Proxy Protokoll",
- "Proxy Server": "Proxy-Server",
- "Proxy server has authentication": "Proxy-Server hat Authentifizierung",
- User: "Benutzer",
- Installed: "Installiert",
- "Not installed": "Nicht installiert",
- Running: "Läuft",
- "Not running": "Gestoppt",
- "Remove Token": "Token entfernen",
- Start: "Start",
- Stop: "Stop",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Neue Status-Seite hinzufügen",
- Slug: "Slug",
- "Accept characters:": "Akzeptierte Zeichen:",
- startOrEndWithOnly: "Nur mit {0} anfangen und enden",
- "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche",
- Next: "Weiter",
- "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.",
- "No Proxy": "Kein Proxy",
- Authentication: "Authentifizierung",
- "HTTP Basic Auth": "HTTP Basisauthentifizierung",
- "New Status Page": "Neue Status-Seite",
- "Page Not Found": "Seite nicht gefunden",
- "Reverse Proxy": "Reverse Proxy",
- Backup: "Sicherung",
- About: "Über",
- wayToGetCloudflaredURL: "(Lade Cloudflare von {0} herunter)",
- cloudflareWebsite: "Cloudflare Website",
- "Message:": "Nachricht:",
- "Don't know how to get the token? Please read the guide:": "Du weisst nicht, wie man den Token bekommt? Lies die Anleitung dazu:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.",
- "Other Software": "Andere Software",
- "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.",
- "Please read": "Bitte lesen",
- "Subject:": "Betreff:",
- "Valid To:": "Gültig bis:",
- "Days Remaining:": "Tage verbleibend:",
- "Issuer:": "Aussteller:",
- "Fingerprint:": "Fingerabdruck:",
- "No status pages": "Keine Status-Seiten",
- "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens",
- Customize: "Anpassen",
- "Custom Footer": "Eigener Footer",
- "Custom CSS": "Eigenes CSS",
- "Footer Text": "Fusszeile",
- "Show Powered By": "Zeige 'Powered By'",
- "Date Created": "Erstellt am",
- "Domain Names": "Domainnamen",
- signedInDisp: "Angemeldet als {0}",
- signedInDispDisabled: "Authentifizierung deaktiviert.",
- dnsPortDescription: "DNS server port. Standard ist 53. Der Port kann jederzeit geändert werden.",
- topic: "Thema",
- topicExplanation: "MQTT Thema für den monitor",
- successMessage: "Erfolgsnachricht",
- successMessageExplanation: "MQTT Nachricht, die als Erfolg angesehen wird",
- error: "Fehler",
- critical: "kritisch",
- wayToGetPagerDutyKey: "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}",
- "Integration Key": "Schlüssel der Integration",
- "Integration URL": "URL der Integration",
- "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen",
- "do nothing": "nichts tun",
- "auto acknowledged": "automatisch bestätigen",
- "auto resolve": "automatisch lösen",
- "Bark Group": "Bark Gruppe",
- "Bark Sound": "Bark Klang",
- "HTTP Headers": "HTTP Kopfzeilen",
- "Trust Proxy": "Vertrauenswürdiger Proxy",
- Proxy: "Proxy",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP Adresse",
- onebotMessageType: "OneBot Nachrichtentyp",
- onebotGroupMessage: "Gruppe",
- onebotPrivateMessage: "Privat",
- onebotUserOrGroupId: "Gruppe/Nutzer ID",
- onebotSafetyTips: "Zur Sicherheit ein access token setzen",
- "PushDeer Key": "PushDeer Schlüssel",
- RadiusSecret: "Radius Geheimnis",
- RadiusSecretDescription: "Geteiltes Geheimnis zwischen Client und Server",
- RadiusCalledStationId: "ID der angesprochenen Station",
- RadiusCalledStationIdDescription: "Identifikation des angesprochenen Geräts",
- RadiusCallingStationId: "ID der ansprechenden Station",
- RadiusCallingStationIdDescription: "Identifikation des ansprechenden Geräts",
- "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat",
- "API Username": "API Nutzername",
- "API Key": "API Schlüssel",
- "Recipient Number": "Empfängernummer",
- "From Name/Number": "Von Name/Nummer",
- "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.",
- "Octopush API Version": "Octopush API Version",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "Endpunkt",
- octopushAPIKey: "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel",
- octopushLogin: "\"Login\" der HTTP API Zugangsdaten im control panel",
- promosmsLogin: "API Login Name",
- promosmsPassword: "API Password",
- "pushoversounds pushover": "Pushover (Standard)",
- "pushoversounds bike": "Fahrrad",
- "pushoversounds bugle": "Signalhorn",
- "pushoversounds cashregister": "Kasse",
- "pushoversounds classical": "Klassisch",
- "pushoversounds cosmic": "Kosmisch",
- "pushoversounds falling": "Abfallend",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Eingang",
- "pushoversounds intermission": "Pause",
- "pushoversounds magic": "Magisch",
- "pushoversounds mechanical": "Mechanisch",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Sirene",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Schlepper Horn",
- "pushoversounds alien": "Ausserirdisch (lang)",
- "pushoversounds climb": "Ansteigende (lang)",
- "pushoversounds persistent": "Hartnäckig (lang)",
- "pushoversounds echo": "Pushover Echo (lang)",
- "pushoversounds updown": "Auf und Ab (lang)",
- "pushoversounds vibrate": "Nur vibrieren",
- "pushoversounds none": "Nichts (Stille)",
- pushyAPIKey: "Geheimer API Schlüssel",
- pushyToken: "Gerätetoken",
- "Show update if available": "Verfügbare Updates anzeigen",
- "Also check beta release": "Auch nach beta Versionen schauen",
- "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?",
- "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird",
- "Steam Game Server": "Steam Game Server",
- "Most likely causes:": "Wahrscheinliche Ursachen:",
- "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.",
- "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.",
- "What you can try:": "Was du versuchen kannst:",
- "Retype the address.": "Schreibe die Adresse erneut.",
- "Go back to the previous page.": "Gehe zur vorigen Seite.",
- "Coming Soon": "Kommt bald",
- wayToGetClickSendSMSToken: "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.",
- "Connection String": "Verbindungstext",
- Query: "Abfrage",
- settingsCertificateExpiry: "TLS Zertifikatsablauf",
- certificationExpiryDescription: "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:",
- "Setup Docker Host": "Docker Host einrichten",
- "Connection Type": "Verbindungstyp",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "Bist du sicher diesen docker host für alle Monitore zu löschen?",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker Container",
- "Container Name / ID": "Container Name / ID",
- "Docker Host": "Docker Host",
- "Docker Hosts": "Docker Hosts",
- "ntfy Topic": "ntfy Thema",
- Domain: "Domain",
- Workstation: "Workstation",
- disableCloudflaredNoAuthMsg: "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.",
- trustProxyDescription: "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige client IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx or Apache läuft, wollte dies aktiviert werden.",
- wayToGetLineNotifyToken: "Du kannst hier ein Token erhalten: {0}",
- Examples: "Beispiele",
- "Home Assistant URL": "Home Assistant URL",
- "Long-Lived Access Token": "Lange gültiges Access Token",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ",
- "Notification Service": "Benachrichtigungsdienst",
- "default: notify all devices": "standard: Alle Geräte benachrichtigen",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.",
- "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:",
- "Trigger type:": "Auslöser:",
- "Event type:": "Ereignistyp:",
- "Event data:": "Ereignis daten:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.",
- "Frontend Version": "Frontend Version",
- "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!",
- Maintenance: "Wartung",
- statusMaintenance: "Wartung",
- "Schedule maintenance": "Geplante Wartung",
- "Affected Monitors": "Betroffene Monitore",
- "Pick Affected Monitors...": "Wähle betroffene Monitore...",
- "Start of maintenance": "Beginn der Wartung",
- "All Status Pages": "Alle Status Seiten",
- "Select status pages...": "Wähle Status Seiten...",
- recurringIntervalMessage: "einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt",
- affectedMonitorsDescription: "Wähle alle Monitore die von der Wartung betroffen sind",
- affectedStatusPages: "Zeige diese Nachricht auf ausgewählten Status Seiten",
- atLeastOneMonitor: "Wähle mindestens einen Monitor",
- deleteMaintenanceMsg: "Möchtest du diese Wartung löschen?",
- "Base URL": "Basis URL",
- goAlertInfo: "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Beauftragen Sie automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt. {0}",
- goAlertIntegrationKeyInfo: "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Veraltet: Eine menge Neuerungen sind eingeflossen und diese Funktion wurde etwas vernachlässigt worden. Es kann kein vollständiges Backup erstellt oder eingespielt werden.",
- backupRecommend: "Bitte Backup das Volume oder den Ordner (./ data /) selbst.",
- Optional: "Optional",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "SMSManager API Dokumente",
- "Gateway Type": "Gateway Type",
- SMSManager: "SMSManager",
- "You can divide numbers with": "Du kannst Zahlen teilen mit",
- or: "oder",
- recurringInterval: "Intervall",
- Recurring: "Wiederkehrend",
- strategyManual: "Active/Inactive Manually",
- warningTimezone: "Es wird die Zeitzone des Servers genutzt",
- weekdayShortMon: "Mo",
- weekdayShortTue: "Di",
- weekdayShortWed: "Mi",
- weekdayShortThu: "Do",
- weekdayShortFri: "Fr",
- weekdayShortSat: "Sa",
- weekdayShortSun: "So",
- dayOfWeek: "Tag der Woche",
- dayOfMonth: "Tag im Monat",
- lastDay: "Letzter Tag",
- lastDay1: "Letzter Tag im Monat",
- lastDay2: "Vorletzer Tag im Monat",
- lastDay3: "3. letzter Tag im Monat",
- lastDay4: "4. letzter Tag im Monat",
- "No Maintenance": "Keine Wartung",
- pauseMaintenanceMsg: "Möchtest du wirklich pausieren?",
- "maintenanceStatus-under-maintenance": "Unter Wartung",
- "maintenanceStatus-inactive": "Inaktiv",
- "maintenanceStatus-scheduled": "Geplant",
- "maintenanceStatus-ended": "Ende",
- "maintenanceStatus-unknown": "Unbekannt",
- "Display Timezone": "Zeitzone anzeigen",
- "Server Timezone": "Server Zeitzone",
- statusPageMaintenanceEndDate: "Ende",
-};
diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js
deleted file mode 100644
index 6d4bf05f9..000000000
--- a/src/languages/de-DE.js
+++ /dev/null
@@ -1,641 +0,0 @@
-export default {
- languageName: "Deutsch (Deutschland)",
- Settings: "Einstellungen",
- Dashboard: "Dashboard",
- "New Update": "Update verfügbar",
- Language: "Sprache",
- Appearance: "Erscheinungsbild",
- Theme: "Erscheinungsbild",
- General: "Allgemein",
- Version: "Version",
- "Check Update On GitHub": "Auf GitHub nach Updates suchen",
- List: "Liste",
- Add: "Hinzufügen",
- "Add New Monitor": "Neuen Monitor hinzufügen",
- "Quick Stats": "Übersicht",
- Up: "Aktiv",
- Down: "Inaktiv",
- Pending: "Ausstehend",
- Unknown: "Unbekannt",
- Pause: "Pausieren",
- pauseDashboardHome: "Pausiert",
- Name: "Name",
- Status: "Status",
- DateTime: "Datum / Uhrzeit",
- Message: "Nachricht",
- "No important events": "Keine wichtigen Ereignisse",
- Resume: "Fortsetzen",
- Edit: "Bearbeiten",
- Delete: "Löschen",
- Current: "Aktuell",
- Uptime: "Verfügbarkeit",
- "Cert Exp.": "Zertifikatsablauf",
- day: "Tag | Tage",
- "-day": "-Tage",
- hour: "Stunde",
- "-hour": "-Stunden",
- checkEverySecond: "Überprüfe alle {0} Sekunden",
- Response: "Antwortzeit",
- Ping: "Ping",
- "Monitor Type": "Monitor-Typ",
- Keyword: "Suchwort",
- "Friendly Name": "Anzeigename",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "Prüfintervall",
- Retries: "Wiederholungen",
- retriesDescription: "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.",
- Advanced: "Erweitert",
- ignoreTLSError: "Ignoriere TLS-/SSL-Fehler von Webseiten",
- "Upside Down Mode": "Umgekehrter Modus",
- upsideDownModeDescription: "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.",
- "Max. Redirects": "Max. Weiterleitungen",
- maxRedirectDescription: "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.",
- "Accepted Status Codes": "Erlaubte HTTP-Statuscodes",
- acceptedStatusCodesDescription: "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.",
- Save: "Speichern",
- Notifications: "Benachrichtigungen",
- "Not available, please setup.": "Nicht verfügbar, bitte einrichten.",
- "Setup Notification": "Benachrichtigung einrichten",
- Light: "Hell",
- Dark: "Dunkel",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste",
- Normal: "Normal",
- Bottom: "Unten",
- None: "Keine",
- Timezone: "Zeitzone",
- "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen",
- "Allow indexing": "Indizierung zulassen",
- "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren",
- "Change Password": "Passwort ändern",
- "Current Password": "Aktuelles Passwort",
- "New Password": "Neues Passwort",
- "Repeat New Password": "Neues Passwort wiederholen",
- passwordNotMatchMsg: "Passwörter stimmen nicht überein.",
- "Update Password": "Passwort aktualisieren",
- "Disable Auth": "Authentifizierung deaktivieren",
- "Enable Auth": "Authentifizierung aktivieren",
- "disableauth.message1": "Bist du sicher das du die Authentifizierung deaktivieren möchtest?",
- "disableauth.message2": "Dies ist für Szenarien gedacht, in denen man eine externe Authentifizierung vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.",
- "Please use this option carefully!": "Bitte mit Vorsicht nutzen.",
- Logout: "Ausloggen",
- notificationDescription: "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.",
- Leave: "Verlassen",
- "I understand, please disable": "Ich verstehe, bitte deaktivieren",
- Confirm: "Bestätigen",
- Yes: "Ja",
- No: "Nein",
- Username: "Benutzername",
- Password: "Passwort",
- "Remember me": "Angemeldet bleiben",
- Login: "Einloggen",
- "No Monitors, please": "Keine Monitore, bitte",
- "add one": "hinzufügen",
- "Notification Type": "Benachrichtigungsdienst",
- Email: "E-Mail",
- Test: "Test",
- "Certificate Info": "Zertifikatsinformation",
- keywordDescription: "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Groß-/Kleinschreibung unterschieden.",
- deleteMonitorMsg: "Bist du sicher, dass du den Monitor löschen möchtest?",
- deleteNotificationMsg: "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?",
- resolverserverDescription: "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.",
- "Resolver Server": "Auflösungsserver",
- rrtypeDescription: "Wähle den RR-Typ aus, welchen du überwachen möchtest.",
- "Last Result": "Letztes Ergebnis",
- pauseMonitorMsg: "Bist du sicher, dass du den Monitor pausieren möchtest?",
- clearEventsMsg: "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?",
- clearHeartbeatsMsg: "Bist du sicher, dass du alle Statistiken für diesen Monitor löschen möchtest?",
- "Clear Data": "Lösche Daten",
- Events: "Ereignisse",
- Heartbeats: "Statistiken",
- confirmClearStatisticsMsg: "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?",
- "Create your admin account": "Erstelle dein Admin-Konto",
- "Repeat Password": "Passwort erneut eingeben",
- "Resource Record Type": "Ressourcen Record Typ",
- Export: "Export",
- Import: "Import",
- respTime: "Antw.-Zeit (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Standardmäßig aktiviert",
- "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden",
- enableDefaultNotificationDescription: "Für jeden neuen Monitor wird diese Benachrichtigung standardmäßig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.",
- Create: "Erstellen",
- "Auto Get": "Auto Get",
- backupDescription: "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.",
- backupDescription2: "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.",
- backupDescription3: "Sensible Daten wie Benachrichtigungstoken sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.",
- alertNoFile: "Bitte wähle eine Datei zum Importieren aus.",
- alertWrongFileType: "Bitte wähle eine JSON-Datei aus.",
- "Clear all statistics": "Lösche alle Statistiken",
- importHandleDescription: "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.",
- "Skip existing": "Vorhandene überspringen",
- Overwrite: "Überschreiben",
- Options: "Optionen",
- confirmImportMsg: "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.",
- "Keep both": "Beide behalten",
- twoFAVerifyLabel: "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert",
- "Verify Token": "Token verifizieren",
- "Setup 2FA": "2FA einrichten",
- "Enable 2FA": "2FA aktivieren",
- "Disable 2FA": "2FA deaktivieren",
- "2FA Settings": "2FA-Einstellungen",
- confirmEnableTwoFAMsg: "Bist du sicher, dass du 2FA aktivieren möchtest?",
- confirmDisableTwoFAMsg: "Bist du sicher, dass du 2FA deaktivieren möchtest?",
- tokenValidSettingsMsg: "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.",
- "Two Factor Authentication": "Zwei-Faktor-Authentifizierung",
- Active: "Aktiv",
- Inactive: "Inaktiv",
- Token: "Token",
- "Show URI": "URI anzeigen",
- Tags: "Tags",
- "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen...",
- "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.",
- "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.",
- color: "Farbe",
- "value (optional)": "Wert (optional)",
- Gray: "Grau",
- Red: "Rot",
- Orange: "Orange",
- Green: "Grün",
- Blue: "Blau",
- Indigo: "Indigo",
- Purple: "Lila",
- Pink: "Pink",
- "Search...": "Suchen...",
- "Heartbeat Retry Interval": "Überprüfungsintervall",
- "Resend Notification if Down X times consequently": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander",
- retryCheckEverySecond: "Alle {0} Sekunden neu versuchen",
- resendEveryXTimes: "Erneut versenden alle {0} mal",
- resendDisabled: "Erneut versenden deaktiviert",
- "Import Backup": "Backup importieren",
- "Export Backup": "Backup exportieren",
- "Avg. Ping": "Durchschn. Ping",
- "Avg. Response": "Durchschn. Antwort",
- "Entry Page": "Einstiegsseite",
- statusPageNothing: "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.",
- "No Services": "Keine Dienste",
- "All Systems Operational": "Alle Systeme betriebsbereit",
- "Partially Degraded Service": "Teilweise beeinträchtigter Dienst",
- "Degraded Service": "Eingeschränkter Dienst",
- "Add Group": "Gruppe hinzufügen",
- "Add a monitor": "Monitor hinzufügen",
- "Edit Status Page": "Statusseite bearbeiten",
- "Go to Dashboard": "Gehe zum Dashboard",
- "Status Page": "Status-Seite",
- "Status Pages": "Status-Seiten",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "E-Mail (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)",
- GoogleChat: "Google Chat (nur Google Workspace)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "Primary Base URL": "Primäre Basis-URL",
- "Push URL": "Push URL",
- needPushEvery: "Du solltest diese URL alle {0} Sekunden aufrufen",
- pushOptionalParams: "Optionale Parameter: {0}",
- defaultNotificationName: "Mein {notification} Alarm ({number})",
- here: "hier",
- Required: "Erforderlich",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "Hier kannst du einen Token erhalten {0}.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's",
- wayToGetTelegramChatID: "Du kannst die Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id: zu sehen.",
- "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN",
- chatIDNotFound: "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot",
- "Post URL": "Post URL",
- "Content Type": "Content Type",
- webhookJsonDesc: "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet",
- webhookFormDataDesc: "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden",
- secureOptionNone: "Keine / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "TLS-Fehler ignorieren",
- "From Email": "Absender E-Mail",
- emailCustomSubject: "Benutzerdefinierter Betreff",
- "To Email": "Empfänger E-Mail",
- smtpCC: "CC",
- smtpBCC: "BCC",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> Neuer Webhook",
- "Bot Display Name": "Bot-Anzeigename",
- "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix",
- "Hello @everyone is...": "Hallo {'@'}everyone ist...",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.",
- Number: "Nummer",
- Recipients: "Empfänger",
- needSignalAPI: "Es wird ein Signal Client mit REST-API benötigt.",
- wayToCheckSignalURL: "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:",
- signalImportant: "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!",
- "Application Token": "Anwendungs Token",
- "Server URL": "Server URL",
- Priority: "Priorität",
- "Icon Emoji": "Icon Emoji",
- "Channel Name": "Kanalname",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Weitere Informationen zu Webhooks auf: {0}",
- aboutChannelName: "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel",
- aboutKumaURL: "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird standardmäßig die GitHub Projekt Seite verwendet.",
- emojiCheatSheet: "Emoji Cheat Sheet: {0}",
- "User Key": "Benutzerschlüssel",
- Device: "Gerät",
- "Message Title": "Nachrichtentitel",
- "Notification Sound": "Benachrichtigungston",
- "More info on:": "Mehr Infos auf: {0}",
- pushoverDesc1: "Notfallpriorität (2) hat standardmäßig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.",
- pushoverDesc2: "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.",
- "SMS Type": "SMS Typ",
- octopushTypePremium: "Premium (Schnell - zur Benachrichtigung empfohlen)",
- octopushTypeLowCost: "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)",
- checkPrice: "Prüfe {0} Preise:",
- octopushLegacyHint: "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?",
- "Check octopush prices": "Vergleiche die Oktopush Preise {0}.",
- octopushPhoneNumber: "Telefonnummer (Internationales Format, z.B : +49612345678) ",
- octopushSMSSender: "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Geräte ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Beispiel: {0}",
- "Read more:": "Weiterlesen: {0}",
- "Status:": "Status: {0}",
- "Read more": "Weiterlesen",
- appriseInstalled: "Apprise ist installiert.",
- appriseNotInstalled: "Apprise ist nicht installiert. {0}",
- "Access Token": "Access Token",
- "Channel access token": "Channel access token",
- "Line Developers Console": "Line Developers Console",
- lineDevConsoleTo: "Line Developers Console - {0}",
- "Basic Settings": "Basic Settings",
- "User ID": "User ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.",
- "Icon URL": "Icon URL",
- aboutIconURL: "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.",
- aboutMattermostChannelName: "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.",
- promosmsTypeFlash: "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.",
- promosmsTypeFull: "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.",
- promosmsTypeSpeed: "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).",
- promosmsPhoneNumber: "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)",
- promosmsSMSSender: "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu Webhook URL",
- matrixHomeserverURL: "Heimserver URL (mit http(s):// und optionalen Ports)",
- "Internal Room Id": "Interne Raum-ID",
- matrixDesc1: "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}",
- Method: "Method",
- Body: "Body",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "Der Header ist kein gültiges JSON: ",
- BodyInvalidFormat: "Der Body ist kein gültiges JSON: ",
- "Monitor History": "Monitor Verlauf",
- clearDataOlderThan: "Bewahre die Monitor-Verlaufsdaten für {0} Tage auf.",
- PasswordsDoNotMatch: "Passwörter stimmen nicht überein.",
- records: "Einträge",
- "One record": "Ein Eintrag",
- steamApiKeyDescription: "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ",
- "Current User": "Aktueller Benutzer",
- recent: "Letzte",
- Done: "Fertig",
- Info: "Info",
- Security: "Sicherheit",
- "Steam API Key": "Steam API Key",
- "Shrink Database": "Datenbank verkleinern",
- "Pick a RR-Type...": "Wähle ein RR-Typ aus...",
- "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus...",
- Default: "Standard",
- "HTTP Options": "HTTP Optionen",
- "Create Incident": "Vorfall erstellen",
- Title: "Titel",
- Content: "Inhalt",
- Style: "Stil",
- info: "info",
- warning: "warnung",
- danger: "gefahr",
- primary: "primär",
- light: "hell",
- dark: "dunkel",
- Post: "Eintrag",
- "Please input title and content": "Bitte Titel und Inhalt eingeben",
- Created: "Erstellt",
- "Last Updated": "Zuletzt aktualisiert",
- Unpin: "Loslösen",
- "Switch to Light Theme": "Zu hellem Thema wechseln",
- "Switch to Dark Theme": "Zum dunklen Thema wechseln",
- "Show Tags": "Tags anzeigen",
- "Hide Tags": "Tags ausblenden",
- Description: "Beschreibung",
- "No monitors available.": "Keine Monitore verfügbar.",
- "Add one": "Hinzufügen",
- "No Monitors": "Keine Monitore",
- "Untitled Group": "Gruppe ohne Titel",
- Services: "Dienste",
- Discard: "Verwerfen",
- Cancel: "Abbrechen",
- "Powered by": "Powered by",
- shrinkDatabaseDescription: "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Benutzername (inkl. webapi_ prefix)",
- serwersmsAPIPassword: "API Passwort",
- serwersmsPhoneNumber: "Telefonnummer",
- serwersmsSenderName: "Name des SMS-Absenders (über Kundenportal registriert)",
- stackfield: "Stackfield",
- clicksendsms: "ClickSend SMS",
- apiCredentials: "API Zugangsdaten",
- smtpDkimSettings: "DKIM Einstellungen",
- smtpDkimDesc: "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.",
- documentation: "Dokumentation",
- smtpDkimDomain: "Domain Name",
- smtpDkimKeySelector: "Schlüssel Auswahl",
- smtpDkimPrivateKey: "Privater Schlüssel",
- smtpDkimHashAlgo: "Hash-Algorithmus (Optional)",
- smtpDkimheaderFieldNames: "Zu validierende Header-Schlüssel (optional)",
- smtpDkimskipFields: "Zu ignorierende Header Schlüssel (optional)",
- PushByTechulus: "Push by Techulus",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpunkt",
- alertaEnvironment: "Umgebung",
- alertaApiKey: "API Schlüssel",
- alertaAlertState: "Alarmstatus",
- alertaRecoverState: "Wiederherstellungsstatus",
- deleteStatusPageMsg: "Bist du sicher, dass du diese Status-Seite löschen willst?",
- Proxies: "Proxies",
- default: "Standard",
- enabled: "Aktiviert",
- setAsDefault: "Als Standard setzen",
- deleteProxyMsg: "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?",
- proxyDescription: "Proxies müssen einem Monitor zugewiesen werden, um zu funktionieren.",
- enableProxyDescription: "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.",
- setAsDefaultProxyDescription: "Dieser Proxy wird standardmäßig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.",
- "Certificate Chain": "Zertifikatskette",
- Valid: "Gültig",
- Invalid: "Ungültig",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "Telefonnummern",
- TemplateCode: "Vorlagencode",
- SignName: "Signaturname",
- "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ",
- "Bark Endpoint": "Bark Endpunkt",
- WebHookUrl: "Webhook URL",
- SecretKey: "Geheimer Schlüssel",
- "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden",
- "Device Token": "Gerätetoken",
- Platform: "Platform",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Hoch",
- Retry: "Wiederholungen",
- Topic: "Thema",
- "WeCom Bot Key": "WeCom Bot Schlüssel",
- "Setup Proxy": "Proxy einrichten",
- "Proxy Protocol": "Proxy Protokoll",
- "Proxy Server": "Proxy-Server",
- "Proxy server has authentication": "Proxy-Server hat Authentifizierung",
- User: "Benutzer",
- Installed: "Installiert",
- "Not installed": "Nicht installiert",
- Running: "Läuft",
- "Not running": "Gestoppt",
- "Remove Token": "Token entfernen",
- Start: "Start",
- Stop: "Stop",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Neue Status-Seite hinzufügen",
- Slug: "Slug",
- "Accept characters:": "Akzeptierte Zeichen:",
- startOrEndWithOnly: "Nur mit {0} anfangen und enden",
- "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche",
- Next: "Weiter",
- "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.",
- "No Proxy": "Kein Proxy",
- Authentication: "Authentifizierung",
- "HTTP Basic Auth": "HTTP Basisauthentifizierung",
- "New Status Page": "Neue Status-Seite",
- "Page Not Found": "Seite nicht gefunden",
- "Reverse Proxy": "Reverse Proxy",
- Backup: "Sicherung",
- About: "Über",
- wayToGetCloudflaredURL: "(Lade cloudflared von {0} herunter)",
- cloudflareWebsite: "Cloudflare Website",
- "Message:": "Nachricht:",
- "Don't know how to get the token? Please read the guide:": "Du weißt nicht, wie man den Token bekommt? Lies die Anleitung dazu:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.",
- "Other Software": "Andere Software",
- "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.",
- "Please read": "Bitte lesen",
- "Subject:": "Betreff:",
- "Valid To:": "Gültig bis:",
- "Days Remaining:": "Tage verbleibend:",
- "Issuer:": "Aussteller:",
- "Fingerprint:": "Fingerabdruck:",
- "No status pages": "Keine Status-Seiten",
- "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens",
- Customize: "Anpassen",
- "Custom Footer": "Eigener Footer",
- "Custom CSS": "Eigenes CSS",
- "Footer Text": "Fußzeile",
- "Show Powered By": "Zeige 'Powered By'",
- "Date Created": "Erstellt am",
- "Domain Names": "Domainnamen",
- signedInDisp: "Angemeldet als {0}",
- signedInDispDisabled: "Authentifizierung deaktiviert.",
- dnsPortDescription: "DNS server port. Standard ist 53. Der Port kann jederzeit geändert werden.",
- topic: "Thema",
- topicExplanation: "MQTT Thema für den monitor",
- successMessage: "Erfolgsnachricht",
- successMessageExplanation: "MQTT Nachricht, die als Erfolg angesehen wird",
- error: "Fehler",
- critical: "kritisch",
- wayToGetPagerDutyKey: "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}",
- "Integration Key": "Schlüssel der Integration",
- "Integration URL": "URL der Integration",
- "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen",
- "do nothing": "nichts tun",
- "auto acknowledged": "automatisch bestätigen",
- "auto resolve": "automatisch lösen",
- "Bark Group": "Bark Gruppe",
- "Bark Sound": "Bark Klang",
- "HTTP Headers": "HTTP Kopfzeilen",
- "Trust Proxy": "Vertrauenswürdiger Proxy",
- Proxy: "Proxy",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP Adresse",
- onebotMessageType: "OneBot Nachrichtentyp",
- onebotGroupMessage: "Gruppe",
- onebotPrivateMessage: "Privat",
- onebotUserOrGroupId: "Gruppe/Nutzer ID",
- onebotSafetyTips: "Zur Sicherheit ein access token setzen",
- "PushDeer Key": "PushDeer Schlüssel",
- RadiusSecret: "Radius Geheimnis",
- RadiusSecretDescription: "Geteiltes Geheimnis zwischen Client und Server",
- RadiusCalledStationId: "ID der angesprochenen Station",
- RadiusCalledStationIdDescription: "Identifikation des angesprochenen Geräts",
- RadiusCallingStationId: "ID der ansprechenden Station",
- RadiusCallingStationIdDescription: "Identifikation des ansprechenden Geräts",
- "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat",
- "API Username": "API Nutzername",
- "API Key": "API Schlüssel",
- "Recipient Number": "Empfängernummer",
- "From Name/Number": "Von Name/Nummer",
- "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.",
- "Octopush API Version": "Octopush API Version",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "Endpunkt",
- octopushAPIKey: "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel",
- octopushLogin: "\"Login\" der HTTP API Zugangsdaten im control panel",
- promosmsLogin: "API Login Name",
- promosmsPassword: "API Password",
- "pushoversounds pushover": "Pushover (Standard)",
- "pushoversounds bike": "Fahrrad",
- "pushoversounds bugle": "Signalhorn",
- "pushoversounds cashregister": "Kasse",
- "pushoversounds classical": "Klassisch",
- "pushoversounds cosmic": "Kosmisch",
- "pushoversounds falling": "Abfallend",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Eingang",
- "pushoversounds intermission": "Pause",
- "pushoversounds magic": "Magisch",
- "pushoversounds mechanical": "Mechanisch",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Sirene",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Schlepper Horn",
- "pushoversounds alien": "Außerirdisch (lang)",
- "pushoversounds climb": "Ansteigende (lang)",
- "pushoversounds persistent": "Hartnäckig (lang)",
- "pushoversounds echo": "Pushover Echo (lang)",
- "pushoversounds updown": "Auf und Ab (lang)",
- "pushoversounds vibrate": "Nur vibrieren",
- "pushoversounds none": "Nichts (Stille)",
- pushyAPIKey: "Geheimer API Schlüssel",
- pushyToken: "Gerätetoken",
- "Show update if available": "Verfügbare Updates anzeigen",
- "Also check beta release": "Auch nach Beta Versionen schauen",
- "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?",
- "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird",
- "Steam Game Server": "Steam Game Server",
- "Most likely causes:": "Wahrscheinliche Ursachen:",
- "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.",
- "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.",
- "What you can try:": "Was du versuchen kannst:",
- "Retype the address.": "Schreibe die Adresse erneut.",
- "Go back to the previous page.": "Gehe zur vorigen Seite.",
- "Coming Soon": "Kommt bald",
- wayToGetClickSendSMSToken: "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.",
- "Connection String": "Verbindungstext",
- Query: "Abfrage",
- settingsCertificateExpiry: "TLS Zertifikatsablauf",
- certificationExpiryDescription: "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:",
- "Setup Docker Host": "Docker Host einrichten",
- "Connection Type": "Verbindungstyp",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "Bist du sicher diesen docker host für alle Monitore zu löschen?",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker Container",
- "Container Name / ID": "Container Name / ID",
- "Docker Host": "Docker Host",
- "Docker Hosts": "Docker Hosts",
- "ntfy Topic": "ntfy Thema",
- Domain: "Domain",
- Workstation: "Workstation",
- disableCloudflaredNoAuthMsg: "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.",
- trustProxyDescription: "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige client IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx or Apache läuft, wollte dies aktiviert werden.",
- wayToGetLineNotifyToken: "Du kannst hier ein Token erhalten: {0}",
- Examples: "Beispiele",
- "Home Assistant URL": "Home Assistant URL",
- "Long-Lived Access Token": "Lange gültiges Access Token",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ",
- "Notification Service": "Benachrichtigungsdienst",
- "default: notify all devices": "standard: Alle Geräte benachrichtigen",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.",
- "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:",
- "Trigger type:": "Auslöser:",
- "Event type:": "Ereignistyp:",
- "Event data:": "Ereignis daten:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.",
- "Frontend Version": "Frontend Version",
- "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!",
- Maintenance: "Wartung",
- statusMaintenance: "Wartung",
- "Schedule maintenance": "Geplante Wartung",
- "Affected Monitors": "Betroffene Monitore",
- "Pick Affected Monitors...": "Wähle betroffene Monitore...",
- "Start of maintenance": "Beginn der Wartung",
- "All Status Pages": "Alle Status Seiten",
- "Select status pages...": "Statusseiten auswählen...",
- recurringIntervalMessage: "Einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt",
- affectedMonitorsDescription: "Wähle Monitore aus, die von der aktuellen Wartung betroffen sind",
- affectedStatusPages: "Diese Wartungsmeldung auf ausgewählten Statusseiten anzeigen",
- atLeastOneMonitor: "Wähle mindestens einen Monitor",
- deleteMaintenanceMsg: "Möchtest du diese Wartung löschen?",
- "Base URL": "Basis URL",
- goAlertInfo: "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Beauftragen Sie automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt. {0}",
- goAlertIntegrationKeyInfo: "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Veraltet: Da viele Funktionen hinzugefügt wurden und diese Sicherungsfunktion nicht mehr gepflegt wird, kann sie keine vollständige Sicherung erstellen oder wiederherstellen.",
- backupRecommend: "Bitte sichere stattdessen das Volume oder den Datenordner (./data/) direkt.",
- Optional: "Optional",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "SMSManager API Dokumente",
- "Gateway Type": "Gateway Type",
- SMSManager: "SMSManager",
- "You can divide numbers with": "Du kannst Zahlen teilen mit",
- or: "oder",
- recurringInterval: "Intervall",
- Recurring: "Wiederkehrend",
- "Single Maintenance Window": "Einzigartiges Wartungsfenster",
- "Maintenance Time Window of a Day": "Zeitfenster für die Wartung",
- "Effective Date Range": "Bereich der Wirksamkeitsdaten",
- strategyManual: "Aktiv/Inaktiv Manuell",
- warningTimezone: "Es wird die Zeitzone des Servers verwendet",
- weekdayShortMon: "Mo",
- weekdayShortTue: "Di",
- weekdayShortWed: "Mi",
- weekdayShortThu: "Do",
- weekdayShortFri: "Fr",
- weekdayShortSat: "Sa",
- weekdayShortSun: "So",
- dayOfWeek: "Tag der Woche",
- dayOfMonth: "Tag im Monat",
- lastDay: "Letzter Tag",
- lastDay1: "Letzter Tag im Monat",
- lastDay2: "Vorletzer Tag im Monat",
- lastDay3: "3. letzter Tag im Monat",
- lastDay4: "4. letzter Tag im Monat",
- "No Maintenance": "Keine Wartung",
- "Schedule Maintenance": "Wartung planen",
- pauseMaintenanceMsg: "Möchtest du wirklich pausieren?",
- "maintenanceStatus-under-maintenance": "Unter Wartung",
- "maintenanceStatus-inactive": "Inaktiv",
- "maintenanceStatus-scheduled": "Geplant",
- "maintenanceStatus-ended": "Ende",
- "maintenanceStatus-unknown": "Unbekannt",
- "Display Timezone": "Zeitzone anzeigen",
- "Server Timezone": "Server Zeitzone",
- "Date and Time": "Datum und Zeit",
- "DateTime Range": "Datums- und Zeitbereich",
- Strategy: "Strategie",
- statusPageMaintenanceEndDate: "Ende",
-};
diff --git a/src/languages/el-GR.js b/src/languages/el-GR.js
deleted file mode 100644
index 9b7c4cfb3..000000000
--- a/src/languages/el-GR.js
+++ /dev/null
@@ -1,587 +0,0 @@
-export default {
- languageName: "Ελληνικά",
- checkEverySecond: "Έλεγχος κάθε {0} δευτερόλεπτα",
- retryCheckEverySecond: "Επανάληψη κάθε {0} δευτερόλεπτα",
- resendEveryXTimes: "Επανάληψη αποστολής ειδοποίησης κάθε {0} φορές",
- resendDisabled: "Η επανάληψη αποστολής ειδοποίησης είναι απενεργοποιημένη",
- retriesDescription: "Μέγιστες επαναλήψεις προτού η υπηρεσία επισημανθεί ως κατω και σταλεί μια ειδοποίηση",
- ignoreTLSError: "Παράβλεψη σφάλματος TLS/SSL για ιστότοπους HTTPS",
- upsideDownModeDescription: "Αναποδογυρίστε την κατάσταση. Εάν η υπηρεσία είναι προσβάσιμη, είναι ΚΑΤΩ.",
- maxRedirectDescription: "Μέγιστος αριθμός redirect που θα ακολουθήσουν. Ρυθμίστε το 0 για να απενεργοποιήσετε τα redirect.",
- acceptedStatusCodesDescription: "Επιλέξτε κωδικούς κατάστασης που θεωρούνται επιτυχή.",
- passwordNotMatchMsg: "Ο κωδικός δεν ταιριάζει.",
- notificationDescription: "Οι ειδοποιήσεις πρέπει να εκχωρηθούν σε μια παρακολούθηση για να λειτουργήσουν.",
- keywordDescription: "Αναζήτηση λέξης-κλειδιού σε απλή απόκριση HTML ή JSON. Η αναζήτηση είναι διάκριση πεζών-κεφαλαίων.",
- pauseDashboardHome: "Παύση",
- deleteMonitorMsg: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την παρακολούθηση;",
- deleteNotificationMsg: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την ειδοποίηση για όλες τις παρακολούθησης?",
- dnsPortDescription: "Θύρα διακομιστή DNS. Προεπιλογή σε 53. Μπορείτε να αλλάξετε τη θύρα ανά πάσα στιγμή.",
- resolverserverDescription: "Το Cloudflare είναι ο προεπιλεγμένος διακομιστής. Μπορείτε να αλλάξετε τον διακομιστή επίλυσης ανά πάσα στιγμήhe default server. You can change the resolver server anytime.",
- rrtypeDescription: "Επιλέξτε τον τύπο RR που θέλετε να παρακολουθήσετε",
- pauseMonitorMsg: "Είστε βέβαιοι ότι θέλετε να κάνετε παύση;",
- enableDefaultNotificationDescription: "Αυτή η ειδοποίηση θα είναι ενεργοποιημένη από προεπιλογή για νέες παρακολούθησης. Μπορείτε ακόμα να απενεργοποιήσετε την ειδοποίηση ξεχωριστά για κάθε παρακολούθηση.",
- clearEventsMsg: "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλα τα συμβάντα για αυτήν την παρακολούθηση;",
- clearHeartbeatsMsg: "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλους τους καρδιακούς παλμούς για αυτήν την παρακολούθηση;",
- confirmClearStatisticsMsg: "Είστε βέβαιοι ότι θέλετε να διαγράψετε ΟΛΑ τα στατιστικά στοιχεία;?",
- importHandleDescription: "Επιλέξτε «Παράλειψη υπάρχοντος» εάν θέλετε να παραλείψετε κάθε παρακολούθηση ή ειδοποίηση με το ίδιο όνομα. Το 'Overwrite' θα διαγράψει κάθε υπάρχουσα παρακολούθηση και ειδοποίηση.",
- confirmImportMsg: "Είστε βέβαιοι ότι θέλετε να εισαγάγετε το αντίγραφο ασφαλείας; Επαληθεύστε ότι έχετε επιλέξει τη σωστή επιλογή.",
- twoFAVerifyLabel: "Εισαγάγετε το 2FA κωδικό για να επαληθεύσετε: ",
- tokenValidSettingsMsg: "Ο κωδικός 2FA είναι έγκυρο! Τώρα μπορείτε να αποθηκεύσετε τις ρυθμίσεις 2FA",
- confirmEnableTwoFAMsg: "Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε το 2FA;",
- confirmDisableTwoFAMsg: "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε το 2FA;",
- Settings: "Ρυθμίσεις",
- Dashboard: "Πίνακας",
- "New Update": "Νέα αναβάθμιση",
- Language: "Γλώσσα",
- Appearance: "Εμφάνιση",
- Theme: "Θέμα",
- General: "Γενικά",
- "Primary Base URL": "Κύρια βασική διεύθυνση URL",
- Version: "Εκδοχή",
- "Check Update On GitHub": "Ελέγξτε για Ενημέρωση στο GitHub",
- List: "Λίστα",
- Add: "Προσθήκη",
- "Add New Monitor": "Προσθήκη νέας παρακολούθησης",
- "Quick Stats": "Γρήγορα στατιστικά",
- Up: "Πάνω",
- Down: "Κάτω",
- Pending: "Εκκρεμεί",
- Unknown: "Άγνωστο",
- Pause: "Παύση",
- Name: "Ονομα",
- Status: "Κατάσταση",
- DateTime: "ΗμερομηνίαΏρα",
- Message: "Μήνυμα",
- "No important events": "Δεν υπάρχουν σημαντικά γεγονότα",
- Resume: "Συνέχιση",
- Edit: "Επεξεργασία",
- Delete: "Διαγράφη",
- Current: "Current",
- Uptime: "Χρόνος λειτουργίας",
- "Cert Exp.": "Cert Exp.",
- day: "ημέρα | ημέρες",
- "-day": "-ημέρα",
- hour: "ώρα",
- "-hour": "-ώρα",
- Response: "Απάντηση",
- Ping: "Ping",
- "Monitor Type": "Τύπος παρακολούθησης",
- Keyword: "Λέξη-κλειδί",
- "Friendly Name": "Φιλικό όνομα",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "Διάστημα καρδιακών παλμών",
- Retries: "Επαναλήψεις",
- "Heartbeat Retry Interval": "Διάστημα επανάληψης παλμών καρδιάς",
- "Resend Notification if Down X times consequently": "Αποστολή νέας ειδοποίησης εάν κατω X φορές κατά συνέχεια",
- Advanced: "Προχωρημένα",
- "Upside Down Mode": "Ανάποδη λειτουργία",
- "Max. Redirects": "Μέγιστη. Ανακατευθύνσεις",
- "Accepted Status Codes": "Αποδεκτοί Κωδικοί Κατάστασης",
- "Push URL": "Push URL",
- needPushEvery: "Θα πρέπει να καλείτε αυτήν τη διεύθυνση URL κάθε {0} δευτερόλεπτα.",
- pushOptionalParams: "Προαιρετικές παράμετροι: {0}",
- Save: "Αποθηκεύση",
- Notifications: "Ειδοποιήσεις",
- "Not available, please setup.": "Μη διαθέσιμο, παρακαλώ ρυθμίστε.",
- "Setup Notification": "Δημιουργία ειδοποίησης",
- Light: "Φωτεινό",
- Dark: "Σκοτεινό",
- Auto: "Αυτόματο",
- "Theme - Heartbeat Bar": "Θέμα - Μπάρα καρδιακών παλμών",
- Normal: "Κανονικό",
- Bottom: "Κάτω μέρος",
- None: "Τίποτα",
- Timezone: "Ζώνη ώρας",
- "Search Engine Visibility": "Ορατότητα μηχανών αναζήτησης",
- "Allow indexing": "Να επιτρέπεται η ευρετηρίαση",
- "Discourage search engines from indexing site": "Αποθαρρύνετε τις μηχανές αναζήτησης από την ευρετηρίαση ιστότοπου",
- "Change Password": "Αλλαγή κωδικού πρόσβασης",
- "Current Password": "Τρέχων κωδικός πρόσβασης",
- "New Password": "Νέος κωδικός πρόσβασης",
- "Repeat New Password": "Επαναλάβετε τον νέο κωδικό πρόσβασης",
- "Update Password": "Ενημέρωση κωδικού πρόσβασης",
- "Disable Auth": "Απενεργοποίηση ελέγχου ταυτότητας",
- "Enable Auth": "Ενεργοποίηση ελέγχου ταυτότητας",
- "disableauth.message1": "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε τον έλεγχο ταυτότητας ;",
- "disableauth.message2": "Έχει σχεδιαστεί για σενάρια όπου σκοπεύετε να εφαρμόσετε έλεγχο ταυτότητας τρίτου μέρους μπροστά από το Uptime Kuma, όπως το Cloudflare Access, Authelia ή άλλους μηχανισμούς ελέγχου ταυτότητας.",
- "Please use this option carefully!": "Χρησιμοποιήστε αυτή την επιλογή προσεκτικά!",
- Logout: "Αποσύνδεση",
- Leave: "Φύγετε",
- "I understand, please disable": "Καταλαβαίνω, απενεργοποιήστε",
- Confirm: "Επιβεβαίωση",
- Yes: "Ναί",
- No: "Οχι",
- Username: "Όνομα χρήστη",
- Password: "Κωδικός πρόσβασης",
- "Remember me": "Θυμήσου με",
- Login: "Σύνδεση",
- "No Monitors, please": "Δεν υπάρχουν παρακολούθησης παρακαλώ",
- "add one": "προσθέστε ένα",
- "Notification Type": "Είδος ειδοποίησης",
- Email: "Email",
- Test: "Δοκιμή",
- "Certificate Info": "Πληροφορίες πιστοποιητικού",
- "Resolver Server": "Διακομιστής επίλυσης",
- "Resource Record Type": "Τύπος εγγραφής πόρων",
- "Last Result": "Τελευταίο Αποτέλεσμα",
- "Create your admin account": "Δημιουργήστε τον λογαριασμό διαχειριστή σας",
- "Repeat Password": "Επαναλάβετε τον κωδικό πρόσβασης",
- "Import Backup": "Εισαγωγή αντιγράφων ασφαλείας",
- "Export Backup": "Εξαγωγή αντιγράφων ασφαλείας",
- Export: "Εξαγωγή",
- Import: "Εισαγωγή",
- respTime: "Χρόν. Aπό (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Προεπιλογή ενεργοποιημένη",
- "Apply on all existing monitors": "Εφαρμόστε σε όλες τις υπάρχουσες παρακολούθησης",
- Create: "Δημιουργία",
- "Clear Data": "Καθαρισμός δεδομένων",
- Events: "Γεγονότα",
- Heartbeats: "Παλμοι καρδιας",
- "Auto Get": "Αυτόματη λήψη",
- backupDescription: "Μπορείτε να δημιουργήσετε αντίγραφα ασφαλείας γία ολλες της παρακολούθησης και ειδοποιήσης σε ένα αρχείο JSON.",
- backupDescription2: "Σημείωση: δεν περιλαμβάνονται δεδομένα ιστορικού και συμβάντων.",
- backupDescription3: "Στο αρχείο εξαγωγής περιλαμβάνονται ευαίσθητα δεδομένα, όπως token ειδοποιήσεων. Aποθηκεύστε την εξαγωγή με ασφάλεια.",
- alertNoFile: "Επιλέξτε ένα αρχείο για εισαγωγή.",
- alertWrongFileType: "Επιλέξτε ένα αρχείο JSON.",
- "Clear all statistics": "Εκκαθάριση όλων των στατιστικών",
- "Skip existing": "Παράβλεψη υπάρχοντος",
- Overwrite: "Αντικατάσταση",
- Options: "Επιλογές",
- "Keep both": "Κράτα και τα δύο",
- "Verify Token": "Επαλήθευση Token",
- "Setup 2FA": "Ρύθμιση 2FA",
- "Enable 2FA": "Ενεργοποίηση 2FA",
- "Disable 2FA": "Απενεργοποίηση 2FA",
- "2FA Settings": "Ρυθμίσεις 2FA",
- "Two Factor Authentication": "Έλεγχος ταυτότητας δύο παραγόντων",
- Active: "Ενεργός",
- Inactive: "Ανενεργό",
- Token: "Token",
- "Show URI": "Εμφάνιση URI",
- Tags: "Ετικέτες",
- "Add New below or Select...": "Προσθήκη νέου παρακάτω ή Επιλέξτε...",
- "Tag with this name already exist.": "Υπάρχει ήδη η ετικέτα με αυτό το όνομα.",
- "Tag with this value already exist.": "Υπάρχει ήδη ετικέτα με αυτό το value.",
- color: "χρώμα",
- "value (optional)": "value (optional)",
- Gray: "Γκρί",
- Red: "Κόκκινο",
- Orange: "Πορτοκάλι",
- Green: "Πράσινο",
- Blue: "Μπλε",
- Indigo: "Indigo",
- Purple: "Μωβ",
- Pink: "Ροζ",
- "Search...": "Αναζήτηση...",
- "Avg. Ping": "Μέσo.Ping",
- "Avg. Response": "Μέσo. Aπάντηση",
- "Entry Page": "Σελίδα εισαγωγής",
- statusPageNothing: "Δεν υπάρχει τίποτα εδώ, προσθέστε μια ομάδα ή μια παρακολούθηση.",
- "No Services": "Δεν υπάρχουν υπηρεσίες",
- "All Systems Operational": "Όλα τα συστήματα λειτουργούν",
- "Partially Degraded Service": "Μερικώς υποβαθμισμένη υπηρεσία",
- "Degraded Service": "Υποβαθμισμένη υπηρεσία",
- "Add Group": "Προσθήκη γρουπ",
- "Add a monitor": "Προσθήκη παρακολούθησης",
- "Edit Status Page": "Επεξεργασία σελίδας κατάστασης",
- "Go to Dashboard": "Μεταβείτε στον Πίνακα ελέγχου",
- "Status Page": "Σελίδα κατάστασης",
- "Status Pages": "Σελίδες κατάστασης",
- defaultNotificationName: "Η ειδοποίηση μου {notification} ({number})",
- here: "εδώ",
- Required: "Απαιτείται",
- telegram: "Telegram",
- "ZohoCliq": "ZohoCliq",
- "Bot Token": "Διακριτικό Bot",
- wayToGetTelegramToken: "Μπορείτε να πάρετε ένα διακριτικό από {0}.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID",
- wayToGetTelegramChatID: "Μπορείτε να λάβετε το αναγνωριστικό συνομιλίας σας στέλνοντας ένα μήνυμα στο bot και μεταβαίνοντας σε αυτήν τη διεύθυνση URL για να προβάλετε το chat_id:",
- "YOUR BOT TOKEN HERE": "ΤΟ BOT ΣΑΣ ΔΙΑΚΡΙΤΙΚΌ ΕΔΩ",
- chatIDNotFound: "Το Chat ID δεν βρέθηκε. Στείλτε πρώτα ένα μήνυμα σε αυτό το bot",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Τύπος περιεχομένου",
- webhookJsonDesc: "{0} είναι καλό για οποιονδήποτε σύγχρονο διακομιστή HTTP όπως το Express.js",
- webhookFormDataDesc: "{multipart} είναι καλό για την PHP. Το JSON θα πρέπει να αναλυθεί με {decodeFunction}",
- smtp: "Email (SMTP)",
- secureOptionNone: "None / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Παράβλεψη σφάλματος TLS",
- "From Email": "Από Email",
- emailCustomSubject: "Προσαρμοσμένο θέμα",
- "To Email": "Προς Email",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Μπορείτε να το αποκτήσετε μεταβαίνοντας στις Ρυθμίσεις διακομιστή -> Ενσωματώσεις -> Δημιουργία Webhook",
- "Bot Display Name": "Εμφανιζόμενο όνομα bot",
- "Prefix Custom Message": "Προσαρμοσμένο μήνυμα",
- "Hello @everyone is...": "Γεια {'@'}everyone ειναι...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Μπορείτε να μάθετε πώς να δημιουργείτε μια διεύθυνση URL webhook {0}.",
- wayToGetZohoCliqURL: "Μπορείτε να μάθετε πώς να δημιουργείτε μια διεύθυνση URL webhook {0}.",
- signal: "Signal",
- Number: "Αριθμός",
- Recipients: "Αποδέκτες",
- needSignalAPI: "Πρέπει να έχετε ένα signal client με REST API..",
- wayToCheckSignalURL: "Μπορείτε να ελέγξετε αυτό το URL για να δείτε πώς να ρυθμίσετε ένα:",
- signalImportant: "ΣΗΜΑΝΤΙΚΟ: Δεν μπορείτε να συνδυάσετε ομάδες και αριθμούς στους παραλήπτες!",
- gotify: "Gotify",
- "Application Token": "Token εφαρμογής",
- "Server URL": "URL διακομιστή",
- Priority: "Προτεραιότητα",
- slack: "Slack",
- "Icon Emoji": "Εικονίδιο Emoji",
- "Channel Name": "Όνομα καναλιού",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Περισσότερες πληροφορίες σχετικά με τα Webhooks στο: {0}",
- aboutChannelName: "Εισαγάγετε το όνομα του καναλιού στο {0} Όνομα καναλιού εάν θέλετε να παρακάμψετε το κανάλι Webhook. Π.χ.: #other-channel",
- aboutKumaURL: "Εάν αφήσετε κενό το πεδίο URL Uptime Kuma, θα είναι προεπιλεγμένο στη σελίδα Project GitHub..",
- emojiCheatSheet: "Φύλλο εξαπάτησης emoji: {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- GoogleChat: "Google Chat (Google Workspace only)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "Κλειδί χρήστη",
- Device: "Συσκευή",
- "Message Title": "Τίτλος μηνύματος",
- "Notification Sound": "Ήχος ειδοποίησης",
- "More info on:": "Περισσότερες πληροφορίες στο: {0}",
- pushoverDesc1: "Η προτεραιότητα έκτακτης ανάγκης (2) έχει προεπιλεγμένο χρονικό όριο 30 δευτερολέπτων μεταξύ των επαναλήψεων και θα λήξει μετά από 1 ώρα.",
- pushoverDesc2: "Εάν θέλετε να στέλνετε ειδοποιήσεις σε διαφορετικές συσκευές, συμπληρώστε το πεδίο Συσκευή.",
- "SMS Type": "Τύπος SMS",
- octopushTypePremium: "Premium (Γρήγορη - συνιστάται για ειδοποίηση)",
- octopushTypeLowCost: "Χαμηλό κόστος (Αργό - μερικές φορές μπλοκάρεται από τον χειριστή)",
- checkPrice: "Ελέγξτε τις τιμές {0}:",
- apiCredentials: "API credentials",
- octopushLegacyHint: "Χρησιμοποιείτε την παλαιού τύπου έκδοση του Octopush (2011-2020) ή τη νέα έκδοση;",
- "Check octopush prices": "Ελέγξτε τις τιμές OctoPush {0}.",
- octopushPhoneNumber: "Αριθμός τηλεφώνου (διεθνής μορφή, π.χ.: +30694345678)",
- octopushSMSSender: "Όνομα αποστολέα SMS: 3-11 αλφαριθμητικοί χαρακτήρες και διάστημα (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Device ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Παράδειγμα: {0}",
- "Read more:": "Διαβάστε περισσότερα: {0}",
- "Status:": "Κατάσταση: {0}",
- "Read more": "Διαβάστε περισσότερα",
- appriseInstalled: "Το Apprise έχει εγκατασταθεί.",
- appriseNotInstalled: "Το Apprise δεν έχει εγκατασταθεί. {0}",
- "Access Token": "Access Token",
- "Channel access token": "Channel Access Token",
- "Line Developers Console": "Line Developers Console",
- lineDevConsoleTo: "Line Developers Console - {0}",
- "Basic Settings": "Βασικές ρυθμίσεις",
- "User ID": "User ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "Πρώτα αποκτήστε πρόσβαση στο {0}, δημιουργήστε έναν πάροχο και ένα κανάλι (Messanging API) και, στη συνέχεια, μπορείτε να λάβετε το channel access token και το user ID από τα παραπάνω στοιχεία μενού.",
- "Icon URL": "Διεύθυνση URL εικονιδίου",
- aboutIconURL: "Μπορείτε να παρέχετε έναν σύνδεσμο προς μια εικόνα στο \"Icon URL\" για να παρακάμψετε την προεπιλεγμένη εικόνα προφίλ. Δεν θα χρησιμοποιηθεί εάν έχει οριστεί το εικονίδιο Emoji.",
- aboutMattermostChannelName: "Μπορείτε να παρακάμψετε το προεπιλεγμένο κανάλι στο οποίο δημοσιεύει το Webhook εισάγοντας το όνομα του καναλιού στο πεδίο \"Όνομα καναλιού\". Αυτό πρέπει να ενεργοποιηθεί στις ρυθμίσεις του Mattermost Webhook. Π.χ.: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - φθηνό αλλά αργό και συχνά υπερφορτωμένο. Περιορίζεται μόνο σε Πολωνούς παραλήπτες.",
- promosmsTypeFlash: "SMS FLASH - Το μήνυμα θα εμφανίζεται αυτόματα στη συσκευή του παραλήπτη. Περιορίζεται μόνο σε Πολωνούς παραλήπτες.",
- promosmsTypeFull: "SMS FULL - Premium επίπεδο SMS, Μπορείτε να χρησιμοποιήσετε το Όνομα Αποστολέα σας (Πρέπει πρώτα να καταχωρήσετε το όνομα). Αξιόπιστο για ειδοποιήσεις.",
- promosmsTypeSpeed: "SMS SPEED - Υψηλότερη προτεραιότητα στο σύστημα. Πολύ γρήγορο και αξιόπιστο αλλά ακριβό (περίπου διπλάσια τιμή SMS FULL).",
- promosmsPhoneNumber: "Αριθμός τηλεφώνου (για πολωνούς παραλήπτες Μπορείτε να παραλείψετε τους κωδικούς περιοχής)",
- promosmsSMSSender: "Όνομα αποστολέα SMS: Προεγγεγραμμένο όνομα ή ένα από τα προεπιλεγμένα: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "Homeserver URL (με http(s):// και προαιρετικά θύρα)",
- "Internal Room Id": "Internal Room ID",
- matrixDesc1: "Μπορείτε να βρείτε το internal room ID ανατρέχοντας στην ενότητα για προχωρημένους των ρυθμίσεων δωματίου στο πρόγραμμα-πελάτη Matrix. Θα πρέπει να μοιάζει με !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Συνιστάται ανεπιφύλακτα να δημιουργήσετε έναν νέο χρήστη και να μην χρησιμοποιήσετε το διακριτικό πρόσβασης του χρήστη Matrix, καθώς θα επιτρέψει την πλήρη πρόσβαση στον λογαριασμό σας και σε όλα τα δωμάτια στα οποία συμμετέχετε. Αντίθετα, δημιουργήστε έναν νέο χρήστη και προσκαλέστε τον μόνο στο δωμάτιο στο οποίο θέλετε να λαμβάνετε την ειδοποίηση. Μπορείτε να λάβετε το access token εκτελώντας {0}",
- Method: "Μέθοδος",
- Body: "Σώμα",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "The request headers are not valid JSON: ",
- BodyInvalidFormat: "The request body is not valid JSON: ",
- "Monitor History": "Ιστορικο Παρακολούθησης",
- clearDataOlderThan: "Διατηρήστε τα δεδομένα ιστορικού παρακολούθησης για {0} ημέρες.",
- PasswordsDoNotMatch: "Οι κωδικοί πρόσβασης δεν ταιριάζουν.",
- records: "εγγραφές",
- "One record": "Μία εγγραφή",
- steamApiKeyDescription: "Για την παρακολούθηση ενός διακομιστή παιχνιδιών Steam χρειάζεστε ένα κλειδί Steam Web-API. Μπορείτε να καταχωρήσετε το κλειδί API σας εδώ: ",
- "Current User": "Τρέχων χρήστης",
- topic: "Θέμα",
- topicExplanation: "Θέμα MQTT προς παρακολούθηση",
- successMessage: "Μήνυμα επιτυχίας",
- successMessageExplanation: "Μήνυμα MQTT που θα θεωρηθεί επιτυχές",
- recent: "Πρόσφατος",
- Done: "Ολοκληρώθηκε",
- Info: "Πληροφορίες",
- Security: "Ασφάλεια",
- "Steam API Key": "Steam API Key",
- "Shrink Database": "Συρρίκνωση βάσης δεδομένων",
- "Pick a RR-Type...": "Επιλέξτε έναν τύπο RR...",
- "Pick Accepted Status Codes...": "Επιλέξτε Αποδεκτούς κωδικούς κατάστασης...",
- Default: "Προκαθορισμένο",
- "HTTP Options": "Επιλογές HTTP",
- "Create Incident": "Δημιουργία περιστατικού",
- Title: "Τίτλος",
- Content: "Περιεχόμενο",
- Style: "Στυλ",
- info: "πληροφορίες",
- warning: "προειδοποίηση",
- danger: "κίνδυνος",
- error: "σφάλμα",
- critical: "κριτικό",
- primary: "primary",
- light: "light",
- dark: "dark",
- Post: "Δημοσίευση",
- "Please input title and content": "Παρακαλούμε εισαγάγετε τίτλο και περιεχόμενο",
- Created: "Δημιουργήθηκε",
- "Last Updated": "Τελευταία ενημέρωση",
- Unpin: "Ξεκαρφιτσώστε",
- "Switch to Light Theme": "Μετάβαση σε Ανιχτό θέμα",
- "Switch to Dark Theme": "Μετάβαση σε Σκούρο θέμα",
- "Show Tags": "Εμφάνιση ετικετών",
- "Hide Tags": "Απόκρυψη ετικετών",
- Description: "Περιγραφή",
- "No monitors available.": "Δεν υπάρχουν διαθέσιμες παρακολουθήσεις.",
- "Add one": "Προσθέστε ένα",
- "No Monitors": "Χωρίς παρακολουθήσεις",
- "Untitled Group": "Ομάδα χωρίς τίτλο",
- Services: "Υπηρεσίες",
- Discard: "Απορρίψει",
- Cancel: "Ακυρο",
- "Powered by": "Με την υποστήριξη του",
- shrinkDatabaseDescription: "Ενεργοποίηση βάσης δεδομένων VACUUM για SQLite. Εάν η βάση δεδομένων σας έχει δημιουργηθεί μετά την έκδοση 1.10.0, το AUTO_VACUUM είναι ήδη ενεργοποιημένο και αυτή η ενέργεια δεν χρειάζεται.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Username (incl. webapi_ prefix)",
- serwersmsAPIPassword: "API κωδικός πρόσβασης",
- serwersmsPhoneNumber: "Αριθμός τηλεφώνου",
- serwersmsSenderName: "Όνομα αποστολέα SMS (καταχωρήθηκε μέσω της πύλης πελατών)",
- stackfield: "Stackfield",
- Customize: "Προσαρμογή",
- "Custom Footer": "Προσαρμογή Footer",
- "Custom CSS": "Προσαρμογή CSS",
- smtpDkimSettings: "Ρυθμίσεις DKIM",
- smtpDkimDesc: "Ανατρέξτε στο Nodemailer DKIM {0} για χρήση.",
- documentation: "documentation",
- smtpDkimDomain: "Domain Name",
- smtpDkimKeySelector: "Key Selector",
- smtpDkimPrivateKey: "Private Key",
- smtpDkimHashAlgo: "Hash Algorithm (Optional)",
- smtpDkimheaderFieldNames: "Header Keys to sign (Optional)",
- smtpDkimskipFields: "Header Keys not to sign (Optional)",
- wayToGetPagerDutyKey: "Μπορείτε να το λάβετε μεταβαίνοντας στο Service -> Service Directory -> (Επιλέξτε μια υπηρεσία) -> Integrations -> Add integration. Εδώ μπορείτε να κάνετε αναζήτηση για \"Events API V2\". Περισσότερες πληροφορίες {0}",
- "Integration Key": "Integration Key",
- "Integration URL": "Integration URL",
- "Auto resolve or acknowledged": "Αυτόματη επίλυση ή αναγνώριση",
- "do nothing": "μην κάνεις τίποτα",
- "auto acknowledged": "αυτόματη αναγνώριση",
- "auto resolve": "αυτόματη επίλυση",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "Environment",
- alertaApiKey: "API Key",
- alertaAlertState: "Alert State",
- alertaRecoverState: "Recover State",
- deleteStatusPageMsg: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη σελίδα κατάστασης?",
- Proxies: "Proxies",
- default: "Προκαθορισμένο",
- enabled: "Ενεργοποιημένο",
- setAsDefault: "Ορίσετε ως προεπιλογή",
- deleteProxyMsg: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το proxy για όλες τις παρακολουθήσεις;",
- proxyDescription: "Πρέπει να εκχωρηθούν proxies σε μια οθπαρακολουθή για να λειτουργήσουν..",
- enableProxyDescription: "Το proxy δεν θα επηρεάσει τα αιτήματα της παρακολουθήσεις μέχρι να ενεργοποιηθεί. Μπορείτε να ελέγξετε την προσωρινή απενεργοποίηση του proxy από όλες τις παρακολουθήσεις βάσει κατάστασης ενεργοποίησης.",
- setAsDefaultProxyDescription: "Αυτός το proxy θα είναι ενεργοποιημένο από προεπιλογή για νέες παρακολουθήσεις. Μπορείτε ακόμα να απενεργοποιήσετε το proxy ξεχωριστά για κάθε οθόνη.",
- "Certificate Chain": "Certificate Chain",
- Valid: "Εγκυρο",
- Invalid: "Μη έγκυρο",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Το πρότυπο SMS πρέπει να περιέχει παραμέτρους: ",
- "Bark Endpoint": "Bark Endpoint",
- "Bark Group": "Bark Ομάδα",
- "Bark Sound": "Bark Ήχος",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "Για ασφάλεια, πρέπει να χρησιμοποιήσετε secret key",
- "Device Token": "Device Token",
- Platform: "Platform",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "High",
- Retry: "Ξαναδοκιμάσετε",
- Topic: "Θέμα",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "Ρύθμιση Proxy",
- "Proxy Protocol": "Πρωτόκολλο Proxy",
- "Proxy Server": "Proxy Server",
- "Proxy server has authentication": "Το Proxy διαθέτει έλεγχο ταυτότητας",
- User: "Χρήστης",
- Installed: "Εγκατεστημένο",
- "Not installed": "Μη εγκατεστημενο",
- Running: "Τρέχη",
- "Not running": "Δεν τρεχη",
- "Remove Token": "Κατάργηση Token",
- Start: "Αρχή",
- Stop: "Στάση",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Προσθήκη νέας σελίδας κατάστασης",
- Slug: "Slug",
- "Accept characters:": "Αποδοχή χαρακτήρων:",
- startOrEndWithOnly: "Ξεκινήστε ή τελειώστε μόνο με {0}",
- "No consecutive dashes": "Χωρίς διαδοχικές παύλες",
- Next: "Επόμενο",
- "The slug is already taken. Please choose another slug.": "Ο slug έχει ήδη πιαστεί. Επιλέξτε άλλο slug.",
- "No Proxy": "Οχι Proxy",
- Authentication: "Authentication",
- "HTTP Basic Auth": "HTTP Basic Auth",
- "New Status Page": "Νέας Σελίδα κατάστασης",
- "Page Not Found": "Η σελίδα δεν βρέθηκε",
- "Reverse Proxy": "Αντίστροφο Proxy",
- Backup: "Αντιγράφων ασφαλείας",
- About: "Σχετικά με το Uptime Kuma",
- wayToGetCloudflaredURL: "(Λήψη cloudflared από {0})",
- cloudflareWebsite: "Ιστοσελίδα Cloudflare",
- "Message:": "Μήνυμα:",
- "Don't know how to get the token? Please read the guide:": "Δεν ξέρετε πώς να αποκτήσετε το token; Διαβάστε τον οδηγό:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Η τρέχουσα σύνδεση μπορεί να χαθεί εάν αυτή τη στιγμή συνδέεστε μέσω του Cloudflare Tunnel. Θέλετε σίγουρα να το σταματήσετε; Πληκτρολογήστε τον τρέχοντα κωδικό πρόσβασής σας για να τον επιβεβαιώσετε.",
- "HTTP Headers": "HTTP Headers",
- "Trust Proxy": "Εμπιστοσύνη του Proxy",
- "Other Software": "Other Software",
- "For example: nginx, Apache and Traefik.": "Για παράδειγμα: nginx, Apache και Traefik.",
- "Please read": "Παρακαλώ διαβάστε",
- "Subject:": "Θέμα:",
- "Valid To:": "Εγκυρο για:",
- "Days Remaining:": "Ημέρες που απομένουν:",
- "Issuer:": "Εκδότης:",
- "Fingerprint:": "Δακτυλικό αποτύπωμα:",
- "No status pages": "Δεν υπάρχουν σελίδες κατάστασης",
- "Domain Name Expiry Notification": "Ειδοποίηση λήξης ονόματος τομέα",
- Proxy: "Proxy",
- "Date Created": "Ημερομηνία Δημιουργίας",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP Address",
- onebotMessageType: "OneBot Message Type",
- onebotGroupMessage: "Group",
- onebotPrivateMessage: "Private",
- onebotUserOrGroupId: "Group/User ID",
- onebotSafetyTips: "Για ασφάλεια, πρέπει να ορίσετε το acess token",
- "PushDeer Key": "PushDeer Key",
- "Footer Text": "Κείμενο υποσέλιδου",
- "Show Powered By": "Εμφάνιση Powered By",
- "Domain Names": "Ονόματα Τομέα",
- signedInDisp: "Συνδεθήκατε ως {0}",
- signedInDispDisabled: "Εξουσιοδότηση είναι απενεργοποιημένη.",
- RadiusSecret: "Radius Secret",
- RadiusSecretDescription: "Shared Secret μεταξύ client και το server",
- RadiusCalledStationId: "Called Station Id",
- RadiusCalledStationIdDescription: "Identifier της καλούμενης συσκευής",
- RadiusCallingStationId: "Calling Station Id",
- RadiusCallingStationIdDescription: "Identifier oτης συσκευής κλήσης",
- "Certificate Expiry Notification": "Ειδοποίηση Λήξης Πιστοποιητικού",
- "API Username": "API Username",
- "API Key": "API Key",
- "Recipient Number": "Αριθμός Παραλήπτη",
- "From Name/Number": "Από Όνομα/Αριθμός",
- "Leave blank to use a shared sender number.": "Αφήστε το κενό για να χρησιμοποιήσετε έναν κοινόχρηστο αριθμό αποστολέα.",
- "Octopush API Version": "Octopush API Version",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "endpoint",
- octopushAPIKey: "\"API key\" από το HTTP API credentials στον πίνακα ελέγχου",
- octopushLogin: "\"Login\" από το HTTP API credentials στον πίνακα ελέγχου",
- promosmsLogin: "API Login Name",
- promosmsPassword: "API Password",
- "pushoversounds pushover": "Pushover (default)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "Vibrate Only",
- "pushoversounds none": "None (silent)",
- pushyAPIKey: "Μυστικό API Key",
- pushyToken: "Τoken Συσκευής",
- "Show update if available": "Εμφάνιση ενημέρωσης εάν είναι διαθέσιμη",
- "Also check beta release": "Ελέγξτε επίσης την έκδοση beta",
- "Using a Reverse Proxy?": "Χρησιμοποιείτε reverse proxy;",
- "Check how to config it for WebSocket": "Ελέγξτε πώς να το ρυθμίσετε για το WebSocket",
- "Steam Game Server": "Διακομιστής παιχνιδιών Steam",
- "Most likely causes:": "Πιο πιθανές αιτίες:",
- "The resource is no longer available.": "Ο πόρος δεν είναι πλέον διαθέσιμος.",
- "There might be a typing error in the address.": "Μπορεί να υπάρχει σφάλμα πληκτρολόγησης στη διεύθυνση.",
- "What you can try:": "Τι μπορείτε να δοκιμάσετε:",
- "Retype the address.": "Πληκτρολογήστε ξανά τη διεύθυνση.",
- "Go back to the previous page.": "Επιστρέψτε στην προηγούμενη σελίδα.",
- "Coming Soon": "Ερχεται σύντομα",
- wayToGetClickSendSMSToken: "Μπορείτε να πάρετε το API Username και API Key απο {0} .",
- "Connection String": "Connection String",
- Query: "Query",
- settingsCertificateExpiry: "Λήξη πιστοποιητικού TLS",
- certificationExpiryDescription: "Οι παρακολουθήσεις HTTPS ενεργοποιούν ειδοποίηση όταν λήξει το πιστοποιητικό TLS σε:",
- "Setup Docker Host": "Ρύθμιση Docker Host",
- "Connection Type": "Τύπος σύνδεσης",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον κεντρικό υπολογιστή βάσης για όλες τις παρακολουθήσεις;",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker Container",
- "Container Name / ID": "Container Name / ID",
- "Docker Host": "Docker Host",
- "Docker Hosts": "Docker Hosts",
- "ntfy Topic": "ntfy Topic",
- Domain: "Domain",
- Workstation: "Workstation",
- disableCloudflaredNoAuthMsg: "Βρίσκεστε σε λειτουργία No Auth, δεν απαιτείται κωδικός πρόσβασης.",
- trustProxyDescription: "Εμπιστευτείτε τις κεφαλίδες 'X-Forwarded-*'. Εάν θέλετε να λάβετε τη σωστή IP πελάτη και το Uptime Kuma σας βρίσκεται πίσω το Nginx ή το Apache, θα πρέπει να το ενεργοποιήσετε.",
- wayToGetLineNotifyToken: "Μπορείτε να λάβετε ένα access token από το {0}",
- Examples: "Παραδείγματα",
- "Home Assistant URL": "Home Assistant URL",
- "Long-Lived Access Token": "Long-Lived Access Token",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token μπορεί να δημιουργηθεί κάνοντας κλικ στο όνομα του προφίλ σας (κάτω αριστερά) και κάνοντας κύλιση προς τα κάτω και, στη συνέχεια, κάντε κλικ στο Create Token. ",
- "Notification Service": "Υπηρεσία ειδοποιήσεων",
- "default: notify all devices": "προεπιλογή: ειδοποίηση όλων των συσκευών",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Μπορείτε να βρείτε μια λίστα με τις Υπηρεσίες ειδοποιήσεων στον Home assistant στην περιοχή \"Developer Tools > Services\" αναζήτηση για \"notification\" για να βρείτε το όνομα της συσκευής/τηλεφώνου σας.",
- "Automations can optionally be triggered in Home Assistant:": "Οι αυτοματισμοί μπορούν προαιρετικά να ενεργοποιηθούν στο Home Assistant:",
- "Trigger type:": "Τύπος ενεργοποίησης:",
- "Event type:": "Τύπος συμβάντος:",
- "Event data:": "Δεδομένα συμβάντος:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Στη συνέχεια, επιλέξτε μια ενέργεια, για παράδειγμα αλλάξτε τη σκηνή στο σημείο όπου ένα φως RGB είναι κόκκινο.",
- "Frontend Version": "Έκδοση Frontend",
- "Frontend Version do not match backend version!": "Η Frontend έκδοση δεν ταιριάζει με την έκδοση backend!",
- "Base URL": "Βασική διεύθυνση URL",
- goAlertInfo: "Το GoAlert είναι μια εφαρμογή ανοιχτού κώδικα για προγραμματισμό κλήσεων, αυτοματοποιημένες κλιμακώσεις και ειδοποιήσεις (όπως SMS ή φωνητικές κλήσεις). Αλληλεπιδράστε αυτόματα με το σωστό άτομο, με τον σωστό τρόπο και τη σωστή στιγμή! {0}",
- goAlertIntegrationKeyInfo: "Λάβετε το generic API integration key για την υπηρεσία σε αυτήν τη μορφή \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" συνήθως την τιμή της παραμέτρου διακριτικού της αντιγραμμένης διεύθυνσης URL.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Καταργήθηκε: Επειδή προστέθηκαν πολλές δυνατότητες και αυτή η δυνατότητα δημιουργίας αντιγράφων ασφαλείας δεν διατηρείται πολη, δεν μπορεί να δημιουργήσει ή να επαναφέρει ένα πλήρες αντίγραφο ασφαλείας.",
- backupRecommend: "Παρακαλούμε δημιουργήστε αντίγραφα ασφαλείας του volume ή του φακέλου δεδομένων (./data/) απευθείας.",
-};
diff --git a/src/languages/en.js b/src/languages/en.js
deleted file mode 100644
index 7a48d0d0c..000000000
--- a/src/languages/en.js
+++ /dev/null
@@ -1,680 +0,0 @@
-export default {
- languageName: "English",
- checkEverySecond: "Check every {0} seconds",
- retryCheckEverySecond: "Retry every {0} seconds",
- resendEveryXTimes: "Resend every {0} times",
- resendDisabled: "Resend disabled",
- retriesDescription: "Maximum retries before the service is marked as down and a notification is sent",
- ignoreTLSError: "Ignore TLS/SSL error for HTTPS websites",
- upsideDownModeDescription: "Flip the status upside down. If the service is reachable, it is DOWN.",
- maxRedirectDescription: "Maximum number of redirects to follow. Set to 0 to disable redirects.",
- enableGRPCTls: "Allow to send gRPC request with TLS connection",
- grpcMethodDescription: "Method name is convert to cammelCase format such as sayHello, check, etc.",
- acceptedStatusCodesDescription: "Select status codes which are considered as a successful response.",
- Maintenance: "Maintenance",
- statusMaintenance: "Maintenance",
- "Schedule maintenance": "Schedule maintenance",
- "Affected Monitors": "Affected Monitors",
- "Pick Affected Monitors...": "Pick Affected Monitors...",
- "Start of maintenance": "Start of maintenance",
- "All Status Pages": "All Status Pages",
- "Select status pages...": "Select status pages...",
- recurringIntervalMessage: "Run once every day | Run once every {0} days",
- affectedMonitorsDescription: "Select monitors that are affected by current maintenance",
- affectedStatusPages: "Show this maintenance message on selected status pages",
- atLeastOneMonitor: "Select at least one affected monitor",
- passwordNotMatchMsg: "The repeat password does not match.",
- notificationDescription: "Notifications must be assigned to a monitor to function.",
- keywordDescription: "Search keyword in plain HTML or JSON response. The search is case-sensitive.",
- pauseDashboardHome: "Pause",
- deleteMonitorMsg: "Are you sure want to delete this monitor?",
- deleteMaintenanceMsg: "Are you sure want to delete this maintenance?",
- deleteNotificationMsg: "Are you sure want to delete this notification for all monitors?",
- dnsPortDescription: "DNS server port. Defaults to 53. You can change the port at any time.",
- resolverserverDescription: "Cloudflare is the default server. You can change the resolver server anytime.",
- rrtypeDescription: "Select the RR type you want to monitor",
- pauseMonitorMsg: "Are you sure want to pause?",
- enableDefaultNotificationDescription: "This notification will be enabled by default for new monitors. You can still disable the notification separately for each monitor.",
- clearEventsMsg: "Are you sure want to delete all events for this monitor?",
- clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?",
- confirmClearStatisticsMsg: "Are you sure you want to delete ALL statistics?",
- importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.",
- confirmImportMsg: "Are you sure you want to import the backup? Please verify you've selected the correct import option.",
- twoFAVerifyLabel: "Please enter your token to verify 2FA:",
- tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
- confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
- confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
- Settings: "Settings",
- Dashboard: "Dashboard",
- "New Update": "New Update",
- Language: "Language",
- Appearance: "Appearance",
- Theme: "Theme",
- General: "General",
- "Primary Base URL": "Primary Base URL",
- Version: "Version",
- "Check Update On GitHub": "Check Update On GitHub",
- List: "List",
- Add: "Add",
- "Add New Monitor": "Add New Monitor",
- "Quick Stats": "Quick Stats",
- Up: "Up",
- Down: "Down",
- Pending: "Pending",
- Unknown: "Unknown",
- Pause: "Pause",
- Name: "Name",
- Status: "Status",
- DateTime: "DateTime",
- Message: "Message",
- "No important events": "No important events",
- Resume: "Resume",
- Edit: "Edit",
- Delete: "Delete",
- Current: "Current",
- Uptime: "Uptime",
- "Cert Exp.": "Cert Exp.",
- day: "day | days",
- "-day": "-day",
- hour: "hour",
- "-hour": "-hour",
- Response: "Response",
- Ping: "Ping",
- "Monitor Type": "Monitor Type",
- Keyword: "Keyword",
- "Friendly Name": "Friendly Name",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "Heartbeat Interval",
- Retries: "Retries",
- "Heartbeat Retry Interval": "Heartbeat Retry Interval",
- "Resend Notification if Down X times consequently": "Resend Notification if Down X times consequently",
- Advanced: "Advanced",
- "Upside Down Mode": "Upside Down Mode",
- "Max. Redirects": "Max. Redirects",
- "Accepted Status Codes": "Accepted Status Codes",
- "Push URL": "Push URL",
- needPushEvery: "You should call this URL every {0} seconds.",
- pushOptionalParams: "Optional parameters: {0}",
- Save: "Save",
- Notifications: "Notifications",
- "Not available, please setup.": "Not available, please setup.",
- "Setup Notification": "Setup Notification",
- Light: "Light",
- Dark: "Dark",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
- Normal: "Normal",
- Bottom: "Bottom",
- None: "None",
- Timezone: "Timezone",
- "Search Engine Visibility": "Search Engine Visibility",
- "Allow indexing": "Allow indexing",
- "Discourage search engines from indexing site": "Discourage search engines from indexing site",
- "Change Password": "Change Password",
- "Current Password": "Current Password",
- "New Password": "New Password",
- "Repeat New Password": "Repeat New Password",
- "Update Password": "Update Password",
- "Disable Auth": "Disable Auth",
- "Enable Auth": "Enable Auth",
- "disableauth.message1": "Are you sure want to disable authentication ?",
- "disableauth.message2": "It is designed for scenarios where you intend to implement third-party authentication in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms.",
- "Please use this option carefully!": "Please use this option carefully!",
- Logout: "Logout",
- Leave: "Leave",
- "I understand, please disable": "I understand, please disable",
- Confirm: "Confirm",
- Yes: "Yes",
- No: "No",
- Username: "Username",
- Password: "Password",
- "Remember me": "Remember me",
- Login: "Login",
- "No Monitors, please": "No Monitors, please",
- "add one": "add one",
- "Notification Type": "Notification Type",
- Email: "Email",
- Test: "Test",
- "Certificate Info": "Certificate Info",
- "Resolver Server": "Resolver Server",
- "Resource Record Type": "Resource Record Type",
- "Last Result": "Last Result",
- "Create your admin account": "Create your admin account",
- "Repeat Password": "Repeat Password",
- "Import Backup": "Import Backup",
- "Export Backup": "Export Backup",
- Export: "Export",
- Import: "Import",
- respTime: "Resp. Time (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Default enabled",
- "Apply on all existing monitors": "Apply on all existing monitors",
- Create: "Create",
- "Clear Data": "Clear Data",
- Events: "Events",
- Heartbeats: "Heartbeats",
- "Auto Get": "Auto Get",
- backupDescription: "You can backup all monitors and notifications into a JSON file.",
- backupDescription2: "Note: history and event data is not included.",
- backupDescription3: "Sensitive data such as notification tokens are included in the export file; please store export securely.",
- alertNoFile: "Please select a file to import.",
- alertWrongFileType: "Please select a JSON file.",
- "Clear all statistics": "Clear all Statistics",
- "Skip existing": "Skip existing",
- Overwrite: "Overwrite",
- Options: "Options",
- "Keep both": "Keep both",
- "Verify Token": "Verify Token",
- "Setup 2FA": "Setup 2FA",
- "Enable 2FA": "Enable 2FA",
- "Disable 2FA": "Disable 2FA",
- "2FA Settings": "2FA Settings",
- "Two Factor Authentication": "Two Factor Authentication",
- Active: "Active",
- Inactive: "Inactive",
- Token: "Token",
- "Show URI": "Show URI",
- Tags: "Tags",
- "Add New below or Select...": "Add New below or Select...",
- "Tag with this name already exist.": "Tag with this name already exists.",
- "Tag with this value already exist.": "Tag with this value already exists.",
- color: "color",
- "value (optional)": "value (optional)",
- Gray: "Gray",
- Red: "Red",
- Orange: "Orange",
- Green: "Green",
- Blue: "Blue",
- Indigo: "Indigo",
- Purple: "Purple",
- Pink: "Pink",
- "Search...": "Search...",
- "Avg. Ping": "Avg. Ping",
- "Avg. Response": "Avg. Response",
- "Entry Page": "Entry Page",
- statusPageNothing: "Nothing here, please add a group or a monitor.",
- "No Services": "No Services",
- "All Systems Operational": "All Systems Operational",
- "Partially Degraded Service": "Partially Degraded Service",
- "Degraded Service": "Degraded Service",
- "Add Group": "Add Group",
- "Add a monitor": "Add a monitor",
- "Edit Status Page": "Edit Status Page",
- "Go to Dashboard": "Go to Dashboard",
- "Status Page": "Status Page",
- "Status Pages": "Status Pages",
- defaultNotificationName: "My {notification} Alert ({number})",
- here: "here",
- Required: "Required",
- telegram: "Telegram",
- "ZohoCliq": "ZohoCliq",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "You can get a token from {0}.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID",
- wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:",
- "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE",
- chatIDNotFound: "Chat ID is not found; please send a message to this bot first",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Content Type",
- webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js",
- webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}",
- webhookAdditionalHeadersTitle: "Additional Headers",
- webhookAdditionalHeadersDesc: "Sets additional headers sent with the webhook.",
- smtp: "Email (SMTP)",
- secureOptionNone: "None / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ignore TLS Error",
- "From Email": "From Email",
- emailCustomSubject: "Custom Subject",
- "To Email": "To Email",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook",
- "Bot Display Name": "Bot Display Name",
- "Prefix Custom Message": "Prefix Custom Message",
- "Hello @everyone is...": "Hello {'@'}everyone is...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.",
- wayToGetZohoCliqURL: "You can learn how to create a webhook URL {0}.",
- signal: "Signal",
- Number: "Number",
- Recipients: "Recipients",
- needSignalAPI: "You need to have a signal client with REST API.",
- wayToCheckSignalURL: "You can check this URL to view how to set one up:",
- signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!",
- gotify: "Gotify",
- "Application Token": "Application Token",
- "Server URL": "Server URL",
- Priority: "Priority",
- slack: "Slack",
- "Icon Emoji": "Icon Emoji",
- "Channel Name": "Channel Name",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "More info about Webhooks on: {0}",
- aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel",
- aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.",
- emojiCheatSheet: "Emoji cheat sheet: {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- GoogleChat: "Google Chat (Google Workspace only)",
- pushbullet: "Pushbullet",
- Kook: "Kook",
- wayToGetKookBotToken: "Create application and get your bot token at {0}",
- wayToGetKookGuildID: "Switch on 'Developer Mode' in Kook setting, and right click the guild to get its ID",
- "Guild ID": "Guild ID",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "User Key",
- Device: "Device",
- "Message Title": "Message Title",
- "Notification Sound": "Notification Sound",
- "More info on:": "More info on: {0}",
- pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.",
- pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.",
- "SMS Type": "SMS Type",
- octopushTypePremium: "Premium (Fast - recommended for alerting)",
- octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)",
- checkPrice: "Check {0} prices:",
- apiCredentials: "API credentials",
- octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?",
- "Check octopush prices": "Check octopush prices {0}.",
- octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ",
- octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Device ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Example: {0}",
- "Read more:": "Read more: {0}",
- "Status:": "Status: {0}",
- "Read more": "Read more",
- appriseInstalled: "Apprise is installed.",
- appriseNotInstalled: "Apprise is not installed. {0}",
- "Access Token": "Access Token",
- "Channel access token": "Channel access token",
- "Line Developers Console": "Line Developers Console",
- lineDevConsoleTo: "Line Developers Console - {0}",
- "Basic Settings": "Basic Settings",
- "User ID": "User ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.",
- "Icon URL": "Icon URL",
- aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.",
- aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.",
- promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.",
- promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.",
- promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).",
- promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)",
- promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)",
- "Internal Room Id": "Internal Room ID",
- matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}",
- Method: "Method",
- Body: "Body",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "The request headers are not valid JSON: ",
- BodyInvalidFormat: "The request body is not valid JSON: ",
- "Monitor History": "Monitor History",
- clearDataOlderThan: "Keep monitor history data for {0} days.",
- PasswordsDoNotMatch: "Passwords do not match.",
- records: "records",
- "One record": "One record",
- steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ",
- "Current User": "Current User",
- topic: "Topic",
- topicExplanation: "MQTT topic to monitor",
- successMessage: "Success Message",
- successMessageExplanation: "MQTT message that will be considered as success",
- recent: "Recent",
- Done: "Done",
- Info: "Info",
- Security: "Security",
- "Steam API Key": "Steam API Key",
- "Shrink Database": "Shrink Database",
- "Pick a RR-Type...": "Pick a RR-Type...",
- "Pick Accepted Status Codes...": "Pick Accepted Status Codes...",
- Default: "Default",
- "HTTP Options": "HTTP Options",
- "Create Incident": "Create Incident",
- Title: "Title",
- Content: "Content",
- Style: "Style",
- info: "info",
- warning: "warning",
- danger: "danger",
- error: "error",
- critical: "critical",
- primary: "primary",
- light: "light",
- dark: "dark",
- Post: "Post",
- "Please input title and content": "Please input title and content",
- Created: "Created",
- "Last Updated": "Last Updated",
- Unpin: "Unpin",
- "Switch to Light Theme": "Switch to Light Theme",
- "Switch to Dark Theme": "Switch to Dark Theme",
- "Show Tags": "Show Tags",
- "Hide Tags": "Hide Tags",
- Description: "Description",
- "No monitors available.": "No monitors available.",
- "Add one": "Add one",
- "No Monitors": "No Monitors",
- "Untitled Group": "Untitled Group",
- Services: "Services",
- Discard: "Discard",
- Cancel: "Cancel",
- "Powered by": "Powered by",
- shrinkDatabaseDescription: "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Username (incl. webapi_ prefix)",
- serwersmsAPIPassword: "API Password",
- serwersmsPhoneNumber: "Phone number",
- serwersmsSenderName: "SMS Sender Name (registered via customer portal)",
- smseagle: "SMSEagle",
- smseagleTo: "Phone number(s)",
- smseagleGroup: "Phonebook group name(s)",
- smseagleContact: "Phonebook contact name(s)",
- smseagleRecipientType: "Recipient type",
- smseagleRecipient: "Recipient(s) (multiple must be separated with comma)",
- smseagleToken: "API Access token",
- smseagleUrl: "Your SMSEagle device URL",
- smseagleEncoding: "Send as Unicode",
- smseaglePriority: "Message priority (0-9, default = 0)",
- stackfield: "Stackfield",
- Customize: "Customize",
- "Custom Footer": "Custom Footer",
- "Custom CSS": "Custom CSS",
- smtpDkimSettings: "DKIM Settings",
- smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.",
- documentation: "documentation",
- smtpDkimDomain: "Domain Name",
- smtpDkimKeySelector: "Key Selector",
- smtpDkimPrivateKey: "Private Key",
- smtpDkimHashAlgo: "Hash Algorithm (Optional)",
- smtpDkimheaderFieldNames: "Header Keys to sign (Optional)",
- smtpDkimskipFields: "Header Keys not to sign (Optional)",
- wayToGetPagerDutyKey: "You can get this by going to Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Here you can search for \"Events API V2\". More info {0}",
- "Integration Key": "Integration Key",
- "Integration URL": "Integration URL",
- "Auto resolve or acknowledged": "Auto resolve or acknowledged",
- "do nothing": "do nothing",
- "auto acknowledged": "auto acknowledged",
- "auto resolve": "auto resolve",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "Environment",
- alertaApiKey: "API Key",
- alertaAlertState: "Alert State",
- alertaRecoverState: "Recover State",
- deleteStatusPageMsg: "Are you sure want to delete this status page?",
- Proxies: "Proxies",
- default: "Default",
- enabled: "Enabled",
- setAsDefault: "Set As Default",
- deleteProxyMsg: "Are you sure want to delete this proxy for all monitors?",
- proxyDescription: "Proxies must be assigned to a monitor to function.",
- enableProxyDescription: "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.",
- setAsDefaultProxyDescription: "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.",
- "Certificate Chain": "Certificate Chain",
- Valid: "Valid",
- Invalid: "Invalid",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Sms template must contain parameters: ",
- "Bark Endpoint": "Bark Endpoint",
- "Bark Group": "Bark Group",
- "Bark Sound": "Bark Sound",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "For safety, must use secret key",
- "Device Token": "Device Token",
- Platform: "Platform",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "High",
- Retry: "Retry",
- Topic: "Topic",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "Setup Proxy",
- "Proxy Protocol": "Proxy Protocol",
- "Proxy Server": "Proxy Server",
- "Proxy server has authentication": "Proxy server has authentication",
- User: "User",
- Installed: "Installed",
- "Not installed": "Not installed",
- Running: "Running",
- "Not running": "Not running",
- "Remove Token": "Remove Token",
- Start: "Start",
- Stop: "Stop",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Add New Status Page",
- Slug: "Slug",
- "Accept characters:": "Accept characters:",
- startOrEndWithOnly: "Start or end with {0} only",
- "No consecutive dashes": "No consecutive dashes",
- Next: "Next",
- "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.",
- "No Proxy": "No Proxy",
- Authentication: "Authentication",
- "HTTP Basic Auth": "HTTP Basic Auth",
- "New Status Page": "New Status Page",
- "Page Not Found": "Page Not Found",
- "Reverse Proxy": "Reverse Proxy",
- Backup: "Backup",
- About: "About",
- wayToGetCloudflaredURL: "(Download cloudflared from {0})",
- cloudflareWebsite: "Cloudflare Website",
- "Message:": "Message:",
- "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.",
- "HTTP Headers": "HTTP Headers",
- "Trust Proxy": "Trust Proxy",
- "Other Software": "Other Software",
- "For example: nginx, Apache and Traefik.": "For example: nginx, Apache and Traefik.",
- "Please read": "Please read",
- "Subject:": "Subject:",
- "Valid To:": "Valid To:",
- "Days Remaining:": "Days Remaining:",
- "Issuer:": "Issuer:",
- "Fingerprint:": "Fingerprint:",
- "No status pages": "No status pages",
- "Domain Name Expiry Notification": "Domain Name Expiry Notification",
- Proxy: "Proxy",
- "Date Created": "Date Created",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP Address",
- onebotMessageType: "OneBot Message Type",
- onebotGroupMessage: "Group",
- onebotPrivateMessage: "Private",
- onebotUserOrGroupId: "Group/User ID",
- onebotSafetyTips: "For safety, must set access token",
- "PushDeer Key": "PushDeer Key",
- "Footer Text": "Footer Text",
- "Show Powered By": "Show Powered By",
- "Domain Names": "Domain Names",
- signedInDisp: "Signed in as {0}",
- signedInDispDisabled: "Auth Disabled.",
- RadiusSecret: "Radius Secret",
- RadiusSecretDescription: "Shared Secret between client and server",
- RadiusCalledStationId: "Called Station Id",
- RadiusCalledStationIdDescription: "Identifier of the called device",
- RadiusCallingStationId: "Calling Station Id",
- RadiusCallingStationIdDescription: "Identifier of the calling device",
- "Certificate Expiry Notification": "Certificate Expiry Notification",
- "API Username": "API Username",
- "API Key": "API Key",
- "Recipient Number": "Recipient Number",
- "From Name/Number": "From Name/Number",
- "Leave blank to use a shared sender number.": "Leave blank to use a shared sender number.",
- "Octopush API Version": "Octopush API Version",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "endpoint",
- octopushAPIKey: "\"API key\" from HTTP API credentials in control panel",
- octopushLogin: "\"Login\" from HTTP API credentials in control panel",
- promosmsLogin: "API Login Name",
- promosmsPassword: "API Password",
- "pushoversounds pushover": "Pushover (default)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "Vibrate Only",
- "pushoversounds none": "None (silent)",
- pushyAPIKey: "Secret API Key",
- pushyToken: "Device token",
- "Show update if available": "Show update if available",
- "Also check beta release": "Also check beta release",
- "Using a Reverse Proxy?": "Using a Reverse Proxy?",
- "Check how to config it for WebSocket": "Check how to config it for WebSocket",
- "Steam Game Server": "Steam Game Server",
- "Most likely causes:": "Most likely causes:",
- "The resource is no longer available.": "The resource is no longer available.",
- "There might be a typing error in the address.": "There might be a typing error in the address.",
- "What you can try:": "What you can try:",
- "Retype the address.": "Retype the address.",
- "Go back to the previous page.": "Go back to the previous page.",
- "Coming Soon": "Coming Soon",
- wayToGetClickSendSMSToken: "You can get API Username and API Key from {0} .",
- "Connection String": "Connection String",
- Query: "Query",
- settingsCertificateExpiry: "TLS Certificate Expiry",
- certificationExpiryDescription: "HTTPS Monitors trigger notification when TLS certificate expires in:",
- "Setup Docker Host": "Setup Docker Host",
- "Connection Type": "Connection Type",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "Are you sure want to delete this docker host for all monitors?",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker Container",
- "Container Name / ID": "Container Name / ID",
- "Docker Host": "Docker Host",
- "Docker Hosts": "Docker Hosts",
- "ntfy Topic": "ntfy Topic",
- Domain: "Domain",
- Workstation: "Workstation",
- disableCloudflaredNoAuthMsg: "You are in No Auth mode, a password is not required.",
- trustProxyDescription: "Trust 'X-Forwarded-*' headers. If you want to get the correct client IP and your Uptime Kuma is behind such as Nginx or Apache, you should enable this.",
- wayToGetLineNotifyToken: "You can get an access token from {0}",
- Examples: "Examples",
- "Home Assistant URL": "Home Assistant URL",
- "Long-Lived Access Token": "Long-Lived Access Token",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ",
- "Notification Service": "Notification Service",
- "default: notify all devices": "default: notify all devices",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.",
- "Automations can optionally be triggered in Home Assistant:": "Automations can optionally be triggered in Home Assistant:",
- "Trigger type:": "Trigger type:",
- "Event type:": "Event type:",
- "Event data:": "Event data:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Then choose an action, for example switch the scene to where an RGB light is red.",
- "Frontend Version": "Frontend Version",
- "Frontend Version do not match backend version!": "Frontend Version do not match backend version!",
- "Base URL": "Base URL",
- goAlertInfo: "GoAlert is a An open source application for on-call scheduling, automated escalations and notifications (like SMS or voice calls). Automatically engage the right person, the right way, and at the right time! {0}",
- goAlertIntegrationKeyInfo: "Get generic API integration key for the service in this format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" usually the value of token parameter of copied URL.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Deprecated: Since a lot of features added and this backup feature is a bit unmaintained, it cannot generate or restore a complete backup.",
- backupRecommend: "Please backup the volume or the data folder (./data/) directly instead.",
- Optional: "Optional",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "SMSManager API Docs ",
- "Gateway Type": "Gateway Type",
- SMSManager: "SMSManager",
- "You can divide numbers with": "You can divide numbers with",
- or: "or",
- recurringInterval: "Interval",
- Recurring: "Recurring",
- strategyManual: "Active/Inactive Manually",
- warningTimezone: "It is using the server's timezone",
- weekdayShortMon: "Mon",
- weekdayShortTue: "Tue",
- weekdayShortWed: "Wed",
- weekdayShortThu: "Thu",
- weekdayShortFri: "Fri",
- weekdayShortSat: "Sat",
- weekdayShortSun: "Sun",
- dayOfWeek: "Day of Week",
- dayOfMonth: "Day of Month",
- lastDay: "Last Day",
- lastDay1: "Last Day of Month",
- lastDay2: "2nd Last Day of Month",
- lastDay3: "3rd Last Day of Month",
- lastDay4: "4th Last Day of Month",
- "No Maintenance": "No Maintenance",
- pauseMaintenanceMsg: "Are you sure want to pause?",
- "maintenanceStatus-under-maintenance": "Under Maintenance",
- "maintenanceStatus-inactive": "Inactive",
- "maintenanceStatus-scheduled": "Scheduled",
- "maintenanceStatus-ended": "Ended",
- "maintenanceStatus-unknown": "Unknown",
- "Display Timezone": "Display Timezone",
- "Server Timezone": "Server Timezone",
- statusPageMaintenanceEndDate: "End",
- IconUrl: "Icon URL",
- "Enable DNS Cache": "Enable DNS Cache",
- Enable: "Enable",
- Disable: "Disable",
- dnsCacheDescription: "It may be not working in some IPv6 environments, disable it if you encounter any issues.",
- "Single Maintenance Window": "Single Maintenance Window",
- "Maintenance Time Window of a Day": "Maintenance Time Window of a Day",
- "Effective Date Range": "Effective Date Range",
- "Schedule Maintenance": "Schedule Maintenance",
- "Date and Time": "Date and Time",
- "DateTime Range": "DateTime Range",
- Strategy: "Strategy",
- "Free Mobile User Identifier": "Free Mobile User Identifier",
- "Free Mobile API Key": "Free Mobile API Key",
- "Enable TLS": "Enable TLS",
- "Proto Service Name": "Proto Service Name",
- "Proto Method": "Proto Method",
- "Proto Content": "Proto Content",
- Economy: "Economy",
- Lowcost: "Lowcost",
- high: "high",
- "General Monitor Type": "General Monitor Type",
- "Passive Monitor Type": "Passive Monitor Type",
- "Specific Monitor Type": "Specific Monitor Type",
- dataRetentionTimeError: "Retention period must be 0 or greater",
- infiniteRetention: "Set to 0 for infinite retention.",
-};
diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js
deleted file mode 100644
index 51327740d..000000000
--- a/src/languages/es-ES.js
+++ /dev/null
@@ -1,209 +0,0 @@
-export default {
- languageName: "Español",
- checkEverySecond: "Comprobar cada {0} segundos.",
- retriesDescription: "Número máximo de intentos antes de que el servicio se marque como CAÍDO y una notificación sea enviada.",
- ignoreTLSError: "Ignorar error TLS/SSL para sitios web HTTPS",
- upsideDownModeDescription: "Invertir el estado. Si el servicio es alcanzable, está CAÍDO.",
- maxRedirectDescription: "Número máximo de direcciones a seguir. Establecer a 0 para deshabilitar.",
- acceptedStatusCodesDescription: "Seleccionar los códigos de estado que se consideran como respuesta exitosa.",
- passwordNotMatchMsg: "La contraseña repetida no coincide.",
- notificationDescription: "Por favor asigna una notificación a el/los monitor(es) para hacerlos funcional(es).",
- keywordDescription: "Palabra clave en HTML plano o respuesta JSON, es sensible a mayúsculas",
- pauseDashboardHome: "Pausado",
- deleteMonitorMsg: "¿Seguro que quieres eliminar este monitor?",
- deleteNotificationMsg: "¿Seguro que quieres eliminar esta notificación para todos los monitores?",
- resolverserverDescription: "Cloudflare es el servidor por defecto, puedes cambiar el servidor de resolución en cualquier momento.",
- rrtypeDescription: "Selecciona el tipo de registro que quieres monitorizar",
- pauseMonitorMsg: "¿Seguro que quieres pausar?",
- Settings: "Ajustes",
- Dashboard: "Panel",
- "New Update": "Nueva actualización",
- Language: "Idioma",
- Appearance: "Apariencia",
- Theme: "Tema",
- General: "General",
- Version: "Versión",
- "Check Update On GitHub": "Comprobar actualizaciones en GitHub",
- List: "Lista",
- Add: "Añadir",
- "Add New Monitor": "Añadir nuevo monitor",
- "Quick Stats": "Estadísticas rápidas",
- Up: "Funcional",
- Down: "Caído",
- Pending: "Pendiente",
- Unknown: "Desconocido",
- Pause: "Pausar",
- Name: "Nombre",
- Status: "Estado",
- DateTime: "Fecha y hora",
- Message: "Mensaje",
- "No important events": "No hay eventos importantes",
- Resume: "Reanudar",
- Edit: "Editar",
- Delete: "Eliminar",
- Current: "Actual",
- Uptime: "Tiempo activo",
- "Cert Exp.": "Caducidad cert.",
- day: "día | días",
- "-day": "-día",
- hour: "hora",
- "-hour": "-hora",
- Response: "Respuesta",
- Ping: "Ping",
- "Monitor Type": "Tipo de monitor",
- Keyword: "Palabra clave",
- "Friendly Name": "Nombre sencillo",
- URL: "URL",
- Hostname: "Nombre del host",
- Port: "Puerto",
- "Heartbeat Interval": "Intervalo de latido",
- Retries: "Reintentos",
- Advanced: "Avanzado",
- "Upside Down Mode": "Modo invertido",
- "Max. Redirects": "Redirecciones máximas",
- "Accepted Status Codes": "Códigos de estado aceptados",
- Save: "Guardar",
- Notifications: "Notificaciones",
- "Not available, please setup.": "No disponible, por favor configúralo.",
- "Setup Notification": "Configurar notificación",
- Light: "Claro",
- Dark: "Oscuro",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Tema - Barra de intervalo de latido",
- Normal: "Normal",
- Bottom: "Abajo",
- None: "Ninguno",
- Timezone: "Zona horaria",
- "Search Engine Visibility": "Visibilidad motor de búsqueda",
- "Allow indexing": "Permitir indexación",
- "Discourage search engines from indexing site": "Disuadir a los motores de búsqueda de indexar el sitio",
- "Change Password": "Cambiar contraseña",
- "Current Password": "Contraseña actual",
- "New Password": "Nueva contraseña",
- "Repeat New Password": "Repetir nueva contraseña",
- "Update Password": "Actualizar contraseña",
- "Disable Auth": "Deshabilitar autenticación",
- "Enable Auth": "Habilitar autenticación",
- "disableauth.message1": "Seguro que deseas deshabilitar la autenticación ?",
- "disableauth.message2": "Es para quien implementa autenticación de terceros ante Uptime Kuma como por ejemplo Cloudflare Access.",
- "Please use this option carefully!": "Por favor usar con cuidado.",
- Logout: "Cerrar sesión",
- Leave: "Salir",
- "I understand, please disable": "Entiendo, por favor deshabilitar",
- Confirm: "Confirmar",
- Yes: "Sí",
- No: "No",
- Username: "Usuario",
- Password: "Contraseña",
- "Remember me": "Recordarme",
- Login: "Acceso",
- "No Monitors, please": "Sin monitores, por favor",
- "add one": "añade uno",
- "Notification Type": "Tipo de notificación",
- Email: "Email",
- Test: "Test",
- "Certificate Info": "Información del certificado",
- "Resolver Server": "Servidor de resolución",
- "Resource Record Type": "Tipo de registro",
- "Last Result": "Último resultado",
- "Create your admin account": "Crea tu cuenta de administrador",
- "Repeat Password": "Repetir contraseña",
- respTime: "Tiempo de resp. (ms)",
- notAvailableShort: "N/A",
- Create: "Crear",
- clearEventsMsg: "¿Estás seguro de que deseas eliminar todos los eventos de este monitor?",
- clearHeartbeatsMsg: "¿Estás seguro de que deseas eliminar todos los latidos de este monitor?",
- confirmClearStatisticsMsg: "¿Estás seguro de que deseas eliminar TODAS las estadísticas?",
- "Clear Data": "Borrar datos",
- Events: "Eventos",
- Heartbeats: "Latidos",
- "Auto Get": "Obtener automáticamente",
- enableDefaultNotificationDescription: "Para cada nuevo monitor, esta notificación estará habilitada de forma predeterminada. Aún puedes deshabilitar la notificación por separado para cada monitor.",
- "Default enabled": "Habilitado por defecto",
- "Also apply to existing monitors": "También se aplica a monitores existentes",
- Export: "Exportar",
- Import: "Importar",
- backupDescription: "Puedes hacer una copia de seguridad de todos los monitores y todas las notificaciones en un archivo JSON.",
- backupDescription2: "PD: el historial y los datos de eventos no están incluidos.",
- backupDescription3: "Los datos confidenciales, como los tokens de notificación, se incluyen en el archivo de exportación. Guárdalo con cuidado.",
- alertNoFile: "Selecciona un archivo para importar.",
- alertWrongFileType: "Selecciona un archivo JSON.",
- twoFAVerifyLabel: "Ingresa tu token para verificar que 2FA está funcionando",
- tokenValidSettingsMsg: "¡El token es válido! Ahora puedes guardar la configuración de 2FA.",
- confirmEnableTwoFAMsg: "¿Estás seguro de que quieres habilitar 2FA?",
- confirmDisableTwoFAMsg: "¿Estás seguro de que quieres desactivar 2FA?",
- "Apply on all existing monitors": "Aplicar en todos los monitores existentes",
- "Verify Token": "Verificar token",
- "Setup 2FA": "Configurar 2FA",
- "Enable 2FA": "Habilitar 2FA",
- "Disable 2FA": "Desactivar 2FA",
- "2FA Settings": "Ajustes 2FA",
- "Two Factor Authentication": "Autenticación de dos factores",
- Active: "Activo",
- Inactive: "Inactivo",
- Token: "Token",
- "Show URI": "Mostrar URI",
- "Clear all statistics": "Borrar todas las estadísticas",
- retryCheckEverySecond: "Reintentar cada {0} segundo.",
- importHandleDescription: "Elige 'Omitir existente' si deseas omitir todos los monitores o notificaciones con el mismo nombre. 'Sobrescribir' eliminará todos los monitores y notificaciones existentes.",
- confirmImportMsg: "¿Estás seguro de importar la copia de seguridad? Asegúrate de haber seleccionado la opción de importación correcta.",
- "Heartbeat Retry Interval": "Intervalo de reintento de latido",
- "Import Backup": "Importar copia de seguridad",
- "Export Backup": "Exportar copia de seguridad",
- "Skip existing": "Omitir existente",
- Overwrite: "Sobrescribir",
- Options: "Opciones",
- "Keep both": "Manténer ambos",
- Tags: "Etiquetas",
- "Add New below or Select...": "Agregar nuevo a continuación o seleccionar...",
- "Tag with this name already exist.": "Una etiqueta con este nombre ya existe.",
- "Tag with this value already exist.": "Una etiqueta con este valor ya existe.",
- color: "color",
- "value (optional)": "valor (opcional)",
- Gray: "Gris",
- Red: "Rojo",
- Orange: "Naranja",
- Green: "Verde",
- Blue: "Azul",
- Indigo: "Índigo",
- Purple: "Morado",
- Pink: "Rosa",
- "Search...": "Buscar...",
- "Avg. Ping": "Ping promedio",
- "Avg. Response": "Respuesta promedio",
- "Entry Page": "Página de entrada",
- statusPageNothing: "No hay nada aquí, agrega un grupo o un monitor.",
- "No Services": "Sin servicio",
- "All Systems Operational": "Todos los sistemas están operativos",
- "Partially Degraded Service": "Servicio parcialmente degradado",
- "Degraded Service": "Servicio degradado",
- "Add Group": "Agregar grupo",
- "Add a monitor": "Agregar un monitor",
- "Edit Status Page": "Editar página de estado",
- "Go to Dashboard": "Ir al panel de control",
- "Status Page": "Página de estado",
- "Status Pages": "Páginas de estado",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Admite más de 50 servicios de notificación)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "Monitor History": "Historial de monitor",
- clearDataOlderThan: "Mantener los datos del historial del monitor durante {0} días.",
- records: "registros",
- "One record": "Un registro",
- steamApiKeyDescription: "Para monitorear un servidor de juegos de Steam, necesitas una clave Steam Web-API. Puedes registrar tu clave API aquí: ",
-};
diff --git a/src/languages/et-EE.js b/src/languages/et-EE.js
deleted file mode 100644
index f581a6994..000000000
--- a/src/languages/et-EE.js
+++ /dev/null
@@ -1,209 +0,0 @@
-export default {
- languageName: "eesti",
- retryCheckEverySecond: "Kontrolli {0} sekundilise vahega.",
- retriesDescription: "Mitu korda tuleb kontrollida, mille järel märkida 'maas' ja saata välja teavitus.",
- ignoreTLSError: "Eira TLS/SSL viga HTTPS veebisaitidel.",
- upsideDownModeDescription: "Käitle teenuse saadavust rikkena, teenuse kättesaamatust töötavaks.",
- maxRedirectDescription: "Suurim arv ümbersuunamisi, millele järgida. 0 ei luba ühtegi ",
- acceptedStatusCodesDescription: "Vali välja HTTP koodid, mida arvestada kõlblikuks.",
- passwordNotMatchMsg: "Salasõnad ei kattu.",
- notificationDescription: "Teavitusteenuse kasutamiseks seo see seirega.",
- keywordDescription: "Jälgi võtmesõna HTML või JSON vastustes. (tõstutundlik)",
- pauseDashboardHome: "Seisatud",
- deleteMonitorMsg: "Kas soovid eemaldada seire?",
- deleteNotificationMsg: "Kas soovid eemaldada selle teavitusteenuse kõikidelt seiretelt?",
- resolverserverDescription: "Cloudflare on vaikimisi pöördserver.",
- rrtypeDescription: "Vali kirje tüüp, mida soovid jälgida.",
- pauseMonitorMsg: "Kas soovid peatada seire?",
- Settings: "Seaded",
- "Status Page": "Ülevaade",
- "Status Pages": "Ülevaated",
- Dashboard: "Töölaud",
- "New Update": "Uuem tarkvara versioon on saadaval.",
- Language: "Keel",
- Appearance: "Välimus",
- Theme: "Teema",
- General: "Üldine",
- Version: "Versioon",
- "Check Update On GitHub": "Otsi uuendusi GitHub'ist",
- List: "Nimekiri",
- Add: "Lisa",
- "Add New Monitor": "Lisa seire",
- "Add a monitor": "Lisa seire",
- "Quick Stats": "Ülevaade",
- Up: "Töökorras",
- Down: "Rikkis",
- Pending: "Määramisel",
- Unknown: "Kahtlast",
- Pause: "Seiska",
- Name: "Nimi",
- Status: "Olek",
- DateTime: "Kuupäev",
- Message: "Tulemus",
- "No important events": "Märkimisväärsed juhtumid puuduvad.",
- Resume: "Taasta",
- Edit: "Muuda",
- Delete: "Eemalda",
- Current: "Hetkeseisund",
- Uptime: "Eluiga",
- "Cert Exp.": "Sert. aegumine",
- day: "päev | päeva",
- "-day": "-päev",
- hour: "tund",
- "-hour": "-tund",
- Response: "Reaktsiooniaeg",
- Ping: "Ping",
- "Monitor Type": "Seire tüüp",
- Keyword: "Võtmesõna",
- "Friendly Name": "Sõbralik nimi",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "Tukse sagedus",
- Retries: "Korduskatsed",
- Advanced: "Rohkem",
- "Upside Down Mode": "Tagurpidi seire",
- "Max. Redirects": "Max. ümbersuunamine",
- "Accepted Status Codes": "Kõlblikud HTTP koodid",
- Save: "Salvesta",
- Notifications: "Teavitused",
- "Not available, please setup.": "Ühtegi teavitusteenust pole saadaval.",
- "Setup Notification": "Lisa teavitusteenus",
- Light: "hele",
- Dark: "tume",
- Auto: "automaatne",
- "Theme - Heartbeat Bar": "Teemasäte — tuksete riba",
- Normal: "tavaline",
- Bottom: "all",
- None: "puudub",
- Timezone: "Ajatsoon",
- "Search Engine Visibility": "Otsimootorite ligipääs",
- "Allow indexing": "Luba indekseerimine",
- "Discourage search engines from indexing site": "Keela selle saidi indekseerimine otsimootorite poolt",
- "Change Password": "Muuda parooli",
- "Current Password": "praegune parool",
- "New Password": "uus parool",
- "Repeat New Password": "korda salasõna",
- "Update Password": "Uuenda salasõna",
- "Disable Auth": "Lülita autentimine välja",
- "Enable Auth": "Lülita autentimine sisse",
- "disableauth.message1": "Kas soovid lülitada autentimise välja ?",
- "disableauth.message2": "Kastuamiseks välise autentimispakkujaga , näiteks Cloudflare Access.",
- "Please use this option carefully!": "Palun kasuta vastutustundlikult.",
- Logout: "Logi välja",
- Leave: "Lahku",
- "I understand, please disable": "Olen tutvunud riskidega, lülita välja",
- Confirm: "Kinnita",
- Yes: "Jah",
- No: "Ei",
- Username: "kasutajanimi",
- Password: "parool",
- "Remember me": "Mäleta mind",
- Login: "Logi sisse",
- "No Monitors, please": "Seired puuduvad.",
- "add one": "Lisa esimene",
- "Notification Type": "Teavituse tüüp",
- Email: "e-posti aadress",
- Test: "Saada prooviteavitus",
- "Certificate Info": "Sertifikaadi teave",
- "Resolver Server": "Server, mis vastab DNS päringutele.",
- "Resource Record Type": "DNS kirje tüüp",
- "Last Result": "Viimane",
- "Create your admin account": "Admininstraatori konto loomine",
- "Repeat Password": "korda salasõna",
- respTime: "Reageerimisaeg (ms)",
- notAvailableShort: "N/A",
- enableDefaultNotificationDescription: "Kõik järgnevalt lisatud seired kasutavad seda teavitusteenuset. Seiretelt võib teavitusteenuse ühekaupa eemaldada.",
- clearEventsMsg: "Kas soovid seire kõik sündmused kustutada?",
- clearHeartbeatsMsg: "Kas soovid seire kõik tuksed kustutada?",
- confirmClearStatisticsMsg: "Kas soovid TERVE ajaloo kustutada?",
- Export: "Eksport",
- Import: "Import",
- "Default enabled": "Kasuta vaikimisi",
- "Apply on all existing monitors": "Kõik praegused seired hakkavad kasutama seda teavitusteenust",
- Create: "Loo konto",
- "Clear Data": "Eemalda andmed",
- Events: "Sündmused",
- Heartbeats: "Tuksed",
- "Auto Get": "Hangi automaatselt",
- backupDescription: "Varunda kõik seired ja teavitused JSON faili.",
- backupDescription2: "PS: Varukoopia EI sisalda seirete ajalugu ja sündmustikku.",
- backupDescription3: "Varukoopiad sisaldavad teavitusteenusete pääsuvõtmeid.",
- alertNoFile: "Palun lisa fail, mida importida.",
- alertWrongFileType: "Palun lisa JSON-formaadis fail.",
- twoFAVerifyLabel: "2FA kinnitamiseks sisesta pääsukood",
- tokenValidSettingsMsg: "Kood õige. Akna võib sulgeda.",
- confirmEnableTwoFAMsg: "Kas soovid 2FA sisse lülitada?",
- confirmDisableTwoFAMsg: "Kas soovid 2FA välja lülitada?",
- "Verify Token": "Kontrolli",
- "Setup 2FA": "Kaksikautentimise seadistamine",
- "Enable 2FA": "Seadista 2FA",
- "Disable 2FA": "Lülita 2FA välja",
- "2FA Settings": "2FA seaded",
- "Two Factor Authentication": "Kaksikautentimine",
- Active: "kasutusel",
- Inactive: "seadistamata",
- Token: "kaksikautentimise kood",
- "Show URI": "Näita URId",
- "Clear all statistics": "Tühjenda ajalugu",
- importHandleDescription: "'kombineeri' täiendab varukoopiast ja kirjutab üle samanimelised seireid ja teavitusteenused; 'lisa praegustele' jätab olemasolevad puutumata; 'asenda' kustutab ja asendab kõik seired ja teavitusteenused.",
- confirmImportMsg: "Käkerdistest hoidumiseks lae enne taastamist alla uus varukoopia. Kas soovid taastada üles laetud?",
- "Heartbeat Retry Interval": "Korduskatsete intervall",
- "Import Backup": "Varukoopia importimine",
- "Export Backup": "Varukoopia eksportimine",
- "Skip existing": "lisa praegustele",
- Overwrite: "asenda",
- Options: "Mestimisviis",
- "Keep both": "kombineeri",
- Tags: "Sildid",
- "Add New below or Select...": "Leia või lisa all uus…",
- "Tag with this name already exist.": "Selle nimega silt on juba olemas.",
- "Tag with this value already exist.": "Selle väärtusega silt on juba olemas.",
- color: "värvus",
- "value (optional)": "väärtus (fakultatiivne)",
- Gray: "hall",
- Red: "punane",
- Orange: "oranž",
- Green: "roheline",
- Blue: "sinine",
- Indigo: "indigo",
- Purple: "lilla",
- Pink: "roosa",
- "Search...": "Otsi…",
- "Avg. Ping": "Keskmine ping",
- "Avg. Response": "Keskmine reaktsiooniaeg",
- "Entry Page": "Avaleht",
- statusPageNothing: "Kippu ega kõppu; siia saab lisada seireid või -gruppe.",
- "No Services": "Teenused puuduvad.",
- "All Systems Operational": "Kõik töökorras",
- "Partially Degraded Service": "Teenuse töö osaliselt häiritud",
- "Degraded Service": "Teenuse töö häiritud",
- "Add Group": "Lisa grupp",
- "Edit Status Page": "Muuda lehte",
- "Go to Dashboard": "Töölauale",
- checkEverySecond: "Kontrolli peale tõrget {0} sekundilise vahega.",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "elektronpost (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (vahendab üle 65 teavitusteenust)",
- pushbullet: "Pushbullet",
- line: "LINE",
- mattermost: "Mattermost",
- alerta: "Alerta",
- alertaApiEndpoint: "API otsik",
- alertaEnvironment: "Keskkond",
- alertaApiKey: "API võti",
- alertaAlertState: "Häireseisund",
- alertaRecoverState: "Taasta algolek",
-};
diff --git a/src/languages/eu.js b/src/languages/eu.js
deleted file mode 100644
index a491c8728..000000000
--- a/src/languages/eu.js
+++ /dev/null
@@ -1,541 +0,0 @@
-export default {
- languageName: "Euskara",
- checkEverySecond: "Egiaztatu {0} segunduro",
- retryCheckEverySecond: "Errepikatu {0} segunduro",
- retriesDescription: "Zerbitzua erorita markatu eta jakinarazpena bidali aurretik egindako saiakera kopuru maximoa",
- ignoreTLSError: "Ezikusiarena egin TLS/SSL erroreei HTTPS webguneetan",
- upsideDownModeDescription: "Alderantzizkatu erortze egoera. Zerbitzua martxan badago, ERORITA markatuko du.",
- maxRedirectDescription: "Jarraitu beharreko berbideratze kopuru maximoa. Jarri 0 berbideratzeak desgaitzeko.",
- acceptedStatusCodesDescription: "Hautatu erantzun ona kontsideratzen diren egoera kodeak.",
- passwordNotMatchMsg: "Errepikatutako pasahitza ez dator bat.",
- notificationDescription: "Jakinarazpenak monitorizazio funtzio bati asignatu behar zaizkio.",
- keywordDescription: "Bilatu gako-hitza HTML edo JSON erantzunean. Bilaketan maiuskulak kontuan hartzen dira.",
- pauseDashboardHome: "Gelditu",
- deleteMonitorMsg: "Ziur zaude monitorizazio hau ezabatu nahi duzula?",
- deleteNotificationMsg: "Ziur zaude jakinarazpen hau monitorizazio guztientzat ezabatu nahi duzula?",
- dnsPortDescription: "DNS zerbitzari portua. Defektuz 53. Nahi duzunean aldatu dezakezu portua.",
- resolverserverDescription: "Cloudflare zerbitzari lehenetsia da. Edozein unetan alda dezakezu ebazteko zerbitzaria.",
- rrtypeDescription: "Hautatu kontrolatu nahi duzun RR mota",
- enableDefaultNotificationDescription: "Jakinarazpen hau monitore berrientzat gaituko da defektuz. Baina monitorizazio bakoitzarentzat jakinarazpena desgaitu dezakezu.",
- pauseMonitorMsg: "Ziur zaude gelditu egin nahi duzula?",
- clearEventsMsg: "Ziur zaude monitorizazio honen gertaera guztiak ezabatu nahi dituzula?",
- clearHeartbeatsMsg: "Ziur zaude monitorizazio honen pultsu guztiak ezabatu nahi dituzula?",
- confirmClearStatisticsMsg: "Ziur zaude estatistika GUZTIAK ezabatu nahi dituzula?",
- importHandleDescription: "Aukeratu 'existitzen bada', izen bereko monitore edo jakinarazpen bakoitza saltatu nahi baduzu. Lehendik dauden kontrol eta jakinarazpen guztiak ezabatuko ditu 'Gainidatzi' aukerak.",
- confirmImportMsg: "Ziur zaude segurtasun-kopia inportatu nahi duzula? Egiaztatu inportatzeko aukera zuzena hautatu duzula.",
- twoFAVerifyLabel: "Sartu zure tokena 2FA egiaztatzeko:",
- tokenValidSettingsMsg: "Tokenak balio du! Orain 2FA konfigurazioa gorde dezakezu.",
- confirmEnableTwoFAMsg: "Ziur zaude 2FA gaitu nahi duzula?",
- confirmDisableTwoFAMsg: "Ziur zaude 2FA desgaitu nahi duzula?",
- Settings: "Ezarpenak",
- Dashboard: "Arbela",
- "New Update": "Eguneraketa berria",
- Language: "Hizkuntza",
- Appearance: "Itxura",
- Theme: "Gaia",
- General: "Orokorra",
- "Primary Base URL": "Oinarrizkoa URL",
- Version: "Bertsioa",
- "Check Update On GitHub": "Egiaztatu eguneraketa GitHuben",
- List: "Zerrenda",
- Add: "Gehitu",
- "Add New Monitor": "Gehitu monitorizazio berria",
- "Quick Stats": "Estatistika azkarrak",
- Up: "Erabilgarri",
- Down: "Erorita",
- Pending: "Zain",
- Unknown: "Ezezaguna",
- Pause: "Gelditu",
- Name: "Izena",
- Status: "Egoera",
- DateTime: "Data eta ordua",
- Message: "Mezua",
- "No important events": "Gertaera garrantzitsurik ez",
- Resume: "Jarraitu",
- Edit: "Editatu",
- Delete: "Ezabatu",
- Current: "Unekoa",
- Uptime: "Martxan",
- "Cert Exp.": "Ziurtagiri iraun.",
- day: "egun | egun",
- "-day": "-egun",
- hour: "ordua",
- "-hour": "-ordu",
- Response: "Erantzuna",
- Ping: "Ping",
- "Monitor Type": "Monitorizazio mota",
- Keyword: "Gakohitza",
- "Friendly Name": "Izen xumea",
- URL: "URLa",
- Hostname: "Ostalari izena",
- Port: "Portua",
- "Heartbeat Interval": "Pultsu interbaloak",
- Retries: "Errepikapenak",
- "Heartbeat Retry Interval": "Pultsu errepikatze interbaloak",
- Advanced: "Aurreratua",
- "Upside Down Mode": "Alderantzizkako modua",
- "Max. Redirects": "Berbideratze max.",
- "Accepted Status Codes": "Onartutako egoera kodeak",
- "Push URL": "Push URLa",
- needPushEvery: "URL hau {0} segunduro deitu beharko zenuke.",
- pushOptionalParams: "Hautazko parametroak: {0}",
- Save: "Gorde",
- Notifications: "Jakinarazpenak",
- "Not available, please setup.": "Ez dago eskuragarri, ezarri mesedez.",
- "Setup Notification": "Ezarri jakinarazpenak",
- Light: "Argia",
- Dark: "Iluna",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Gaia - Pultsu barra",
- Normal: "Normala",
- Bottom: "Behean",
- None: "Bat ere ez",
- Timezone: "Timezone",
- "Search Engine Visibility": "Bilatzaile ikurgarritasuna",
- "Allow indexing": "Onartu indexatzea",
- "Discourage search engines from indexing site": "Discourage search engines from indexing site",
- "Change Password": "Aldatu pasahitza",
- "Current Password": "Uneko pasahitza",
- "New Password": "Pasahitz berria",
- "Repeat New Password": "Errepikatu pasahitz berria",
- "Update Password": "Eguneratu pasahitza",
- "Disable Auth": "Desgaitu Auth",
- "Enable Auth": "Gaitu Auth",
- "disableauth.message1": "Ziur zaude autentifikazioa desgaitu nahi duzula?",
- "disableauth.message2": "Egoera jakin batzuetarako diseinatuta dago, Uptime Kumaren aurrean hirugarrengo autentifikazio batzuek jartzeko (Cloudflare Access, Authelia edo beste autentifikazio-mekanismo batzuk).",
- "Please use this option carefully!": "Mesedez, kontuz erabili aukera hau!",
- Logout: "Saioa amaitu",
- Leave: "Utzi",
- "I understand, please disable": "Ulertzen dut, mesedez desgaitu",
- Confirm: "Baieztatu",
- Yes: "Bai",
- No: "Ez",
- Username: "Erabiltzailea",
- Password: "Pasahitza",
- "Remember me": "Gogora nazazu",
- Login: "Saioa hasi",
- "No Monitors, please": "Monitorizaziorik ez, mesedez",
- "add one": "gehitu bat",
- "Notification Type": "Jakinarazpen mota",
- Email: "Emaila",
- Test: "Testa",
- "Certificate Info": "Ziurtagiri informazioa",
- "Resolver Server": "Ebazpen-zerbitzaria",
- "Resource Record Type": "Baliabideen erregistro mota",
- "Last Result": "Azken emaitza",
- "Create your admin account": "Sortu zure admin kontua",
- "Repeat Password": "Errepikatu pasahitza",
- "Import Backup": "segurtasun-kopia inportatu",
- "Export Backup": "segurtasun-kopia esportatu",
- Export: "Esportatu",
- Import: "Inportatu",
- respTime: "Erantz. denbora (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Lehenetsia gaituta",
- "Apply on all existing monitors": "Aplikatu existitzen diren monitorizazio guztietan",
- Create: "Sortu",
- "Clear Data": "Garbitu datuak",
- Events: "Gertaerak",
- Heartbeats: "Pultsuak",
- "Auto Get": "Auto Get",
- backupDescription: "Monitore eta jakinarazpen guztien segurtasun-kopiak egin ditzakezu JSON fitxategi batean.",
- backupDescription2: "Oharra: ez dira historia eta gertaeren datuak sartzen.",
- backupDescription3: "Datu sentikorrak, hala nola jakinarazpen tokenak, esportazio-fitxategian sartzen dira; mesedez, gorde esportazioa modu seguruan.",
- alertNoFile: "Mesedez hautatu inportatzeko fitxategia.",
- alertWrongFileType: "Mesedez hautatu JSON fitxategia.",
- "Clear all statistics": "Garbitu estatistika guztiak",
- "Skip existing": "Saltatu existitzen bada",
- Overwrite: "Gainidatzi",
- Options: "Aukerak",
- "Keep both": "Biak mantendu",
- "Verify Token": "Egiaztatu Tokena",
- "Setup 2FA": "Ezarri 2FA",
- "Enable 2FA": "Gaitu 2FA",
- "Disable 2FA": "Desgaitu 2FA",
- "2FA Settings": "2FA ezarpenak",
- "Two Factor Authentication": "Bi aldetako autentifikazioa (2FA)",
- Active: "Aktibo",
- Inactive: "Inaktibo",
- Token: "Tokena",
- "Show URI": "Erakutsi URIa",
- Tags: "Etiketak",
- "Add New below or Select...": "Gehitu beste bat behean edo hautatu...",
- "Tag with this name already exist.": "Izen hau duen etiketa dagoeneko badago.",
- "Tag with this value already exist.": "Balio hau duen etiketa dagoeneko badago.",
- color: "kolorea",
- "value (optional)": "balioa (hautazkoa)",
- Gray: "Grisa",
- Red: "Gorria",
- Orange: "Naranja",
- Green: "Berdea",
- Blue: "Urdina",
- Indigo: "Indigo",
- Purple: "Morea",
- Pink: "Arrosa",
- "Search...": "Bilatu...",
- "Avg. Ping": "Batazbesteko Pinga",
- "Avg. Response": "Batazbesteko erantzuna",
- "Entry Page": "Sarrera orria",
- statusPageNothing: "Ezer ere ez hemen, mesedez gehitu taldea edo monitorizazioa.",
- "No Services": "Zerbitzurik ez",
- "All Systems Operational": "Sistema guztiak martxan",
- "Partially Degraded Service": "Zerbitzu partzialki degradatua",
- "Degraded Service": "Zerbitzu degradatua",
- "Add Group": "Gehitu taldea",
- "Add a monitor": "Gehitu monitorizazioa",
- "Edit Status Page": "Editatu egoera orria",
- "Go to Dashboard": "Joan arbelera",
- "Status Page": "Egoera orria",
- "Status Pages": "Egoera orriak",
- defaultNotificationName: "Nire {notification} Alerta ({number})",
- here: "Hemen",
- Required: "Beharrezkoa",
- telegram: "Telegram",
- "ZohoCliq": "ZohoCliq",
- "Bot Token": "Bot Tokena",
- wayToGetTelegramToken: "You can get a token from {0}.",
- "Chat ID": "Txat IDa",
- supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID",
- wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:",
- "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE",
- chatIDNotFound: "Chat ID is not found; please send a message to this bot first",
- webhook: "Webhook",
- "Post URL": "Bidalketa URLa",
- "Content Type": "Eduki mota",
- webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js",
- webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}",
- smtp: "Emaila (SMTP)",
- secureOptionNone: "Bat ere ez / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ignore TLS Error",
- "From Email": "Email honetatik",
- emailCustomSubject: "Pertsonalizatutako gaia",
- "To Email": "Email honetara",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook",
- "Bot Display Name": "Bot Display Name",
- "Prefix Custom Message": "Prefix Custom Message",
- "Hello @everyone is...": "Hello {'@'}everyone is...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.",
- wayToGetZohoCliqURL: "You can learn how to create a webhook URL {0}.",
- signal: "Signal",
- Number: "Zenbakia",
- Recipients: "Recipients",
- needSignalAPI: "You need to have a signal client with REST API.",
- wayToCheckSignalURL: "You can check this URL to view how to set one up:",
- signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!",
- gotify: "Gotify",
- "Application Token": "Aplikazio tokena",
- "Server URL": "Zerbitzari URLa",
- Priority: "Lehentasuna",
- slack: "Slack",
- "Icon Emoji": "Emoji ikonoa",
- "Channel Name": "Kanalaren izena",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "More info about Webhooks on: {0}",
- aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel",
- aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.",
- emojiCheatSheet: "Emoji cheat sheet: {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- GoogleChat: "Google Chat (Google Workspace only)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "Erabiltzaile gakoa",
- Device: "Gailua",
- "Message Title": "Mezuaren izenburua",
- "Notification Sound": "Jakinarazpen soinua",
- "More info on:": "More info on: {0}",
- pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.",
- pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.",
- "SMS Type": "SMS mota",
- octopushTypePremium: "Premium (Fast - recommended for alerting)",
- octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)",
- checkPrice: "Check {0} prices:",
- apiCredentials: "API credentials",
- octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?",
- "Check octopush prices": "Check octopush prices {0}.",
- octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ",
- octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Device ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Adibidez: {0}",
- "Read more:": "Irakurri gehiago: {0}",
- "Status:": "Egoera: {0}",
- "Read more": "Irakurri gehiago",
- appriseInstalled: "Apprise instalatuta.",
- appriseNotInstalled: "Apprise ez dago instalatuta. {0}",
- "Access Token": "Access Token",
- "Channel access token": "Channel access token",
- "Line Developers Console": "Line Developers Console",
- lineDevConsoleTo: "Line Developers Console - {0}",
- "Basic Settings": "Oinarrizko ezarpenak",
- "User ID": "Erabiltzaile ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.",
- "Icon URL": "Ikono URL",
- aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.",
- aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.",
- promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.",
- promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.",
- promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).",
- promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)",
- promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "Hasiera zerbitzari URL (with http(s):// and optionally port)",
- "Internal Room Id": "Internal Room ID",
- matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}",
- Method: "Metodoa",
- Body: "Gorputza",
- Headers: "Goiburuak",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "The request headers are not valid JSON: ",
- BodyInvalidFormat: "The request body is not valid JSON: ",
- "Monitor History": "Monitorizazio Historia",
- clearDataOlderThan: "Keep monitor history data for {0} days.",
- PasswordsDoNotMatch: "Pasahitzak ez datoz bat.",
- records: "records",
- "One record": "One record",
- steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ",
- "Current User": "Uneko erabiltzailea",
- topic: "Topic",
- topicExplanation: "MQTT topic to monitor",
- successMessage: "Arrakasta mezua",
- successMessageExplanation: "MQTT message that will be considered as success",
- recent: "Duela gutxikoa",
- Done: "Egina",
- Info: "Info",
- Security: "Segurtasuna",
- "Steam API Key": "Steam API Giltza",
- "Shrink Database": "Shrink Datubasea",
- "Pick a RR-Type...": "Pick a RR-Type...",
- "Pick Accepted Status Codes...": "Hautatu onartutako egoera kodeak...",
- Default: "Lehenetsia",
- "HTTP Options": "HTTP Aukerak",
- "Create Incident": "Sortu inzidentzia",
- Title: "Titulua",
- Content: "Edukia",
- Style: "Estiloa",
- info: "info",
- warning: "kontuz",
- danger: "arriskua",
- error: "errorea",
- critical: "kritikoa",
- primary: "oinarrizkoa",
- light: "argia",
- dark: "iluna",
- Post: "Post",
- "Please input title and content": "Mesedez sartu titulua eta edukia",
- Created: "Sortuta",
- "Last Updated": "Azken eguneratzea",
- Unpin: "Unpin",
- "Switch to Light Theme": "Aldatu gai argira",
- "Switch to Dark Theme": "Aldatu gai ilunera",
- "Show Tags": "Erakutsi etiketak",
- "Hide Tags": "Ezkutatu etiketak",
- Description: "Deskribapena",
- "No monitors available.": "Monitorizaziorik eskuragarri ez.",
- "Add one": "Gehitu bat",
- "No Monitors": "Monitorizaziorik ez",
- "Untitled Group": "Titulurik gabeko taldea",
- Services: "Zerbitzuak",
- Discard: "Baztertu",
- Cancel: "Ezeztatu",
- "Powered by": "Honekin egina:",
- shrinkDatabaseDescription: "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API erabiltzailea (webapi_ aurre-hizkia barne)",
- serwersmsAPIPassword: "API pasahitza",
- serwersmsPhoneNumber: "Telefono zenbakia",
- serwersmsSenderName: "SMS bidaltzaile izena (registered via customer portal)",
- stackfield: "Stackfield",
- Customize: "Pertsonalizatu",
- "Custom Footer": "Oin pertsonalizatua",
- "Custom CSS": "CSS pertsonalizatua",
- smtpDkimSettings: "DKIM ezarpenak",
- smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.",
- documentation: "dokumentazioa",
- smtpDkimDomain: "Domeinu izena",
- smtpDkimKeySelector: "Gako hautatzailea",
- smtpDkimPrivateKey: "Gako pribatua",
- smtpDkimHashAlgo: "Hash algoritmoa (hautazkoa)",
- smtpDkimheaderFieldNames: "Header Keys to sign (Optional)",
- smtpDkimskipFields: "Header Keys not to sign (Optional)",
- wayToGetPagerDutyKey: "You can get this by going to Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Here you can search for \"Events API V2\". More info {0}",
- "Integration Key": "Integration Key",
- "Integration URL": "Integrazio URLa",
- "Auto resolve or acknowledged": "Auto resolve or acknowledged",
- "do nothing": "ez egin ezer",
- "auto acknowledged": "auto acknowledged",
- "auto resolve": "auto resolve",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "Ingurunea",
- alertaApiKey: "API Key",
- alertaAlertState: "Alerta egoera",
- alertaRecoverState: "Berreskuratze egoera",
- deleteStatusPageMsg: "Ziur zaude egoera orri hau ezabatu nahi duzula?",
- Proxies: "Proxiak",
- default: "Lehenetsia",
- enabled: "Gaituta",
- setAsDefault: "Ezarri lehenetsitzat",
- deleteProxyMsg: "Are you sure want to delete this proxy for all monitors?",
- proxyDescription: "Proxies must be assigned to a monitor to function.",
- enableProxyDescription: "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.",
- setAsDefaultProxyDescription: "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.",
- "Certificate Chain": "Certificate Chain",
- Valid: "Baliozkoa",
- Invalid: "Baliogabea",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "TelefonoZenbakiak",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Sms txantiloiak parametroak eduki behar ditu: ",
- "Bark Endpoint": "Bark Endpoint",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "For safety, must use secret key",
- "Device Token": "Gailu tokena",
- Platform: "Plataforma",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Altua",
- Retry: "Errepikatu",
- Topic: "Gaia",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "Ezarri Proxya",
- "Proxy Protocol": "Proxy protokoloa",
- "Proxy Server": "Proxy zerbitzaria",
- "Proxy server has authentication": "Proxy zerbitzariak autentifikazioa dauka",
- User: "Erabiltzailea",
- Installed: "Instalatuta",
- "Not installed": "Instalatu gabe",
- Running: "Martxan",
- "Not running": "Ez martxan",
- "Remove Token": "Ezabatu Tokena",
- Start: "Hasi",
- Stop: "Gelditu",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Gehitu egoera orri berria",
- Slug: "Sluga",
- "Accept characters:": "Onartu karaktereak:",
- startOrEndWithOnly: "Start or end with {0} only",
- "No consecutive dashes": "No consecutive dashes",
- Next: "Hurrengoa",
- "The slug is already taken. Please choose another slug.": "Sluga dagoeneko hartuta dago. Mesedez beste bat hautatu.",
- "No Proxy": "Proxyrik ez",
- Authentication: "Authentication",
- "HTTP Basic Auth": "HTTP oinarrizko Auth",
- "New Status Page": "Egoera orri berria",
- "Page Not Found": "Orria ez da aurkitu",
- "Reverse Proxy": "Alderantzizkako Proxya",
- Backup: "Backup",
- About: "Honi buruz",
- wayToGetCloudflaredURL: "(Download cloudflared from {0})",
- cloudflareWebsite: "Cloudflare webgunea",
- "Message:": "Mezua:",
- "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.",
- "Other Software": "Beste softwarea",
- "For example: nginx, Apache and Traefik.": "Adibidez: nginx, Apache and Traefik.",
- "Please read": "Mesedez irakurri",
- "Subject:": "Gaia:",
- "Valid To:": "Balio-epea:",
- "Days Remaining:": "Egun faltan:",
- "Issuer:": "Issuer:",
- "Fingerprint:": "Hatzmarka:",
- "No status pages": "Egoera orririk ez",
- "Domain Name Expiry Notification": "Domeinu izen iraungitze jakinarazpena",
- Proxy: "Proxya",
- "Date Created": "Data sortuta",
- onebotHttpAddress: "OneBot HTTP helbidea",
- onebotMessageType: "OneBot mezu mota",
- onebotGroupMessage: "Taldea",
- onebotPrivateMessage: "Pribatua",
- onebotUserOrGroupId: "Talde/Erabiltzaile IDa",
- onebotSafetyTips: "For safety, must set access token",
- "PushDeer Key": "PushDeer Key",
- "Footer Text": "Oineko testua",
- "Show Powered By": "Erakutsi Honekin egina:",
- "Domain Names": "Domeinu izenak",
- signedInDisp: "Signed in as {0}",
- signedInDispDisabled: "Auth desgaituta.",
- "Certificate Expiry Notification": "Zertifikatu iraungitze jakinarazpena",
- "API Username": "API Erabiltzailea",
- "API Key": "API Gakoa",
- "Recipient Number": "Recipient Number",
- "From Name/Number": "From Name/Number",
- "Leave blank to use a shared sender number.": "Leave blank to use a shared sender number.",
- "Octopush API Version": "Octopush API Version",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "endpoint",
- octopushAPIKey: "\"API key\" from HTTP API credentials in control panel",
- octopushLogin: "\"Login\" from HTTP API credentials in control panel",
- promosmsLogin: "API Saio haste izena",
- promosmsPassword: "API Pasahitza",
- "pushoversounds pushover": "Pushover (defektuz)",
- "pushoversounds bike": "Bizikleta",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Klasikoa",
- "pushoversounds cosmic": "Kosmikoa",
- "pushoversounds falling": "Erortzen",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magia",
- "pushoversounds mechanical": "Mekanikoa",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Sirena",
- "pushoversounds spacealarm": "Espazio Alarma",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "Bibrazioa soilik",
- "pushoversounds none": "Bat ere ez (isilik)",
- pushyAPIKey: "Secret API giltza",
- pushyToken: "Gailu tokena",
- "Show update if available": "Erakutsi eguneratzea eskuragarri badago",
- "Also check beta release": "Beta bertsioak ere egiaztatu",
- "Using a Reverse Proxy?": "Proxy alderantzizkako zerbitzaria erabiltzen?",
- "Check how to config it for WebSocket": "Check how to config it for WebSocket",
- "Steam Game Server": "Steam joko zerbitzaria",
- "Most likely causes:": "Arrazoi probableenak:",
- "The resource is no longer available.": "Baliabidea ez dago erabilgarri.",
- "There might be a typing error in the address.": "Idazketa-akats bat egon daiteke helbidean.",
- "What you can try:": "Probatu dezakezuna:",
- "Retype the address.": "Berridatzi helbidea.",
- "Go back to the previous page.": "Itzuli aurreko orrialdera",
- "Coming Soon": "Laster",
- wayToGetClickSendSMSToken: "API erabiltzailea and API giltza hemendik lortu ditzakezu: {0} .",
- "Connection String": "Konexio katea",
- Query: "Kontsulta",
- settingsCertificateExpiry: "TLS irungitze zertifikatua",
- certificationExpiryDescription: "HTTPS Monitorizazio jakinarazpena martxan jarri TLS zertifikatua iraungitzeko hau falta denean:",
- "ntfy Topic": "ntfy Topic",
- Domain: "Domeinua",
- Workstation: "Lan gunea",
- disableCloudflaredNoAuthMsg: "Ez Auth moduan zaude, pasahitza ez da beharrezkoa.",
-};
diff --git a/src/languages/fa.js b/src/languages/fa.js
deleted file mode 100644
index 528451920..000000000
--- a/src/languages/fa.js
+++ /dev/null
@@ -1,208 +0,0 @@
-export default {
- languageName: "Farsi",
- checkEverySecond: "بررسی هر {0} ثانیه.",
- retryCheckEverySecond: "تکرار مجدد هر {0} ثانیه.",
- retriesDescription: "حداکثر تعداد تکرار پیش از علامت گذاری وبسایت بعنوان خارج از دسترس و ارسال اطلاعرسانی.",
- ignoreTLSError: "بیخیال ارور TLS/SSL برای سایتهای HTTPS",
- upsideDownModeDescription: "نتیجه وضعیت را برعکس کن، مثلا اگر سرویس در دسترس بود فرض کن که سرویس پایین است!",
- maxRedirectDescription: "حداکثر تعداد ریدایرکتی که سرویس پشتیبانی کند. برای اینکه ریدایرکتها پشتیبانی نشوند، عدد 0 را وارد کنید.",
- acceptedStatusCodesDescription: "لطفا HTTP Status Code هایی که میخواهید به عنوان پاسخ موفقیت آمیز در نظر گرفته شود را انتخاب کنید.",
- passwordNotMatchMsg: "تکرار رمز عبور مطابقت ندارد!",
- notificationDescription: "برای اینکه سرویس اطلاعرسانی کار کند، آنرا به یکی از مانیتورها متصل کنید.",
- keywordDescription: "در نتیجه درخواست (اهمیتی ندارد پاسخ JSON است یا HTML) بدنبال این کلمه بگرد (حساس به کوچک/بزرگ بودن حروف).",
- pauseDashboardHome: "متوقف شده",
- deleteMonitorMsg: "آیا از حذف این مانیتور مطمئن هستید؟",
- deleteNotificationMsg: "آیا مطمئن هستید که میخواهید این سرویس اطلاعرسانی را برای تمامی مانیتورها حذف کنید؟",
- resolverserverDescription: "سرویس CloudFlare به عنوان سرور پیشفرض استفاده میشود، شما میتوانید آنرا به هر سرور دیگری بعدا تغییر دهید.",
- rrtypeDescription: "لطفا نوع Resource Record را انتخاب کنید.",
- pauseMonitorMsg: "آیا مطمئن هستید که میخواهید این مانیتور را متوقف کنید ؟",
- enableDefaultNotificationDescription: "برای هر مانیتور جدید، این سرویس اطلاعرسانی به صورت پیشفرض فعال خواهد شد. البته که شما میتوانید به صورت دستی آنرا برای هر مانیتور به صورت جداگانه غیر فعال کنید.",
- clearEventsMsg: "آیا از اینکه تمامی تاریخچه رویدادهای این مانیتور حذف شود مطمئن هستید؟",
- clearHeartbeatsMsg: "آیا از اینکه تاریخچه تمامی Heartbeat های این مانیتور حذف شود مطمئن هستید؟ ",
- confirmClearStatisticsMsg: "آیا از حذف تمامی آمار و ارقام مطمئن هستید؟",
- importHandleDescription: " اگر که میخواهید بیخیال مانیتورها و یا سرویسهای اطلاعرسانی که با نام مشابه از قبل موجود هستند شوید، گزینه 'بیخیال موارد ..' را انتخاب کنید. توجه کنید که گزینه 'بازنویسی' تمامی موارد موجود با نام مشابه را از بین خواهد برد.",
- confirmImportMsg: "آیا از بازگردانی بک آپ مطمئن هستید؟ لطفا از اینکه نوع بازگردانی درستی را انتخاب کردهاید اطمینان حاصل کنید!",
- twoFAVerifyLabel: "لطفا جهت اطمینان از عملکرد احراز هویت دو مرحلهای توکن خود را وارد کنید!",
- tokenValidSettingsMsg: "توکن شما معتبر است، هم اکنون میتوانید احراز هویت دو مرحلهای را فعال کنید!",
- confirmEnableTwoFAMsg: " آیا از فعال سازی احراز هویت دو مرحلهای مطمئن هستید؟",
- confirmDisableTwoFAMsg: "آیا از غیرفعال سازی احراز هویت دومرحلهای مطمئن هستید؟",
- Settings: "تنظیمات",
- Dashboard: "پیشخوان",
- "New Update": "بروزرسانی جدید!",
- Language: "زبان",
- Appearance: "ظاهر",
- Theme: "پوسته",
- General: "عمومی",
- Version: "نسخه",
- "Check Update On GitHub": "بررسی بروزرسانی بر روی گیتهاب",
- List: "لیست",
- Add: "اضافه",
- "Add New Monitor": "اضافه کردن مانیتور جدید",
- "Quick Stats": "خلاصه وضعیت",
- Up: "فعال",
- Down: "غیرفعال",
- Pending: "در انتظار تایید",
- Unknown: "نامشخص",
- Pause: "توقف",
- Name: "نام",
- Status: "وضعیت",
- DateTime: "تاریخ و زمان",
- Message: "پیام",
- "No important events": "رخداد جدیدی موجود نیست.",
- Resume: "ادامه",
- Edit: "ویرایش",
- Delete: "حذف",
- Current: "فعلی",
- Uptime: "آپتایم",
- "Cert Exp.": "تاریخ انقضای SSL",
- day: "روز",
- "-day": "-روز",
- hour: "ساعت",
- "-hour": "-ساعت",
- Response: "پاسخ",
- Ping: "Ping",
- "Monitor Type": "نوع مانیتور",
- Keyword: "کلمه کلیدی",
- "Friendly Name": "عنوان",
- URL: "آدرس (URL)",
- Hostname: "نام میزبان (Hostname)",
- Port: "پورت",
- "Heartbeat Interval": "فاصله هر Heartbeat",
- Retries: "تلاش مجدد",
- "Heartbeat Retry Interval": "فاصله تلاش مجدد برایHeartbeat",
- Advanced: "پیشرفته",
- "Upside Down Mode": "حالت بر عکس",
- "Max. Redirects": "حداکثر تعداد ریدایرکت",
- "Accepted Status Codes": "وضعیتهای (Status Code) های قابل قبول",
- Save: "ذخیره",
- Notifications: "اطلاعرسانیها",
- "Not available, please setup.": "هیچ موردی موجود نیست، اولین مورد را راه اندازی کنید!",
- "Setup Notification": "راه اندازی اطلاعرسانی",
- Light: "روشن",
- Dark: "تاریک",
- Auto: "اتوماتیک",
- "Theme - Heartbeat Bar": "ظاهر نوار Heartbeat",
- Normal: "معمولی",
- Bottom: "پایین",
- None: "هیچ کدام",
- Timezone: "موقعیت زمانی",
- "Search Engine Visibility": "قابلیت دسترسی برای موتورهای جستجو",
- "Allow indexing": "اجازه ایندکس شدن را بده.",
- "Discourage search engines from indexing site": "به موتورهای جستجو اجازه ایندکس کردن این سامانه را نده.",
- "Change Password": "تغییر رمزعبور",
- "Current Password": "رمزعبور فعلی",
- "New Password": "رمزعبور جدید",
- "Repeat New Password": "تکرار رمزعبور جدید",
- "Update Password": "بروز رسانی رمز عبور",
- "Disable Auth": "غیر فعال سازی تایید هویت",
- "Enable Auth": "فعال سازی تایید هویت",
- "disableauth.message1": "آیا مطمئن هستید که میخواهید احراز هویت را غیر فعال کنید ?",
- "disableauth.message2": "این ویژگی برای کسانی است که لایه امنیتی شخص ثالث دیگر بر روی این آدرس فعال کردهاند ، مانند Cloudflare Access.",
- "Please use this option carefully!": "لطفا از این امکان با دقت استفاده کنید.",
- Logout: "خروج",
- Leave: "منصرف شدم",
- "I understand, please disable": "متوجه هستم، لطفا غیرفعال کنید!",
- Confirm: "تایید",
- Yes: "بلی",
- No: "خیر",
- Username: "نام کاربری",
- Password: "کلمه عبور",
- "Remember me": "مراب هب خاطر بسپار",
- Login: "ورود",
- "No Monitors, please": "هیچ مانیتوری موجود نیست، لطفا",
- "add one": "یک مورد اضافه کنید",
- "Notification Type": "نوع اطلاعرسانی",
- Email: "ایمیل",
- Test: "تست",
- "Certificate Info": "اطلاعات سرتیفیکت",
- "Resolver Server": "سرور Resolver",
- "Resource Record Type": "نوع رکورد (Resource Record Type)",
- "Last Result": "آخرین نتیجه",
- "Create your admin account": "ایجاد حساب کاربری مدیر",
- "Repeat Password": "تکرار رمز عبور",
- "Import Backup": "بازگردانی فایل پشتیبان",
- "Export Backup": "ذخیره فایل پشتیبان",
- Export: "استخراج اطلاعات",
- Import: "ورود اطلاعات",
- respTime: "زمان پاسخگویی (میلیثانیه)",
- notAvailableShort: "ناموجود",
- "Default enabled": "به صورت پیشفرض فعال باشد.",
- "Apply on all existing monitors": "بر روی تمامی مانیتورهای فعلی اعمال شود.",
- Create: "ایجاد",
- "Clear Data": "پاکسازی دادهها",
- Events: "رخدادها",
- Heartbeats: "Heartbeats",
- "Auto Get": "Auto Get",
- backupDescription: "شما میتوانید تمامی مانیتورها و تنظیمات اطلاعرسانیها را در قالب یه فایل JSON دریافت کنید.",
- backupDescription2: "البته تاریخچه رخدادها دراین فایل قرار نخواهند داشت.",
- backupDescription3: "توجه داشته باشید که تمامی اطلاعات حساس شما مانند توکنها نیز در این فایل وجود خواهد داشت ، پس از این فایل به خوبی مراقبت کنید.",
- alertNoFile: "لطفا یک فایل برای «ورود اطلاعات» انتخاب کنید..",
- alertWrongFileType: "یک فایل JSON انتخاب کنید.",
- "Clear all statistics": "پاکسازی تمامی آمار و ارقام",
- "Skip existing": "بیخیال مواردی که از قبل موجود است",
- Overwrite: "بازنویسی",
- Options: "تنظیمات",
- "Keep both": "هر دو را نگه دار",
- "Verify Token": "تایید توکن",
- "Setup 2FA": "تنظیمات احراز دو مرحلهای",
- "Enable 2FA": "فعال سازی احراز 2 مرحلهای",
- "Disable 2FA": "غیر فعال کردن احراز 2 مرحلهای",
- "2FA Settings": "تنظیمات احراز 2 مرحلهای",
- "Two Factor Authentication": "احراز هویت دومرحلهای",
- Active: "فعال",
- Inactive: "غیرفعال",
- Token: "توکن",
- "Show URI": "نمایش آدرس (URI) ",
- Tags: "برچسبها",
- "Add New below or Select...": "یک مورد جدید اضافه کنید و یا از لیست انتخاب کنید...",
- "Tag with this name already exist.": "یک برچسب با این «نام» از قبل وجود دارد",
- "Tag with this value already exist.": "یک برچسب با این «مقدار» از قبل وجود دارد.",
- color: "رنگ",
- "value (optional)": "مقدار (اختیاری)",
- Gray: "خاکستری",
- Red: "قرمز",
- Orange: "نارنجی",
- Green: "سبز",
- Blue: "آبی",
- Indigo: "نیلی",
- Purple: "بنفش",
- Pink: "صورتی",
- "Search...": "جستجو...",
- "Avg. Ping": "متوسط پینگ",
- "Avg. Response": "متوسط زمان پاسخ",
- "Entry Page": "صفحه ورودی",
- statusPageNothing: "چیزی اینجا نیست، لطفا یک گروه و یا یک مانیتور اضافه کنید!",
- "No Services": "هیچ سرویسی موجود نیست",
- "All Systems Operational": "تمامی سیستمها عملیاتی هستند!",
- "Partially Degraded Service": "افت نسبی کیفیت سرویس",
- "Degraded Service": "افت کامل کیفیت سرویس",
- "Add Group": "اضافه کردن گروه",
- "Add a monitor": "اضافه کردن مانیتور",
- "Edit Status Page": "ویرایش صفحه وضعیت",
- "Status Page": "صفحه وضعیت",
- "Status Pages": "صفحه وضعیت",
- "Go to Dashboard": "رفتن به پیشخوان",
- "Uptime Kuma": "آپتایم کوما",
- records: "مورد",
- "One record": "یک مورد",
- Info: "اطلاعات",
- "Powered by": "نیرو گرفته از",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
-};
diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js
deleted file mode 100644
index 6a6323a96..000000000
--- a/src/languages/fr-FR.js
+++ /dev/null
@@ -1,678 +0,0 @@
-export default {
- languageName: "Français",
- checkEverySecond: "Vérifier toutes les {0} secondes",
- retryCheckEverySecond: "Réessayer toutes les {0} secondes",
- resendEveryXTimes: "Renvoyez toutes les {0} fois",
- resendDisabled: "Renvoi désactivé",
- retriesDescription: "Nombre d'essais avant que le service ne soit déclaré hors ligne et qu'une notification soit envoyée.",
- ignoreTLSError: "Ignorer les erreurs liées au certificat SSL/TLS",
- upsideDownModeDescription: "Si le service est en ligne, il sera alors noté hors ligne et vice-versa.",
- maxRedirectDescription: "Nombre maximal de redirections avant que le service ne soit marqué comme hors ligne.",
- enableGRPCTls: "Autoriser l'envoi d'une requête gRPC avec une connexion TLS",
- grpcMethodDescription: "Le nom de la méthode est converti au format CamelCase tel que sayHello, check, etc.",
- acceptedStatusCodesDescription: "Codes HTTP qui considèrent le service comme étant disponible.",
- Maintenance: "Maintenance",
- statusMaintenance: "Maintenance",
- "Schedule maintenance": "Planifier la maintenance",
- "Affected Monitors": "Sondes concernées",
- "Pick Affected Monitors...": "Sélectionner les sondes concernées...",
- "Start of maintenance": "Début de la maintenance",
- "All Status Pages": "Toutes les pages d'état",
- "Select status pages...": "Sélectionner les pages d'état...",
- recurringIntervalMessage: "Exécuter une fois par jour | Exécuter une fois tous les {0} jours",
- affectedMonitorsDescription: "Sélectionnez les sondes concernées par la maintenance en cours",
- affectedStatusPages: "Afficher ce message de maintenance sur les pages d'état sélectionnées",
- atLeastOneMonitor: "Sélectionnez au moins une sonde concernée",
- passwordNotMatchMsg: "Les mots de passe ne correspondent pas",
- notificationDescription: "Une fois ajoutée, vous devez l'activer manuellement dans les paramètres de vos hôtes.",
- keywordDescription: "Le mot clé sera recherché dans la réponse HTML/JSON reçue du site internet.",
- pauseDashboardHome: "En pause",
- deleteMonitorMsg: "Êtes-vous sûr de vouloir supprimer cette sonde ?",
- deleteMaintenanceMsg: "Voulez-vous vraiment supprimer cette maintenance ?",
- deleteNotificationMsg: "Êtes-vous sûr de vouloir supprimer ce type de notifications ? Une fois désactivée, les services qui l'utilisent ne pourront plus envoyer de notifications.",
- dnsPortDescription: "Port du serveur DNS. La valeur par défaut est 53. Vous pouvez modifier le port à tout moment.",
- resolverserverDescription: "Le DNS de Cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.",
- rrtypeDescription: "Veuillez sélectionner un type d'enregistrement DNS",
- pauseMonitorMsg: "Êtes-vous sûr de vouloir mettre en pause cette sonde ?",
- enableDefaultNotificationDescription: "Pour chaque nouvelle sonde, cette notification sera activée par défaut. Vous pouvez toujours désactiver la notification séparément pour chaque sonde.",
- clearEventsMsg: "Êtes-vous sûr de vouloir supprimer tous les événements pour cette sonde ?",
- clearHeartbeatsMsg: "Êtes-vous sûr de vouloir supprimer toutes les vérifications pour cette sonde ?",
- confirmClearStatisticsMsg: "Êtes-vous sûr de vouloir supprimer toutes les statistiques ?",
- importHandleDescription: "Choisissez « Ignorer l'existant » si vous voulez ignorer chaque sonde ou notification portant le même nom. L'option « Écraser » supprime toutes les sondes et notifications existantes.",
- confirmImportMsg: "Êtes-vous sûr de vouloir importer la sauvegarde ? Veuillez vous assurer que vous avez sélectionné la bonne option d'importation.",
- twoFAVerifyLabel: "Veuillez saisir votre jeton pour vérifier que le système 2FA fonctionne.",
- tokenValidSettingsMsg: "Le jeton est valide. Vous pouvez maintenant sauvegarder les paramètres de double authentification (2FA).",
- confirmEnableTwoFAMsg: "Êtes-vous sûr de vouloir activer la double authentification (2FA) ?",
- confirmDisableTwoFAMsg: "Êtes-vous sûr de vouloir désactiver la double authentification (2FA) ?",
- Settings: "Paramètres",
- Dashboard: "Tableau de bord",
- "New Update": "Mise à jour disponible",
- Language: "Langue",
- Appearance: "Apparence",
- Theme: "Thème",
- General: "Général",
- "Primary Base URL": "URL principale",
- Version: "Version",
- "Check Update On GitHub": "Consulter les mises à jour sur GitHub",
- List: "Lister",
- Add: "Ajouter",
- "Add New Monitor": "Ajouter une nouvelle sonde",
- "Quick Stats": "Résumé",
- Up: "En ligne",
- Down: "Hors ligne",
- Pending: "En attente",
- Unknown: "Inconnu",
- Pause: "En pause",
- Name: "Nom",
- Status: "État",
- DateTime: "Heure",
- Message: "Messages",
- "No important events": "Aucun évènement important",
- Resume: "Reprendre",
- Edit: "Modifier",
- Delete: "Supprimer",
- Current: "Actuellement",
- Uptime: "Disponibilité",
- "Cert Exp.": "Expiration SSL",
- day: "jour | jours",
- "-day": " jours",
- hour: "heure",
- "-hour": " heure",
- Response: "Temps de réponse",
- Ping: "Ping",
- "Monitor Type": "Type de sonde",
- Keyword: "Mot-clé",
- "Friendly Name": "Nom d'affichage",
- URL: "URL",
- Hostname: "Nom d'hôte / adresse IP",
- Port: "Port",
- "Heartbeat Interval": "Intervalle de vérification",
- Retries: "Essais",
- "Heartbeat Retry Interval": "Réessayer l'intervalle de vérification",
- "Resend Notification if Down X times consequently": "Renvoyer une notification si hors ligne X fois",
- Advanced: "Avancé",
- "Upside Down Mode": "Mode inversé",
- "Max. Redirects": "Nombre maximum de redirections",
- "Accepted Status Codes": "Codes HTTP acceptés",
- "Push URL": "Push URL",
- needPushEvery: "Vous devez appeler cette URL toutes les {0} secondes.",
- pushOptionalParams: "Paramètres facultatifs : {0}",
- Save: "Sauvegarder",
- Notifications: "Notifications",
- "Not available, please setup.": "Non disponible, merci de le configurer.",
- "Setup Notification": "Créer une notification",
- Light: "Clair",
- Dark: "Sombre",
- Auto: "Automatique",
- "Theme - Heartbeat Bar": "Thème - barres d'état",
- Normal: "Normal",
- Bottom: "En dessous",
- None: "Aucun",
- Timezone: "Fuseau horaire",
- "Search Engine Visibility": "Visibilité par les moteurs de recherche",
- "Allow indexing": "Autoriser l'indexation",
- "Discourage search engines from indexing site": "Refuser l'indexation",
- "Change Password": "Changer le mot de passe",
- "Current Password": "Mot de passe actuel",
- "New Password": "Nouveau mot de passe",
- "Repeat New Password": "Répéter votre nouveau mot de passe",
- "Update Password": "Mettre à jour le mot de passe",
- "Disable Auth": "Désactiver l'authentification",
- "Enable Auth": "Activer l'authentification",
- "disableauth.message1": "Voulez-vous vraiment désactiver l'authentification ?",
- "disableauth.message2": "Cette fonctionnalité est conçue pour les scénarios où vous avez l'intention d'implémenter une authentification tierce devant Uptime Kuma, comme Cloudflare Access, Authelia ou d'autres mécanismes d'authentification.",
- "Please use this option carefully!": "Veuillez utiliser cette option avec précaution !",
- Logout: "Déconnexion",
- Leave: "Quitter",
- "I understand, please disable": "Je comprends, désactivez-la",
- Confirm: "Confirmer",
- Yes: "Oui",
- No: "Non",
- Username: "Nom d'utilisateur",
- Password: "Mot de passe",
- "Remember me": "Se souvenir de moi",
- Login: "Connexion",
- "No Monitors, please": "Pas de sondes, veuillez",
- "add one": "en ajouter une",
- "Notification Type": "Type de notification",
- Email: "Courriel",
- Test: "Tester",
- "Certificate Info": "Informations sur le certificat SSL",
- "Resolver Server": "Serveur DNS utilisé",
- "Resource Record Type": "Type d'enregistrement DNS recherché",
- "Last Result": "Dernier résultat",
- "Create your admin account": "Créer votre compte administrateur",
- "Repeat Password": "Répéter le mot de passe",
- "Import Backup": "Importation de la sauvegarde",
- "Export Backup": "Exportation de la sauvegarde",
- Export: "Exporter",
- Import: "Importer",
- respTime: "Temps de réponse (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Activé par défaut",
- "Apply on all existing monitors": "Appliquer sur toutes les sondes existantes",
- Create: "Créer",
- "Clear Data": "Effacer les données",
- Events: "Événements",
- Heartbeats: "Vérifications",
- "Auto Get": "Récupérer automatiquement",
- backupDescription: "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.",
- backupDescription2: "PS : Les données relatives à l'historique et aux événements ne sont pas incluses.",
- backupDescription3: "Les données sensibles telles que les jetons de notification sont incluses dans le fichier d'exportation, veuillez les conserver soigneusement.",
- alertNoFile: "Veuillez sélectionner un fichier à importer.",
- alertWrongFileType: "Veuillez sélectionner un fichier JSON à importer.",
- "Clear all statistics": "Effacer toutes les statistiques",
- "Skip existing": "Sauter l'existant",
- Overwrite: "Écraser",
- Options: "Options",
- "Keep both": "Garder les deux",
- "Verify Token": "Vérifier le jeton",
- "Setup 2FA": "Configurer la double authentification (2FA)",
- "Enable 2FA": "Activer la double authentification (2FA)",
- "Disable 2FA": "Désactiver la double authentification (2FA)",
- "2FA Settings": "Paramètres de la la double authentification (2FA)",
- "Two Factor Authentication": "Double authentification",
- Active: "Actif",
- Inactive: "Inactif",
- Token: "Jeton",
- "Show URI": "Afficher l'URI",
- Tags: "Étiquettes",
- "Add New below or Select...": "Ajoutez-en un en dessous ou sélectionnez-le ici...",
- "Tag with this name already exist.": "Une étiquette portant ce nom existe déjà.",
- "Tag with this value already exist.": "Une étiquette avec cette valeur existe déjà.",
- color: "Couleur",
- "value (optional)": "Valeur (facultatif)",
- Gray: "Gris",
- Red: "Rouge",
- Orange: "Orange",
- Green: "Vert",
- Blue: "Bleu",
- Indigo: "Indigo",
- Purple: "Violet",
- Pink: "Rose",
- "Search...": "Rechercher...",
- "Avg. Ping": "Ping moyen",
- "Avg. Response": "Réponse moyenne",
- "Entry Page": "Page d'accueil",
- statusPageNothing: "Rien ici, veuillez ajouter un groupe ou une sonde.",
- "No Services": "Aucun service",
- "All Systems Operational": "Tous les systèmes sont opérationnels",
- "Partially Degraded Service": "Service partiellement dégradé",
- "Degraded Service": "Service dégradé",
- "Add Group": "Ajouter un groupe",
- "Add a monitor": "Ajouter une sonde",
- "Edit Status Page": "Modifier la page de statut",
- "Go to Dashboard": "Accéder au tableau de bord",
- "Status Page": "Page de statut",
- "Status Pages": "Pages de statut",
- defaultNotificationName: "Ma notification {notification} numéro ({number})",
- here: "ici",
- Required: "Requis",
- telegram: "Telegram",
- "ZohoCliq": "ZohoCliq",
- "Bot Token": "Jeton du robot",
- wayToGetTelegramToken: "Vous pouvez obtenir un token depuis {0}.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Prend en charge les messages privés / messages de groupe / l'ID d'un salon",
- wayToGetTelegramChatID: "Vous pouvez obtenir le Chat ID en envoyant un message avec le robot puis en récupérant l'URL pour voir l'ID du salon :",
- "YOUR BOT TOKEN HERE": "VOTRE JETON ROBOT ICI",
- chatIDNotFound: "ID du salon introuvable, envoyez un message via le robot avant",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Type de contenu",
- webhookJsonDesc: "{0} est bien pour tous les serveurs HTTP modernes comme Express.js",
- webhookFormDataDesc: "{multipart} est bien pour du PHP. Le JSON aura besoin d'être parsé avec {decodeFunction}",
- webhookAdditionalHeadersTitle: "En-têtes supplémentaires",
- webhookAdditionalHeadersDesc: "Définit des en-têtes supplémentaires envoyés avec le webhook.",
- smtp: "Courriel (SMTP)",
- secureOptionNone: "Aucun / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ignorer les erreurs TLS",
- "From Email": "Depuis l'adresse",
- emailCustomSubject: "Objet personnalisé",
- "To Email": "Vers l'adresse",
- smtpCC: "CC",
- smtpBCC: "CCI",
- discord: "Discord",
- "Discord Webhook URL": "URL vers le webhook Discord",
- wayToGetDiscordURL: "Vous pouvez l'obtenir en allant dans « Paramètres du serveur » -> « Intégrations » -> « Créer un Webhook »",
- "Bot Display Name": "Nom du robot (affiché)",
- "Prefix Custom Message": "Préfixe du message personnalisé",
- "Hello @everyone is...": "Bonjour {'@'}everyone il...",
- teams: "Microsoft Teams",
- "Webhook URL": "URL vers le webhook",
- wayToGetTeamsURL: "Vous pouvez apprendre comment créer une URL Webhook {0}.",
- wayToGetZohoCliqURL: "Vous pouvez apprendre comment créer une URL Webhook {0}.",
- signal: "Signal",
- Number: "Numéro",
- Recipients: "Destinataires",
- needSignalAPI: "Vous avez besoin d'un client Signal avec l'API REST.",
- wayToCheckSignalURL: "Vous pouvez regarder l'URL suivante pour savoir comment la mettre en place :",
- signalImportant: "IMPORTANT : Vous ne pouvez pas mixer les groupes et les numéros en destinataires !",
- gotify: "Gotify",
- "Application Token": "Jeton d'application",
- "Server URL": "URL du serveur",
- Priority: "Priorité",
- slack: "Slack",
- "Icon Emoji": "Icon Emoji",
- "Channel Name": "Nom du salon",
- "Uptime Kuma URL": "URL vers Uptime Kuma",
- aboutWebhooks: "Plus d'informations sur les webhooks ici : {0}",
- aboutChannelName: "Mettez le nom du salon dans {0} dans « Nom du salon » si vous voulez contourner le salon webhook. Ex. : #autre-salon",
- aboutKumaURL: "Si vous laissez l'URL d'Uptime Kuma vierge, elle redirigera vers la page du projet GitHub.",
- emojiCheatSheet: "Aide sur les émojis : {0}",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (prend en charge plus de 50 services de notification)",
- GoogleChat: "Google Chat (Google Workspace uniquement)",
- pushbullet: "Pushbullet",
- Kook: "Kook",
- wayToGetKookBotToken: "Créez une application et récupérer le jeton de robot à l'addresse {0}",
- wayToGetKookGuildID: "Passez en « mode développeur » dans les paramètres de Kook, et cliquez droit sur le Guild pour obtenir son identifiant",
- "Guild ID": "Identifiant de Guild",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "Clé d'utilisateur",
- Device: "Appareil",
- "Message Title": "Titre du message",
- "Notification Sound": "Son de notification",
- "More info on:": "Plus d'informations sur : {0}",
- pushoverDesc1: "Priorité d'urgence (2) a un délai par défaut de 30 secondes entre les tentatives et expire après une heure.",
- pushoverDesc2: "Si vous voulez envoyer des notifications sur différents appareils, remplissez le champ « Appareil ».",
- "SMS Type": "Type de SMS",
- octopushTypePremium: "Premium (rapide - recommandé pour les alertes)",
- octopushTypeLowCost: "Économique (lent, bloqué de temps en temps par l'opérateur)",
- checkPrice: "Vérification {0} tarifs :",
- apiCredentials: "Identifiants de l'API",
- octopushLegacyHint: "Voulez-vous utiliser l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?",
- "Check octopush prices": "Vérifier les prix d'Octopush {0}.",
- octopushPhoneNumber: "Numéro de téléphone (format international, ex. : +33612345678)",
- octopushSMSSender: "Nom de l'expéditeur : 3-11 caractères alphanumériques avec espace (a-zA-Z0-9)",
- "LunaSea Device ID": "Identifiant d'appareil LunaSea",
- "Apprise URL": "URL d'Apprise",
- "Example:": "Exemple : {0}",
- "Read more:": "En savoir plus : {0}",
- "Status:": "État : {0}",
- "Read more": "En savoir plus",
- appriseInstalled: "Apprise est installé.",
- appriseNotInstalled: "Apprise n'est pas installé. {0}",
- "Access Token": "Jeton d'accès",
- "Channel access token": "Jeton d'accès au canal",
- "Line Developers Console": "Console développeurs Line",
- lineDevConsoleTo: "Console développeurs Line - {0}",
- "Basic Settings": "Paramètres de base",
- "User ID": "Identifiant utilisateur",
- "Messaging API": "Messaging API", // Ne pas traduire, il s'agit du type de salon affiché sur la console développeurs Line
- wayToGetLineChannelToken: "Premièrement accédez à {0}, créez un provider et définissez un type de salon à « Messaging API ». Vous pourrez alors avoir puis vous pourrez avoir le jeton d'accès du salon et l'identifiant utilisateur demandés.",
- "Icon URL": "URL vers l'icône",
- aboutIconURL: "Vous pouvez mettre un lien vers une image dans « URL vers l'icône » pour remplacer l'image de profil par défaut. Elle ne sera utilisé que si « Icône émoji » n'est pas défini.",
- aboutMattermostChannelName: "Vous pouvez remplacer le salon par défaut que le webhook utilise en mettant le nom du salon dans le champ « Nom du salon ». Vous aurez besoin de l'activer depuis les paramètres de Mattermost. Ex. : #autre-salon",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - Bon marché mais lent et souvent surchargé. Limité uniquement aux destinataires polonais.",
- promosmsTypeFlash: "SMS FLASH - Le message sera automatiquement affiché sur l'appareil du destinataire. Limité uniquement aux destinataires Polonais.",
- promosmsTypeFull: "SMS FULL - Version premium des SMS. Vous pouvez mettre le nom de l'expéditeur (vous devez l'enregistrer au préalable). Fiable pour les alertes.",
- promosmsTypeSpeed: "SMS SPEED - Priorité élevée pour le système. Très rapide et fiable mais coûteux (environ le double du prix d'un SMS FULL).",
- promosmsPhoneNumber: "Numéro de téléphone (pour les destinataires polonais, vous pouvez ignorer l'indicatif international)",
- promosmsSMSSender: "Nom de l'expéditeur du SMS : Nom pré-enregistré ou l'un de base : InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "L'URL du serveur (avec http(s):// et le port de manière facultative)",
- "Internal Room Id": "ID de la salle interne",
- matrixDesc1: "Vous pouvez trouver l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est censé ressembler à !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Pour cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}",
- Method: "Méthode",
- Body: "Corps",
- Headers: "En-têtes",
- PushUrl: "URL Push",
- HeadersInvalidFormat: "Les en-têtes de la requête ne sont pas dans un format JSON valide : ",
- BodyInvalidFormat: "Le corps de la requête n'est pas dans un format JSON valide : ",
- "Monitor History": "Historique de la sonde",
- clearDataOlderThan: "Conserver l'historique des données de la sonde durant {0} jours.",
- PasswordsDoNotMatch: "Les mots de passe ne correspondent pas.",
- records: "enregistrements",
- "One record": "Un enregistrement",
- steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ",
- "Current User": "Utilisateur actuel",
- topic: "Topic",
- topicExplanation: "Topic MQTT à surveiller",
- successMessage: "Message de réussite",
- successMessageExplanation: "Message MQTT qui sera considéré comme un succès",
- recent: "Récent",
- Done: "Fait",
- Info: "Info",
- Security: "Sécurité",
- "Steam API Key": "Clé d'API Steam",
- "Shrink Database": "Réduire la base de données",
- "Pick a RR-Type...": "Choisissez un type d'enregistrement...",
- "Pick Accepted Status Codes...": "Choisissez les codes de statut acceptés...",
- Default: "Défaut",
- "HTTP Options": "Options HTTP",
- "Create Incident": "Créer un incident",
- Title: "Titre",
- Content: "Contenu",
- Style: "Style",
- info: "Info",
- warning: "Attention",
- danger: "Danger",
- error: "Erreur",
- critical: "Critique",
- primary: "Primaire",
- light: "Blanc",
- dark: "Noir",
- Post: "Post",
- "Please input title and content": "Veuillez saisir le titre et le contenu",
- Created: "Créé",
- "Last Updated": "Dernière mise à jour",
- Unpin: "Retirer",
- "Switch to Light Theme": "Passer au thème clair",
- "Switch to Dark Theme": "Passer au thème sombre",
- "Show Tags": "Afficher les étiquettes",
- "Hide Tags": "Masquer les étiquettes",
- Description: "Description",
- "No monitors available.": "Aucune sonde disponible.",
- "Add one": "En rajouter une",
- "No Monitors": "Aucune sonde",
- "Untitled Group": "Groupe sans titre",
- Services: "Services",
- Discard: "Abandonner",
- Cancel: "Annuler",
- "Powered by": "Propulsé par",
- shrinkDatabaseDescription: "Déclenche la commande VACUUM pour SQLite. Si votre base de données a été créée après la version 1.10.0, AUTO_VACUUM est déjà activé et cette action n'est pas nécessaire.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "Nom d'utilisateur de l'API (incl. webapi_ prefix)",
- serwersmsAPIPassword: "Mot de passe API",
- serwersmsPhoneNumber: "Numéro de téléphone",
- serwersmsSenderName: "Nom de l'expéditeur du SMS (enregistré via le portail client)",
- smseagle: "SMSEagle",
- smseagleTo: "Numéro(s) de téléphone",
- smseagleGroup: "Nom(s) de groupe(s) de répertoire",
- smseagleContact: "Nom(s) de contact du répertoire",
- smseagleRecipientType: "Type de destinataire",
- smseagleRecipient: "Destinataire(s) (les multiples doivent être séparés par une virgule)",
- smseagleToken: "Jeton d'accès à l'API",
- smseagleUrl: "L'URL de votre appareil SMSEagle",
- smseagleEncoding: "Envoyer en Unicode",
- smseaglePriority: "Priorité des messages (0-9, par défaut = 0)",
- stackfield: "Stackfield",
- Customize: "Personnaliser",
- "Custom Footer": "Pied de page personnalisé",
- "Custom CSS": "CSS personnalisé",
- smtpDkimSettings: "Paramètres DKIM",
- smtpDkimDesc: "Veuillez vous référer au Nodemailer DKIM {0} pour l'utilisation.",
- documentation: "documentation",
- smtpDkimDomain: "Nom de domaine",
- smtpDkimKeySelector: "Sélecteur de clé",
- smtpDkimPrivateKey: "Clé privée",
- smtpDkimHashAlgo: "Algorithme de hachage (facultatif)",
- smtpDkimheaderFieldNames: "Clés d'en-tête à signer (facultatif)",
- smtpDkimskipFields: "Clés d'en-tête à ne pas signer (facultatif)",
- wayToGetPagerDutyKey: "Vous pouvez l'obtenir en allant dans Service -> Annuaire des services -> (sélectionner un service) -> Intégrations -> Ajouter une intégration. Ici, vous pouvez rechercher \"Events API V2\". Plus d'infos {0}",
- "Integration Key": "Clé d'intégration",
- "Integration URL": "URL d'intégration",
- "Auto resolve or acknowledged": "Résolution automatique ou accusé de réception",
- "do nothing": "ne fais rien",
- "auto acknowledged": "accusé de réception automatique",
- "auto resolve": "résolution automatique",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "Environnement",
- alertaApiKey: "Clé de l'API",
- alertaAlertState: "État de l'alerte",
- alertaRecoverState: "État de récupération",
- deleteStatusPageMsg: "Voulez-vous vraiment supprimer cette page d'état ?",
- Proxies: "Proxies",
- default: "Défaut",
- enabled: "Activé",
- setAsDefault: "Définir par défaut",
- deleteProxyMsg: "Voulez-vous vraiment supprimer ce proxy pour toutes les sondes ?",
- proxyDescription: "Les proxies doivent être affectés à une sonde pour fonctionner.",
- enableProxyDescription: "Ce proxy n'aura pas d'effet sur les demandes de sonde tant qu'il n'est pas activé. Vous pouvez contrôler la désactivation temporaire du proxy de toutes les sondes en fonction de l'état d'activation.",
- setAsDefaultProxyDescription: "Ce proxy sera activé par défaut pour les nouvelles sondes. Vous pouvez toujours désactiver le proxy séparément pour chaque sonde.",
- "Certificate Chain": "Chaîne de certificats",
- Valid: "Valide",
- Invalid: "Non valide",
- AccessKeyId: "ID de clé d'accès",
- SecretAccessKey: "Clé secrète d'accès",
- PhoneNumbers: "Numéros de téléphone",
- TemplateCode: "Modèle de code",
- SignName: "Signature",
- "Sms template must contain parameters: ": "Le modèle de SMS doit contenir des paramètres : ",
- "Bark Endpoint": "Endpoint Bark",
- "Bark Group": "Groupe Bark",
- "Bark Sound": "Son Bark",
- WebHookUrl: "WebHookUrl",
- SecretKey: "Clé secrète",
- "For safety, must use secret key": "Par sécurité, utilisation obligatoire de la clé secrète",
- "Device Token": "Jeton d'appareil",
- Platform: "Plateforme",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Haute",
- Retry: "Recommencez",
- Topic: "Topic",
- "WeCom Bot Key": "Clé de robot WeCom",
- "Setup Proxy": "Configurer le proxy",
- "Proxy Protocol": "Protocole proxy",
- "Proxy Server": "Serveur proxy",
- "Proxy server has authentication": "Une authentification est nécessaire pour le serveur proxy",
- User: "Utilisateur",
- Installed: "Installé",
- "Not installed": "Non installé",
- Running: "Fonctionne",
- "Not running": "Ne fonctionne pas",
- "Remove Token": "Supprimer le jeton",
- Start: "Démarrer",
- Stop: "Arrêter",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Ajouter une page de statut",
- Slug: "Chemin",
- "Accept characters:": "Caractères acceptés : ",
- startOrEndWithOnly: "Commence uniquement par {0}",
- "No consecutive dashes": "Pas de double tirets",
- Next: "Continuer",
- "The slug is already taken. Please choose another slug.": "Un chemin existe déjà. Veuillez en choisir un autre.",
- "No Proxy": "Pas de proxy",
- Authentication: "Authentification",
- "HTTP Basic Auth": "Authentification de base HTTP",
- "New Status Page": "Nouvelle page de statut",
- "Page Not Found": "Page non trouvée",
- "Reverse Proxy": "Proxy inverse",
- Backup: "Sauvegarde",
- About: "À propos",
- wayToGetCloudflaredURL: "(télécharger cloudflared depuis {0})",
- cloudflareWebsite: "Site web de Cloudflare",
- "Message:": "Message : ",
- "Don't know how to get the token? Please read the guide:": "Vous ne savez pas comment obtenir le jeton ? Lisez le guide :",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La connexion actuelle peut être perdue si vous vous connectez actuellement via un tunnel Cloudflare. Êtes-vous sûr de vouloir l'arrêter ? Tapez votre mot de passe actuel pour le confirmer.",
- "HTTP Headers": "En-têtes HTTP",
- "Trust Proxy": "Proxy de confiance",
- "Other Software": "Autres logiciels",
- "For example: nginx, Apache and Traefik.": "Par exemple : nginx, Apache et Traefik.",
- "Please read": "Veuillez lire",
- "Subject:": "Objet : ",
- "Valid To:": "Valable jusqu'au : ",
- "Days Remaining:": "Jours restants : ",
- "Issuer:": "Émetteur : ",
- "Fingerprint:": "Empreinte : ",
- "No status pages": "Aucune page de statut.",
- "Domain Name Expiry Notification": "Notification d'expiration du nom de domaine",
- Proxy: "Proxy",
- "Date Created": "Date de création",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "Adresse HTTP OneBot",
- onebotMessageType: "Type de message OneBot",
- onebotGroupMessage: "Groupe",
- onebotPrivateMessage: "Privé",
- onebotUserOrGroupId: "ID de groupe/utilisateur",
- onebotSafetyTips: "Pour des raisons de sécurité, vous devez définir un jeton d'accès",
- "PushDeer Key": "Clé PushDeer",
- "Footer Text": "Texte de pied de page",
- "Show Powered By": "Afficher « Propulsé par »",
- "Domain Names": "Noms de domaine",
- signedInDisp: "Connecté en tant que {0}",
- signedInDispDisabled: "Authentification désactivée.",
- RadiusSecret: "Radius Secret",
- RadiusSecretDescription: "Secret partagé entre le client et le serveur",
- RadiusCalledStationId: "Identifiant de la station appelée",
- RadiusCalledStationIdDescription: "Identifiant de l'appareil appelé",
- RadiusCallingStationId: "Identifiant de la station appelante",
- RadiusCallingStationIdDescription: "Identifiant de l'appareil appelant",
- "Certificate Expiry Notification": "Notification d'expiration du certificat",
- "API Username": "Nom d'utilisateur de l'API",
- "API Key": "Clé API",
- "Recipient Number": "Numéro du destinataire",
- "From Name/Number": "De nom/numéro",
- "Leave blank to use a shared sender number.": "Laisser vide pour utiliser un numéro d'expéditeur partagé.",
- "Octopush API Version": "Version de l'API Octopush",
- "Legacy Octopush-DM": "Ancien Octopush-DM",
- endpoint: "endpoint",
- octopushAPIKey: "\"Clé API\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration",
- octopushLogin: "\"Identifiant\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration",
- promosmsLogin: "Nom de connexion API",
- promosmsPassword: "Mot de passe API",
- "pushoversounds pushover": "Pushover (par défaut)",
- "pushoversounds bike": "Vélo",
- "pushoversounds bugle": "Clairon",
- "pushoversounds cashregister": "Caisse enregistreuse",
- "pushoversounds classical": "Classique",
- "pushoversounds cosmic": "Cosmique",
- "pushoversounds falling": "Chute",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Arrivée",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magique",
- "pushoversounds mechanical": "Mécanique",
- "pushoversounds pianobar": "Piano-bar",
- "pushoversounds siren": "Sirène",
- "pushoversounds spacealarm": "Alarme spatiale",
- "pushoversounds tugboat": "Remorqueur",
- "pushoversounds alien": "Alarme alienne (version longue)",
- "pushoversounds climb": "Escalade (version longue)",
- "pushoversounds persistent": "Persistent (version longue)",
- "pushoversounds echo": "Pushover Echo (version longue)",
- "pushoversounds updown": "Up Down (version longue)",
- "pushoversounds vibrate": "Vibration seulement",
- "pushoversounds none": "Aucun (silencieux)",
- pushyAPIKey: "Clé API secrète",
- pushyToken: "Jeton d'appareil",
- "Show update if available": "Afficher la mise à jour si disponible",
- "Also check beta release": "Vérifiez également la version bêta",
- "Using a Reverse Proxy?": "Utiliser un proxy inverse ?",
- "Check how to config it for WebSocket": "Vérifier comment le configurer pour WebSocket",
- "Steam Game Server": "Serveur de jeu Steam",
- "Most likely causes:": "Causes les plus probables : ",
- "The resource is no longer available.": "La ressource n'est plus disponible.",
- "There might be a typing error in the address.": "Il se peut qu'il y ait une erreur de frappe dans l'adresse.",
- "What you can try:": "Ce que vous pouvez essayer :",
- "Retype the address.": "Retaper l'adresse.",
- "Go back to the previous page.": "Retourner à la page précédente.",
- "Coming Soon": "Prochainement",
- wayToGetClickSendSMSToken: "Vous pouvez obtenir le nom d'utilisateur API et la clé API à partir de {0} .",
- "Connection String": "Chaîne de connexion",
- Query: "Requête",
- settingsCertificateExpiry: "Expiration du certificat TLS",
- certificationExpiryDescription: "Les sondes HTTPS émettent une notification lorsque le certificat TLS expire dans :",
- "Setup Docker Host": "Configurer l'hôte Docker",
- "Connection Type": "Type de connexion",
- "Docker Daemon": "Deamon Docker",
- deleteDockerHostMsg: "Voulez-vous vraiment supprimer cet hôte Docker pour toutes les sondes ?",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Conteneur Docker",
- "Container Name / ID": "Nom / ID du conteneur",
- "Docker Host": "Hôte Docker",
- "Docker Hosts": "Hôtes Docker",
- "ntfy Topic": "Topic ntfy",
- Domain: "Domaine",
- Workstation: "Poste de travail",
- disableCloudflaredNoAuthMsg: "Vous êtes en mode No Auth, un mot de passe n'est pas nécessaire.",
- trustProxyDescription: "Faire confiance aux en-têtes 'X-Forwarded-*'. Si vous souhaitez obtenir la bonne adresse IP client et que votre Uptime Kuma se situe derrière (nginx ou Apache) vous devez l'activer.",
- wayToGetLineNotifyToken: "Vous pouvez obtenir un jeton d'accès auprès de {0}",
- Examples: "Exemples",
- "Home Assistant URL": "URL vers Home Assistant",
- "Long-Lived Access Token": "Jeton d'accès de longue durée",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Un jeton d'accès de longue durée peut être créé en cliquant sur le nom de votre profil (en bas à gauche) et en faisant défiler vers le bas, puis cliquez sur Créer un jeton. ",
- "Notification Service": "Service de notifications",
- "default: notify all devices": "par défaut: notifier tous les appareils",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Une liste des services de notification peut être trouvée dans Home Assistant sous \"Outils de développement > Services\" recherchez \"notification\" pour trouver le nom de votre appareil/téléphone.",
- "Automations can optionally be triggered in Home Assistant:": "Les automatisations peuvent éventuellement être déclenchées dans Home Assistant : ",
- "Trigger type:": "Type de déclencheur : ",
- "Event type:": "Type d'événement : ",
- "Event data:": "Données d'événement : ",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Ensuite, choisissez une action, par exemple basculer la scène là où une lumière RVB est rouge.",
- "Frontend Version": "Version frontend",
- "Frontend Version do not match backend version!": "La version frontend ne correspond pas à la version backend !",
- "Base URL": "URL de base",
- goAlertInfo: "GoAlert est une application open source pour la planification des appels, les escalades automatisées et les notifications (comme les SMS ou les appels vocaux). Impliquez automatiquement la bonne personne, de la bonne manière et au bon moment ! {0}",
- goAlertIntegrationKeyInfo: "Obtenez la clé d'intégration d'API générique pour le service dans ce format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" généralement la valeur du paramètre de jeton de l'URL copiée.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Obsolète : étant donné que de nombreuses fonctionnalités ont été ajoutées et que cette fonctionnalité de sauvegarde est non maintenue, elle ne peut pas générer ou restaurer une sauvegarde complète.",
- backupRecommend: "Veuillez sauvegarder le volume ou le dossier de données (./data/) directement à la place.",
- Optional: "Optionnel",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "Documentations de l'API SMSManager ",
- "Gateway Type": "Type de passerelle",
- SMSManager: "SMSManager",
- "You can divide numbers with": "Vous pouvez diviser des nombres avec",
- or: "ou",
- recurringInterval: "Intervalle",
- Recurring: "Récurrent",
- strategyManual: "Activer/désactiver manuellement",
- warningTimezone: "Utilisation du fuseau horaire du serveur",
- weekdayShortMon: "Lun",
- weekdayShortTue: "Mar",
- weekdayShortWed: "Mer",
- weekdayShortThu: "Jeu",
- weekdayShortFri: "Ven",
- weekdayShortSat: "Sam",
- weekdayShortSun: "Dim",
- dayOfWeek: "Jour de la semaine",
- dayOfMonth: "Jour du mois",
- lastDay: "Dernier jour",
- lastDay1: "Dernier jour du mois",
- lastDay2: "Avant-dernier jour du mois",
- lastDay3: "3ème dernier jour du mois",
- lastDay4: "4ème dernier jour du mois",
- "No Maintenance": "Aucune maintenance",
- pauseMaintenanceMsg: "Voulez-vous vraiment mettre en pause ?",
- "maintenanceStatus-under-maintenance": "En maintenance",
- "maintenanceStatus-inactive": "Inactif",
- "maintenanceStatus-scheduled": "Programmé",
- "maintenanceStatus-ended": "Terminé",
- "maintenanceStatus-unknown": "Inconnue",
- "Display Timezone": "Afficher le fuseau horaire",
- "Server Timezone": "Fuseau horaire du serveur",
- statusPageMaintenanceEndDate: "Fin",
- IconUrl: "URL vers l'icône",
- "Enable DNS Cache": "Activer le cache DNS",
- Enable: "Activer",
- Disable: "Désactiver",
- dnsCacheDescription: "Il peut ne pas fonctionner dans certains environnements IPv6, désactivez-le si vous rencontrez des problèmes.",
- "Single Maintenance Window": "Créneau de maintenance unique",
- "Maintenance Time Window of a Day": "Créneau de la maintenance",
- "Effective Date Range": "Plage de dates d'effet",
- "Schedule Maintenance": "Créer une maintenance",
- "Date and Time": "Date et heure",
- "DateTime Range": "Plage de dates et d'heures",
- Strategy: "Stratégie",
- "Free Mobile User Identifier": "Identifiant d'utilisateur Free Mobile",
- "Free Mobile API Key": "Clé d'API Free Mobile",
- "Enable TLS": "Activer le TLS",
- "Proto Service Name": "Nom du service proto",
- "Proto Method": "Méthode Proto",
- "Proto Content": "Contenu proto",
- "Economy": "Économique",
- "Lowcost": "Faible coût",
- "high": "Haute",
- "General Monitor Type": "Type de sonde générale",
- "Passive Monitor Type": "Type de sonde passive",
- "Specific Monitor Type": "Type de sonde spécifique",
-};
diff --git a/src/languages/he-IL.js b/src/languages/he-IL.js
deleted file mode 100644
index d98b063df..000000000
--- a/src/languages/he-IL.js
+++ /dev/null
@@ -1,672 +0,0 @@
-export default {
- languageName: "עברית",
- checkEverySecond: "בדוק כל {0} שניות",
- retryCheckEverySecond: "נסה שוב כל {0} שניות",
- resendEveryXTimes: "התראה שוב כל {0} פעמים",
- resendDisabled: "השליחה מחדש מושבתת",
- retriesDescription: "מקסימום ניסיונות חוזרים לפני שהשירות יסומן כלא פעיל ונשלחת התראה",
- ignoreTLSError: "התעלם משגיאת TLS/SSL עבור אתרי HTTPS",
- upsideDownModeDescription: "הפוך את הסטטוס על הפוך. אם ניתן להגיע לשירות, הוא לא פעיל.",
- maxRedirectDescription: "המספר המרבי של הפניות מחדש לעקוב. הגדר ל-0 כדי להשבית הפניות מחדש.",
- enableGRPCTls: "אפשר לשלוח בקשת gRPC עם חיבור TLS",
- grpcMethodDescription: "שם השיטה מומר לפורמט cammelCase כגון sayHello, check וכו.",
- acceptedStatusCodesDescription: "בחר קודי סטטוס שנחשבים לתגובה מוצלחת.",
- Maintenance: "תחזוקה",
- statusMaintenance: "תחזוקה",
- "Schedule maintenance": "תחזוקה מתוכננת",
- "Affected Monitors": "מוניטורים מושפעים",
- "Pick Affected Monitors...": "בחר המוניטרים מושפעים...",
- "Start of maintenance": "תחילת תחזוקה",
- "All Status Pages": "כל דפי הסטטוס",
- "Select status pages...": "בחר דפי סטטוס...",
- recurringIntervalMessage: "רוץ פעם ביום | הפעל אחת ל-{0} ימים",
- affectedMonitorsDescription: "בחר מוניטורים שמושפעים מהתחזוקה הנוכחית",
- affectedStatusPages: "הצג הודעת תחזוקה זו בדפי סטטוס שנבחרו",
- atLeastOneMonitor: "בחר לפחות מוניטור אחד מושפע",
- passwordNotMatchMsg: "הסיסמאות לא תואמות",
- notificationDescription: "יש להקצות התראות למוניטור כדי שהן יעבדו.",
- keywordDescription: "חפש מילת מפתח בתגובת HTML או JSON רגילה. החיפוש תלוי רישיות.",
- pauseDashboardHome: "עצור",
- deleteMonitorMsg: "האם אתה בטוח שברצונך למחוק את המוניטור הזה?",
- deleteMaintenanceMsg: "האם אתה בטוח שברצונך למחוק את התחזוקה הזו?",
- deleteNotificationMsg: "האם אתה בטוח שברצונך למחוק את ההודעה הזו עבור כל מוניטרים?",
- dnsPortDescription: "יציאת שרת DNS. ברירת המחדל היא 53. אתה יכול לשנות את היציאה בכל עת.",
- resolverserverDescription: "Cloudflare הוא שרת ברירת המחדל. אתה יכול לשנות את שרת הפותר בכל עת.",
- rrtypeDescription: "בחר את סוג ה-RR שברצונך לפקח עליו",
- pauseMonitorMsg: "האם אתה בטוח רוצה להשהות?",
- enableDefaultNotificationDescription: "הודעה זו תופעל כברירת מחדל עבור מוניטרים חדשים. אתה עדיין יכול להשבית את ההודעה בנפרד עבור כל מוניטור.",
- clearEventsMsg: "האם אתה בטוח שברצונך למחוק את כל האירועים עבור המוניטור הזה?",
- clearHeartbeatsMsg: "האם אתה בטוח שברצונך למחוק את כל פעימות הלב עבור המוניטור הזה?",
- confirmClearStatisticsMsg: "האם אתה בטוח שברצונך למחוק את כל הנתונים הסטטיסטיים?",
- importHandleDescription: "בחר 'דלג על קיים' אם ברצונך לדלג על כל מוניטור או התראה באותו שם. 'החלף' ימחק כל מוניטור והתראה קיימים.",
- confirmImportMsg: "האם אתה בטוח שברצונך לייבא את הגיבוי? אנא ודא שבחרת באפשרות הייבוא הנכונה.",
- twoFAVerifyLabel: "אנא הזן את האסימון שלך כדי לאמת מערכת אדוש:",
- tokenValidSettingsMsg: "האסימון תקף! כעת אתה יכול לשמור את הגדרות האדוש.",
- confirmEnableTwoFAMsg: "האם אתה בטוח שברצונך להפעיל את מערכת אדוש?",
- confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
- Settings: "הגדרות",
- Dashboard: "פאנל ניהול",
- "New Update": "עדכון חדש",
- Language: "שפה",
- Appearance: "נראות",
- Theme: "ערכת נושא",
- General: "כללי",
- "Primary Base URL": "כתובת האתר הראשית של הבסיס",
- Version: "גרסה",
- "Check Update On GitHub": "לבדוק עדכונים בגיטהאב",
- List: "רשימה",
- Add: "הוסף",
- "Add New Monitor": "הוספת מוניטור חדש",
- "Quick Stats": "נתונים בקצרה",
- Up: "פעיל",
- Down: "לא פעיל",
- Pending: "ממתין",
- Unknown: "לא יודע",
- Pause: "עצור",
- Name: "שם",
- Status: "סטטוס",
- DateTime: "תאריך שעה",
- Message: "הודעה",
- "No important events": "אין אירועים חשובים",
- Resume: "המשך",
- Edit: "עריכה",
- Delete: "מחיקה",
- Current: "עכשיו",
- Uptime: "זמן פעילות",
- "Cert Exp.": "Cert Exp.",
- day: "יום | ימים",
- "-day": "-יום",
- hour: "שעה",
- "-hour": "-שעה",
- Response: "תגובה",
- Ping: "פינג",
- "Monitor Type": "סוג מוניטור",
- Keyword: "מילת מפתח",
- "Friendly Name": "שם ידידותי",
- URL: "כתובת אתר",
- Hostname: "שם המארח",
- Port: "פורט",
- "Heartbeat Interval": "מרווח פעימות",
- Retries: "נסיונות חוזרים",
- "Heartbeat Retry Interval": "מרווח נסיונות חוזר של פעימות",
- "Resend Notification if Down X times consequently": "שלח שוב הודעה אם ירד X פעמים כתוצאה מכך",
- Advanced: "מתקדם",
- "Upside Down Mode": "מצב הפוך",
- "Max. Redirects": "מקסימום הפניות מחדש",
- "Accepted Status Codes": "קודי סטטוס מקובלים",
- "Push URL": "דחף כתובת URL",
- needPushEvery: "עליך להתקשר לכתובת האתר הזו כל {0} שניות.",
- pushOptionalParams: "פרמטרים אופציונליים: {0}",
- Save: "שמירה",
- Notifications: "התראות",
- "Not available, please setup.": "לא זמין, אנא הגדר.",
- "Setup Notification": "הודעת הגדרה",
- Light: "בהיר",
- Dark: "חושך",
- Auto: "אוטומטי",
- "Theme - Heartbeat Bar": "ערכת נושא - Heartbeat Bar",
- Normal: "נורמלי",
- Bottom: "למטה",
- None: "כלום",
- Timezone: "אזור זמן",
- "Search Engine Visibility": "נראות במנועי חיפוש",
- "Allow indexing": "אפשר הוספה לאינדקס",
- "Discourage search engines from indexing site": "לא לעודד מנועי חיפוש לאינדקס אתרים",
- "Change Password": "שנה סיסמא",
- "Current Password": "סיסמה נוכחית",
- "New Password": "סיסמה חדשה",
- "Repeat New Password": "חזור על סיסמה חדשה",
- "Update Password": "עדכן סיסמה",
- "Disable Auth": "השבתת אבטחה",
- "Enable Auth": "הפעלת אבטחה",
- "disableauth.message1": "האם אתה בטוח שברצונך להשבית את האבטחה ?",
- "disableauth.message2": "הוא מיועד לתרחישים שבהם אתה מתכוון ליישם אימות של צד שלישי מול Uptime Kuma כגון Cloudflare Access, Authelia או מנגנוני אימות אחרים.",
- "Please use this option carefully!": "אנא השתמש באפשרות זו בזהירות!",
- Logout: "התנתקות",
- Leave: "יציאה",
- "I understand, please disable": "אני מבין, אני רוצה להשבית",
- Confirm: "אישור",
- Yes: "כן",
- No: "לא",
- Username: "שם משתמש",
- Password: "סיסמה",
- "Remember me": "זכור אותי",
- Login: "התחברות",
- "No Monitors, please": "בלי מוניטורים, בבקשה",
- "add one": "להוסיף אחד",
- "Notification Type": "סוג התראה",
- Email: "אימייל",
- Test: "Test",
- "Certificate Info": "פרטי תעודת אבטחה",
- "Resolver Server": "שרת פותר",
- "Resource Record Type": "סוג רשומת משאבים",
- "Last Result": "תוצאה אחרונה",
- "Create your admin account": "צור את חשבון הניהול שלך",
- "Repeat Password": "חזור על הסיסמה",
- "Import Backup": "ייבוא גיבוי",
- "Export Backup": "ייצוא גיבוי",
- Export: "ייצוא",
- Import: "ייבוא",
- respTime: "רפ. זמן (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "ברירת המחדל מופעלת",
- "Apply on all existing monitors": "החל על כל המסכים הקיימים",
- Create: "ליצור",
- "Clear Data": "נקה נתונים",
- Events: "אירועים",
- Heartbeats: "פעימות לב",
- "Auto Get": "קבל אוטומטי",
- backupDescription: "אתה יכול לגבות את כל המסכים וההתראות לקובץ JSON.",
- backupDescription2: "הערה: היסטוריה ונתוני אירועים אינם כלולים.",
- backupDescription3: "נתונים רגישים כגון אסימוני הודעה כלולים בקובץ הייצוא; נא לאחסן יצוא בצורה מאובטחת.",
- alertNoFile: "אנא בחר קובץ לייבוא.",
- alertWrongFileType: "אנא בחר קובץ JSON.",
- "Clear all statistics": "נקה את כל הנתונים הסטטיסטיים",
- "Skip existing": "דילוג על הקיים",
- Overwrite: "החלף",
- Options: "אפשרויות",
- "Keep both": "שמור את שניהם",
- "Verify Token": "אמת את האסימון",
- "Setup 2FA": "הגדרת מערכת אדוש",
- "Enable 2FA": "הפעלת אדוש",
- "Disable 2FA": "כיבוי אדוש",
- "2FA Settings": "הגדרות אדוש",
- "Two Factor Authentication": "אימות דו-שלבי (מערכת אדוש)",
- Active: "מופעל",
- Inactive: "קבוי",
- Token: "אסימון",
- "Show URI": "הצג URI",
- Tags: "תגים",
- "Add New below or Select...": "הוסף חדש למטה או בחר...",
- "Tag with this name already exist.": "תג בשם זה כבר קיים.",
- "Tag with this value already exist.": "תג עם ערך זה כבר קיים.",
- color: "צבע",
- "value (optional)": "ערך (אופציונלי)",
- Gray: "אפור",
- Red: "אדום",
- Orange: "כתום",
- Green: "ירוק",
- Blue: "כחול",
- Indigo: "כחול כהה",
- Purple: "סגול",
- Pink: "כתום",
- "Search...": "לחפש...",
- "Avg. Ping": "פינג ממוצע",
- "Avg. Response": "ממוצע תגובה",
- "Entry Page": "דף כניסה",
- statusPageNothing: "אין כאן שום דבר, בבקשה הוסף קבוצה או מוניטור.",
- "No Services": "אין שירותים",
- "All Systems Operational": "כל המערכות עובדות",
- "Partially Degraded Service": "שירות פגום חלקית",
- "Degraded Service": "שירות פגום",
- "Add Group": "הוסף קבוצה",
- "Add a monitor": "הוסף מוניטור",
- "Edit Status Page": "ערוך דף סטטוס",
- "Go to Dashboard": "מעבר לפאנל",
- "Status Page": "דף סטטוס",
- "Status Pages": "דפי סטטוס",
- defaultNotificationName: "התראת {notification} שלי ({number})",
- here: "פה",
- Required: "נדרש",
- telegram: "טלגרם",
- "Bot Token": "אסימון בוט",
- wayToGetTelegramToken: "אתה יכול לקבל אסימון מ-{0}.",
- "Chat ID": "מזהה צ'אט",
- supportTelegramChatID: "תמיכה בצ'אט ישיר / קבוצה / מזהה הצ'אט של הערוץ",
- wayToGetTelegramChatID: "אתה יכול לקבל את מזהה הצ'אט שלך על ידי שליחת הודעה לבוט ומעבר לכתובת האתר הזו כדי להציג את ה-chat_id:",
- "YOUR BOT TOKEN HERE": "אסימון הבוט שלך כאן",
- chatIDNotFound: "מזהה צ'אט לא נמצא; אנא שלח הודעה לבוט זה תחילה",
- webhook: "Webhook",
- "Post URL": "כתובת אתר של פוסט",
- "Content Type": "סוג התוכן",
- webhookJsonDesc: "{0} מתאים לכל שרתי HTTP מודרניים כגון Express.js",
- webhookFormDataDesc: "{multipart} טוב ל-PHP. יהיה צורך לנתח את ה-JSON באמצעות {decodeFunction}",
- webhookAdditionalHeadersTitle: "כותרות נוספות",
- webhookAdditionalHeadersDesc: "מגדיר כותרות נוספות שנשלחות עם ה-webhook.",
- smtp: "אימייל (SMTP)",
- secureOptionNone: "None / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "התעלם משגיאת TLS",
- "From Email": "אמייל שולח",
- emailCustomSubject: "נושא מותאם אישית",
- "To Email": "למייל",
- smtpCC: "עותק",
- smtpBCC: "עותק מוסתר",
- discord: "דיסקורד",
- "Discord Webhook URL": "כתובת אתר של Discord Webhook",
- wayToGetDiscordURL: "אתה יכול לקבל זאת על ידי מעבר להגדרות שרת -> אינטגרציות -> צור Webhook",
- "Bot Display Name": "שם תצוגה של בוט",
- "Prefix Custom Message": "קידומת הודעה מותאמת אישית",
- "Hello @everyone is...": "שלום {'@'}כולם...",
- teams: "Microsoft Teams",
- "Webhook URL": "כתובת האתר של Webhook",
- wayToGetTeamsURL: "אתה יכול ללמוד כיצד ליצור כתובת אתר ל-webhook {0}.",
- signal: "אוֹת",
- Number: "מספר",
- Recipients: "נמענים",
- needSignalAPI: "אתה צריך שיהיה לך לקוח איתות עם REST API.",
- wayToCheckSignalURL: "אתה יכול לבדוק את כתובת האתר הזו כדי לראות כיצד להגדיר אחת:",
- signalImportant: "חשוב: לא ניתן לערבב קבוצות ומספרים בנמענים!",
- gotify: "Gotify",
- "Application Token": "אסימון אפליקציה",
- "Server URL": "כתובת האתר של השרת",
- Priority: "עדיפות",
- slack: "Slack",
- "Icon Emoji": "אייקון אימוג'י",
- "Channel Name": "שם הערוץ",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "מידע נוסף על Webhooks ב: {0}",
- aboutChannelName: "הזן את שם הערוץ בשדה {0} שם ערוץ אם ברצונך לעקוף את ערוץ Webhook. לדוגמה: #ערוץ אחר",
- aboutKumaURL: "אם תשאיר את השדה Uptime Kuma URL ריק, הוא יעבור כברירת מחדל לעמוד Project GitHub.",
- emojiCheatSheet: "גיליון הונאה של אמוג'י: {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (תומך ב-50+ שירותי התראות)",
- GoogleChat: "Google Chat (Google Workspace בלבד)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "מפתח משתמש",
- Device: "התקן",
- "Message Title": "כותרת ההודעה",
- "Notification Sound": "צליל התראה",
- "More info on:": "מידע נוסף על: {0}",
- pushoverDesc1: "לעדיפות חירום (2) יש פסק זמן של 30 שניות ברירת מחדל בין ניסיונות חוזרים, והיא תפוג לאחר שעה.",
- pushoverDesc2: "אם ברצונך לשלוח התראות למכשירים שונים, מלא את שדה התקן.",
- "SMS Type": "סוג SMS",
- octopushTypePremium: "פרימיום (מהיר - מומלץ להתראה)",
- octopushTypeLowCost: "עלות נמוכה (איטית - לפעמים חסומה על ידי המפעיל)",
- checkPrice: "בדוק מחירים של {0}:",
- apiCredentials: "אישורי API",
- octopushLegacyHint: "האם אתה משתמש בגרסה הישנה של Octopush (2011-2020) או בגרסה החדשה?",
- "Check octopush prices": "בדוק מחירי תמנון {0}.",
- octopushPhoneNumber: "מספר טלפון (פורמט אינטלי, למשל: +33612345678)",
- octopushSMSSender: "שם שולח SMS: 3-11 תווים אלפאנומריים ורווח (a-zA-Z0-9)",
- "LunaSea Device ID": "מזהה מכשיר LunaSea",
- "Apprise URL": "Apprise URL",
- "Example:": "דוגמה: {0}",
- "Read more:": "קרא עוד: {0}",
- "Status:": "סטטוס: {0}",
- "Read more": "קרא עוד",
- appriseInstalled: "Apprise מותקן.",
- appriseNotInstalled: "Apprise אינו מותקן. {0}",
- "Access Token": "אסימון גישה",
- "Channel access token": "אסימון גישה לערוץ",
- "Line Developers Console": "קונסולת מפתחים",
- lineDevConsoleTo: "קו מפתחי קונסולת - {0}",
- "Basic Settings": "הגדרות בסיסיות",
- "User ID": "תעודת זהות של משתמש",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "תחילה גש ל-{0}, צור ספק וערוץ (Messaging API), לאחר מכן תוכל לקבל את אסימון הגישה לערוץ ומזהה המשתמש מפריטי התפריט שהוזכרו לעיל.",
- "Icon URL": "כתובת אתר של סמל",
- aboutIconURL: "אתה יכול לספק קישור לתמונה ב\"כתובת URL של סמל\" כדי לעקוף את תמונת הפרופיל המוגדרת כברירת מחדל. לא ישמש אם Icon Emoji מוגדר.",
- aboutMattermostChannelName: "אתה יכול לעקוף את ערוץ ברירת המחדל שאליו ה-Webhook מפרסם על ידי הזנת שם הערוץ בשדה \"שם ערוץ\". זה צריך להיות מופעל בהגדרות Mattermos Webhook. לדוגמה: #ערוץ אחר",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - זול אך איטי ולעיתים עמוס מדי. מוגבל רק לנמענים פולנים.",
- promosmsTypeFlash: "SMS FLASH - ההודעה תוצג אוטומטית במכשיר הנמען. מוגבל לנמענים פולנים בלבד.",
- promosmsTypeFull: "SMS FULL - שכבת פרימיום של SMS, אתה יכול להשתמש בשם השולח שלך (עליך לרשום את השם תחילה). אמין להתראות.",
- promosmsTypeSpeed: "SMS SPEED - העדיפות הגבוהה ביותר במערכת. מאוד מהיר ואמין אבל יקר (בערך פי שניים ממחיר מלא של SMS).",
- promosmsPhoneNumber: "מספר טלפון (לנמען פולני ניתן לדלג על אזורי חיוג)",
- promosmsSMSSender: "שם שולח SMS: שם רשום מראש או אחת מברירות המחדל: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "כתובת האתר של שרת הבית (עם http(s):// ויציאה אופציונלית)",
- "Internal Room Id": "מזהה חדר פנימי",
- matrixDesc1: "אתה יכול למצוא את מזהה החדר הפנימי על ידי עיון בחלק המתקדם של לקוח Matrix שלך בהגדרות החדר. זה צריך להיראות כמו !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "מומלץ מאוד ליצור משתמש חדש ולא להשתמש באסימון הגישה של משתמש מטריקס משלך שכן הוא יאפשר גישה מלאה לחשבון שלך ולכל החדרים שהצטרפת אליהם. במקום זאת, צור משתמש חדש והזמן אותו רק לחדר שבו תרצה לקבל את ההתראה. תוכל לקבל את אסימון הגישה על ידי הפעלת {0}",
- Method: "Method",
- Body: "Body",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "כותרות הבקשה אינן JSON חוקיות:",
- BodyInvalidFormat: "גוף הבקשה אינו JSON חוקי:",
- "Monitor History": "מעקב אחר היסטוריה",
- clearDataOlderThan: "שמור את נתוני היסטוריית הצג למשך {0} ימים.",
- PasswordsDoNotMatch: "סיסמאות לא תואמות.",
- records: "רשומות",
- "One record": "שיא אחד",
- steamApiKeyDescription: "לניטור שרת משחקי Steam אתה צריך מפתח Steam Web-API. אתה יכול לרשום את מפתח ה-API שלך כאן:",
- "Current User": "משתמש נוכחי",
- topic: "נושא",
- topicExplanation: "נושא MQTT למעקב",
- successMessage: "הודעת הצלחה",
- successMessageExplanation: "הודעת MQTT שתיחשב כהצלחה",
- recent: "לאחרונה",
- Done: "בוצע",
- Info: "מידע",
- Security: "אבטחה",
- "Steam API Key": "מפתח API Steam",
- "Shrink Database": "מסד נתונים מכווץ",
- "Pick a RR-Type...": "בחר סוג RR ...",
- "Pick Accepted Status Codes...": "בחר קודי סטטוס מקובלים ...",
- Default: "בְּרִירַת מֶחדָל",
- "HTTP Options": "אפשרויות HTTP",
- "Create Incident": "ליצור אירוע",
- Title: "כותרת",
- Content: "תוֹכֶן",
- Style: "Style",
- info: "מידע",
- warning: "אַזהָרָה",
- danger: "סַכָּנָה",
- error: "שְׁגִיאָה",
- critical: "קריטי",
- primary: "יְסוֹדִי",
- light: "אוֹר",
- dark: "אפל",
- Post: "הודעה",
- "Please input title and content": "אנא הזן כותרת ותוכן",
- Created: "נוצר",
- "Last Updated": "עודכן לאחרונה",
- Unpin: "ענן חוף",
- "Switch to Light Theme": "לעבור לנושא האור",
- "Switch to Dark Theme": "לעבור לנושא אפל",
- "Show Tags": "Show Tags",
- "Hide Tags": "הסתר תגיות",
- Description: "תיאור",
- "No monitors available.": "אין צגים זמינים.",
- "Add one": "הוסף אחד",
- "No Monitors": "אין צגים",
- "Untitled Group": "קבוצה ללא כותרת",
- Services: "שירותים",
- Discard: "להשליך",
- Cancel: "לְבַטֵל",
- "Powered by": "פועל על",
- shrinkDatabaseDescription: "ואקום מסד נתונים להפעיל עבור SQLITE.אם בסיס הנתונים שלך נוצר לאחר 1.10.0, Auto_VACUUM כבר מופעל ואין צורך בפעולה זו.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Username (incl. webapi_ prefix)",
- serwersmsAPIPassword: "סיסמת API",
- serwersmsPhoneNumber: "מספר טלפון",
- serwersmsSenderName: "שם שולח SMS (רשום באמצעות פורטל לקוחות)",
- smseagle: "SMSEagle",
- smseagleTo: "מספרי טלפון)",
- smseagleGroup: "שם קבוצת ספר טלפונים",
- smseagleContact: "שם איש קשר בספר הטלפונים",
- smseagleRecipientType: "Rסוג הנמען",
- smseagleRecipient: "נמענים (ים) (יש להפריד בין מרובים לפסיק)",
- smseagleToken: "API Access Token",
- smseagleUrl: "כתובת האתר של מכשיר ה- SMSeagege שלך",
- smseagleEncoding: "שלח כ- Unicode",
- smseaglePriority: "עדיפות הודעה (0-9, ברירת מחדל = 0)",
- stackfield: "סטאקפילד",
- Customize: "התאמה אישית",
- "Custom Footer": "כותרת תחתונה מותאמת אישית",
- "Custom CSS": "CSS מותאם אישית",
- smtpDkimSettings: "הגדרות DKIM",
- smtpDkimDesc: "אנא עיין ב- NodeMailer DKIM {0} לשימוש.",
- documentation: "ווקיפדיית מדריכים",
- smtpDkimDomain: "שם דומיין",
- smtpDkimKeySelector: "בורר מפתח",
- smtpDkimPrivateKey: "טוראי של פרטיy",
- smtpDkimHashAlgo: "אלגוריתם hash (אופציונלי)",
- smtpDkimheaderFieldNames: "מפתחות כותרת לחתום (אופציונלי)",
- smtpDkimskipFields: "מפתחות כותרת לא לחתום (אופציונלי)",
- wayToGetPagerDutyKey: "אתה יכול להשיג זאת על ידי מעבר לשירות -> ספריית שירות -> (בחר שירות) -> אינטגרציות -> הוסף אינטגרציה.כאן תוכלו לחפש \"אירועים API v2 \".מידע נוסף {0}",
- "Integration Key": "מפתח אינטגרציה",
- "Integration URL": "URL אינטגרציה",
- "Auto resolve or acknowledged": "פיתרון אוטומטי או הודה",
- "do nothing": "לעשות כלום",
- "auto acknowledged": "Auto הודה",
- "auto resolve": "פתרון אוטומטי",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "נקודת קצה של API",
- alertaEnvironment: "סביבה",
- alertaApiKey: "מפתח API",
- alertaAlertState: "מצב התראה",
- alertaRecoverState: "לשחזר מדינה",
- deleteStatusPageMsg: "האם אתה בטוח רוצה למחוק את דף הסטטוס הזה?",
- Proxies: "Proxies",
- default: "בְּרִירַת מֶחדָל",
- enabled: "מופעל",
- setAsDefault: "נקבע כברירת מחדל",
- deleteProxyMsg: "האם אתה בטוח רוצה למחוק את הפרוקסי הזה לכל המסכים?",
- proxyDescription: "Proxies must be assigned to a monitor to function.",
- enableProxyDescription: "פרוקסי זה לא ישפיע על בקשות צג עד שהוא יופעל.אתה יכול לשלוט באופן זמני להשבית את ה- Proxy מכל המסכים לפי מצב ההפעלה.",
- setAsDefaultProxyDescription: "פרוקסי זה יופעל כברירת מחדל עבור צגים חדשים.אתה עדיין יכול להשבית את ה- Proxy בנפרד עבור כל צג.",
- "Certificate Chain": "שרשרת אישורים",
- Valid: "תָקֵף",
- Invalid: "לא חוקי",
- AccessKeyId: "מזהה AccessKey",
- SecretAccessKey: "גישהלמפתחסוד",
- PhoneNumbers: "מספר טלפוןs",
- TemplateCode: "TemplateCode",
- SignName: "שם שם",
- "Sms template must contain parameters: ": "תבנית SMS חייבת להכיל פרמטרים: ",
- "Bark Endpoint": "Bark Endpoint",
- "Bark Group": "Bark Group",
- "Bark Sound": "Bark Sound",
- WebHookUrl: "WebHookUrl",
- SecretKey: "מפתח סודי",
- "For safety, must use secret key": "לבטיחות, חייב להשתמש במפתח סודיy",
- "Device Token": "אסימון מכשיר",
- Platform: "פּלַטפוֹרמָה",
- iOS: "iOS",
- Android: "דְמוּי אָדָם",
- Huawei: "huawei",
- High: "High",
- Retry: "נסה שוב",
- Topic: "נוֹשֵׂא",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "הגדרת פרוקסי",
- "Proxy Protocol": "פרוטוקול פרוקסי",
- "Proxy Server": "שרת פרוקסי",
- "Proxy server has authentication": "לשרת ה- Proxy יש אימות",
- User: "מִשׁתַמֵשׁ",
- Installed: "מוּתקָן",
- "Not installed": "לא מותקן",
- Running: "רץ",
- "Not running": "לא רץ",
- "Remove Token": "הסר אסימון",
- Start: "הַתחָלָה",
- Stop: "תפסיק",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "הוסף דף סטטוס חדש",
- Slug: "Slug",
- "Accept characters:": "קבל תווים:",
- startOrEndWithOnly: "התחל או סוף עם {0} בלבד",
- "No consecutive dashes": "אין מקפים רצופים",
- Next: "הַבָּא",
- "The slug is already taken. Please choose another slug.": "השבלול כבר נלקח.אנא בחר שבלול נוסף.",
- "No Proxy": "אין פרוקסי",
- Authentication: "אבטחה",
- "HTTP Basic Auth": "HTTP בסיסי Auth",
- "New Status Page": "דף סטטוס חדש",
- "Page Not Found": "הדף לא נמצא",
- "Reverse Proxy": "פרוקסי הפוך",
- Backup: "גיבוי",
- About: "אודות",
- wayToGetCloudflaredURL: "(הורד את CloudFlared מ- {0})",
- cloudflareWebsite: "אתר CloudFlare",
- "Message:": "הוֹדָעָה:",
- "Don't know how to get the token? Please read the guide:": "לא יודע איך להשיג את האסימון?אנא קרא את המדריך:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "החיבור הנוכחי עשוי ללכת לאיבוד אם אתה מתחבר כרגע באמצעות מנהרת CloudFlare.האם אתה בטוח רוצה לעצור את זה?הקלד את הסיסמה הנוכחית שלך כדי לאשר אותה.",
- "HTTP Headers": "כותרות HTTP",
- "Trust Proxy": "אמון בפרוקסי",
- "Other Software": "תוכנה אחרת",
- "For example: nginx, Apache and Traefik.": "למשל: Nginx, Apache ו- Traefik.",
- "Please read": "בבקשה תקרא",
- "Subject:": "נושא:",
- "Valid To:": "תקף ל:",
- "Days Remaining:": "ימים שנותרו:",
- "Issuer:": "המנפיק:",
- "Fingerprint:": "טביעת אצבע:",
- "No status pages": "אין דפי סטטוס",
- "Domain Name Expiry Notification": "הודעה על תום שם תחום",
- Proxy: "פרוקסי",
- "Date Created": "תאריך יצירה",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "כתובת HTTP של OneBot ",
- onebotMessageType: "סוג ההודעה OneBot",
- onebotGroupMessage: "קְבוּצָה",
- onebotPrivateMessage: "פְּרָטִי",
- onebotUserOrGroupId: "מזהה קבוצה/משתמש ",
- onebotSafetyTips: "לבטיחות, חייב לקבוע אסימון גישה ",
- "PushDeer Key": "PushDeer Key",
- "Footer Text": "טקסט כותרת תחתונה ",
- "Show Powered By": "הצג מופעל על ידי ",
- "Domain Names": "שמות דומיין ",
- signedInDisp: "חתום כ- {0} ",
- signedInDispDisabled: "Auth מושבת.",
- RadiusSecret: "רדיוס סוד",
- RadiusSecretDescription: "סוד משותף בין לקוח לשרת",
- RadiusCalledStationId: "נקרא מזהה תחנה",
- RadiusCalledStationIdDescription: "מזהה של המכשיר הנקרא ",
- RadiusCallingStationId: "מזהה תחנת שיחה ",
- RadiusCallingStationIdDescription: "מזהה של מכשיר השיחה ",
- "Certificate Expiry Notification": "הודעת תפוגה של אישור",
- "API Username": "שם משתמש API",
- "API Key": "מפתח API",
- "Recipient Number": "מספר הנמען",
- "From Name/Number": "משם/מספר",
- "Leave blank to use a shared sender number.": "השאר ריק כדי להשתמש במספר שולח משותף.",
- "Octopush API Version": "גרסת API של תמנון",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "נקודת קצה",
- octopushAPIKey: "\"מפתח API \" מתוך תעודות API של HTTP בלוח הבקרה",
- octopushLogin: "\"כניסה \" מתעודות API של HTTP בלוח הבקרה",
- promosmsLogin: "שם כניסה של API",
- promosmsPassword: "סיסמת API",
- "pushoversounds pushover": "Pushover (ברירת מחדל)",
- "pushoversounds bike": "אופניים",
- "pushoversounds bugle": "חֲצוֹצְרָה",
- "pushoversounds cashregister": "קופה רושמת",
- "pushoversounds classical": "קלַאסִי",
- "pushoversounds cosmic": "קוֹסמִי",
- "pushoversounds falling": "נופל",
- "pushoversounds gamelan": "gamelan",
- "pushoversounds incoming": "נִכנָס",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "קֶסֶם",
- "pushoversounds mechanical": "מֵכָנִי",
- "pushoversounds pianobar": "בר פסנתר",
- "pushoversounds siren": "סִירֶנָה",
- "pushoversounds spacealarm": "אזעקת חלל",
- "pushoversounds tugboat": "סירת משיכה",
- "pushoversounds alien": "אזעקת חייזרים (ארוכה)",
- "pushoversounds climb": "לטפס (ארוך)",
- "pushoversounds persistent": "מתמיד (ארוך)",
- "pushoversounds echo": "הד Pushover (ארוך)",
- "pushoversounds updown": "למעלה (ארוך)",
- "pushoversounds vibrate": "לרטוט בלבד",
- "pushoversounds none": "אף אחד (שקט)",
- pushyAPIKey: "מפתח API סודי",
- pushyToken: "אסימון מכשיר",
- "Show update if available": "הצג עדכון אם זמין",
- "Also check beta release": "בדוק גם את שחרור הבטא",
- "Using a Reverse Proxy?": "באמצעות פרוקסי הפוך?",
- "Check how to config it for WebSocket": "בדוק כיצד להגדיר אותו ל- WebSocket",
- "Steam Game Server": "שרת משחק קיטור",
- "Most likely causes:": "ככל הנראה גורם:",
- "The resource is no longer available.": "המשאב כבר לא זמין.",
- "There might be a typing error in the address.": "יתכן שיש שגיאת הקלדה בכתובת.",
- "What you can try:": "מה שאתה יכול לנסות:",
- "Retype the address.": "הקלד מחדש את הכתובת.",
- "Go back to the previous page.": "חזור לדף הקודם.",
- "Coming Soon": "בקרוב",
- wayToGetClickSendSMSToken: "אתה יכול לקבל שם משתמש API ומפתח API מ- {0}.",
- "Connection String": "מחרוזת חיבור",
- Query: "שאילתא",
- settingsCertificateExpiry: "תפוגת תעודת TLS",
- certificationExpiryDescription: "HTTPS עוקב אחר התראה על התראה כאשר תעודת TLS פגה ב:",
- "Setup Docker Host": "הגדרת מארח Docker",
- "Connection Type": "סוג חיבור",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "האם אתה בטוח רוצה למחוק את המארח של Docker לכל המוניטורים?",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "מיכל Docker",
- "Container Name / ID": "שם מכולה / מזהה",
- "Docker Host": "מארח דוקר",
- "Docker Hosts": "מארחי Docker",
- "ntfy Topic": "ntfy Topic",
- Domain: "תְחוּם",
- Workstation: "עמדת עבודה",
- disableCloudflaredNoAuthMsg: "אתה לא נמצא במצב AUTH, אין צורך בסיסמה.",
- trustProxyDescription: "סמוך על כותרות 'x-forwarded-*'.אם אתה רוצה להשיג את ה- IP של הלקוח הנכון וה- Uptime Kuma שלך מאחור כמו Nginx או Apache, עליך לאפשר זאת.",
- wayToGetLineNotifyToken: "אתה יכול לקבל אסימון גישה מ- {0}",
- Examples: "דוגמאות",
- "Home Assistant URL": "כתובת URL עוזרת ביתית",
- "Long-Lived Access Token": "אסימון גישה ארוכת שנים",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "ניתן ליצור אסימון גישה לאורך זמן על ידי לחיצה על שם הפרופיל שלך (שמאל למטה) וגלילה לתחתית ואז לחץ על צור אסימון. ",
- "Notification Service": "Notification Service",
- "default: notify all devices": "default: notify all devices",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "רשימה של שירותי הודעה ניתן למצוא בעוזר הבית תחת \"כלי מפתחים> שירותים \" חפש \"הודעה \" כדי למצוא את שם המכשיר/טלפון שלך.",
- "Automations can optionally be triggered in Home Assistant:": "אוטומציות יכולות להיות מופעלות באופן אופציונלי לעוזר הבית:",
- "Trigger type:": "סוג ההדק:",
- "Event type:": "סוג אירוע:",
- "Event data:": "נתוני אירועים:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "ואז בחר פעולה, למשל העבר את הסצינה למקום בו אור RGB הוא אדום.",
- "Frontend Version": "גרסת Frontend",
- "Frontend Version do not match backend version!": "גרסת Frontend לא תואמת את גרסת Backend!",
- "Base URL": "Base URL",
- goAlertInfo: "SAETRERT הוא יישום קוד פתוח לתזמון שיחה, הסלמות והודעות אוטומטיות (כמו SMS או שיחות קוליות).לעסוק אוטומטית את האדם הנכון, בדרך הנכונה ובזמן הנכון!{0}",
- goAlertIntegrationKeyInfo: "קבל מפתח אינטגרציה של API גנרי לשירות בפורמט זה \"AAAAAAAA-BBB-CCCC-DDDD-EEEEEEEEEEE \" בדרך כלל הערך של פרמטר האסימון של URL שהועתק.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "מיושם: מכיוון שהרבה תכונות שנוספו ותכונת הגיבוי הזו מעט לא מצומצמת, היא לא יכולה לייצר או לשחזר גיבוי שלם.",
- backupRecommend: "אנא גבה את עוצמת הקול או את תיקיית הנתונים (./data/) ישירות במקום.",
- Optional: "אופציונאלי",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "מסמכי API של SmsManager ",
- "Gateway Type": "סוג שער",
- SMSManager: "SMSManager",
- "You can divide numbers with": "אתה יכול לחלק מספרים עם",
- or: "אוֹ",
- recurringInterval: "הפסקה",
- Recurring: "מחזורי",
- strategyManual: "פעיל/לא פעיל באופן ידני",
- warningTimezone: "זה משתמש באזור הזמן של השרת",
- weekdayShortMon: "שני",
- weekdayShortTue: "שלישי",
- weekdayShortWed: "רביעי",
- weekdayShortThu: "חמישי",
- weekdayShortFri: "שישי",
- weekdayShortSat: "שבת",
- weekdayShortSun: "ראשון",
- dayOfWeek: "יום בשבוע",
- dayOfMonth: "יום בחודש",
- lastDay: "Last Day",
- lastDay1: "היום האחרון של החודש",
- lastDay2: "יום שני האחרון של החודש",
- lastDay3: "יום 3 האחרון של החודש",
- lastDay4: "היום הרביעי האחרון בחודש",
- "No Maintenance": "אין תחזוקה",
- pauseMaintenanceMsg: "האם אתה בטוח רוצה להשהות?",
- "maintenanceStatus-under-maintenance": "מתבצעות עבודות תחזוקה",
- "maintenanceStatus-inactive": "לא פעיל",
- "maintenanceStatus-scheduled": "מתוזמן",
- "maintenanceStatus-ended": "הסתיים",
- "maintenanceStatus-unknown": "לא ידוע",
- "Display Timezone": "הצג אזור זמן",
- "Server Timezone": "אזור זמן של שרת",
- statusPageMaintenanceEndDate: "סוך",
- IconUrl: "קישור לתמונת אייקון",
- "Enable DNS Cache": "הפעל מטמון DNS",
- Enable: "הפעל",
- Disable: "השבת",
- dnsCacheDescription: "ייתכן שהוא לא עובד בסביבות IPv6 מסוימות, השבת אותו אם אתה נתקל בבעיות כלשהן.",
- "Single Maintenance Window": "חלון תחזוקה בודד",
- "Maintenance Time Window of a Day": "חלון זמן תחזוקה ביום",
- "Effective Date Range": "טווח תאריכים אפקטיבי",
- "Schedule Maintenance": "לוח זמנים לתחזוקה",
- "Date and Time": "תאריך ושעה",
- "DateTime Range": "טווח תאריכים וזמן",
- Strategy: "אסטרטגיה",
- "Free Mobile User Identifier": "מזהה משתמש נייד בחינם",
- "Free Mobile API Key": "מפתח API חינם לנייד",
- "Enable TLS": "אפשר TLS",
- "Proto Service Name": "שם שירות פרוטו",
- "Proto Method": "שיטת פרוטו",
- "Proto Content": "תוכן פרוטו",
- Economy: "חיסכון",
- Lowcost: "זול",
- high: "גבוהה",
- "General Monitor Type": "מוניטור כללי",
- "Passive Monitor Type": "מוניטור פסיבי",
- "Specific Monitor Type": "סוג מוניטור ספציפי",
-};
diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js
deleted file mode 100644
index 0c73e1d93..000000000
--- a/src/languages/hr-HR.js
+++ /dev/null
@@ -1,581 +0,0 @@
-export default {
- languageName: "Hrvatski",
- checkEverySecond: "Provjera svake {0} sekunde",
- retryCheckEverySecond: "Ponovni pokušaj svake {0} sekunde",
- retriesDescription: "Broj ponovnih pokušaja prije nego će se servis označiti kao nedostupan te poslati obavijest",
- ignoreTLSError: "Ignoriraj TLS/SSL pogreške za HTTPS web stranice",
- upsideDownModeDescription: "Preokreni logiku statusa. Ako se primi pozitivan odgovor, smatra se da je usluga nedostupna.",
- maxRedirectDescription: "Maksimalan broj preusmjeravanja. Postaviti na 0 kako bi se preusmjeravanja onemogućila.",
- acceptedStatusCodesDescription: "Odaberite statusne kodove koji se smatraju uspješnim odgovorom.",
- passwordNotMatchMsg: "Lozinke se ne poklapaju.",
- notificationDescription: "Obavijesti će funkcionirati samo ako su dodijeljene monitoru.",
- keywordDescription: "Ključna riječ za pretragu, u obliku običnog HTML-a ili u JSON formatu. Pretraga je osjetljiva na velika i mala slova.",
- deleteMonitorMsg: "Jeste li sigurni da želite izbrisati monitor?",
- deleteNotificationMsg: "Jeste li sigurni da želite izbrisati ovu obavijest za sve monitore?",
- resolverserverDescription: "Cloudflare je zadani DNS poslužitelj. Možete to promijeniti u bilo kojem trenutku.",
- rrtypeDescription: "Odaberite vrstu DNS zapisa o resursu kojeg želite pratiti",
- pauseMonitorMsg: "Jeste li sigurni da želite pauzirati?",
- enableDefaultNotificationDescription: "Ova će obavijesti biti omogućena za sve nove monitore. Možete ju ručno onemogućiti za pojedini monitor.",
- clearEventsMsg: "Jeste li sigurni da želite izbrisati sve zapise o događajima za ovaj monitor?",
- clearHeartbeatsMsg: "Jeste li sigurni da želite izbrisati sve zapise o provjerama za ovaj monitor?",
- confirmClearStatisticsMsg: "Jeste li sigurni da želite izbrisati SVE statistike?",
- importHandleDescription: "Odaberite opciju \"Preskoči postojeće\" ako želite preskočiti uvoz postojećih monitora i obavijesti ako dođe do poklapanja u imenu. Opcija \"Prepiši\" će izbrisati postojeće monitore i obavijesti.",
- confirmImportMsg: "Jeste li sigurni da želite pokrenuti uvoz? Provjerite jeste li odabrali ispravnu opciju uvoza.",
- twoFAVerifyLabel: "Unesite svoj 2FA token:",
- tokenValidSettingsMsg: "Token je važeći! Sada možete spremiti postavke dvofaktorske autentikacije.",
- confirmEnableTwoFAMsg: "Želite li omogućiti dvofaktorsku autentikaciju?",
- confirmDisableTwoFAMsg: "Jeste li sigurni da želite onemogućiti dvofaktorsku autentikaciju?",
- Settings: "Postavke",
- Dashboard: "Kontrolna ploča",
- "New Update": "Novo ažuriranje",
- Language: "Jezik",
- Appearance: "Izgled",
- Theme: "Tema",
- General: "Općenito",
- "Primary Base URL": "Osnovni URL",
- Version: "Inačica",
- "Check Update On GitHub": "Provjeri dostupnost nove inačice na GitHubu",
- List: "Popis",
- Add: "Dodaj",
- "Add New Monitor": "Dodaj novi Monitor",
- "Quick Stats": "Statistika",
- Up: "Dostupno",
- Down: "Nedostupno",
- Pending: "U tijeku",
- Unknown: "Nepoznato",
- pauseDashboardHome: "Pauzirano",
- Name: "Naziv",
- Status: "Status",
- DateTime: "Vremenska oznaka",
- Message: "Izvještaj",
- "No important events": "Nema važnih događaja",
- Pause: "Pauziraj",
- Resume: "Nastavi",
- Edit: "Uredi",
- Delete: "Obriši",
- Current: "Trenutno",
- Uptime: "Dostupnost",
- "Cert Exp.": "Istek cert.",
- day: "dan | dana",
- "-day": "-dnevno",
- hour: "sat",
- "-hour": "-satno",
- Response: "Odgovor",
- Ping: "Odziv",
- "Monitor Type": "Vrsta Monitora",
- Keyword: "Ključna riječ",
- "Friendly Name": "Prilagođen naziv",
- URL: "URL",
- Hostname: "Domaćin",
- Port: "Port",
- "Heartbeat Interval": "Interval provjere",
- Retries: "Broj ponovnih pokušaja",
- "Heartbeat Retry Interval": "Interval ponovnih pokušaja",
- Advanced: "Napredne postavke",
- "Upside Down Mode": "Obrnuti način",
- "Max. Redirects": "Maksimalan broj preusmjeravanja",
- "Accepted Status Codes": "Prihvaćeni statusni kodovi",
- "Push URL": "Push URL",
- needPushEvery: "Potrebno je slati zahtjeve na URL svakih {0} sekundi.",
- pushOptionalParams: "Neobavezni parametri: {0}",
- Save: "Spremi",
- Notifications: "Obavijesti",
- "Not available, please setup.": "Nije dostupno, potrebno je dodati novu stavku.",
- "Setup Notification": "Dodaj obavijest",
- Light: "Svijetli način",
- Dark: "Tamni način",
- Auto: "Automatski",
- "Theme - Heartbeat Bar": "Tema za traku dostupnosti",
- Normal: "Normalno",
- Bottom: "Ispod",
- None: "Isključeno",
- Timezone: "Vremenska zona",
- "Search Engine Visibility": "Vidljivost tražilicama",
- "Allow indexing": "Dopusti indeksiranje",
- "Discourage search engines from indexing site": "Sprječavanje indeksiranja",
- "Change Password": "Promjena lozinke",
- "Current Password": "Trenutna lozinka",
- "New Password": "Nova lozinka",
- "Repeat New Password": "Potvrdite novu lozinku",
- "Update Password": "Spremi novu lozinku",
- "Disable Auth": "Onemogući autentikaciju",
- "Enable Auth": "Omogući autentikaciju",
- "disableauth.message1": "Jeste li sigurni da želite isključiti autentikaciju ?",
- "disableauth.message2": "To je za korisnike koji imaju vanjsku autentikaciju stranice ispred Uptime Kume, poput usluge Cloudflare Access.",
- "Please use this option carefully!": "Pažljivo koristite ovu opciju.",
- Logout: "Odjava",
- Leave: "Poništi",
- "I understand, please disable": "Razumijem, svejedno onemogući",
- Confirm: "Potvrda",
- Yes: "Da",
- No: "Ne",
- Username: "Korisničko ime",
- Password: "Lozinka",
- "Remember me": "Zapamti me",
- Login: "Prijava",
- "No Monitors, please": "Nema monitora, ",
- "add one": "dodaj jedan",
- "Notification Type": "Tip obavijesti",
- Email: "E-pošta",
- Test: "Testiraj",
- "Certificate Info": "Informacije o certifikatu",
- "Resolver Server": "DNS poslužitelj",
- "Resource Record Type": "Vrsta DNS zapisa",
- "Last Result": "Posljednji rezultat",
- "Create your admin account": "Stvori administratorski račun",
- "Repeat Password": "Potvrda lozinke",
- "Import Backup": "Uvoz sigurnosne kopije",
- "Export Backup": "Izvoz sigurnosne kopije",
- Export: "Izvoz",
- Import: "Uvoz",
- respTime: "Vrijeme odgovora (ms)",
- notAvailableShort: "ne postoji",
- "Default enabled": "Omogući za nove monitore",
- "Apply on all existing monitors": "Primijeni na postojeće monitore",
- Create: "Kreiraj",
- "Clear Data": "Obriši podatke",
- Events: "Događaji",
- Heartbeats: "Provjere",
- "Auto Get": "Automatski dohvat",
- backupDescription: "Moguće je napraviti sigurnosnu kopiju svih monitora i obavijesti koja će biti spremljena kao JSON datoteka.",
- backupDescription2: "Napomena: povijest i podaci o događajima nisu uključeni u sigurnosnu kopiju.",
- backupDescription3: "Osjetljivi podaci poput tokena za obavijesti uključeni su u sigurnosnu kopiju. Zato je potrebno čuvati izvoz na sigurnom mjestu.",
- alertNoFile: "Datoteka za uvoz nije odabrana.",
- alertWrongFileType: "Datoteka za uvoz nije u JSON formatu.",
- "Clear all statistics": "Obriši sve statistike",
- "Skip existing": "Preskoči postojeće",
- Overwrite: "Prepiši",
- Options: "Opcije",
- "Keep both": "Zadrži sve",
- "Verify Token": "Provjeri Token",
- "Setup 2FA": "Postavi dvofaktorsku autentikaciju",
- "Enable 2FA": "Omogući dvofaktorsku autentikaciju",
- "Disable 2FA": "Onemogući dvofaktorsku autentikaciju",
- "2FA Settings": "Postavke 2FA",
- "Two Factor Authentication": "Dvofaktorska autentikacija",
- Active: "Aktivna",
- Inactive: "Neaktivno",
- Token: "Token",
- "Show URI": "Pokaži URI",
- Tags: "Oznake",
- "Add New below or Select...": "Dodajte novu oznaku ispod ili odaberite...",
- "Tag with this name already exist.": "Oznaka s tim nazivom već postoji",
- "Tag with this value already exist.": "Oznaka s tom vrijednošću već postoji.",
- color: "Boja",
- "value (optional)": "Vrijednost (neobavezno)",
- Gray: "Siva",
- Red: "Crvena",
- Orange: "Narančasta",
- Green: "Zelena",
- Blue: "Plava",
- Indigo: "Indigo",
- Purple: "Ljubičasta",
- Pink: "Ružičasta",
- "Search...": "Pretraga...",
- "Avg. Ping": "Prosječni odziv",
- "Avg. Response": "Prosječni odgovor",
- "Entry Page": "Početna stranica",
- statusPageNothing: "Ovdje nema ničega, dodajte grupu ili monitor.",
- "No Services": "Nema usluga",
- "All Systems Operational": "Svi sustavi su operativni",
- "Partially Degraded Service": "Usluga djelomično nedostupna",
- "Degraded Service": "Usluga nedostupna",
- "Add Group": "Dodaj grupu",
- "Add a monitor": "Dodaj monitor",
- "Edit Status Page": "Uredi Statusnu stranicu",
- "Go to Dashboard": "Na Kontrolnu ploču",
- "Status Page": "Statusna stranica",
- "Status Pages": "Statusne stranice",
- defaultNotificationName: "Moja {number}. {notification} obavijest",
- here: "ovdje",
- Required: "Potrebno",
- telegram: "Telegram",
- "Bot Token": "Token bota",
- wayToGetTelegramToken: "Token možete nabaviti preko {0}.",
- "Chat ID": "ID razgovora",
- supportTelegramChatID: "Podržani su ID-jevi izravnih razgovora, grupa i kanala",
- wayToGetTelegramChatID: "ID razgovora možete saznati tako da botu pošaljete poruku te odete na ovaj URL:",
- "YOUR BOT TOKEN HERE": "OVDJE IDE TOKEN BOTA",
- chatIDNotFound: "ID razgovora nije pronađen; prvo morate poslati poruku botu",
- webhook: "Webhook",
- "Post URL": "URL Post zahtjeva",
- "Content Type": "Tip sadržaja (Content Type)",
- webhookJsonDesc: "{0} je dobra opcija za moderne HTTP poslužitelje poput Express.js-a",
- webhookFormDataDesc: "{multipart} je moguća alternativa za PHP, samo je potrebno parsirati JSON koristeći {decodeFunction}",
- smtp: "E-mail (SMTP)",
- secureOptionNone: "Bez sigurnosti / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ignoriraj greške TLS-a",
- "From Email": "Adresa za \"From\" polje",
- emailCustomSubject: "Prilagođeno \"Subject\" polje",
- "To Email": "Odredišne adrese e-pošte",
- smtpCC: "Cc",
- smtpBCC: "Bcc",
- discord: "Discord",
- "Discord Webhook URL": "URL Discord webhooka",
- wayToGetDiscordURL: "Ovo možete dobiti tako da odete na Postavke servera -> Integracije -> Napravi webhook",
- "Bot Display Name": "Nadimak Bota unutar servera",
- "Prefix Custom Message": "Prefiks prilagođene poruke",
- "Hello @everyone is...": "Pozdrav {'@'}everyone...",
- teams: "Microsoft Teams",
- "Webhook URL": "URL webhooka",
- wayToGetTeamsURL: "Više informacija o Teams webhookovima možete pročitati {0}.",
- signal: "Signal",
- Number: "Broj",
- Recipients: "Primatelji",
- needSignalAPI: "Potreban je klijent s REST sučeljem.",
- wayToCheckSignalURL: "Više informacija o postavljanju Signal klijenta:",
- signalImportant: "VAŽNO: Grupe i brojevi se ne mogu istovremeno koristiti kao primatelji!",
- gotify: "Gotify",
- "Application Token": "Token Aplikacije",
- "Server URL": "URL poslužitelja",
- Priority: "Prioritet",
- slack: "Slack",
- "Icon Emoji": "Emotikon",
- "Channel Name": "Naziv kanala",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Dodatne informacije o webhookovima su dostupne na: {0}",
- aboutChannelName: "Unesite ime {0} kanala u polju Naziv kanala ako želite zaobići webhook kanal. Primjerice: #neki-kanal",
- aboutKumaURL: "Ako je polje \"Uptime Kuma URL\" prazno, koristi se zadana vrijednost koja vodi na GitHub stranicu projekta.",
- emojiCheatSheet: "Popis emotikona: {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Podržava preko 50 usluga za obavijesti)",
- pushbullet: "Pushbullet",
- line: "LINE",
- mattermost: "Mattermost",
- "User Key": "Korisnički ključ",
- Device: "Uređaji",
- "Message Title": "Naslov poruke",
- "Notification Sound": "Zvuk obavijesti",
- "More info on:": "Više informacija na: {0}",
- pushoverDesc1: "Hitni prioritet (2) ima zadani istek vremena od 30 sekundi između ponovnih pokušaja te će isteći nakon 1 sata.",
- pushoverDesc2: "Ako želite slati obavijesti na više uređaja, ispunite polje \"Uređaji\".",
- "SMS Type": "Tip SMS-a",
- octopushTypePremium: "Premium (Brzo - preporučeno za obavijesti)",
- octopushTypeLowCost: "Low Cost (Sporo - mobilni operateri ponekad blokiraju ove poruke)",
- checkPrice: "Provjerite {0} cijene:",
- apiCredentials: "Vjerodajnice za API",
- octopushLegacyHint: "Koristite li staru inačicu usluge Octopush (2011-2020) ili noviju inačicu?",
- "Check octopush prices": "Provjerite cijene usluge Octopush {0}.",
- octopushPhoneNumber: "Telefonski broj (međunarodni format, primjerice: +38512345678) ",
- octopushSMSSender: "Naziv SMS pošiljatelja : 3-11 alfanumeričkih znakova i razmak (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea ID Uređaja",
- "Apprise URL": "URL usluge Apprise",
- "Example:": "Primjerice: {0}",
- "Read more:": "Pročitajte više: {0}",
- "Status:": "Status: {0}",
- "Read more": "Pročitaj više",
- appriseInstalled: "Apprise je instaliran.",
- appriseNotInstalled: "Apprise nije instaliran. {0}",
- "Access Token": "Pristupni token",
- "Channel access token": "Token za pristup kanalu",
- "Line Developers Console": "LINE razvojnoj konzoli",
- lineDevConsoleTo: "LINE razvojna konzola - {0}",
- "Basic Settings": "Osnovne Postavke",
- "User ID": "Korisnički ID",
- "Messaging API": "API za razmjenu poruka",
- wayToGetLineChannelToken: "Prvo, pristupite {0}, kreirajte pružatelja usluga te kanal (API za razmjenu poruka), zatim možete dobiti token za pristup kanalu te korisnički ID za polja iznad.",
- "Icon URL": "URL slike",
- aboutIconURL: "Možete postaviti poveznicu na sliku u polju \"URL slike\" kako biste spriječili korištenje zadane slike. Ovo se polje neće koristiti ako je postavljeno polje \"Emotikon\".",
- aboutMattermostChannelName: "Možete promijeniti kanal u kojeg webhook šalje tako da ispunite polje \"Naziv kanala\". Ta opcija mora biti omogućena unutar Mattermost postavki za webhook. Primjerice: #neki-kanal",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - jeftina, ali spora opcija koja je često preopterećena. Ograničeno samo na primatelje unutar Poljske.",
- promosmsTypeFlash: "SMS FLASH - Poruka se automatski pojavljuje na uređaju primatelja. Ograničeno samo na primatelje unutar Poljske.",
- promosmsTypeFull: "SMS FULL - Premium razina usluge, dozvoljava postavljanje naziva SMS pošiljatelja (Naziv mora biti registriran). Usluga pouzdana za obavijesti.",
- promosmsTypeSpeed: "SMS SPEED - Usluga najvećeg prioriteta. Brza i pouzdana, ali skupa (otprilike dvostruko skuplja od cijene usluge SMS FULL).",
- promosmsPhoneNumber: "Telefonski broj (za primatelje unutar Poljske nije potrebno navoditi pozivni broj države)",
- promosmsSMSSender: "Naziv SMS pošiljatelja: Registriran naziv ili jedan od zadanih: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu URL webhooka",
- matrixHomeserverURL: "URL Matrix homeservera (uključujući http(s):// te port, ako je potrebno)",
- "Internal Room Id": "Interni ID sobe",
- matrixDesc1: "Interni ID sobe se može pronaći u naprednim postavkama sobe unutar Matrix klijenta. ID sobe nalikuje idućem zapisu: !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Preporučuje se stvaranje novog korisnika te suzdržavanje od korištenja pristupnog tokena vlastitog Matrix korisnika. Novog korisnika potrebno je dodati u sobe u kojima želite primati obavijesti. Pristupni token možete dobiti pokretanjem naredbe {0}",
- Method: "Metoda",
- Body: "Tijelo",
- Headers: "Zaglavlja",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "Zaglavlja nisu nije valjani JSON: ",
- BodyInvalidFormat: "Tijelo zahtjeva nije valjani JSON: ",
- "Monitor History": "Povijest monitora",
- clearDataOlderThan: "Podaci o povijesti monitora čuvaju se {0} dana.",
- PasswordsDoNotMatch: "Lozinke se ne poklapaju.",
- records: "zapisa",
- "One record": "Jedan zapis",
- "Showing {from} to {to} of {count} records": "Prikaz zapisa {from}-{to} od sveukupno {count}",
- steamApiKeyDescription: "Za praćenje Steam poslužitelja za igru, potrebno je imati Steam Web-API ključ. Možete registrirati vlastiti ključ ovdje: ",
- "Current User": "Trenutni korisnik",
- recent: "Nedavno",
- Done: "Gotovo",
- Info: "Informacije",
- Security: "Sigurnost",
- "Shrink Database": "Smanji bazu podataka",
- "Pick a RR-Type...": "Odaberite vrstu DNS zapisa od navedenih...",
- "Pick Accepted Status Codes...": "Odaberite HTTP statusne kodove koji će biti prihvaćeni...",
- "Steam API Key": "Steam API ključ",
- Default: "Zadano",
- "HTTP Options": "HTTP Postavke",
- "Create Incident": "Novi izvještaj o incidentu",
- Title: "Naslov",
- Content: "Sadržaj",
- Style: "Stil",
- info: "informacija",
- warning: "upozorenje",
- danger: "opasnost",
- primary: "primarno",
- light: "svijetlo",
- dark: "tamno",
- Post: "Objavi",
- Created: "Stvoreno",
- "Last Updated": "Uređeno",
- "Please input title and content": "Naslov i sadržaj ne mogu biti prazni",
- Unpin: "Ukloni",
- "Switch to Light Theme": "Prebaci na svijetli način",
- "Switch to Dark Theme": "Prebaci na tamni način",
- "Show Tags": "Pokaži oznake",
- "Hide Tags": "Sakrij oznake",
- Description: "Opis",
- "No monitors available.": "Nema dostupnih monitora.",
- "Add one": "Stvori jednog",
- "No Monitors": "Bez monitora",
- "Untitled Group": "Bezimena grupa",
- Services: "Usluge",
- Discard: "Odbaci",
- Cancel: "Otkaži",
- "Powered by": "Pokreće",
- Saved: "Spremljeno",
- PushByTechulus: "Push by Techulus",
- GoogleChat: "Google Chat (preko platforme Google Workspace)",
- shrinkDatabaseDescription: "Pokreni VACUUM operaciju za SQLite. Ako je baza podataka kreirana nakon inačice 1.10.0, AUTO_VACUUM opcija već je uključena te ova akcija nije nužna.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API korisničko ime (uključujući webapi_ prefiks)",
- serwersmsAPIPassword: "API lozinka",
- serwersmsPhoneNumber: "Broj telefona",
- serwersmsSenderName: "Ime SMS pošiljatelja (registrirano preko korisničkog portala)",
- stackfield: "Stackfield",
- smtpDkimSettings: "DKIM postavke",
- smtpDkimDesc: "Za više informacija, postoji Nodemailer DKIM {0}.",
- documentation: "dokumentacija",
- smtpDkimDomain: "Domena",
- smtpDkimKeySelector: "Odabir ključa",
- smtpDkimPrivateKey: "Privatni ključ",
- smtpDkimHashAlgo: "Hash algoritam (neobavezno)",
- smtpDkimheaderFieldNames: "Ključevi zaglavlja za potpis (neobavezno)",
- smtpDkimskipFields: "Ključevi zaglavlja koji se neće potpisati (neobavezno)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "Krajnja točka API-ja (Endpoint)",
- alertaEnvironment: "Okruženje (Environment)",
- alertaApiKey: "API ključ",
- alertaAlertState: "Stanje upozorenja",
- alertaRecoverState: "Stanje oporavka",
- deleteStatusPageMsg: "Sigurno želite obrisati ovu statusnu stranicu?",
- resendEveryXTimes: "Ponovno pošalji svakih {0} puta",
- resendDisabled: "Ponovno slanje je onemogućeno",
- dnsPortDescription: "Port DNS poslužitelja. Zadana vrijednost je 53. Moguće je promijeniti ga u svakom trenutku.",
- "Resend Notification if Down X times consequently": "Ponovno pošalji obavijest ako je usluga nedostupna više puta zaredom",
- topic: "Tema",
- topicExplanation: "MQTT tema koja će se monitorirati",
- successMessage: "Poruka o uspjehu",
- successMessageExplanation: "MQTT poruka koja se smatra uspješnom",
- error: "greška",
- critical: "kritično",
- Customize: "Customize",
- "Custom Footer": "Prilagođeno podnožje",
- "Custom CSS": "Prilagođeni CSS",
- wayToGetPagerDutyKey: "Ključ možete dobiti odlaskom na \"Service -> Service Directory -> (Odabrani servis) -> Integrations -> Add integration\". Ovdje pretražite za \"Events API V2\". Više informacija {0}",
- "Integration Key": "Ključ integracije",
- "Integration URL": "URL integracije",
- "Auto resolve or acknowledged": "Automatsko razrješavanje i priznavanje",
- "do nothing": "Ne radi ništa",
- "auto acknowledged": "Automatsko priznavanje",
- "auto resolve": "Automatsko razrješavanje",
- Proxies: "Proxy poslužitelji",
- default: "Zadano",
- enabled: "Omogućeno",
- setAsDefault: "Postavi kao zadano",
- deleteProxyMsg: "Sigurno želite obrisati ovaj proxy za sve monitore?",
- proxyDescription: "Proxy poslužitelji moraju biti dodijeljni monitoru kako bi funkcionirali.",
- enableProxyDescription: "Onemogućeni proxy poslužitelj neće imati učinak na zahtjeve monitora. Možete privremeno onemogućiti proxy poslužitelja za sve monitore.",
- setAsDefaultProxyDescription: "Ovaj proxy poslužitelj bit će odmah omogućen za nove monitore. I dalje ga možete onemogućiti za svaki monitor zasebno.",
- "Certificate Chain": "Lanac certifikata",
- Valid: "Važeći",
- Invalid: "Nevažeći",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey tajni ključ",
- PhoneNumbers: "Telefonski brojevi",
- TemplateCode: "Predložak koda",
- SignName: "Potpis",
- "Sms template must contain parameters: ": "SMS predložak mora sadržavati parametre: ",
- "Bark Endpoint": "Bark krajnja točka (endpoint)",
- "Bark Group": "Bark grupa",
- "Bark Sound": "Bark zvuk",
- WebHookUrl: "WebHookUrl",
- SecretKey: "Tajni ključ",
- "For safety, must use secret key": "Korištenje tajnog ključa je obavezno",
- "Device Token": "Token uređaja",
- Platform: "Platforma",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Visoko",
- Retry: "Ponovnih pokušaja",
- Topic: "Tema",
- "WeCom Bot Key": "WeCom ključ Bota",
- "Setup Proxy": "Dodaj proxy poslužitelj",
- "Proxy Protocol": "Protokol",
- "Proxy Server": "Proxy poslužitelj",
- "Proxy server has authentication": "Proxy poslužitelj ima autentikaciju",
- User: "Korisnik",
- Installed: "Instalirano",
- "Not installed": "Nije instalirano",
- Running: "Pokrenuto",
- "Not running": "Nije pokrenuto",
- "Remove Token": "Ukloni Token",
- Start: "Pokreni",
- Stop: "Zaustavi",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Dodaj novu statusnu stranicu",
- Slug: "Slug",
- "Accept characters:": "Dozvoljeni znakovi:",
- startOrEndWithOnly: "Započinje ili završava znakovima {0}",
- "No consecutive dashes": "Bez uzastopnih povlaka",
- Next: "Sljedeće",
- "The slug is already taken. Please choose another slug.": "Slug je zauzet. Odaberite novi slug.",
- "No Proxy": "Bez proxy poslužitelja",
- Authentication: "Autentikacija",
- "HTTP Basic Auth": "HTTP Basic Auth",
- "New Status Page": "Dodaj statusnu stranicu",
- "Page Not Found": "Stranica nije pronađena",
- "Reverse Proxy": "Reverzni proxy",
- Backup: "Sigurnosno kopiranje",
- About: "O Uptime Kumi",
- wayToGetCloudflaredURL: "(Preuzmite cloudflared s {0})",
- cloudflareWebsite: "Cloudflare web stranice",
- "Message:": "Poruka:",
- "Don't know how to get the token? Please read the guide:": "Ne znate kako doći do tokena? Pročitajte vodič:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Trenutna veza možda bude prekinuta jer se koristi Cloudflare tuneliranje. Sigurno želite zaustaviti? Unesite lozinku za potvrdu.",
- "HTTP Headers": "HTTP zaglavlja",
- "Trust Proxy": "Vjeruj proxy poslužitelju",
- "Other Software": "Ostali programi",
- "For example: nginx, Apache and Traefik.": "Primjerice: nginx, Apache ili Traefik.",
- "Please read": "Molimo pročitajte",
- "Subject:": "Predmet:",
- "Valid To:": "Valjano do:",
- "Days Remaining:": "Preostalo dana:",
- "Issuer:": "Izdavatelj:",
- "Fingerprint:": "Fingerprint:",
- "No status pages": "Nema statusnih stranica",
- "Domain Name Expiry Notification": "Obavijest za istek domena",
- Proxy: "Proxy",
- "Date Created": "Datum stvaranja",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP adresa",
- onebotMessageType: "OneBot tip poruke",
- onebotGroupMessage: "Grupna",
- onebotPrivateMessage: "Privatna",
- onebotUserOrGroupId: "ID korisnika/grupe",
- onebotSafetyTips: "Pristupni token mora biti postavljen",
- "PushDeer Key": "PushDeer ključ",
- "Footer Text": "Tekst podnožja",
- "Show Powered By": "Pokaži natpis 'Pokreće...'",
- "Domain Names": "Domene",
- signedInDisp: "Prijavljeni ste kao {0}",
- signedInDispDisabled: "Autentikacija onemogućena.",
- RadiusSecret: "Radius Tajna",
- RadiusSecretDescription: "Dijeljena Tajna između klijenta i poslužitelja",
- RadiusCalledStationId: "Called Station ID",
- RadiusCalledStationIdDescription: "Identifikator pozivne stanice",
- RadiusCallingStationId: "Calling Station ID",
- RadiusCallingStationIdDescription: "Identifikator pozivajuće stanice",
- "Certificate Expiry Notification": "Obavijest za istek certifikata",
- "API Username": "API korisničko ime",
- "API Key": "API ključ",
- "Recipient Number": "Broj primatelja",
- "From Name/Number": "Naziv/broj pošiljatelja",
- "Leave blank to use a shared sender number.": "Ostaviti prazno za korištenje dijeljenog broja pošiljatelja.",
- "Octopush API Version": "Octopush verzija API-ja",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "krajnja točka (endpoint)",
- octopushAPIKey: "\"API ključ\" iz HTTP API postavki",
- octopushLogin: "\"Korisničko ime\" iz HTTP API postavki",
- promosmsLogin: "API korisničko ime",
- promosmsPassword: "API lozinka",
- "pushoversounds pushover": "Pushover (default)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "Vibrate Only",
- "pushoversounds none": "None (silent)",
- pushyAPIKey: "Tajni API ključ",
- pushyToken: "Token uređaja",
- "Show update if available": "Pokaži moguću nadogradnju",
- "Also check beta release": "Provjeravaj i za beta izdanja",
- "Using a Reverse Proxy?": "Koristi li se reverzni proxy?",
- "Check how to config it for WebSocket": "Provjerite kako se konfigurira za WebSocket protokol",
- "Steam Game Server": "Steam poslužitelj igre",
- "Most likely causes:": "Najvjerojatniji uzroci:",
- "The resource is no longer available.": "Resurs više nije dostupan.",
- "There might be a typing error in the address.": "Možda je nastala greška pri upisu adrese.",
- "What you can try:": "Što možete pokušati:",
- "Retype the address.": "Ponovno napišite adresu.",
- "Go back to the previous page.": "Vratite se na prethodnu stranicu.",
- "Coming Soon": "Dolazi uskoro",
- wayToGetClickSendSMSToken: "Možete dobiti API korisničko ime i API ključ sa {0}.",
- "Connection String": "Tekst veze",
- Query: "Upit",
- settingsCertificateExpiry: "TLS istek certifikata",
- certificationExpiryDescription: "HTTPS monitori će obavijesiti kada je istek TLS certifikata za:",
- "Setup Docker Host": "Dodaj Docker domaćina",
- "Connection Type": "Tip veze",
- "Docker Daemon": "Docker daemon",
- deleteDockerHostMsg: "Sigurno želite izbrisati ovog Docker domaćina za sve monitore?",
- socket: "Docker socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker kontejner",
- "Container Name / ID": "Naziv / ID kontejnera",
- "Docker Host": "Docker domaćin",
- "Docker Hosts": "Docker domaćini",
- "ntfy Topic": "ntfy tema",
- Domain: "Domena",
- Workstation: "Radna stanica",
- disableCloudflaredNoAuthMsg: "Lozinka nije nužna dok je isključena autentikacija.",
- trustProxyDescription: "Vjeruj 'X-Forwarded-*' zaglavljima. Ako želite dobiti ispravnu IP adresu klijenta i Uptime Kuma je iza reverznog proxy poslužitelja, trebate omogućiti ovo.",
- wayToGetLineNotifyToken: "Možete dobiti pristupni token sa {0}",
- Examples: "Primjeri",
- "Home Assistant URL": "URL Home Assistanta",
- "Long-Lived Access Token": "Dugotrajni pristupni token",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Dugotrajni pristupni token može se kreirati klikom na korisničko ime (dolje lijevo) u Home Assistantu, pomicanjem do dna, te klikom na 'Create Token'. ",
- "Notification Service": "Notification Service",
- "default: notify all devices": "zadano ponašanje: obavijesti sve uređaje",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Popis servisa za obavijesti u Home Assistantu nalaze se pod \"Developer Tools > Services\" te pretražiti \"notification\".",
- "Automations can optionally be triggered in Home Assistant:": "Automacije se mogu okinuti u Home Assistantu:",
- "Trigger type:": "Tip triggera:",
- "Event type:": "Tip eventa:",
- "Event data:": "Podaci eventa:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Potrebno je i odabrati akciju za izvođenje na Home Assistantu.",
- "Frontend Version": "Inačica sučelja",
- "Frontend Version do not match backend version!": "Inačica sučelja ne odgovara poslužitelju!",
-};
diff --git a/src/languages/hu.js b/src/languages/hu.js
deleted file mode 100644
index e6118c9e5..000000000
--- a/src/languages/hu.js
+++ /dev/null
@@ -1,376 +0,0 @@
-export default {
- languageName: "Magyar",
- checkEverySecond: "Ellenőrzés {0} másodpercenként",
- retryCheckEverySecond: "Újrapróbál {0} másodpercenként.",
- retriesDescription: "Maximális próbálkozás mielőtt a szolgáltatás 'Leállt' jelölést kap és értesítés kerül kiküldésre",
- ignoreTLSError: "TLS/SSL hibák figyelmen kívül hagyása HTTPS weboldalaknál",
- upsideDownModeDescription: "Az állapot megfordítása. Ha a szolgáltatás elérhető, akkor lesz leállt állapotú.",
- maxRedirectDescription: "Az átirányítások maximális száma. állítsa 0-ra az átirányítás tiltásához.",
- acceptedStatusCodesDescription: "Válassza ki az állapot kódokat amelyek sikeres válasznak fognak számítani.",
- passwordNotMatchMsg: "A megismételt jelszó nem egyezik.",
- notificationDescription: "Kérem, rendeljen egy értesítést a figyeléshez, hogy működjön.",
- keywordDescription: "Kulcsszó keresése a HTML-ben vagy a JSON válaszban. (kis-nagybetű érzékeny)",
- pauseDashboardHome: "Szünetel",
- deleteMonitorMsg: "Biztos, hogy törölni akarja ezt a figyelőt?",
- deleteNotificationMsg: "Biztos, hogy törölni akarja ezt az értesítést az összes figyelőnél?",
- resolverserverDescription: "A Cloudflare az alapértelmezett szerver, bármikor meg tudja változtatni a resolver server-t.",
- rrtypeDescription: "Válassza ki az RR-típust a figyelőhöz",
- pauseMonitorMsg: "Biztos, hogy szüneteltetni akarja?",
- enableDefaultNotificationDescription: "Minden új figyelőhöz ez az értesítés engedélyezett lesz alapértelmezetten. Kikapcsolhatja az értesítést külön minden figyelőnél.",
- clearEventsMsg: "Biztos, hogy törölni akar miden eseményt ennél a figyelnél?",
- clearHeartbeatsMsg: "Biztos, hogy törölni akar minden életjelet ennél a figyelőnél?",
- confirmClearStatisticsMsg: "Biztos, hogy törölni akar MINDEN statisztikát?",
- importHandleDescription: "Válassza a 'Meglévő kihagyását', ha ki szeretné hagyni az azonos nevő figyelőket vagy értesítésket. A 'Felülírás' törölni fog minden meglévő figyelőt és értesítést.",
- confirmImportMsg: "Biztos, hogy importálja a mentést? Győződjön meg róla, hogy jól választotta ki az importálás opciót.",
- twoFAVerifyLabel: "Kérem, adja meg a token-t, hogy a 2FA működését ellenőrizzük",
- tokenValidSettingsMsg: "A token érvényes! El tudja menteni a 2FA beállításait.",
- confirmEnableTwoFAMsg: "Biztosan engedélyezi a 2FA-t?",
- confirmDisableTwoFAMsg: "Biztosan letiltja a 2FA-t?",
- Settings: "Beállítások",
- Dashboard: "Irányítópult",
- "New Update": "Új frissítés",
- Language: "Nyelv",
- Appearance: "Megjelenés",
- Theme: "Téma",
- General: "Általános",
- Version: "Verzió",
- "Check Update On GitHub": "Frissítések keresése a GitHub-on",
- List: "Lista",
- Add: "Hozzáadás",
- "Add New Monitor": "Új figyelő hozzáadása",
- "Quick Stats": "Gyors statisztikák",
- Up: "Működik",
- Down: "Leállt",
- Pending: "Függőben",
- Unknown: "Ismeretlen",
- Pause: "Szünet",
- Name: "Név",
- Status: "Állapot",
- DateTime: "Időpont",
- Message: "Üzenet",
- "No important events": "Nincs fontos esemény",
- Resume: "Folytatás",
- Edit: "Szerkesztés",
- Delete: "Törlés",
- Current: "Aktuális",
- Uptime: "Uptime",
- "Cert Exp.": "SSL lejárat",
- day: "nap",
- "-day": " nap",
- hour: "óra",
- "-hour": " óra",
- Response: "Válasz",
- Ping: "Ping",
- "Monitor Type": "Figyelő típusa",
- Keyword: "Kulcsszó",
- "Friendly Name": "Rövid név",
- URL: "URL",
- Hostname: "Hosztnév",
- Port: "Port",
- "Heartbeat Interval": "Életjel időköz",
- Retries: "Újrapróbálkozás",
- "Heartbeat Retry Interval": "Életjel újrapróbálkozások időköze",
- Advanced: "Haladó",
- "Upside Down Mode": "Fordított mód",
- "Max. Redirects": "Max. átirányítás",
- "Accepted Status Codes": "Elfogadott állapot kódok",
- Save: "Mentés",
- Notifications: "Értesítések",
- "Not available, please setup.": "Nem elérhető, állítsa be.",
- "Setup Notification": "Értesítés beállítása",
- Light: "Világos",
- Dark: "Sötét",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Téma - Életjel sáv",
- Normal: "Normál",
- Bottom: "Nyomógomb",
- None: "Nincs",
- Timezone: "Időzóna",
- "Search Engine Visibility": "Látható a keresőmotoroknak",
- "Allow indexing": "Indexelés engedélyezése",
- "Discourage search engines from indexing site": "Keresőmotorok elriasztása az oldal indexelésétől",
- "Change Password": "Jelszó változtatása",
- "Current Password": "Jelenlegi jelszó",
- "New Password": "Új jelszó",
- "Repeat New Password": "Ismételje meg az új jelszót",
- "Update Password": "Jelszó módosítása",
- "Disable Auth": "Hitelesítés tiltása",
- "Enable Auth": "Hitelesítés engedélyezése",
- "disableauth.message1": "Biztos benne, hogy kikapcsolja a hitelesítést ?",
- "disableauth.message2": "Akkor érdemes, ha van 3rd-party hitelesítés az Uptime Kuma-t megelőzően mint a Cloudflare Access.",
- "Please use this option carefully!": "Használja megfontoltan!",
- Logout: "Kijelentkezés",
- Leave: "Elhagy",
- "I understand, please disable": "Megértettem, kérem tiltsa le",
- Confirm: "Megerősítés",
- Yes: "Igen",
- No: "Nem",
- Username: "Felhasználónév",
- Password: "Jelszó",
- "Remember me": "Emlékezzen rám",
- Login: "Bejelentkezés",
- "No Monitors, please": "Nincs figyelő, kérem",
- "add one": "adjon hozzá egyet",
- "Notification Type": "Értesítés típusa",
- Email: "Email",
- Test: "Teszt",
- "Certificate Info": "Tanúsítvány információk",
- "Resolver Server": "DNS szerver",
- "Resource Record Type": "Resource Record típusa",
- "Last Result": "Utolsó eredmény",
- "Create your admin account": "Hozza létre az adminisztrátor felhasználót",
- "Repeat Password": "Jelszó ismétlése",
- "Import Backup": "Mentés importálása",
- "Export Backup": "Mentés exportálása",
- Export: "Exportálás",
- Import: "Importálás",
- respTime: "Válaszidő (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Alapértelmezetten engedélyezett",
- "Apply on all existing monitors": "Alkalmazza az összes figyelőre",
- Create: "Létrehozás",
- "Clear Data": "Adatok törlése",
- Events: "Események",
- Heartbeats: "Életjelek",
- "Auto Get": "Auto lekérd.",
- backupDescription: "Mentheti az összes figyelőt és értesítést egy JSON fájlba.",
- backupDescription2: "Megj: Történeti és esemény adatokat nem tartalmaz.",
- backupDescription3: "Érzékeny adatok, pl. szolgáltatás kulcsok is vannak az export fájlban. Figyeljen erre!",
- alertNoFile: "Válaszzon ki egy fájlt az importáláshoz.",
- alertWrongFileType: "Válasszon egy JSON fájlt.",
- "Clear all statistics": "Összes statisztika törlése",
- "Skip existing": "Meglévő kihagyása",
- Overwrite: "Felülírás",
- Options: "Opciók",
- "Keep both": "Mindegyiket tartsa meg",
- "Verify Token": "Token ellenőrzése",
- "Setup 2FA": "2FA beállítása",
- "Enable 2FA": "2FA engedélyezése",
- "Disable 2FA": "2FA tiltása",
- "2FA Settings": "2FA beállítások",
- "Two Factor Authentication": "Kétfaktoros hitelesítés",
- Active: "Aktív",
- Inactive: "Inaktív",
- Token: "Token",
- "Show URI": "URI megmutatása",
- Tags: "Címkék",
- "Add New below or Select...": "Adjon hozzá lentre vagy válasszon...",
- "Tag with this name already exist.": "Ilyen nevű címke már létezik.",
- "Tag with this value already exist.": "Ilyen értékű címke már létezik.",
- color: "szín",
- "value (optional)": "érték (opcionális)",
- Gray: "Szürke",
- Red: "Piros",
- Orange: "Narancs",
- Green: "Zöld",
- Blue: "Kék",
- Indigo: "Indigó",
- Purple: "Lila",
- Pink: "Rózsaszín",
- "Search...": "Keres...",
- "Avg. Ping": "Átl. ping",
- "Avg. Response": "Átl. válasz",
- "Entry Page": "Nyitólap",
- statusPageNothing: "Semmi nincs itt. Adjon hozzá egy vagy több figyelőt.",
- "No Services": "Nincs szolgáltatás",
- "All Systems Operational": "Minden rendszer működik",
- "Partially Degraded Service": "Részlegesen leállt szolgáltatás",
- "Degraded Service": "Leállt szolgáltatás",
- "Add Group": "Csoport hozzáadása",
- "Add a monitor": "Figyelő hozzáadása",
- "Edit Status Page": "Státusz oldal szerkesztése",
- "Go to Dashboard": "Irányítópulthoz",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (50+ értesítési szolgáltatás)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "Status Page": "Státusz oldal",
- "Status Pages": "Státusz oldalak",
- "Primary Base URL": "Elsődleges URL",
- "Push URL": "Meghívandó URL",
- needPushEvery: "Ezt az URL-t kell meghívni minden {0} másodpercben.",
- pushOptionalParams: "Opcionális paraméterek: {0}",
- defaultNotificationName: "{notification} értesítésem ({number})",
- here: "itt",
- Required: "Kötelező",
- "Bot Token": "BOT token",
- wayToGetTelegramToken: "Innen kaphat token-t: {0}.",
- "Chat ID": "Csevegés ID",
- supportTelegramChatID: "Támogatja a közvetlen csevegést, csoportnak küldést és csatona ID-t is",
- wayToGetTelegramChatID: "A csevegés ID-t kinyerheti azzal, hogy küld egy üzenetet a bot-nak és erre az URL-re ellátogat, ahol láthatja a chat_id:-t",
- "YOUR BOT TOKEN HERE": "AZ ÖN BOT TOKENJE ITT",
- chatIDNotFound: "Csevegés ID nem található, küldjön egy első üzenetet a bot-nak",
- "Post URL": "Cél URL (Post)",
- "Content Type": "Tartalom típus (Content Type)",
- webhookJsonDesc: "{0} ideális a moderh HTTP szerverekhez, mint az Express.js",
- webhookFormDataDesc: "{multipart} ideális a PHP-hez. A JSON értelmezhető ezzel: {decodeFunction}",
- secureOptionNone: "Nincs / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "TLS hiba figyelmen kívül hagyása",
- "From Email": "Feladó email",
- emailCustomSubject: "Egyedi tárgy",
- "To Email": "Cél email",
- smtpCC: "Másolat",
- smtpBCC: "Titkos másolat",
- "Discord Webhook URL": "Discord cím (webhook URL)",
- wayToGetDiscordURL: "Kaphat egy ilyet, ha ellátogat a Server Settings -> Integrations -> Create Webhook oldalra",
- "Bot Display Name": "Bot megjelenő neve",
- "Prefix Custom Message": "Egyedi előtét üzenet",
- "Hello @everyone is...": "Hello {'@'}mindenki...",
- "Webhook URL": "Cím (webhook URL)",
- wayToGetTeamsURL: "Itt megnézheti, hogy kell ilyen URL-t készíteni: {0}.",
- Number: "Szám",
- Recipients: "Címzettek",
- needSignalAPI: "Egy Signal kliensre van szüksége, amihez REST API tartozik.",
- wayToCheckSignalURL: "Itt megnézheti, hogy hozhat létre egyet:",
- signalImportant: "FONTOS! Nem keverheti a csoportokat és számokat a címzetteknél.",
- "Application Token": "Alkalmazás token",
- "Server URL": "Szerver URL",
- Priority: "Prioritás",
- "Icon Emoji": "Emoji ikonok",
- "Channel Name": "Csatorna neve",
- "Uptime Kuma URL": "Uptime Kuma cím",
- aboutWebhooks: "Webhook-okról több info: {0}",
- aboutChannelName: "Adja meg a {0} csatorna nevét ha szeretné elkerülni a webhook-ot. Pl: #masik-csatorna",
- aboutKumaURL: "Ha üresen hagyja a Uptime Kuma cím mezőt, akkor a projekt GitHub oldala lesz az alapértelmezett.",
- emojiCheatSheet: "Emoji csalás: {0}",
- clicksendsms: "ClickSend SMS",
- "User Key": "Felhasználói kulcs",
- Device: "Eszköz",
- "Message Title": "Üzenet címe",
- "Notification Sound": "Értesítési hang",
- "More info on:": "További információ: {0}",
- pushoverDesc1: "A vészhelyzeti prioritásnak (2) 30 másodperc az újrapróbálkozási alapértéke és egy óra után lejár.",
- pushoverDesc2: "Ha különböző eszközökre szeretne értesítést küldeni, töltse ki az Eszköz mezőt.",
- "SMS Type": "SMS típusa",
- octopushTypePremium: "Premium (Fast - recommended for alerting)",
- octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)",
- checkPrice: "Nézze meg az {0} féle árat:",
- apiCredentials: "API kulcsok",
- octopushLegacyHint: "Az Octopush régi (2011-2020) verzióját használja vagy az újat?",
- "Check octopush prices": "Nézze meg az Octopush {0} féle árát.",
- octopushPhoneNumber: "Telefonszám (nemz. formátum, pl : +36705554433) ",
- octopushSMSSender: "SMS küldő neve : 3-11 betű/szám (a-zA-Z0-9) vagy szóköz",
- "LunaSea Device ID": "LunaSea eszköz ID",
- "Apprise URL": "Apprise cím (URL)",
- "Example:": "Például: {0}",
- "Read more:": "Itt olvashat róla: {0}",
- "Status:": "Állapot: {0}",
- "Read more": "Tovább olvasom",
- appriseInstalled: "Apprise telepítve.",
- appriseNotInstalled: "Apprise nincs telepítve. {0}",
- "Access Token": "Elérési token",
- "Channel access token": "Csatorna elérési token",
- "Line Developers Console": "Line Developers konzol",
- lineDevConsoleTo: "Line Developers konzol - {0}",
- "Basic Settings": "Alap beállítások",
- "User ID": "Felhasználó ID",
- "Messaging API": "Üzenet API",
- wayToGetLineChannelToken: "{0} első eléréséhez készítsen egy Provider-t és csatornát (Messaging API), utána kaphatja meg a csatorna elérési token-t és felhasználó ID-t az alábbi menüpontban.",
- "Icon URL": "Ikon cím (URL)",
- aboutIconURL: "Megadhat egy webcímet az Ikon cím mezőben, ezzel felülírva az alapértelmezet képet. Nem kerül felhasználásra, ha az Emoji-k be vannak állítva.",
- aboutMattermostChannelName: "Felülírhatja az alapértelmezett csatornát, ahova a webhook az adatokat küldi. Ehhez töltse ki a \"Csatorna neve\" mezőt (pl: #egyeb-csatorna). A Mattermost webhook beállításaiban további engedélyek szükségesek",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - olcsó, de lassú, gyakran túlterhelt. Csak lengyel címzettekhez.",
- promosmsTypeFlash: "SMS FLASH - Az üzenet automatikusan megjelenik a fogadó eszközön. Csak lengyel címzettekhez.",
- promosmsTypeFull: "SMS FULL - Prémium szintje az SMS-nek. Megadható a feladó neve, de előtte jóváhagyás szükséges. Ideális értesítésekhez.",
- promosmsTypeSpeed: "SMS SPEED - A legmagasabb prioritás a rendszerben. Nagyon gyors és pontos, de költséges (kb. duplája a hagyományos SMS-nek).",
- promosmsPhoneNumber: "Telefonszám (lengyel címzett esetén az országkód elhagyható)",
- promosmsSMSSender: "SMS feladónév: Előre beállított név vagy az alábbiak egyike: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu webhook cím (URL)",
- matrixHomeserverURL: "Homeserver cím (URL http(s):// előtaggal és opcionálisan port-tal)",
- "Internal Room Id": "Belső Szoba ID",
- matrixDesc1: "A belső szoba ID-t a szpbák speciális beállítások között találja meg a Matrix kliens programban. Így kell kinéznie: !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Erősen ajánlott készíteni egy új felhasználót és nem a teljes joggal rendelkező felhasználót használni. Az új felhasználó létrehozása után csak azokba a szobákba kell megjhívni a felhasználót, ahol értesítéseket szeretne kapni. Ezzel a művelettel lehet elérési token-t kérni: {0}",
- Method: "Metódus",
- Body: "Törzs",
- Headers: "Fejlécek",
- PushUrl: "Push cím (URL)",
- HeadersInvalidFormat: "A kérés fejléc nem egy valós JSON: ",
- BodyInvalidFormat: "A kérés törzse nem egy valós JSON: ",
- "Monitor History": "Vizsgálatok előzményei",
- clearDataOlderThan: "Előzmények megtartása {0} napig.",
- PasswordsDoNotMatch: "Jelszó nem egyezik.",
- records: "sorok",
- "One record": "Egy sor",
- steamApiKeyDescription: "Steam Game Server ellenőrzéséhez szükséges egy Steam Web-API kulcs. Itt létrehozhat egy API kulcsot: ",
- "Current User": "Felhasználó",
- recent: "Legújabb",
- Done: "Kész",
- Info: "Infó",
- Security: "Biztonság",
- "Steam API Key": "Steam API kulcs",
- "Shrink Database": "Adatbázis tömörítése",
- "Pick a RR-Type...": "Válasszon egy RR-típust...",
- "Pick Accepted Status Codes...": "Válasszon olyan kódot, ami elfogadottnak számít...",
- Default: "Alapért.",
- "HTTP Options": "HTTP beállítások",
- "Create Incident": "Incidens létrehozása",
- Title: "Cím",
- Content: "Tartalom",
- Style: "Stílus",
- info: "info",
- warning: "warning",
- danger: "danger",
- primary: "primary",
- light: "light",
- dark: "dark",
- Post: "Bejegyzés",
- "Please input title and content": "Adjon meg címet és tartalmat",
- Created: "Létrehozva",
- "Last Updated": "Utolsó mód.",
- Unpin: "Leválaszt",
- "Switch to Light Theme": "Világos témára váltás",
- "Switch to Dark Theme": "Sötét témára váltás",
- "Show Tags": "Címkék mutatása",
- "Hide Tags": "Címkék elrejtése",
- Description: "Leírás",
- "No monitors available.": "Nincs még figyelő beállítva.",
- "Add one": "Adjon hozzá egyet",
- "No Monitors": "Nincs figyelő",
- "Untitled Group": "Névtelen csoport",
- Services: "Szolgáltatások",
- Discard: "Elvet",
- Cancel: "Mégsem",
- "Powered by": "A megoldást szállítja az",
- shrinkDatabaseDescription: "VACUUM futtatása az SQLite-on. Ha az adatbázisod 1.10.0-nál újabb, akkor az AUTO_VACUUM engedélyezve van, nincs szükség a műveletre.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API felhasználónév (webapi_ előtaggal együtt)",
- serwersmsAPIPassword: "API jelszó",
- serwersmsPhoneNumber: "Telefonszám",
- serwersmsSenderName: "SMS feladó neve (regisztrált név az oldalon)",
- GoogleChat: "Google Chat (csak Google Workspace)",
- stackfield: "Stackfield",
- smtpDkimSettings: "DKIM beállítások",
- smtpDkimDesc: "Nézze meg a Nodemailer DKIM {0} használati szabályokat.",
- documentation: "dokumentáció",
- smtpDkimDomain: "Domain név",
- smtpDkimKeySelector: "Kulcs választó",
- smtpDkimPrivateKey: "Privát kulcs",
- smtpDkimHashAlgo: "Hash algoritmus (nem kötelező)",
- smtpDkimheaderFieldNames: "Fejléc kulcsok a bejelentkezéshez (nem kötelező)",
- smtpDkimskipFields: "Fejléc kulcsok egyéb esetben (nem kötelező)",
- PushByTechulus: "Techulus push",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API végpont",
- alertaEnvironment: "Környezet",
- alertaApiKey: "API kulcs",
- alertaAlertState: "Figyelmeztetési állapot",
- alertaRecoverState: "Visszaállási állapot",
- deleteStatusPageMsg: "Biztos, hogy törölni akarja a státusz oldalt?",
-};
diff --git a/src/languages/id-ID.js b/src/languages/id-ID.js
deleted file mode 100644
index 3a716392a..000000000
--- a/src/languages/id-ID.js
+++ /dev/null
@@ -1,585 +0,0 @@
-export default {
- languageName: "Bahasa Indonesia (Indonesian)",
- checkEverySecond: "Cek Setiap {0} detik.",
- retryCheckEverySecond: "Coba lagi setiap {0} detik.",
- resendEveryXTimes: "Kirim ulang setiap {0} kali",
- resendDisabled: "Kirim ulang dinonaktifkan",
- retriesDescription: "Percobaan ulang maksimum sebelum layanan dinyatakan tidak aktif dan notifikasi dikirim",
- ignoreTLSError: "Abaikan kesalahan TLS/SSL untuk situs web HTTPS",
- upsideDownModeDescription: "Balikkan statusnya. Jika layanan dapat dijangkau, TIDAK AKTIF.",
- maxRedirectDescription: "Jumlah maksimum pengalihan untuk diikuti. Setel ke 0 untuk menonaktifkan pengalihan.",
- acceptedStatusCodesDescription: "Pilih kode status yang dianggap sebagai tanggapan yang berhasil.",
- passwordNotMatchMsg: "Kata sandi kedua tidak cocok.",
- notificationDescription: "Harap atur notifikasi ke monitor agar berfungsi.",
- keywordDescription: "Cari kata kunci dalam code html atau JSON huruf besar-kecil berpengaruh",
- pauseDashboardHome: "Jeda",
- deleteMonitorMsg: "Apakah Anda mau menghapus monitor ini?",
- deleteNotificationMsg: "Apakah Anda mau menghapus notifikasi untuk semua monitor?",
- dnsPortDescription: "Port server DNS. Bawaan menggunakan 53. Anda dapat mengubah port kapan saja.",
- resolverserverDescription: "Cloudflare adalah server bawaan, Anda dapat mengubah server resolver kapan saja.",
- rrtypeDescription: "Pilih RR-Type yang mau Anda monitor",
- pauseMonitorMsg: "Apakah Anda yakin mau menjeda?",
- enableDefaultNotificationDescription: "Untuk setiap monitor baru, notifikasi ini akan diaktifkan secara bawaan. Anda masih dapat menonaktifkan notifikasi secara terpisah untuk setiap monitor.",
- clearEventsMsg: "Apakah Anda yakin mau menghapus semua event di monitor ini?",
- clearHeartbeatsMsg: "Apakah Anda yakin mau menghapus semua heartbeats di monitor ini?",
- confirmClearStatisticsMsg: "Apakah Anda yakin mau menghapus semua statistik?",
- importHandleDescription: "Pilih 'Lewati yang ada' jika Anda ingin melewati setiap monitor atau notifikasi dengan nama yang sama. 'Timpa' akan menghapus setiap monitor dan notifikasi yang ada.",
- confirmImportMsg: "Apakah Anda yakin untuk mengimpor cadangan? Pastikan Anda telah memilih opsi impor yang tepat.",
- twoFAVerifyLabel: "Silakan ketik token Anda untuk memverifikasi bahwa 2FA berfungsi",
- tokenValidSettingsMsg: "Token benar! Anda sekarang dapat menyimpan pengaturan 2FA.",
- confirmEnableTwoFAMsg: "Apakah Anda yakin ingin mengaktifkan 2FA?",
- confirmDisableTwoFAMsg: "Apakah Anda yakin ingin menonaktifkan 2FA?",
- Settings: "Pengaturan",
- Dashboard: "Dasbor",
- "New Update": "Pembaruan Baru",
- Language: "Bahasa",
- Appearance: "Tampilan",
- Theme: "Tema",
- General: "Umum",
- "Primary Base URL": "URL Dasar Utama",
- Version: "Versi",
- "Check Update On GitHub": "Cek Pembaruan di GitHub",
- List: "Daftar",
- Add: "Tambah",
- "Add New Monitor": "Tambah Monitor Baru",
- "Quick Stats": "Statistik",
- Up: "Aktif",
- Down: "Tidak Aktif",
- Pending: "Tertunda",
- Unknown: "Tidak diketahui",
- Pause: "Jeda",
- Name: "Nama",
- Status: "Status",
- DateTime: "Tanggal Waktu",
- Message: "Pesan",
- "No important events": "Tidak ada peristiwa penting",
- Resume: "Lanjut",
- Edit: "Ubah",
- Delete: "Hapus",
- Current: "Saat ini",
- Uptime: "Waktu aktif",
- "Cert Exp.": "Batas kedaluwarsa SSL",
- day: "hari | hari-hari",
- "-day": "-hari",
- hour: "Jam",
- "-hour": "-Jam",
- Response: "Tanggapan",
- Ping: "Ping",
- "Monitor Type": "Tipe Monitor",
- Keyword: "Kata Kunci",
- "Friendly Name": "Nama yang Ramah",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "Jarak Waktu Heartbeat ",
- Retries: "Coba lagi",
- "Heartbeat Retry Interval": "Jarak Waktu Heartbeat Mencoba kembali ",
- "Resend Notification if Down X times consequently": "Kirim Ulang Notifikasi jika Tidak Aktif X kali",
- Advanced: "Tingkat Lanjut",
- "Upside Down Mode": "Mode Terbalik",
- "Max. Redirects": "Maksimal Pengalihan",
- "Accepted Status Codes": "Kode Status yang Diterima",
- "Push URL": "Push URL",
- needPushEvery: "Anda harus memanggil URL berikut setiap {0} detik..",
- pushOptionalParams: "Parameter tambahan: {0}",
- Save: "Simpan",
- Notifications: "Notifikasi",
- "Not available, please setup.": "Tidak tersedia, silakan atur.",
- "Setup Notification": "Setel Notifikasi",
- Light: "Terang",
- Dark: "Gelap",
- Auto: "Otomatis",
- "Theme - Heartbeat Bar": "Tema - Heartbeat Bar",
- Normal: "Normal",
- Bottom: "Bawah",
- None: "Tidak ada",
- Timezone: "Zona Waktu",
- "Search Engine Visibility": "Visibilitas Mesin Pencari",
- "Allow indexing": "Mengizinkan untuk diindex",
- "Discourage search engines from indexing site": "Mencegah mesin pencari untuk mengindex situs",
- "Change Password": "Ganti Sandi",
- "Current Password": "Sandi Lama",
- "New Password": "Sandi Baru",
- "Repeat New Password": "Ulangi Sandi Baru",
- "Update Password": "Perbarui Kata Sandi",
- "Disable Auth": "Nonaktifkan Autentikasi",
- "Enable Auth": "Aktifkan Autentikasi",
- "disableauth.message1": "Apakah Anda yakin ingin menonaktifkan autentikasi ?",
- "disableauth.message2": "Ini untuk mereka yang memiliki autentikasi pihak ketiga diletakkan di depan Uptime Kuma, misalnya akses Cloudflare.",
- "Please use this option carefully!": "Gunakan dengan hati-hati.",
- Logout: "Keluar",
- Leave: "Pergi",
- "I understand, please disable": "Saya mengerti, silakan dinonaktifkan",
- Confirm: "Konfirmasi",
- Yes: "Ya",
- No: "Tidak",
- Username: "Nama Pengguna",
- Password: "Sandi",
- "Remember me": "Ingat saya",
- Login: "Masuk",
- "No Monitors, please": "Tidak ada monitor, silakan",
- "add one": "tambahkan satu",
- "Notification Type": "Tipe Notifikasi",
- Email: "Surel",
- Test: "Tes",
- "Certificate Info": "Info Sertifikasi",
- "Resolver Server": "Resolver Server",
- "Resource Record Type": "Resource Record Type",
- "Last Result": "Hasil Terakhir",
- "Create your admin account": "Buat akun admin Anda",
- "Repeat Password": "Ulangi Sandi",
- "Import Backup": "Impor Cadangan",
- "Export Backup": "Ekspor Cadangan",
- Export: "Ekspor",
- Import: "Impor",
- respTime: "Tanggapan. Waktu (milidetik)",
- notAvailableShort: "N/A",
- "Default enabled": "Bawaan diaktifkan",
- "Apply on all existing monitors": "Terapkan pada semua monitor yang ada",
- Create: "Buat",
- "Clear Data": "Bersihkan Data",
- Events: "Peristiwa",
- Heartbeats: "Heartbeats",
- "Auto Get": "Ambil Otomatis",
- backupDescription: "Anda dapat mencadangkan semua monitor dan semua notifikasi ke dalam berkas JSON.",
- backupDescription2: "Catatan: Data sejarah dan peristiwa tidak disertakan.",
- backupDescription3: "Data sensitif seperti notifikasi token disertakan dalam berkas ekspor, harap simpan dengan hati-hati.",
- alertNoFile: "Silakan pilih berkas untuk diimpor.",
- alertWrongFileType: "Silakan pilih berkas JSON.",
- "Clear all statistics": "Hapus semua statistik",
- "Skip existing": "Lewati yang ada",
- Overwrite: "Timpa",
- Options: "Opsi",
- "Keep both": "Simpan keduanya",
- "Verify Token": "Verifikasi Token",
- "Setup 2FA": "Pengaturan 2FA",
- "Enable 2FA": "Aktifkan 2FA",
- "Disable 2FA": "Nonaktifkan 2FA",
- "2FA Settings": "Pengaturan 2FA",
- "Two Factor Authentication": "Autentikasi Dua Faktor",
- Active: "Aktif",
- Inactive: "Tidak Aktif",
- Token: "Token",
- "Show URI": "Lihat URI",
- Tags: "Tanda",
- "Add New below or Select...": "Tambahkan Baru di bawah atau Pilih...",
- "Tag with this name already exist.": "Tanda dengan nama ini sudah ada.",
- "Tag with this value already exist.": "Tanda dengan nilai ini sudah ada.",
- color: "warna",
- "value (optional)": "nilai (harus diisi)",
- Gray: "Abu-abu",
- Red: "Merah",
- Orange: "Jingga",
- Green: "Hijau",
- Blue: "Biru",
- Indigo: "Biru Tua",
- Purple: "Ungu",
- Pink: "Merah Muda",
- "Search...": "Cari...",
- "Avg. Ping": "Rata-rata Ping",
- "Avg. Response": "Rata-rata Tanggapan",
- "Entry Page": "Halaman Masuk",
- statusPageNothing: "Tidak ada di sini, silakan tambahkan grup atau monitor.",
- "No Services": "Tidak ada Layanan",
- "All Systems Operational": "Semua Sistem Berfungsi",
- "Partially Degraded Service": "Layanan Terdegradasi Sebagian",
- "Degraded Service": "Layanan Terdegradasi",
- "Add Group": "Tambah Grup",
- "Add a monitor": "Tambah monitor",
- "Edit Status Page": "Edit Halaman Status",
- "Go to Dashboard": "Pergi ke Dasbor",
- "Status Page": "Halaman Status",
- "Status Pages": "Halaman Status",
- defaultNotificationName: "{notification} saya Peringatan ({number})",
- here: "di sini",
- Required: "Wajib",
- telegram: "Telegram",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "Anda dapat mendapatkan token dari {0}.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Mendukung Obrolan Langsung / Grup / Channel Chat ID",
- wayToGetTelegramChatID: "Anda bisa mendapatkan chat id Anda dengan mengirim pesan ke bot dan pergi ke url ini untuk melihat chat_id:",
- "YOUR BOT TOKEN HERE": "BOT TOKEN ANDA DI SINI",
- chatIDNotFound: "Chat ID tidak ditemukan, tolong kirim pesan ke bot ini dulu",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Tipe konten",
- webhookJsonDesc: "{0} bagus untuk peladen http modern seperti express.js",
- webhookFormDataDesc: "{multipart} bagus untuk PHP, Anda hanya perlu mengurai json dengan {decodeFunction}",
- smtp: "Surel (SMTP)",
- secureOptionNone: "None / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Abaikan Kesalahan TLS",
- "From Email": "Dari Email",
- emailCustomSubject: "Subjek",
- "To Email": "Ke Email",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Anda bisa mendapatkan ini dengan pergi ke Server Pengaturan -> Integrasi -> Buat Webhook",
- "Bot Display Name": "Nama Bot",
- "Prefix Custom Message": "Awalan Pesan",
- "Hello @everyone is...": "Halo {'@'}everyone is...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Anda dapat mempelajari cara membuat url webhook {0}.",
- signal: "Sinyal",
- Number: "Nomer",
- Recipients: "Penerima",
- needSignalAPI: "Anda harus memiliki klien sinyal dengan REST API.",
- wayToCheckSignalURL: "Anda dapat memeriksa url ini untuk melihat cara menyiapkannya:",
- signalImportant: "PENTING: Anda tidak dapat mencampur grup dan nomor di penerima!",
- gotify: "Gotify",
- "Application Token": "Token Aplikasi",
- "Server URL": "URL Server",
- Priority: "Prioritas",
- slack: "Slack",
- "Icon Emoji": "Ikon Emoji",
- "Channel Name": "Nama Saluran",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Info lain tentang webhook: {0}",
- aboutChannelName: "Masukan nama saluran di {0} Kolom Nama Saluran jika Anda ingin melewati saluran webhook. Contoh: #saluran-lain",
- aboutKumaURL: "Jika Anda membiarkan bidang URL Uptime Kuma kosong, itu akan menjadi bawaan ke halaman Proyek Github.",
- emojiCheatSheet: "Lembar contekan emoji: {0}",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Mendukung 50+ layanan notifikasi)",
- GoogleChat: "Google Chat (hanya Google Workspace)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "Kunci pengguna",
- Device: "Perangkat",
- "Message Title": "Judul Pesan",
- "Notification Sound": "Suara Nofifikasi",
- "More info on:": "Info lebih lanjut tentang: {0}",
- pushoverDesc1: "Prioritas darurat (2) memiliki batas waktu bawaan 30 detik antara percobaan ulang dan akan kadaluwarsa setelah 1 jam.",
- pushoverDesc2: "Jika Anda ingin mengirim pemberitahuan ke perangkat yang berbeda, isi kolom Perangkat.",
- "SMS Type": "Tipe SMS",
- octopushTypePremium: "Premium (Cepat - direkomendasikan untuk mengingatkan)",
- octopushTypeLowCost: "Low Cost (Lambat, terkadang diblokir oleh operator)",
- checkPrice: "Check {0} prices:",
- apiCredentials: "Kredensial API",
- octopushLegacyHint: "Apakah Anda menggunakan Octopush versi lama (2011-2020) atau versi baru?",
- "Check octopush prices": "Cek harga octopush {0}.",
- octopushPhoneNumber: "Nomer Telpon/HP (format internasional, contoh : +33612345678) ",
- octopushSMSSender: "Nama Pengirim SMS : 3-11 karakter alfanumerik dan spasi (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Device ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Contoh: {0}",
- "Read more:": "Baca lebih lanjut: {0}",
- "Status:": "Status: {0}",
- "Read more": "Baca lebih lanjut",
- appriseInstalled: "Apprise diinstall.",
- appriseNotInstalled: "Apprise tidak diinstall. {0}",
- "Access Token": "Token Akses",
- "Channel access token": "Token akses saluran",
- "Line Developers Console": "Konsol Pengembang Line",
- lineDevConsoleTo: "Konsol Pengembang Line - {0}",
- "Basic Settings": "Pengaturan Dasar",
- "User ID": "ID User",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "Pertama akses {0}, buat penyedia dan saluran (Messaging API), lalu Anda bisa mendapatkan token akses saluran dan id pengguna dari item menu yang disebutkan di atas.",
- "Icon URL": "Icon URL",
- aboutIconURL: "Anda dapat memberikan tautan ke gambar di \"Icon URL\" untuk mengganti gambar profil bawaan. Tidak akan digunakan jika Ikon Emoji diset.",
- aboutMattermostChannelName: "Anda dapat mengganti saluran bawaan tujuan posting webhook dengan memasukkan nama saluran ke dalam Kolom \"Channel Name\". Ini perlu diaktifkan di pengaturan webhook Mattermost. contoh: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - murah tapi lambat dan sering kelebihan beban. Terbatas hanya untuk penerima Polandia.",
- promosmsTypeFlash: "SMS FLASH - Pesan akan otomatis muncul di perangkat penerima. Terbatas hanya untuk penerima Polandia.",
- promosmsTypeFull: "SMS FULL - SMS tingkat premium, Anda dapat menggunakan Nama Pengirim Anda (Anda harus mendaftarkan nama terlebih dahulu). Dapat diandalkan untuk peringatan.",
- promosmsTypeSpeed: "SMS SPEED - Prioritas tertinggi dalam sistem. Sangat cepat dan dapat diandalkan tetapi mahal (sekitar dua kali lipat dari harga SMS FULL).",
- promosmsPhoneNumber: "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)",
- promosmsSMSSender: "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookUrl",
- matrixHomeserverURL: "Homeserver URL (dengan http(s):// dan port tambahan)",
- "Internal Room Id": "Internal Room ID",
- matrixDesc1: "Kamu dapat menemukan Internal Room ID dengan melihat di bagian konfigurasi ruang di Matrix. Seharusnya berbentuk seperti !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Sangat direkomendasikan kepada Anda untuk membuat akun baru dan jangan menggunakan token atas akun terkini yang memiliki token akses secara penuh terhadap akun dan seluruh ruang yang terdaftar. Alih - alih, buat akun baru dan undang akun tsb ke ruang tempat anda ingin menerima notifikasi. Untuk mendapatkan token akses anda dapat menjalankan {0}",
- Method: "Method",
- Body: "Body",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "Request Headers memiliki format JSON yang tidak sesuai: ",
- BodyInvalidFormat: "Request Body memiliki format JSON yang tidak sesuai: ",
- "Monitor History": "Riyawat Monitor",
- clearDataOlderThan: "Simpan data riwayat monitoring selama {0} hari.",
- PasswordsDoNotMatch: "Password tidak sama.",
- records: "catatan",
- "One record": "Satu catatan",
- steamApiKeyDescription: "Untuk monitoring Steam Game Server Anda membutuhkan kunci Steam Web-API. Anda dapat mendaftarkan Kunci API Anda melalui: ",
- "Current User": "Pengguna Saat Ini",
- topic: "Topic",
- topicExplanation: "MQTT topic untuk dimonitor",
- successMessage: "Pesan Berhasil",
- successMessageExplanation: "Pesan MQTT yang akan dianggap berhasil",
- recent: "Baru saja",
- Done: "Selesai",
- Info: "Info",
- Security: "Keamanan",
- "Steam API Key": "Steam API Key",
- "Shrink Database": "Shrink Database",
- "Pick a RR-Type...": "Pilih RR-Type...",
- "Pick Accepted Status Codes...": "Pilih Kode Status yang Diterima...",
- Default: "Default",
- "HTTP Options": "Opsi HTTP",
- "Create Incident": "Buat Incident",
- Title: "Judul",
- Content: "Konten",
- Style: "Gaya",
- info: "info",
- warning: "peringatan",
- danger: "bahaya",
- error: "kesalahan",
- critical: "kritis",
- primary: "utama",
- light: "terang",
- dark: "gelap",
- Post: "Post",
- "Please input title and content": "Masukkan judul dan konten",
- Created: "Dibuat",
- "Last Updated": "Terakhir Diperbarui",
- Unpin: "Lepaskan Semat",
- "Switch to Light Theme": "Ubah ke Tema Terang",
- "Switch to Dark Theme": "Ubah ke Tema Gelap",
- "Show Tags": "Tampilkan Tags",
- "Hide Tags": "Sembunyikan Tags",
- Description: "Deskripsi",
- "No monitors available.": "Tidak ada monitor yang tersedia.",
- "Add one": "Tambahkan",
- "No Monitors": "Tidak ada monitor",
- "Untitled Group": "Group Tanpa Judul",
- Services: "Layanan",
- Discard: "Buang",
- Cancel: "Batal",
- "Powered by": "Dipersembahkan oleh",
- shrinkDatabaseDescription: "Trigger database VACUUM untuk SQLite. Jika database Anda dibuat setelah 1.10.0, AUTO_VACUUM sudah otomatis diaktifkan dan aksi berikut tidak dibutuhkan.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "Nama Pengguna API ( termamsuk awalan webapi_ )",
- serwersmsAPIPassword: "Kata Sandi API",
- serwersmsPhoneNumber: "Nomor Telepon",
- serwersmsSenderName: "Nama Pengirim SMS (didaftarkan melalui portal pelanggan)",
- stackfield: "Stackfield",
- Customize: "Kustomisasi",
- "Custom Footer": "Tambahan Footer",
- "Custom CSS": "Tambahan CSS",
- smtpDkimSettings: "Pengaturan DKIM",
- smtpDkimDesc: "Silakan merujuk ke Nodemailer DKIM {0} untuk penggunaan.",
- documentation: "dokumentasi",
- smtpDkimDomain: "Nama Domain",
- smtpDkimKeySelector: "Key Selector",
- smtpDkimPrivateKey: "Private Key",
- smtpDkimHashAlgo: "Algoritma Hash (Opsional)",
- smtpDkimheaderFieldNames: "Header Keys untuk ditambahkan (Optional)",
- smtpDkimskipFields: "Header Keys not untuk ditambahkan (Optional)",
- wayToGetPagerDutyKey: "Anda dapat menambahkan melalui Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Lalu Anda dapat menjadi dengan kata kunci \"Events API V2\". Informasi tambahan {0}",
- "Integration Key": "Kunci Integrasi",
- "Integration URL": "URL Integrasi",
- "Auto resolve or acknowledged": "Penyelesaian otomatis atau diakui",
- "do nothing": "tidak melakukan apapun",
- "auto acknowledged": "otomatis diakui",
- "auto resolve": "otomatis terselesaikan",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "Lingkungan",
- alertaApiKey: "Kunci API",
- alertaAlertState: "Status Siaga",
- alertaRecoverState: "Status Pemulihan",
- deleteStatusPageMsg: "Apakah Anda yakin untuk menghapus halaman status berikut?",
- Proxies: "Proxy",
- default: "Bawaan",
- enabled: "Diaktifkan",
- setAsDefault: "Tetapkan sebagai bawaan",
- deleteProxyMsg: "Apakah Anda yakin ingin menghapus proxy berikut untuk seluruh monitor?",
- proxyDescription: "Proxy harus ditambahkan ke monitor agar berfungsi.",
- enableProxyDescription: "Proxy berikut tidak akan berdampak ke monitor hingga diaktifkan. Anda dapat mengontrol menonaktifkan sementara proxy dari semua monitor dengan status aktivasi.",
- setAsDefaultProxyDescription: "Proxy berikut akan diaktifkan sebagai bawaan untuk monitor baru. Anda masih dapat menonaktifkan proxy secara terpisah untuk setiap monitor.",
- "Certificate Chain": "Certificate Chain",
- Valid: "Valid",
- Invalid: "Tidak Valid",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "Nomor Telepon",
- TemplateCode: "Kode Template",
- SignName: "Nama Tanda",
- "Sms template must contain parameters: ": "Template SMS harus berisi parameter: ",
- "Bark Endpoint": "Bark Endpoint",
- "Bark Group": "Bark Group",
- "Bark Sound": "Bark Sound",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "Untuk keamaan Anda harus menggunakan kunci rahasia",
- "Device Token": "Token Perangkat",
- Platform: "Platform",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Tinggi",
- Retry: "Ulang",
- Topic: "Topik",
- "WeCom Bot Key": "Kunci WeCom Bot",
- "Setup Proxy": "Siapkan Proxy",
- "Proxy Protocol": "Protokol Proxy",
- "Proxy Server": "Server Proxy",
- "Proxy server has authentication": "Server Proxy memiliki autentikasi",
- User: "Pengguna",
- Installed: "Terpasang",
- "Not installed": "Tidak terpasang",
- Running: "Berjalan",
- "Not running": "Tidak berjalan",
- "Remove Token": "Hapus Token",
- Start: "Mulai",
- Stop: "Berhenti",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Tambahkan Halaman Status Baru",
- Slug: "Slug",
- "Accept characters:": "Terima karakter:",
- startOrEndWithOnly: "Mulai atau akhiri hanya dengan {0}",
- "No consecutive dashes": "Tanda hubung tidak berurutan",
- Next: "Selanjutnya",
- "The slug is already taken. Please choose another slug.": "Slug telah digunakan. Silakan pilih slug lain.",
- "No Proxy": "Tidak ada Proxy",
- Authentication: "Autentikasi",
- "HTTP Basic Auth": "HTTP Basic Auth",
- "New Status Page": "Halaman Status Baru",
- "Page Not Found": "Halaman Tidak Ditemukan",
- "Reverse Proxy": "Proxy Terbalik",
- Backup: "Cadangan",
- About: "Tentang",
- wayToGetCloudflaredURL: "(Unduh cloudflared dari {0})",
- cloudflareWebsite: "Situs Cloudflare",
- "Message:": "Pesan:",
- "Don't know how to get the token? Please read the guide:": "Tidak tahu cara mendapatkan token? Silakan baca panduannya:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Koneksi saat ini mungkin hilang jika Anda saat ini terhubung melalui Cloudflare Tunel. Apakah Anda yakin ingin menghentikannya? Ketik kata sandi Anda saat ini untuk mengonfirmasinya.",
- "HTTP Headers": "HTTP Headers",
- "Trust Proxy": "Proxy Terpercaya",
- "Other Software": "Perangkat Lunak lainnya",
- "For example: nginx, Apache and Traefik.": "Sebagai contoh: nginx, Apache and Traefik.",
- "Please read": "Harap dibaca",
- "Subject:": "Subjek:",
- "Valid To:": "Berlaku Untuk:",
- "Days Remaining:": "Hari Tersisa:",
- "Issuer:": "Penerbit:",
- "Fingerprint:": "Sidik jari:",
- "No status pages": "Tidak ada halaman status",
- "Domain Name Expiry Notification": "Pemberitahuan Kedaluwarsa Nama Domain",
- Proxy: "Proxy",
- "Date Created": "Tanggal Dibuat",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "Alamat HTTP OneBot",
- onebotMessageType: "Jenis Pesan OneBot",
- onebotGroupMessage: "Grup",
- onebotPrivateMessage: "Pribadi",
- onebotUserOrGroupId: "Grup/Pengguna ID",
- onebotSafetyTips: "Untuk keamanan, harus mengatur token akses",
- "PushDeer Key": "Kunci PushDeer",
- "Footer Text": "Tulisan Footer",
- "Show Powered By": "Tampilkan Dipersembahkan oleh",
- "Domain Names": "Nama Domain",
- signedInDisp: "Masuk sebagai {0}",
- signedInDispDisabled: "Autentikasi dinonaktifkan.",
- RadiusSecret: "Radius Secret",
- RadiusSecretDescription: "Shared Secret antara klien dan server",
- RadiusCalledStationId: "Called Station Id",
- RadiusCalledStationIdDescription: "Pengenal perangkat yang dipanggil",
- RadiusCallingStationId: "Calling Station Id",
- RadiusCallingStationIdDescription: "Pengenal perangkat panggilan",
- "Certificate Expiry Notification": "Pemberitahuan Kedaluwarsa Sertifikat",
- "API Username": "Nama Pengguna API",
- "API Key": "Kunci API",
- "Recipient Number": "Nomor Penerima",
- "From Name/Number": "Dari Nama/Nomor",
- "Leave blank to use a shared sender number.": "Biarkan kosong untuk menggunakan nomor pengirim bersama.",
- "Octopush API Version": "Versi API Octopush",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "endpoint",
- octopushAPIKey: "\"API key\" dari kredensial HTTP API di panel kontrol",
- octopushLogin: "\"Login\" dari kredensial HTTP API di panel kontrol",
- promosmsLogin: "Nama Masuk API",
- promosmsPassword: "Kata Sandi API",
- "pushoversounds pushover": "Pushover (default)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "Vibrate Only",
- "pushoversounds none": "None (silent)",
- pushyAPIKey: "Secret API Key",
- pushyToken: "Device token",
- "Show update if available": "Tampilkan pembaruan jika tersedia",
- "Also check beta release": "Periksa juga rilis beta",
- "Using a Reverse Proxy?": "Menggunakan Proxy Terbalik?",
- "Check how to config it for WebSocket": "Periksa cara mengonfigurasinya untuk A WebSocket",
- "Steam Game Server": "Steam Game Server",
- "Most likely causes:": "Kemungkinan besar penyebabnya:",
- "The resource is no longer available.": "Sumber daya tidak lagi tersedia.",
- "There might be a typing error in the address.": "Mungkin ada kesalahan pengetikan di alamat.",
- "What you can try:": "Apa yang dapat kamu coba:",
- "Retype the address.": "Ketik ulang alamat.",
- "Go back to the previous page.": "Kembali ke halaman sebelumnya.",
- "Coming Soon": "Segera",
- wayToGetClickSendSMSToken: "Anda bisa mendapatkan Nama Pengguna API dan Kunci API dari {0} .",
- "Connection String": "String Koneksi",
- Query: "Query",
- settingsCertificateExpiry: "Sertifikat TLS Kadaluarsa",
- certificationExpiryDescription: "Monitor HTTPS memicu pemberitahuan saat sertifikat TLS kedaluwarsa dalam:",
- "Setup Docker Host": "Siapkan Host Docker",
- "Connection Type": "Jenis Koneksi",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "Apakah Anda yakin ingin menghapus host docker berikut untuk semua monitor?",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker Container",
- "Container Name / ID": "Container Name / ID",
- "Docker Host": "Docker Host",
- "Docker Hosts": "Docker Hosts",
- "ntfy Topic": "ntfy Topic",
- Domain: "Domain",
- Workstation: "Workstation",
- disableCloudflaredNoAuthMsg: "Anda berada dalam mode Tanpa Otentikasi, kata sandi tidak diperlukan.",
- trustProxyDescription: "Trust 'X-Forwarded-*' headers. Jika Anda ingin mendapatkan IP klien yang benar dan Uptime Kuma Anda dibalik layanan seperti Nginxor Apache, Anda harus mengaktifkan ini.",
- wayToGetLineNotifyToken: "Anda bisa mendapatkan token akses dari {0}",
- Examples: "Contoh",
- "Home Assistant URL": "Home Assistant URL",
- "Long-Lived Access Token": "Token Akses Berumur Panjang",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token Akses Berumur Panjang dapat dibuat dengan mengklik nama profil Anda (kiri bawah) dan menggulir ke bawah lalu klik Buat Token. ",
- "Notification Service": "Layanan Pemberitahuan",
- "default: notify all devices": "bawaan: notifikasi seluruh perangkat",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Daftar Layanan Pemberitahuan dapat ditemukan di Home Assistant pada \"Developer Tools > Services\" cari \"notification\" lalu cari nama perangkat Anda.",
- "Automations can optionally be triggered in Home Assistant:": "Otomatisasi dapat dipicu secara opsional di Home Assistant:",
- "Trigger type:": "Tipe Trigger/Pemicu:",
- "Event type:": "Tipe event:",
- "Event data:": "Data event:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Kemudian pilih tindakan, misalnya alihkan ke tempat dimana lampu RGB berwarna merah.",
- "Frontend Version": "Versi Frontend",
- "Frontend Version do not match backend version!": "Versi Frontend tidak sama dengan versi backend!",
- "Base URL": "URL Dasar",
- goAlertInfo: "GoAlert adalah aplikasi open source untuk penjadwalan panggilan, eskalasi otomatis dan pemberitahuan (seperti SMS atau panggilan suara). Secara otomatis melibatkan orang yang tepat, dengan cara yang benar, dan pada waktu yang tepat! {0}",
- goAlertIntegrationKeyInfo: "Dapatkan kunci integrasi API generik untuk layanan dalam format ini \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biasanya nilai parameter token dari URL yang disalin.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Tidak digunakan lagi: Karena banyak fitur ditambahkan dan fitur cadangan ini agak tidak terawat, itu tidak dapat menghasilkan atau memulihkan cadangan lengkap.",
- backupRecommend: "Harap cadangkan volume atau folder data (./data/) secara langsung.",
-};
diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js
deleted file mode 100644
index cd065597b..000000000
--- a/src/languages/it-IT.js
+++ /dev/null
@@ -1,367 +0,0 @@
-export default {
- languageName: "Italiano (Italian)",
- checkEverySecond: "controlla ogni {0} secondi",
- retryCheckEverySecond: "Riprova ogni {0} secondi.",
- retriesDescription: "Tentativi prima che il servizio venga marcato come \"DOWN\" e che una notifica venga inviata.",
- ignoreTLSError: "Ignora gli errori TLS/SSL per i siti HTTPS.",
- upsideDownModeDescription: "Se il servizio risulta raggiungibile viene marcato come \"DOWN\".",
- maxRedirectDescription: "Numero massimo di redirezionamenti consentito. Per disabilitare, impostare \"0\".",
- acceptedStatusCodesDescription: "Elenco di codici di stato HTTP che sono considerati validi.",
- passwordNotMatchMsg: "La password non corrisponde.",
- notificationDescription: "Assegnare la notifica a uno o più oggetti monitorati per metterla in funzione.",
- keywordDescription: "Cerca la parola chiave nella risposta in html o JSON e fai distinzione tra maiuscole e minuscole",
- pauseDashboardHome: "In Pausa",
- deleteMonitorMsg: "Sei sicuro di voler eliminare questo oggetto monitorato?",
- deleteNotificationMsg: "Sei sicuro di voler eliminare questa notifica per tutti gli oggetti monitorati?",
- resolverserverDescription: "Cloudflare è il server predefinito ma è possibile cambiare il server DNS.",
- rrtypeDescription: "Scegliere il tipo di RR che si vuole monitorare",
- pauseMonitorMsg: "Sei sicuro di voler mettere in pausa?",
- enableDefaultNotificationDescription: "Per ogni nuovo monitor questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica singolarmente.",
- clearEventsMsg: "Sei sicuro di voler eliminare tutti gli eventi per questo servizio?",
- clearHeartbeatsMsg: "Sei sicuro di voler eliminare tutti gli intervalli di controllo per questo servizio?",
- confirmClearStatisticsMsg: "Sei sicuro di voler eliminare TUTTE le statistiche?",
- importHandleDescription: "Selezionare \"Ignora esistenti\" se si vuole ignorare l'importazione dei monitor o delle notifiche con lo stesso nome. \"Sovrascrivi\" rimpiazzerà tutti i monitor e le notifiche presenti con quelli nel backup.",
- confirmImportMsg: "Sei sicuro di voler importare il backup? Controlla di aver selezionato l'opzione corretta di importazione.",
- twoFAVerifyLabel: "Digita il token per verificare che l'autenticazione a due fattori funzioni correttamente:",
- tokenValidSettingsMsg: "Il token è valido! È ora possibile salvare le impostazioni.",
- confirmEnableTwoFAMsg: "Sei sicuro di voler abilitare l'autenticazione a due fattori?",
- confirmDisableTwoFAMsg: "Sei sicuro di voler disabilitare l'autenticazione a due fattori?",
- Settings: "Impostazioni",
- Dashboard: "Dashboard",
- "New Update": "Nuovo aggiornamento disponibile!",
- Language: "Lingua",
- Appearance: "Aspetto",
- Theme: "Tema",
- General: "Generale",
- "Primary Base URL": "URL base primario",
- Version: "Versione",
- "Check Update On GitHub": "Controlla aggiornamenti su GitHub",
- List: "Lista",
- Add: "Aggiungi",
- "Add New Monitor": "Aggiungi nuovo monitor",
- "Quick Stats": "Statistiche rapide",
- Up: "Up",
- Down: "Down",
- Pending: "In attesa",
- Unknown: "Sconosciuti",
- Pause: "Metti in pausa",
- Name: "Nome",
- Status: "Stato",
- DateTime: "Data e Ora",
- Message: "Messaggio",
- "No important events": "Nessun evento importante",
- Resume: "Riprendi",
- Edit: "Modifica",
- Delete: "Elimina",
- Current: "Corrente",
- Uptime: "Tempo di attività",
- "Cert Exp.": "Scadenza certificato",
- day: "giorno | giorni",
- "-day": "-giorni",
- hour: "ora",
- "-hour": "-ore",
- Response: "Risposta",
- Ping: "Ping",
- "Monitor Type": "Modalità di monitoraggio",
- Keyword: "Parola chiave",
- "Friendly Name": "Nome",
- URL: "URL",
- Hostname: "Nome Host",
- Port: "Porta",
- "Heartbeat Interval": "Intervallo di controllo",
- Retries: "Tentativi",
- "Heartbeat Retry Interval": "Intervallo tra i tentativo di controllo",
- Advanced: "Avanzate",
- "Upside Down Mode": "Modalità invertita",
- "Max. Redirects": "Reindirizzamenti massimi",
- "Accepted Status Codes": "Codici di stato accettati",
- "Push URL": "Push URL",
- needPushEvery: "Notificare questo URL ogni {0} secondi.",
- pushOptionalParams: "Parametri aggiuntivi: {0}",
- Save: "Salva",
- Notifications: "Notifiche",
- "Not available, please setup.": "Non disponibili, da configurare.",
- "Setup Notification": "Configura le notifiche",
- Light: "Chiaro",
- Dark: "Scuro",
- Auto: "Automatico",
- "Theme - Heartbeat Bar": "Tema (barra di stato)",
- Normal: "Normale",
- Bottom: "Sotto",
- None: "Nessuna",
- Timezone: "Fuso Orario",
- "Search Engine Visibility": "Visibilità ai motori di ricerca",
- "Allow indexing": "Consenti l'indicizzazione",
- "Discourage search engines from indexing site": "Evita l'indicizzazione ai motori di ricerca",
- "Change Password": "Cambia password",
- "Current Password": "Password corrente",
- "New Password": "Nuova password",
- "Repeat New Password": "Ripeti nuova password",
- "Update Password": "Modifica password",
- "Disable Auth": "Disabilita autenticazione",
- "Enable Auth": "Abilita autenticazione",
- "disableauth.message1": "Disabilitare l'autenticazione? ",
- "disableauth.message2": "Questa opzione è per chi un sistema di autenticazione gestito da terze parti messo davanti ad Uptime Kuma, ad esempio Cloudflare Access.",
- "Please use this option carefully!": "Utilizzare con attenzione!",
- Logout: "Esci",
- Leave: "Annulla",
- "I understand, please disable": "Lo capisco, disabilitare l'autenticazione.",
- Confirm: "Conferma",
- Yes: "Sì",
- No: "No",
- Username: "Nome utente",
- Password: "Password",
- "Remember me": "Ricorda credenziali",
- Login: "Accesso",
- "No Monitors, please": "Nessun monitor presente,",
- "add one": "aggiungine uno!",
- "Notification Type": "Servizio di notifica",
- Email: "E-mail",
- Test: "Fai una prova",
- "Certificate Info": "Informazioni sul certificato",
- "Resolver Server": "Server DNS",
- "Resource Record Type": "Tipo di Resource Record",
- "Last Result": "Ultimo risultato",
- "Create your admin account": "Crea l'account amministratore",
- "Repeat Password": "Ripeti password",
- "Import Backup": "Importa backup",
- "Export Backup": "Esporta backup",
- Export: "Esporta",
- Import: "Importa",
- respTime: "Tempo di risposta (ms)",
- notAvailableShort: "N/D",
- "Default enabled": "Abilitato di default",
- "Apply on all existing monitors": "Applica su tutti i monitoraggi",
- Create: "Crea",
- "Clear Data": "Cancella dati",
- Events: "Eventi",
- Heartbeats: "Controlli",
- "Auto Get": "Rileva",
- backupDescription: "È possibile fare il backup di tutti i monitoraggi e di tutte le notifiche in un file JSON.",
- backupDescription2: "NOTA: lo storico e i dati relativi agli eventi non saranno inclusi nel backup",
- backupDescription3: "Dati sensibili come i token di autenticazione saranno inclusi nel backup, custodisci il file in un luogo sicuro!",
- alertNoFile: "Selezionare il file da importare.",
- alertWrongFileType: "Selezionare un file JSON.",
- "Clear all statistics": "Cancella tutte le statistiche",
- "Skip existing": "Ignora esistenti",
- Overwrite: "Sovrascrivi",
- Options: "Opzioni",
- "Keep both": "Mantieni entrambi",
- "Verify Token": "Verifica token",
- "Setup 2FA": "Configura 2FA",
- "Enable 2FA": "Abilita 2FA",
- "Disable 2FA": "Disabilita 2FA",
- "2FA Settings": "Gestisci l'autenticazione a due fattori",
- "Two Factor Authentication": "Autenticazione a due fattori (2FA)",
- Active: "Attivata",
- Inactive: "Disattivata",
- Token: "Token",
- "Show URI": "Mostra URI",
- Tags: "Etichette",
- "Add New below or Select...": "Aggiungi oppure scegli...",
- "Tag with this name already exist.": "Un'etichetta con questo nome già esiste.",
- "Tag with this value already exist.": "Un'etichetta con questo valore già esiste.",
- color: "colore",
- "value (optional)": "descrizione (opzionale)",
- Gray: "Grigio",
- Red: "Rosso",
- Orange: "Arancione",
- Green: "Verde",
- Blue: "Blu",
- Indigo: "Indaco",
- Purple: "Viola",
- Pink: "Rosa",
- "Search...": "Cerca...",
- "Avg. Ping": "Tempo medio di risposta al ping",
- "Avg. Response": "Tempo medio di risposta",
- "Entry Page": "Pagina Principale",
- statusPageNothing: "Non c'è nulla qui, aggiungi un gruppo oppure un monitor.",
- "No Services": "Nessun servizio",
- "All Systems Operational": "Tutti i sistemi sono funzionali",
- "Partially Degraded Service": "Servizio parzialmente degradato",
- "Degraded Service": "Servizio degradato",
- "Add Group": "Aggiungi gruppo",
- "Add a monitor": "Aggiungi monitor",
- "Edit Status Page": "Modifica pagina di stato",
- "Go to Dashboard": "Vai alla dashboard",
- "Status Page": "Pagina di stato",
- "Status Pages": "Pagina di stato",
- defaultNotificationName: "Notifica {notification} ({number})",
- here: "qui",
- Required: "Obbligatorio",
- telegram: "Telegram",
- "Bot Token": "Token del bot",
- wayToGetTelegramToken: "Puoi ottenere il token da {0}.",
- "Chat ID": "ID Chat",
- supportTelegramChatID: "Supporta chat private, gruppi e canali.",
- wayToGetTelegramChatID: "È possibile ricereve l'ID chat mandando un messaggio al bot e poi andando in questo URL per visualizzare il chat_id:",
- "YOUR BOT TOKEN HERE": "QUI IL TOKEN DEL BOT",
- chatIDNotFound: "Non trovo l'ID chat. Prima bisogna mandare un messaggio al bot",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Content Type",
- webhookJsonDesc: "{0} va bene per qualsiasi server HTTP moderno ad esempio express.js",
- webhookFormDataDesc: "{multipart} va bene per PHP, c'è solo bisogno di analizzare il json con {decodeFunction}",
- smtp: "E-mail (SMTP)",
- secureOptionNone: "Nessuno / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ignora gli errori TLS",
- "From Email": "Mittente",
- emailCustomSubject: "Oggetto personalizzato",
- "To Email": "Destinatario",
- smtpCC: "CC",
- smtpBCC: "CCn",
- discord: "Discord",
- "Discord Webhook URL": "URL Webhook di Discord",
- wayToGetDiscordURL: "È possibile recuperarlo da Impostazioni server -> Integrazioni -> Creare Webhook",
- "Bot Display Name": "Nome del Bot",
- "Prefix Custom Message": "Prefisso per il messaggio personalizzato",
- "Hello @everyone is...": "Ciao a {'@'}everyone ...",
- teams: "Microsoft Teams",
- "Webhook URL": "URL Webhook",
- wayToGetTeamsURL: "È possibile imparare a creare un URL Webhook {0}.",
- signal: "Signal",
- Number: "Numero",
- Recipients: "Destinatari",
- needSignalAPI: "È necessario avere un client Signal con le API REST.",
- wayToCheckSignalURL: "Controllare questo url per capire come impostarne uno:",
- signalImportant: "IMPORTANTE: Non è possibile mischiare gruppi e numeri all'interno dei destinatari!",
- gotify: "Gotify",
- "Application Token": "Token Applicazione",
- "Server URL": "URL Server",
- Priority: "Priorità",
- slack: "Slack",
- "Icon Emoji": "Icona Emoji",
- "Channel Name": "Nome Canale",
- "Uptime Kuma URL": "Indirizzo Uptime Kuma",
- aboutWebhooks: "Maggiori informazioni riguardo ai webhooks su: {0}",
- aboutChannelName: "Inserire il nome del canale nel campo \"Nome Canale\" {0} se si vuole bypassare il canale webhook. Ad esempio: #altro-canale",
- aboutKumaURL: "Se si lascia bianco il campo Indirizzo Uptime Kuma, la pagina GitHub sarà il valore predefinito.",
- emojiCheatSheet: "Lista Emoji: {0}",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Supporta più di 50 servizi di notifica)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "Chiave Utente",
- Device: "Dispositivo",
- "Message Title": "Titolo Messaggio",
- "Notification Sound": "Suono di Notifica",
- "More info on:": "Maggiori informazioni su: {0}",
- pushoverDesc1: "Priorità di Emergenza (2) ha 30 secondi di timeout tra un tentativo e l'altro e scadrà dopo un'ora.",
- pushoverDesc2: "Se si vuole inviare la notifica a dispositivi differenti, riempire il campo Dispositivi.",
- "SMS Type": "Tipo di SMS",
- octopushTypePremium: "Premium (Veloce - raccomandato per allertare)",
- octopushTypeLowCost: "A Basso Costo (Lento - talvolta bloccato dall'operatore)",
- checkPrice: "Controlla {0} prezzi:",
- apiCredentials: "Credenziali API",
- octopushLegacyHint: "Si vuole utilizzare la vecchia versione (2011-2020) oppure la nuova versione di Octopush?",
- "Check octopush prices": "Controlla i prezzi di Octopush {0}.",
- octopushPhoneNumber: "Numero di telefono (formato internazionale (p.e.): +33612345678) ",
- octopushSMSSender: "Nome del mittente: 3-11 caratteri alfanumerici e spazi (a-zA-Z0-9)",
- "LunaSea Device ID": "ID dispositivo LunaSea",
- "Apprise URL": "URL Apprise",
- "Example:": "Esempio: {0}",
- "Read more:": "Maggiori informazioni: {0}",
- "Status:": "Stato: {0}",
- "Read more": "Maggiori informazioni",
- appriseInstalled: "Apprise è installato.",
- appriseNotInstalled: "Apprise non è installato. {0}",
- "Access Token": "Token di accesso",
- "Channel access token": "Token di accesso al canale",
- "Line Developers Console": "Console sviluppatori Line",
- lineDevConsoleTo: "Console sviluppatori Line - {0}",
- "Basic Settings": "Impostazioni Base",
- "User ID": "ID Utente",
- "Messaging API": "API di Messaggistica",
- wayToGetLineChannelToken: "Prima accedi a {0}, crea un provider e un canale (API di Messaggistica), dopodiché puoi avere il token di accesso e l'id utente dal menù sopra.",
- "Icon URL": "URL Icona",
- aboutIconURL: "È possibile impostare un collegameno a una immagine in \"URL Icona\" per modificare l'immagine di profilo. Non verrà utilizzata se è impostata l'Icona Emoji.",
- aboutMattermostChannelName: "È possibile modificare il canale predefinito che dove il webhook manda messaggi immettendo il nome del canale nel campo \"Nome Canale\". Questo va abilitato nelle impostazioni webhook di Mattermost webhook. P.E.: #altro-canale",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - economico, ma lento e spesso sovraccarico. Limitato solamente a destinatari Polacchi.",
- promosmsTypeFlash: "SMS FLASH - Il messaggio sarà automaticamente mostrato sul dispositivo dei destinatari. Limitato solo a destinatari Polacchi.",
- promosmsTypeFull: "SMS FULL - Premium, È possibile utilizzare il proprio come come mittente (è necessario prima registrare il nome). Affidabile per gli allarmi.",
- promosmsTypeSpeed: "SMS SPEED - Maggior priorità. Rapido, affidabile, ma costoso (costa il doppio di SMS FULL).",
- promosmsPhoneNumber: "Numero di Telefono (per destinatari Polacchi si può omettere il codice area)",
- promosmsSMSSender: "Mittente SMS : Nome preregistrato oppure uno dei seguenti: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "URL WebHook di Feishu",
- matrixHomeserverURL: "URL Server (con http(s):// e opzionalmente la porta)",
- "Internal Room Id": "ID Stanza Interna",
- matrixDesc1: "È possibile recuperare l'ID della stanza all'interno delle impostazioni avanzate della stanza nel client Matrix. Dovrebbe essere simile a !QMdRCpUIfLwsfjxye6:server.di.casa.",
- matrixDesc2: "È altamente raccomandata la creazione di un nuovo utente e di non utilizare il proprio token di accesso Matrix poiché darà pieno controllo al proprio account e a tutte le stanze in cui si ha accesso. Piuttosto, si crei un nuovo utente per invitarlo nella stanza dove si vuole ricevere le notifiche. Si può accedere al token eseguendo {0}",
- Method: "Metodo",
- Body: "Body",
- Headers: "Intestazioni",
- PushUrl: "URL di Push",
- HeadersInvalidFormat: "L'intestazione di richiesta non è un JSON valido: ",
- BodyInvalidFormat: "Il corpo di richiesta non è un JSON valido: ",
- "Monitor History": "Storico monitor",
- clearDataOlderThan: "Mantieni lo storico per {0} giorni.",
- PasswordsDoNotMatch: "Le password non corrispondono!",
- records: "records",
- "One record": "One record",
- steamApiKeyDescription: "Per monitorare un server di gioco Steam è necessaria una Web-API Key di Steam. È possibile registrarne una qui: ",
- "Current User": "Utente corrente",
- recent: "Recenti",
- Done: "Fatto",
- Info: "Info",
- Security: "Sicurezza",
- "Steam API Key": "API Key di Steam",
- "Shrink Database": "Comprimi database",
- "Pick a RR-Type...": "Scegli un tipo di RR...",
- "Pick Accepted Status Codes...": "Scegli i codici di Stato Accettati...",
- Default: "Predefinito",
- "HTTP Options": "Opzioni HTTP",
- "Create Incident": "Segnala incidente",
- Title: "Titolo",
- Content: "Contenuto",
- Style: "Stile",
- info: "informativo",
- warning: "attenzione",
- danger: "critico",
- primary: "predefinito",
- light: "chiaro",
- dark: "scuro",
- Post: "Posta",
- "Please input title and content": "Inserire il titolo e il contenuto",
- Created: "Creato",
- "Last Updated": "Ultima modifica",
- Unpin: "Rimuovi",
- "Switch to Light Theme": "Utilizza il tema chiaro",
- "Switch to Dark Theme": "Utilizza il tema scuro",
- "Show Tags": "Mostra etichette",
- "Hide Tags": "Nascondi etichette",
- Description: "Descrizione",
- "No monitors available.": "Nessun monitor disponibile.",
- "Add one": "Aggiungine uno!",
- "No Monitors": "Nessun monitor presente.",
- "Untitled Group": "Gruppo senza titolo",
- Services: "Servizi",
- Discard: "Scarta modifiche",
- Cancel: "Annulla",
- "Powered by": "Powered by",
- shrinkDatabaseDescription: "Lancia il comando \"VACUUM\" sul database SQLite. Se il database è stato creato dopo la versione 1.10.0, la funzione \"AUTO_VACUUM\" è già abilitata di default e quindi questa azione non è necessaria.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "Nome utente API (incl. prefisso webapi_)",
- serwersmsAPIPassword: "Password API",
- serwersmsPhoneNumber: "Numero di Telefono",
- serwersmsSenderName: "Nome del mittente SMS (registrato via portale cliente)",
- stackfield: "Stackfield",
- smtpDkimSettings: "Impostazioni DKIM",
- smtpDkimDesc: "Fare riferimento a Nodemailer DKIM {0} per l'utilizzo.",
- documentation: "documentazione",
- smtpDkimDomain: "Dominio",
- smtpDkimKeySelector: "Selettore Chiave",
- smtpDkimPrivateKey: "Chiave Privata",
- smtpDkimHashAlgo: "Algoritmo di hashing (opzionale)",
- smtpDkimheaderFieldNames: "Campi Intestazione da firmare (opzionale)",
- smtpDkimskipFields: "Campi Intestazione da non firmare (opzionale)",
- GoogleChat: "Google Chat (solo per Google Workspace)",
-};
diff --git a/src/languages/ja.js b/src/languages/ja.js
deleted file mode 100644
index 187ade0cd..000000000
--- a/src/languages/ja.js
+++ /dev/null
@@ -1,201 +0,0 @@
-export default {
- languageName: "日本語",
- checkEverySecond: "{0}秒ごとにチェックします。",
- retriesDescription: "サービスがダウンとしてマークされ、通知が送信されるまでの最大リトライ数",
- ignoreTLSError: "HTTPS ウェブサイトの TLS/SSL エラーを無視する",
- upsideDownModeDescription: "ステータスの扱いを逆にします。サービスに到達可能な場合は、DOWNとなる。",
- maxRedirectDescription: "フォローするリダイレクトの最大数。リダイレクトを無効にするには0を設定する。",
- acceptedStatusCodesDescription: "成功した応答とみなされるステータスコードを選択する。",
- passwordNotMatchMsg: "繰り返しのパスワードが一致しません。",
- notificationDescription: "監視を機能させるには、監視に通知を割り当ててください。",
- keywordDescription: "プレーンHTMLまたはJSON応答でキーワードを検索し、大文字と小文字を区別します",
- pauseDashboardHome: "一時停止",
- deleteMonitorMsg: "この監視を削除してよろしいですか?",
- deleteNotificationMsg: "全ての監視のこの通知を削除してよろしいですか?",
- resolverserverDescription: "Cloudflareがデフォルトのサーバーですが、いつでもリゾルバサーバーを変更できます。",
- rrtypeDescription: "監視するRRタイプを選択します",
- pauseMonitorMsg: "一時停止しますか?",
- Settings: "設定",
- Dashboard: "ダッシュボード",
- "New Update": "新しいアップデート",
- Language: "言語",
- Appearance: "外観",
- Theme: "テーマ",
- General: "General",
- Version: "バージョン",
- "Check Update On GitHub": "GitHubでアップデートを確認する",
- List: "一覧",
- Add: "追加",
- "Add New Monitor": "監視の追加",
- "Quick Stats": "統計",
- Up: "Up",
- Down: "Down",
- Pending: "中止",
- Unknown: "不明",
- Pause: "一時停止",
- Name: "名前",
- Status: "ステータス",
- DateTime: "日時",
- Message: "メッセージ",
- "No important events": "重要なイベントなし",
- Resume: "再開",
- Edit: "編集",
- Delete: "削除",
- Current: "現在",
- Uptime: "起動時間",
- "Cert Exp.": "証明書有効期限",
- day: "日 | 日間",
- "-day": "-日",
- hour: "時間",
- "-hour": "-時間",
- Response: "レスポンス",
- Ping: "Ping",
- "Monitor Type": "監視タイプ",
- Keyword: "キーワード",
- "Friendly Name": "分かりやすい名前",
- URL: "URL",
- Hostname: "ホスト名",
- Port: "ポート",
- "Heartbeat Interval": "監視間隔",
- Retries: "Retries",
- Advanced: "Advanced",
- "Upside Down Mode": "Upside Down Mode",
- "Max. Redirects": "最大リダイレクト数",
- "Accepted Status Codes": "承認されたステータスコード",
- Save: "保存",
- Notifications: "通知",
- "Not available, please setup.": "利用できません。設定してください。",
- "Setup Notification": "通知設定",
- Light: "Light",
- Dark: "Dark",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
- Normal: "通常",
- Bottom: "下部",
- None: "なし",
- Timezone: "タイムゾーン",
- "Search Engine Visibility": "検索エンジンでの表示",
- "Allow indexing": "インデックス作成を許可する",
- "Discourage search engines from indexing site": "検索エンジンにインデックスさせないようにする",
- "Change Password": "パスワード変更",
- "Current Password": "現在のパスワード",
- "New Password": "新しいパスワード",
- "Repeat New Password": "確認のため新しいパスワードをもう一度",
- "Update Password": "パスワードの更新",
- "Disable Auth": "認証の無効化",
- "Enable Auth": "認証の有効化",
- Logout: "ログアウト",
- Leave: "作業を中止する",
- "I understand, please disable": "理解した上で無効化する",
- Confirm: "確認",
- Yes: "はい",
- No: "いいえ",
- Username: "ユーザー名",
- Password: "パスワード",
- "Remember me": "パスワードを忘れた場合",
- Login: "ログイン",
- "No Monitors, please": "監視がありません",
- "add one": "add one",
- "Notification Type": "通知タイプ",
- Email: "Eメール",
- Test: "テスト",
- "Certificate Info": "証明書情報",
- "Resolver Server": "問い合わせ先DNSサーバ",
- "Resource Record Type": "DNSレコード設定",
- "Last Result": "最終結果",
- "Create your admin account": "Adminアカウントの作成",
- "Repeat Password": "パスワード確認",
- respTime: "応答時間 (ms)",
- notAvailableShort: "N/A",
- Create: "作成",
- clearEventsMsg: "この監視のすべての記録を削除してもよろしいですか?",
- clearHeartbeatsMsg: "この監視のすべての異常記録を削除してもよろしいですか?",
- confirmClearStatisticsMsg: "すべての統計を削除してもよろしいですか?",
- "Clear Data": "データを削除",
- Events: "統計",
- Heartbeats: "異常記録",
- "Auto Get": "自動取得",
- enableDefaultNotificationDescription: "監視を作成するごとに、この通知方法はデフォルトで有効になります。監視ごとに通知を無効にすることもできます。",
- "Default enabled": "デフォルトで有効にする",
- "Also apply to existing monitors": "既存のモニターにも適用する",
- Export: "エクスポート",
- Import: "インポート",
- backupDescription: "すべての監視と通知方法をJSONファイルにできます。",
- backupDescription2: "※ 履歴と統計のデータはバックアップされません。",
- backupDescription3: "通知に使用するトークンなどの機密データも含まれています。注意して扱ってください。",
- alertNoFile: "インポートするファイルを選択してください。",
- alertWrongFileType: "JSONファイルを選択してください。",
- twoFAVerifyLabel: "トークンを入力して、2段階認証を有効にします。",
- tokenValidSettingsMsg: "トークンの確認が完了しました! 「保存」をしてください。",
- confirmEnableTwoFAMsg: "2段階認証を「有効」にします。よろしいですか?",
- confirmDisableTwoFAMsg: "2段階認証を「無効」にします。よろしいですか?",
- "Apply on all existing monitors": "既存のすべてのモニターに適用する",
- "Verify Token": "認証する",
- "Setup 2FA": "2段階認証の設定",
- "Enable 2FA": "2段階認証を有効にする",
- "Disable 2FA": "2段階認証を無効にする",
- "2FA Settings": "2段階認証の設定",
- "Two Factor Authentication": "2段階認証",
- Active: "Active",
- Inactive: "Inactive",
- Token: "Token",
- "Show URI": "Show URI",
- "Clear all statistics": "すべての記録を削除",
- retryCheckEverySecond: "Retry every {0} seconds.",
- importHandleDescription: "同じ名前のすべての監視または通知方法を上書きしない場合は、「既存のをスキップ」を選択します。 「上書きする」は、既存のすべてのモニターと通知を削除します。",
- confirmImportMsg: "バックアップをインポートしてもよろしいですか?希望するオプションを選択してください。",
- "Heartbeat Retry Interval": "異常検知後の再試行間隔",
- "Import Backup": "バックアップのインポート",
- "Export Backup": "バックアップのエクスポート",
- "Skip existing": "既存のをスキップする",
- Overwrite: "上書きする",
- Options: "オプション",
- "Keep both": "どちらも保持する",
- Tags: "タグ",
- "Add New below or Select...": "新規追加または選択...",
- "Tag with this name already exist.": "この名前のタグはすでに存在しています。",
- "Tag with this value already exist.": "この値のタグはすでに存在しています。",
- color: "色",
- "value (optional)": "値 (optional)",
- Gray: "Gray",
- Red: "Red",
- Orange: "Orange",
- Green: "Green",
- Blue: "Blue",
- Indigo: "Indigo",
- Purple: "Purple",
- Pink: "Pink",
- "Search...": "検索...",
- "Avg. Ping": "平均Ping時間",
- "Avg. Response": "平均応答時間",
- "Entry Page": "エントリーページ",
- statusPageNothing: "ここには何もありません。グループまたは監視を追加してください。",
- "No Services": "No Services",
- "All Systems Operational": "すべてのサービスが稼働中",
- "Partially Degraded Service": "部分的にサービスが停止中",
- "Degraded Service": "サービスが停止中",
- "Add Group": "グループの追加",
- "Add a monitor": "監視の追加",
- "Edit Status Page": "ステータスページ編集",
- "Go to Dashboard": "ダッシュボード",
- "Status Page": "ステータスページ",
- "Status Pages": "ステータスページ",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
-};
diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js
deleted file mode 100644
index f614f5187..000000000
--- a/src/languages/ko-KR.js
+++ /dev/null
@@ -1,531 +0,0 @@
-export default {
- languageName: "한국어",
- checkEverySecond: "{0}초마다 확인해요.",
- retryCheckEverySecond: "{0}초마다 다시 확인해요.",
- retriesDescription: "서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수",
- ignoreTLSError: "HTTPS 웹사이트에서 TLS/SSL 오류 무시하기",
- upsideDownModeDescription: "서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거예요.",
- maxRedirectDescription: "최대 리다이렉트 횟수예요. 0을 입력하면 리다이렉트를 꺼요.",
- acceptedStatusCodesDescription: "응답 성공으로 간주할 상태 코드를 정해요.",
- passwordNotMatchMsg: "비밀번호 재입력이 일치하지 않아요.",
- notificationDescription: "모니터링에 알림을 설정할 수 있어요.",
- keywordDescription: "HTML 이나 JSON에서 대소문자를 구분해 키워드를 검색해요.",
- pauseDashboardHome: "일시 정지",
- deleteMonitorMsg: "정말 이 모니터링을 삭제할까요?",
- deleteNotificationMsg: "정말 이 알림을 모든 모니터링에서 삭제할까요?",
- resolverserverDescription: "Cloudflare가 기본 서버예요, 원한다면 언제나 다른 Resolver 서버로 변경할 수 있어요.",
- rrtypeDescription: "모니터링할 RR-Type을 선택해요.",
- pauseMonitorMsg: "정말 이 모니터링을 일시 정지할까요?",
- enableDefaultNotificationDescription: "새로 추가하는 모든 모니터링에 이 알림을 기본적으로 활성화해요. 각 모니터에 대해 별도로 알림을 비활성화할 수 있어요.",
- clearEventsMsg: "정말 이 모니터링에 대한 모든 이벤트를 삭제할까요?",
- clearHeartbeatsMsg: "정말 이 모니터링에 대한 모든 하트비트를 삭제할까요?",
- confirmClearStatisticsMsg: "정말 모든 통계를 삭제할까요?",
- importHandleDescription: "이름이 같은 모든 모니터링이나 알림을 건너뛰려면 '기존값 건너뛰기'를 선택해주세요. '덮어쓰기'는 기존의 모든 모니터링과 알림을 삭제해요.",
- confirmImportMsg: "정말 백업을 가져올까요? 가져오기 옵션을 제대로 설정했는지 다시 확인해주세요.",
- twoFAVerifyLabel: "토큰을 입력해 2단계 인증이 작동하는지 확인해주세요.",
- tokenValidSettingsMsg: "토큰이 유효해요! 이제 2단계 인증 설정을 저장할 수 있어요.",
- confirmEnableTwoFAMsg: "정말 2단계 인증을 활성화할까요?",
- confirmDisableTwoFAMsg: "정말 2단계 인증을 비활성화할까요?",
- Settings: "설정",
- Dashboard: "대시보드",
- "New Update": "새로운 업데이트",
- Language: "언어",
- Appearance: "디스플레이",
- Theme: "테마",
- General: "일반",
- Version: "버전",
- "Check Update On GitHub": "깃허브에서 업데이트 확인",
- List: "목록",
- Add: "추가",
- "Add New Monitor": "새로운 모니터링 추가하기",
- "Quick Stats": "간단한 정보",
- Up: "온라인",
- Down: "오프라인",
- Pending: "대기 중",
- Unknown: "알 수 없음",
- Pause: "일시 정지",
- Name: "이름",
- Status: "상태",
- DateTime: "날짜",
- Message: "메시지",
- "No important events": "중요 이벤트 없음",
- Resume: "재개",
- Edit: "수정",
- Delete: "삭제",
- Current: "현재",
- Uptime: "업타임",
- "Cert Exp.": "인증서 만료",
- day: "일",
- "-day": "-일",
- hour: "시간",
- "-hour": "-시간",
- Response: "응답",
- Ping: "핑",
- "Monitor Type": "모니터링 종류",
- Keyword: "키워드",
- "Friendly Name": "이름",
- URL: "URL",
- Hostname: "호스트네임",
- Port: "포트",
- "Heartbeat Interval": "하트비트 주기",
- Retries: "재시도",
- "Heartbeat Retry Interval": "하트비트 재시도 주기",
- Advanced: "고급",
- "Upside Down Mode": "상태 반전 모드",
- "Max. Redirects": "최대 리다이렉트",
- "Accepted Status Codes": "응답 성공 상태 코드",
- Save: "저장",
- Notifications: "알림",
- "Not available, please setup.": "존재하지 않아요, 새로운 거 하나 만드는 건 어때요?",
- "Setup Notification": "알림 설정",
- Light: "화이트",
- Dark: "다크",
- Auto: "자동",
- "Theme - Heartbeat Bar": "테마 - 하트비트 바",
- Normal: "기본값",
- Bottom: "가운데",
- None: "없애기",
- Timezone: "시간대",
- "Search Engine Visibility": "검색 엔진 활성화",
- "Allow indexing": "인덱싱 허용",
- "Discourage search engines from indexing site": "검색 엔진 인덱싱 거부",
- "Change Password": "비밀번호 변경",
- "Current Password": "기존 비밀번호",
- "New Password": "새 비밀번호",
- "Repeat New Password": "새로운 비밀번호 재입력",
- "Update Password": "비밀번호 변경",
- "Disable Auth": "인증 비활성화",
- "Enable Auth": "인증 활성화",
- "disableauth.message1": "정말로 인증 기능을 끌까요 ?",
- "disableauth.message2": "이 기능은 Cloudflare Access와 같은 서드파티 인증 을 Uptime Kuma 앞에 둔 사용자를 위한 기능이에요.",
- "Please use this option carefully!": "신중하게 사용하세요.",
- Logout: "로그아웃",
- Leave: "나가기",
- "I understand, please disable": "기능에 대해 이해했으니 꺼주세요.",
- Confirm: "확인",
- Yes: "확인",
- No: "취소",
- Username: "이름",
- Password: "비밀번호",
- "Remember me": "비밀번호 기억하기",
- Login: "로그인",
- "No Monitors, please": "모니터링이 현재 없어요,",
- "add one": "한번 추가해보실래요?",
- "Notification Type": "알림 종류",
- Email: "이메일",
- Test: "테스트",
- "Certificate Info": "인증서 정보",
- "Resolver Server": "Resolver 서버",
- "Resource Record Type": "리소스 레코드 유형",
- "Last Result": "최근 결과",
- "Create your admin account": "관리자 계정 만들기",
- "Repeat Password": "비밀번호 재입력",
- "Import Backup": "백업 가져오기",
- "Export Backup": "백업 내보내기",
- Export: "내보내기",
- Import: "가져오기",
- respTime: "응답 시간 (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "기본 알림으로 설정",
- "Apply on all existing monitors": "기존 모니터링에 모두 적용하기",
- Create: "생성하기",
- "Clear Data": "데이터 삭제",
- Events: "이벤트",
- Heartbeats: "하트비트",
- "Auto Get": "자동 Get",
- backupDescription: "모든 모니터링과 알림을 JSON 파일 형식에 저장할 수 있어요.",
- backupDescription2: "히스토리와 이벤트 데이터는 포함되어 있지 않아요.",
- backupDescription3: "알림 토큰과 같은 보안 데이터가 내보내기 파일에 포함되어 있으므로 관리에 주의해주세요.",
- alertNoFile: "가져오기를 하기 위해 파일을 선택해주세요.",
- alertWrongFileType: "JSON 파일을 선택해주세요.",
- "Clear all statistics": "모든 통계치 삭제",
- "Skip existing": "기존값 건너뛰기",
- Overwrite: "덮어쓰기",
- Options: "옵션",
- "Keep both": "두개 모두 보존",
- "Verify Token": "토큰 검증",
- "Setup 2FA": "2단계 인증 설정하기",
- "Enable 2FA": "2단계 인증 활성화",
- "Disable 2FA": "2단계 인증 비활성화",
- "2FA Settings": "2단계 인증 설정",
- "Two Factor Authentication": "2단계 인증",
- Active: "활성화",
- Inactive: "비활성화",
- Token: "토큰",
- "Show URI": "URI 보기",
- Tags: "태그",
- "Add New below or Select...": "아래 새롭게 추가 또는 선택...",
- "Tag with this name already exist.": "같은 태그 이름이 이미 존재해요.",
- "Tag with this value already exist.": "같은 값을 가진 태그가 이미 존재해요.",
- color: "색상",
- "value (optional)": "값 (선택)",
- Gray: "회색",
- Red: "빨간색",
- Orange: "주황색",
- Green: "초록색",
- Blue: "파란색",
- Indigo: "남색",
- Purple: "보라색",
- Pink: "핑크색",
- "Search...": "검색...",
- "Avg. Ping": "평균 핑",
- "Avg. Response": "평균 응답",
- "Entry Page": "첫 페이지",
- statusPageNothing: "아무것도 없어요. 새로운 그룹 또는 모니터링을 추가해주세요.",
- "No Services": "서비스 없음",
- "All Systems Operational": "모든 시스템 정상",
- "Partially Degraded Service": "일부 시스템 비정상",
- "Degraded Service": "모든 시스템 비정상",
- "Add Group": "그룹 추가",
- "Add a monitor": "모니터링 추가",
- "Edit Status Page": "상태 페이지 수정",
- "Go to Dashboard": "대시보드로 가기",
- "Status Page": "상태 페이지",
- "Status Pages": "상태 페이지",
- defaultNotificationName: "내 {notification} 알림 ({number})",
- here: "여기",
- Required: "필수",
- telegram: "Telegram",
- "Bot Token": "봇 토큰",
- wayToGetTelegramToken: "토큰은 여기서 얻을 수 있어요: {0}.",
- "Chat ID": "채팅 ID",
- supportTelegramChatID: "개인 채팅 / 그룹 / 채널의 ID를 지원해요.",
- wayToGetTelegramChatID: "봇에 메시지를 보내 채팅 ID를 얻고 밑에 URL로 이동해 chat_id를 볼 수 있어요.",
- "YOUR BOT TOKEN HERE": "봇 토큰",
- chatIDNotFound: "채팅 ID를 찾을 수 없어요. 먼저 봇에게 메시지를 보내주세요.",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Content Type",
- webhookJsonDesc: "{0}은 express.js와 같은 최신 HTTP 서버에 적합해요.",
- webhookFormDataDesc: "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 json을 디코딩하면 되어요.",
- smtp: "Email (SMTP)",
- secureOptionNone: "없음 / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "TLS 에러 무시하기",
- "From Email": "보내는 이메일",
- "To Email": "받는 이메일",
- smtpCC: "참조",
- smtpBCC: "숨은 참조",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "서버 설정 -> 연동 -> 웹후크 보기 -> 새 웹후크에서 얻을 수 있어요!",
- "Bot Display Name": "표시 이름",
- "Prefix Custom Message": "접두사 메시지",
- "Hello @everyone is...": "{'@'}everyone 서버 상태 알림이에요...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "{0}에서 Webhook을 어떻게 만드는지 알아보세요!",
- signal: "Signal",
- Number: "숫자",
- Recipients: "받는 사람",
- needSignalAPI: "REST API를 사용하는 Signal 클라이언트가 있어야 해요.",
- wayToCheckSignalURL: "밑에 URL을 확인해 URL 설정 방법을 볼 수 있어요.",
- signalImportant: "경고: 받는 사람의 그룹과 숫자는 섞을 수 없어요!",
- gotify: "Gotify",
- "Application Token": "애플리케이션 토큰",
- "Server URL": "서버 URL",
- Priority: "Priority",
- slack: "Slack",
- "Icon Emoji": "아이콘 이모지",
- "Channel Name": "채널 이름",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Webhook에 대한 설명: {0}",
- aboutChannelName: "Webhook 채널을 무시하려면 {0} 채널 이름칸에 채널 이름을 입력해주세요. 예: #기타-채널",
- aboutKumaURL: "Uptime Kuma URL칸을 공백으로 두면 기본적으로 Github Project 페이지로 설정해요.",
- emojiCheatSheet: "이모지 목록 시트: {0}",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (50개 이상 알림 서비스)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "유저 키",
- Device: "디바이스",
- "Message Title": "메시지 제목",
- "Notification Sound": "알림음",
- "More info on:": "자세한 정보: {0}",
- pushoverDesc1: "긴급 우선 순위 (2)는 재시도 사이에 기본적으로 30초의 타임아웃이 있고, 1시간 후에 만료되어요.",
- pushoverDesc2: "다른 장치에 알림을 보내려면 장치칸을 입력해주세요.",
- "SMS Type": "SMS 종류",
- octopushTypePremium: "프리미엄 (빠름) - 알림 기능에 적합해요)",
- octopushTypeLowCost: "저렴한 요금 (느림) - 가끔 차단될 수 있어요)",
- "Check octopush prices": "{0}에서 Octopush 가격을 확인할 수 있어요.",
- octopushPhoneNumber: "휴대전화 번호 (intl format, 예시: +821023456789) ",
- octopushSMSSender: "보내는 사람 이름 : 3-11개의 영숫자 및 여백공간 (a-z, A-Z, 0-9)",
- "LunaSea Device ID": "LunaSea 장치 ID",
- "Apprise URL": "Apprise URL",
- "Example:": "예: {0}",
- "Read more:": "더 보기: {0}",
- "Status:": "상태: {0}",
- "Read more": "더 보기",
- appriseInstalled: "Apprise가 설치되어있어요.",
- appriseNotInstalled: "Apprise가 설치되어있지 않아요. {0}",
- "Access Token": "액세스 토큰",
- "Channel access token": "채널 액세스 토큰",
- "Line Developers Console": "Line 개발자 콘솔",
- lineDevConsoleTo: "Line 개발자 콘솔 - {0}",
- "Basic Settings": "기본 설정 메뉴",
- "User ID": "사용자 ID",
- "Messaging API": "Messaging API 메뉴",
- wayToGetLineChannelToken: "먼저 {0}에 액세스하고, 공급자 및 채널 (Messaging API)을 만든 다음, 각 메뉴 밑에 언급된 메뉴에서 채널 액세스 토큰과 사용자 ID를 얻을 수 있어요.",
- "Icon URL": "아이콘 URL",
- aboutIconURL: "\"아이콘 URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을 거예요.",
- aboutMattermostChannelName: "채널 이름을 입력하면 Webhook이 게시할 기본 채널을 재설정할 수 있어요. 이 설정은 Mattermost 웹훅 설정에서 활성화해야 해요. 예: #기타-채널",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - 저렴하지만 느리고 가끔 과부하에 걸려요. 폴란드 수신자만 사용할 수 있어요. ",
- promosmsTypeFlash: "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시되어요. 폴란드 수신자만 사용할 수 있어요.",
- promosmsTypeFull: "SMS FULL - SMS 프리미엄 티어, 보내는 사람 이름을 먼저 등록해야 해요. 알림 기능에 적합해요.",
- promosmsTypeSpeed: "SMS SPEED - 시스템에서 가장 높은 우선순위예요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).",
- promosmsPhoneNumber: "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 되어요.)",
- promosmsSMSSender: "SMS 보내는 사람 이름 : 미리 등록된 이름 혹은 기본값 중 하나예요: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Primary Base URL": "기본 URL",
- "Push URL": "Push URL",
- needPushEvery: "이 URL을 {0} 초 마다 호출할 수 있어요.",
- pushOptionalParams: "선택적 파라미터: {0}",
- emailCustomSubject: "커스텀 주제",
- clicksendsms: "ClickSend SMS",
- checkPrice: "{0} 가격 확인:",
- apiCredentials: "API 인증정보",
- octopushLegacyHint: "Octopush 레거시 버전 (2011-2020) 을 사용하시나요? 아니면 새 버전을 사용하시나요?",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "Homeserver URL (http(s):// 와 함께 적어주세요. 그리고 포트 번호는 선택적 입니다.)",
- "Internal Room Id": "내부 방 ID",
- matrixDesc1: "Matrix 클라이언트 방 설정의 고급 섹션에서 내부 방 ID를 찾을 수 있어요. 내부 방 ID는 이렇게 생겼답니다: !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "사용자의 모든 방에 대한 엑세스가 허용될 수 있어서 새로운 사용자를 만들고 원하는 방에만 초대한 후 엑세스 토큰을 사용하는 것이 좋아요. {0} 이 명령어를 통해 엑세스 토큰을 얻을 수 있어요.",
- Method: "Method",
- Body: "Body",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "요청 Headers의 JSON 형식이 올바르지 않아요: ",
- BodyInvalidFormat: "요청 Body의 JSON 형식이 올바르지 않아요: ",
- "Monitor History": "모니터링 기록",
- clearDataOlderThan: "모니터링 기록을 {0}일 동안 저장해요.",
- PasswordsDoNotMatch: "비밀번호가 일치하지 않아요.",
- records: "records",
- "One record": "One record",
- steamApiKeyDescription: "스팀 게임 서버를 모니터링하려면 Steam Web API 키가 필요해요. API 키는 하단 웹사이트에서 등록할 수 있어요: ",
- "Current User": "현재 사용자",
- recent: "최근",
- Done: "완료",
- Info: "정보",
- Security: "보안",
- "Steam API Key": "스팀 API 키",
- "Shrink Database": "데이터베이스 축소",
- "Pick a RR-Type...": "RR-Type을 골라주세요...",
- "Pick Accepted Status Codes...": "상태 코드를 골라주세요...",
- Default: "기본",
- "HTTP Options": "HTTP 옵션",
- "Create Incident": "인시던트 만들기",
- Title: "제목",
- Content: "내용",
- Style: "스타일",
- info: "정보",
- warning: "주의",
- danger: "경고",
- primary: "기본",
- light: "화이트",
- dark: "다크",
- Post: "게시",
- "Please input title and content": "제목과 내용을 작성해주세요.",
- Created: "생성 날짜",
- "Last Updated": "마지막 업데이트",
- Unpin: "제거",
- "Switch to Light Theme": "화이트 테마로 전환",
- "Switch to Dark Theme": "다크 테마로 전환",
- "Show Tags": "태그 보이기",
- "Hide Tags": "태그 숨기기",
- Description: "설명",
- "No monitors available.": "모니터링이 없어요.",
- "Add one": "추가하기",
- "No Monitors": "모니터링 없음",
- "Untitled Group": "이름없는 그룹",
- Services: "서비스",
- Discard: "취소",
- Cancel: "취소",
- "Powered by": "Powered by",
- shrinkDatabaseDescription: "SQLite 데이터베이스 VACUUM을 트리거해요. 만약 데이터베이스가 1.10.0 버전 이후에 생성되었다면 AUTO_VACUUM이 설정되어 있어 이 작업은 필요 없을 거에요.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Usename (webapi_ 접두사 포함)",
- serwersmsAPIPassword: "API 비밀번호",
- serwersmsPhoneNumber: "휴대전화 번호",
- serwersmsSenderName: "보내는 사람 이름 (customer portal를 통해 가입된 정보)",
- stackfield: "Stackfield",
- dnsPortDescription: "DNS 서버 포트, 기본값은 53 이에요. 포트는 언제나 변경할 수 있어요.",
- PushByTechulus: "Push by Techulus",
- GoogleChat: "Google Chat (Google Workspace only)",
- topic: "Topic",
- topicExplanation: "모니터링할 MQTT Topic",
- successMessage: "성공 메시지",
- successMessageExplanation: "성공으로 간주되는 MQTT 메시지",
- error: "오류",
- critical: "크리티컬",
- Customize: "커스터마이즈",
- "Custom Footer": "커스텀 Footer",
- "Custom CSS": "커스텀 CSS",
- smtpDkimSettings: "DKIM 설정",
- smtpDkimDesc: "사용 방법은 DKIM {0}를 참조하세요.",
- documentation: "문서",
- smtpDkimDomain: "도메인 이름",
- smtpDkimKeySelector: "Key Selector",
- smtpDkimPrivateKey: "Private Key",
- smtpDkimHashAlgo: "해시 알고리즘 (선택)",
- smtpDkimheaderFieldNames: "서명할 헤더 키 (선택)",
- smtpDkimskipFields: "서명하지 않을 헤더 키 (선택)",
- wayToGetPagerDutyKey: "Service -> Service Directory -> (서비스 선택) -> Integrations -> Add integration. 에서 찾을 수 있어요. 자세히 알아보려면 {0}에서 \"Events API V2\"를 검색해봐요.",
- "Integration Key": "Integration 키",
- "Integration URL": "Integration URL",
- "Auto resolve or acknowledged": "자동 해결 혹은 승인",
- "do nothing": "아무것도 하지 않기",
- "auto acknowledged": "자동 승인 (acknowledged)",
- "auto resolve": "자동 해결 (resolve)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "환경변수",
- alertaApiKey: "API 키",
- alertaAlertState: "경고 상태",
- alertaRecoverState: "해결된 상태",
- deleteStatusPageMsg: "정말 이 상태 페이지를 삭제할까요?",
- Proxies: "프록시",
- default: "Default",
- enabled: "활성화",
- setAsDefault: "기본 프록시로 설정",
- deleteProxyMsg: "정말 이 프록시를 모든 모니터링에서 삭제할까요?",
- proxyDescription: "프록시가 작동하려면 모니터에 할당되어야 해요.",
- enableProxyDescription: "이 프록시는 활성화될 때까지 영향을 미치지 않아요. 활성화 상태에 따라 모든 모니터에서 프록시를 일시정지할 수 있어요.",
- setAsDefaultProxyDescription: "새로 추가하는 모든 모니터링에 이 프록시를 기본적으로 활성화해요. 각 모니터에 대해 별도로 프록시를 비활성화할 수 있어요.",
- "Certificate Chain": "인증서 체인",
- Valid: "유효",
- Invalid: "유효하지 않음",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "휴대전화 번호",
- TemplateCode: "템플릿 코드",
- SignName: "SignName",
- "Sms template must contain parameters: ": "SMS 템플릿은 다음과 같은 파라미터가 포함되어야 해요:",
- "Bark Endpoint": "Bark Endpoint",
- WebHookUrl: "웹훅 URL",
- SecretKey: "Secret Key",
- "For safety, must use secret key": "안전을 위해 꼭 Secret Key를 사용하세요.",
- "Device Token": "기기 Token",
- Platform: "플랫폼",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "High",
- Retry: "재시도",
- Topic: "Topic",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "프록시 설정",
- "Proxy Protocol": "프록시 프로토콜",
- "Proxy Server": "프록시 서버",
- "Proxy server has authentication": "프록시 서버에 인증 절차가 있음",
- User: "사용자",
- Installed: "설치됨",
- "Not installed": "설치되어 있지 않음",
- Running: "작동 중",
- "Not running": "작동하고 있지 않음",
- "Remove Token": "토큰 삭제",
- Start: "시작",
- Stop: "정지",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "새로운 상태 페이지 만들기",
- Slug: "주소",
- "Accept characters:": "허용되는 문자열:",
- startOrEndWithOnly: "{0}로 시작하거나 끝나야 해요.",
- "No consecutive dashes": "연속되는 대시는 허용되지 않아요",
- Next: "다음",
- "The slug is already taken. Please choose another slug.": "이미 존재하는 주소에요. 다른 주소를 사용해 주세요.",
- "No Proxy": "프록시 없음",
- Authentication: "인증",
- "HTTP Basic Auth": "HTTP 인증",
- "New Status Page": "새로운 상태 페이지",
- "Page Not Found": "페이지를 찾을 수 없어요",
- "Reverse Proxy": "리버스 프록시",
- Backup: "백업",
- About: "정보",
- wayToGetCloudflaredURL: "({0}에서 Cloudflare 다운로드 하기)",
- cloudflareWebsite: "Cloudflare 웹사이트",
- "Message:": "메시지:",
- "Don't know how to get the token? Please read the guide:": "토큰을 얻는 방법은 이 가이드를 확인해주세요:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Cloudflare Tunnel를 연결하면 현재 연결이 끊길 수 있어요. 정말 중지할까요? 비밀번호를 입력해 확인하세요.",
- "Other Software": "다른 소프트웨어",
- "For example: nginx, Apache and Traefik.": "nginx, Apache, Traefik 등을 사용할 수 있어요.",
- "Please read": "이 문서를 참조하세요:",
- "Subject:": "Subject:",
- "Valid To:": "Valid To:",
- "Days Remaining:": "남은 일수:",
- "Issuer:": "Issuer:",
- "Fingerprint:": "Fingerprint:",
- "No status pages": "상태 페이지 없음",
- "Domain Name Expiry Notification": "도메인 이름 만료 알림",
- Proxy: "프록시",
- "Date Created": "생성된 날짜",
- onebotHttpAddress: "OneBot HTTP 주소",
- onebotMessageType: "OneBot 메시지 종류",
- onebotGroupMessage: "그룹 메시지",
- onebotPrivateMessage: "개인 메시지",
- onebotUserOrGroupId: "그룹/사용자 ID",
- onebotSafetyTips: "안전을 위해 Access 토큰을 설정하세요.",
- "PushDeer Key": "PushDeer 키",
- "Footer Text": "Footer 문구",
- "Show Powered By": "Powered By 문구 표시하기",
- "Domain Names": "도메인 이름",
- signedInDisp: "{0} 로그인됨",
- signedInDispDisabled: "인증 비활성화됨.",
- "Certificate Expiry Notification": "인증서 만료 알림",
- "API Username": "API 사용자 이름",
- "API Key": "API 키",
- "Recipient Number": "받는 사람 번호",
- "From Name/Number": "발신자 이름/번호",
- "Leave blank to use a shared sender number.": "공유 발신자 번호를 사용하려면 공백으로 두세요.",
- "Octopush API Version": "Octopush API 버전",
- "Legacy Octopush-DM": "레거시 Octopush-DM",
- endpoint: "endpoint",
- octopushAPIKey: "제어판 HTTP API credentials 에서 \"API key\"",
- octopushLogin: "제어판 HTTP API credentials 에서 \"Login\"",
- promosmsLogin: "API 로그인 이름",
- promosmsPassword: "API 비밀번호",
- "pushoversounds pushover": "Pushover (기본)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "진동만",
- "pushoversounds none": "없음 (무음)",
- pushyAPIKey: "비밀 API 키",
- pushyToken: "기기 토큰",
- "Show update if available": "사용 가능한 경우에 업데이트 표시",
- "Also check beta release": "베타 릴리즈 확인",
- "Using a Reverse Proxy?": "리버스 프록시를 사용하시나요?",
- "Check how to config it for WebSocket": "웹소켓 대한 설정 방법",
- "Steam Game Server": "스팀 게임 서버",
- "Most likely causes:": "원인:",
- "The resource is no longer available.": "더 이상 사용할 수 없어요...",
- "There might be a typing error in the address.": "주소에 오탈자가 있을 수 있어요.",
- "What you can try:": "해결 방법:",
- "Retype the address.": "주소 다시 입력하기",
- "Go back to the previous page.": "이전 페이지로 돌아가기",
- "Coming Soon": "Coming Soon...",
- wayToGetClickSendSMSToken: "{0}에서 API 사용자 이름과 키를 얻을 수 있어요.",
-};
diff --git a/src/languages/nb-NO.js b/src/languages/nb-NO.js
deleted file mode 100644
index 96f71d979..000000000
--- a/src/languages/nb-NO.js
+++ /dev/null
@@ -1,285 +0,0 @@
-export default {
- languageName: "Norsk",
- checkEverySecond: "Sjekk hvert {0} sekund.",
- retryCheckEverySecond: "Prøv igjen hvert {0} sekund.",
- retriesDescription: "Maksimalt antall forsøk før tjenesten er merket som nede og et varsel sendes",
- ignoreTLSError: "Ignorer TLS/SSL-feil for HTTPS-nettsteder",
- upsideDownModeDescription: "Snu statusen opp ned. Hvis tjenesten er tilgjengelig, er den NEDE.",
- maxRedirectDescription: "Maksimalt antall viderekoblinger å følge. Sett til 0 for å deaktivere viderekoblinger.",
- acceptedStatusCodesDescription: "Velg statuskoder som anses som en vellykket respons.",
- passwordNotMatchMsg: "Passordene stemmer ikke overens.",
- notificationDescription: "Varsler må tilordnes en overvåkning for å fungere.",
- keywordDescription: "Søk etter nøkkelord i ren HTML eller JSON. Søket skiller mellom store og små bokstaver.",
- pauseDashboardHome: "Pause",
- deleteMonitorMsg: "Er du sikker på at du vil slette denne overvåkningen?",
- deleteNotificationMsg: "Er du sikker på at du vil slette dette varselet for alle overvåkningene?",
- resolverserverDescription: "Cloudflare er standardserveren. Du kan endre DNS-serveren når som helst.",
- rrtypeDescription: "Velg RR-typen du vil overvåke",
- pauseMonitorMsg: "Er du sikker på at du vil sette på pause?",
- enableDefaultNotificationDescription: "For hver ny overvåkning vil denne varslingen være aktivert som standard. Du kan fortsatt deaktivere varselet separat for hver overvåkning.",
- clearEventsMsg: "Er du sikker på at du vil slette alle hendelser for denne overvåkningen?",
- clearHeartbeatsMsg: "Er du sikker på at du vil slette alle hjerteslag for denne overvåkningen?",
- confirmClearStatisticsMsg: "Er du sikker på at du vil slette ALL statistikk?",
- importHandleDescription: "Velg 'Hopp over eksisterende' hvis du vil hoppe over hver overvåkning eller varsel med samme navn. 'Overskriv' sletter alle eksisterende overvåkninger og varsler.",
- confirmImportMsg: "Er du sikker på at du vil importere denne sikkerhetskopien? Sørg for at du har valgt riktig importalternativ.",
- twoFAVerifyLabel: "Skriv inn tokenet ditt for å bekrefte at 2FA fungerer",
- tokenValidSettingsMsg: "Token er gyldig! Du kan nå lagre 2FA-innstillingene.",
- confirmEnableTwoFAMsg: "Er du sikker på at du vil aktivere 2FA?",
- confirmDisableTwoFAMsg: "Er du sikker på at du vil deaktivere 2FA?",
- Settings: "Innstillinger",
- Dashboard: "Dashboard",
- "New Update": "Ny Oppdatering",
- Language: "Språk",
- Appearance: "Utseende",
- Theme: "Tema",
- General: "Generelt",
- Version: "Versjon",
- "Check Update On GitHub": "Sjekk oppdatering på GitHub",
- List: "Liste",
- Add: "Legg til",
- "Add New Monitor": "Legg til ny overvåkning",
- "Quick Stats": "Statistikk",
- Up: "Oppe",
- Down: "Nede",
- Pending: "Avventer",
- Unknown: "Ukjent",
- Pause: "Pause",
- Name: "Navn",
- Status: "Status",
- DateTime: "Dato tid",
- Message: "Melding",
- "No important events": "Ingen viktige hendelser",
- Resume: "Fortsett",
- Edit: "Rediger",
- Delete: "Slett",
- Current: "Nåværende",
- Uptime: "Oppetid",
- "Cert Exp.": "Sertifikat utløper",
- day: "dag | dager",
- "-day": "-dag",
- hour: "time",
- "-hour": "-time",
- Response: "Respons",
- Ping: "Ping",
- "Monitor Type": "Overvåkningstype",
- Keyword: "Stikkord",
- "Friendly Name": "Vennlig navn",
- URL: "URL",
- Hostname: "Vertsnavn",
- Port: "Port",
- "Heartbeat Interval": "Hjerteslagsintervall",
- Retries: "Forsøk",
- "Heartbeat Retry Interval": "Hjerteslagsforsøkintervall",
- Advanced: "Avansert",
- "Upside Down Mode": "Opp-ned-modus",
- "Max. Redirects": "Maks. viderekoblinger",
- "Accepted Status Codes": "Godkjente statuskoder",
- Save: "Lagre",
- Notifications: "Varsler",
- "Not available, please setup.": "Ikke tilgjengelig, venligst sett opp.",
- "Setup Notification": "Sett opp varsel",
- Light: "Lys",
- Dark: "Mørk",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
- Normal: "Normal",
- Bottom: "Bunn",
- None: "Ingen",
- Timezone: "Tidssone",
- "Search Engine Visibility": "Søkemotor-synlighet",
- "Allow indexing": "Tillat indeksering",
- "Discourage search engines from indexing site": "Fraråd søkemotorer fra å indeksere nettstedet",
- "Change Password": "Endre passord",
- "Current Password": "Nåværende passord",
- "New Password": "Nytt passord",
- "Repeat New Password": "Gjenta nytt passord",
- "Update Password": "Oppdater passord",
- "Disable Auth": "Deaktiver autentisering",
- "Enable Auth": "Aktiver autentisering",
- "disableauth.message1": "Er du sikker på at du vil deaktiver autentisering ?",
- "disableauth.message2": "Dette er for de som har tredjepartsautorisering foran Uptime Kuma, for eksempel Cloudflare Access.",
- "Please use this option carefully!": "Vennligst vær forsiktig.",
- Logout: "Logg ut",
- Leave: "Forlat",
- "I understand, please disable": "Jeg forstår, vennligst deaktiver",
- Confirm: "Bekreft",
- Yes: "Ja",
- No: "Nei",
- Username: "Brukernavn",
- Password: "Passord",
- "Remember me": "Husk meg",
- Login: "Logg inn",
- "No Monitors, please": "Ingen overvåkning, vær så snill",
- "add one": "legg til en",
- "Notification Type": "Meldingstype",
- Email: "E-post",
- Test: "Test",
- "Certificate Info": "Sertifikatinformasjon",
- "Resolver Server": "DNS-server",
- "Resource Record Type": "DNS-posttype",
- "Last Result": "Siste resultat",
- "Create your admin account": "Opprett en administratorkonto",
- "Repeat Password": "Gjenta passord",
- "Import Backup": "Importer sikkerhetskopi",
- "Export Backup": "Eksporter sikkerhetskopi",
- Export: "Eksporter",
- Import: "Importer",
- respTime: "Svartid (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Standard aktivert",
- "Apply on all existing monitors": "Anvend for alle eksisterende overvåkninger",
- Create: "Opprett",
- "Clear Data": "Slett data",
- Events: "Hendelser",
- Heartbeats: "Hjerteslag",
- "Auto Get": "Auto Hent",
- backupDescription: "Du kan sikkerhetskopiere alle overvåkninger og alle varsler til en JSON-fil.",
- backupDescription2: "PS: Historikk og hendelsesdata er ikke inkludert.",
- backupDescription3: "Følsomme data som varslingstokener er inkludert i eksportfilen. Vennligst oppbevar dem sikkert.",
- alertNoFile: "Velg en fil som skal importeres.",
- alertWrongFileType: "Velg en JSON-fil.",
- "Clear all statistics": "Fjern all statistikk",
- "Skip existing": "Hopp over eksisterende",
- Overwrite: "Overskriv",
- Options: "Alternativer",
- "Keep both": "Behold begge",
- "Verify Token": "Bekreft token",
- "Setup 2FA": "Konfigurer 2FA",
- "Enable 2FA": "Aktiver 2FA",
- "Disable 2FA": "Deaktiver 2FA",
- "2FA Settings": "2FA Innstillinger",
- "Two Factor Authentication": "To-faktor autentisering",
- Active: "Aktiv",
- Inactive: "Inaktiv",
- Token: "Token",
- "Show URI": "Vis URI",
- Tags: "Etiketter",
- "Add New below or Select...": "Legg til nytt nedenfor eller Velg ...",
- "Tag with this name already exist.": "Etikett med dette navnet eksisterer allerede.",
- "Tag with this value already exist.": "Etikett med denne verdien eksisterer allerede.",
- color: "farge",
- "value (optional)": "verdi (valgfritt)",
- Gray: "Grå",
- Red: "Rød",
- Orange: "Oransje",
- Green: "Grønn",
- Blue: "Blå",
- Indigo: "Indigo",
- Purple: "Lilla",
- Pink: "Rosa",
- "Search...": "Søk...",
- "Avg. Ping": "Gj.sn. Ping",
- "Avg. Response": "Gj.sn. Respons",
- "Entry Page": "Oppføringsside",
- statusPageNothing: "Ingenting her, vennligst legg til en gruppe eller en overvåkning.",
- "No Services": "Ingen tjenester",
- "All Systems Operational": "Alle systemer i drift",
- "Partially Degraded Service": "Delvis degradert tjeneste",
- "Degraded Service": "Degradert tjeneste",
- "Add Group": "Legg til gruppe",
- "Add a monitor": "Legg til en overvåkning",
- "Edit Status Page": "Rediger statusside",
- "Go to Dashboard": "Gå til Dashboard",
- "Status Page": "Statusside",
- "Status Pages": "Statusside",
- defaultNotificationName: "Min {notification} varsling ({number})",
- here: "her",
- Required: "Obligatorisk",
- telegram: "Telegram",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "Du kan få et token fra {0}.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID",
- wayToGetTelegramChatID: "Du kan få chat-ID-en din ved å sende en melding til boten og gå til denne nettadressen for å se chat_id:",
- "YOUR BOT TOKEN HERE": "DITT BOT TOKEN HER",
- chatIDNotFound: "Chat-ID ble ikke funnet. Send en melding til denne boten først",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Innholdstype",
- webhookJsonDesc: "{0} er bra for alle moderne HTTP-servere som express.js",
- webhookFormDataDesc: "{multipart} er bra for PHP. JSON trenger å bli analysert med {decodeFunction}",
- smtp: "E-post (SMTP)",
- secureOptionNone: "None / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ignorer TLS feilmelding",
- "From Email": "Fra E-post",
- "To Email": "Til E-post",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Du kan få denne ved å gå til Serverinnstillinger -> Integrasjoner -> Opprett en Webhook",
- "Bot Display Name": "Bot Visningsnavn",
- "Prefix Custom Message": "Prefiks tilpasset melding",
- "Hello @everyone is...": "Hei {'@'}everyone det er...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Du kan lære hvordan du oppretter en webhook-URL {0}.",
- signal: "Signal",
- Number: "Nummer",
- Recipients: "Mottakere",
- needSignalAPI: "Du må ha en Signal-klient med REST API.",
- wayToCheckSignalURL: "Du kan sjekke denne nettadressen for å se hvordan du konfigurerer en:",
- signalImportant: "VIKTIG: Du kan ikke blande grupper og nummere i mottakere!",
- gotify: "Gotify",
- "Application Token": "Application Token",
- "Server URL": "Server URL",
- Priority: "Prioritet",
- slack: "Slack",
- "Icon Emoji": "Icon Emoji",
- "Channel Name": "Kanal navn",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Mer informasjon om webhooks på: {0}",
- aboutChannelName: "Skriv inn kanalnavnet på {0} Kanalnavn-feltet hvis du vil omgå webhook-kanalen. Eks: #other-channel",
- aboutKumaURL: "Hvis du lar Uptime Kuma URL feltet være blank, den blir som standard til Github-siden for dette prosjektet.",
- emojiCheatSheet: "Emoji cheat sheet: {0}",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "Bruker-nøkkel",
- Device: "Enhet",
- "Message Title": "Meldingstittel",
- "Notification Sound": "Notifikasjonslyd",
- "More info on:": "Mer info på: {0}",
- pushoverDesc1: "Nødsprioritet (2) har en standard 30 sekunders tidsavbrudd mellom forsøk og vil utløpe etter 1 time.",
- pushoverDesc2: "Hvis du vil sende varsler til forskjellige enheteter, fyll ut Enhet-feltet.",
- "SMS Type": "SMS Type",
- octopushTypePremium: "Premium (Raskt - anbefalt for varsling)",
- octopushTypeLowCost: "Lav kostnad (Sakte, noen ganger blokkert av leverandør)",
- "Check octopush prices": "Sjekk octopush priser {0}.",
- octopushPhoneNumber: "Telefonnummer (intl format, eg : +4791234567) ",
- octopushSMSSender: "SMS Avsendernavn : 3-11 alphanumeriske tegn og mellomrom (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Enhet ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Eksempel: {0}",
- "Read more:": "Les mer: {0}",
- "Status:": "Status: {0}",
- "Read more": "Les mer",
- appriseInstalled: "Apprise er installert.",
- appriseNotInstalled: "Apprise ikke installert. {0}",
- "Access Token": "Tilgangs-Token",
- "Channel access token": "Kanal tilgangs-token",
- "Line Developers Console": "Line Utviklserskonsoll",
- lineDevConsoleTo: "Line Utviklserskonsoll - {0}",
- "Basic Settings": "Grunnleggende instillinger",
- "User ID": "Bruker-ID",
- "Messaging API": "Meldings-API",
- wayToGetLineChannelToken: "Først, få tilgang til {0}, lag en leverandør og kanal (Meldings-API), deretter kan du hente kanaltilgangs-token og bruker id fra menu-valgene nevnt over.",
- "Icon URL": "Ikon URL",
- aboutIconURL: "Du kan gi en link til et bilde i \"Ikon URL\" for å overskrive det standard profilbildet. Vil ikke bli brukt hvis Ikon Emoji ikke er satt.",
- aboutMattermostChannelName: "Du kan overskrive standardkanalen som webhook-en poster i ved å skrive enn kanalnavnet i \"Kanalnavn\" feltet. Dette må være skrudd på i Mattermost webhook-instillingene. Eks: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - billig, men treg og ofte overbelastet. Begrenset til bare polske mottakere.",
- promosmsTypeFlash: "SMS FLASH - Melding vil automatisk vises på mottakker-enhet. Begrenset til bare polske mottakere.",
- promosmsTypeFull: "SMS FULL - Premuimnivå SMS. Du kan bruke dit avsendernavn (Du må registerere et navn først). Pålitelig for alle varslinger.",
- promosmsTypeSpeed: "SMS SPEED - Høyest prioritet i systemet.Veldig rask på pålitelig, men dyrt (omtrent det dobbeltet av SMS FULL pris).",
- promosmsPhoneNumber: "Telefonnummber (for polske mottakere. Du trenger ikke områdekode.)",
- promosmsSMSSender: "SMS Avsendernavn : Forhåndsregistert navn eller en av standardnavnene: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
-};
diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js
deleted file mode 100644
index 290b32f6d..000000000
--- a/src/languages/nl-NL.js
+++ /dev/null
@@ -1,531 +0,0 @@
-export default {
- languageName: "Nederlands",
- checkEverySecond: "Controleer elke {0} seconden.",
- retriesDescription: "Maximum aantal nieuwe pogingen voordat de service wordt gemarkeerd als niet beschikbaar en er een melding wordt verzonden",
- ignoreTLSError: "Negeer TLS/SSL-fout voor HTTPS-websites",
- upsideDownModeDescription: "Draai de status om. Als de service bereikbaar is, is deze OFFLINE.",
- maxRedirectDescription: "Maximaal aantal te volgen omleidingen. Stel in op 0 om omleidingen uit te schakelen.",
- acceptedStatusCodesDescription: "Selecteer statuscodes die als een succesvol antwoord worden beschouwd.",
- passwordNotMatchMsg: "Het herhaalwachtwoord komt niet overeen.",
- notificationDescription: "Wijs a.u.b. een melding toe aan de monitor(s) om het te laten werken.",
- keywordDescription: "Zoek trefwoord in gewone html of JSON-response en het is hoofdlettergevoelig",
- pauseDashboardHome: "Gepauzeerd",
- deleteMonitorMsg: "Weet u zeker dat u deze monitor wilt verwijderen?",
- deleteNotificationMsg: "Weet u zeker dat u deze melding voor alle monitoren wilt verwijderen?",
- resolverserverDescription: "Cloudflare is de standaardserver, u kunt de resolver server op elk moment wijzigen.",
- rrtypeDescription: "Selecteer het RR-type dat u wilt monitoren",
- pauseMonitorMsg: "Weet je zeker dat je wilt pauzeren?",
- enableDefaultNotificationDescription: "Voor elke nieuwe monitor wordt deze melding standaard ingeschakeld. U kunt de melding nog steeds afzonderlijk uitschakelen voor elke monitor.",
- clearEventsMsg: "Weet je zeker dat je alle evenementen voor deze monitor wilt verwijderen?",
- clearHeartbeatsMsg: "Weet je zeker dat je alle heartbeats voor deze monitor wilt verwijderen?",
- confirmClearStatisticsMsg: "Weet u zeker dat u alle statistieken wilt verwijderen?",
- twoFAVerifyLabel: "Voer uw 2FA controle token in voor verificatie",
- tokenValidSettingsMsg: "Token is geldig! U kunt nu de 2FA-instellingen opslaan.",
- confirmEnableTwoFAMsg: "Weet je zeker dat je 2FA wilt inschakelen?",
- confirmDisableTwoFAMsg: "Weet je zeker dat je 2FA wilt uitschakelen?",
- Settings: "Instellingen",
- Dashboard: "Dashboard",
- "New Update": "Nieuwe update",
- Language: "Taal",
- Appearance: "Weergave",
- Theme: "Thema",
- General: "Algemeen",
- Version: "Versie",
- "Check Update On GitHub": "Controleer voor updates op GitHub",
- List: "Lijst",
- Add: "Toevoegen",
- "Add New Monitor": "Nieuwe monitor toevoegen",
- "Quick Stats": "Snelle statistieken",
- Up: "Online",
- Down: "Offline",
- Pending: "In afwachting",
- Unknown: "Onbekend",
- Pause: "Pauze",
- Name: "Naam",
- Status: "Status",
- DateTime: "Datum Tijd",
- Message: "Bericht",
- "No important events": "Geen belangrijke gebeurtenissen",
- Resume: "Hervat",
- Edit: "Wijzigen",
- Delete: "Verwijderen",
- Current: "Huidig",
- Uptime: "Uptime",
- "Cert Exp.": "Cert. verl.",
- day: "dag | dagen",
- "-day": "-dag",
- hour: "uur",
- "-hour": "-uur",
- Response: "Antwoord",
- Ping: "Ping",
- "Monitor Type": "Monitortype:",
- Keyword: "Trefwoord",
- "Friendly Name": "Vriendelijke naam",
- URL: "URL",
- Hostname: "Hostnaam",
- Port: "Poort",
- "Heartbeat Interval": "Hartslaginterval",
- Retries: "Pogingen",
- Advanced: "Geavanceerd",
- "Upside Down Mode": "Ondersteboven modus",
- "Max. Redirects": "Max. Omleidingen",
- "Accepted Status Codes": "Geaccepteerde statuscodes",
- Save: "Opslaan",
- Notifications: "Meldingen",
- "Not available, please setup.": "Niet beschikbaar, stel a.u.b. in.",
- "Setup Notification": "Melding instellen",
- Light: "Licht",
- Dark: "Donker",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Thema - Hartslagbalk",
- Normal: "Normaal",
- Bottom: "Onderkant",
- None: "Geen",
- Timezone: "Tijdzone",
- "Search Engine Visibility": "Zichtbaarheid voor zoekmachines",
- "Allow indexing": "Indexering toestaan",
- "Discourage search engines from indexing site": "Ontmoedig zoekmachines om de site te indexeren",
- "Change Password": "Verander wachtwoord",
- "Current Password": "Huidig wachtwoord",
- "New Password": "Nieuw wachtwoord",
- "Repeat New Password": "Herhaal nieuw wachtwoord",
- "Update Password": "Vernieuw wachtwoord",
- "Disable Auth": "Authenticatie uitschakelen",
- "Enable Auth": "Authenticatie inschakelen",
- "disableauth.message1": "Weet je zeker dat je authenticatie wilt uitschakelen ?",
- "disableauth.message2": "Er zijn omstandigheden waarbij je authenticatie door derden wilt implementeren voor Uptime Kuma, zoals Cloudflare Access, Authelia of andere authenticatiemechanismen.",
- "Please use this option carefully!": "Gebruik deze optie zorgvuldig!",
- Logout: "Uitloggen",
- Leave: "Vertrekken",
- "I understand, please disable": "Ik begrijp het, schakel a.u.b. uit",
- Confirm: "Bevestigen",
- Yes: "Ja",
- No: "Nee",
- Username: "Gebruikersnaam",
- Password: "Wachtwoord",
- "Remember me": "Wachtwoord onthouden",
- Login: "Inloggen",
- "No Monitors, please": "Geen monitoren, ",
- "add one": "voeg een toe",
- "Notification Type": "Melding type",
- Email: "E-mail",
- Test: "Testen",
- "Certificate Info": "Certificaat informatie",
- "Resolver Server": "Resolver Server",
- "Resource Record Type": "Type bronrecord",
- "Last Result": "Laatste resultaat",
- "Create your admin account": "Maak uw beheerdersaccount aan",
- "Repeat Password": "Herhaal wachtwoord",
- Export: "Exporteren",
- Import: "Importeren",
- respTime: "reactietijd (ms)",
- notAvailableShort: "N.v.t.",
- "Default enabled": "Default enabled",
- "Apply on all existing monitors": "Pas toe op alle bestaande monitors",
- Create: "Aanmaken",
- "Clear Data": "Data wissen",
- Events: "Gebeurtenissen",
- Heartbeats: "Heartbeats",
- "Auto Get": "Auto Get",
- backupDescription: "U kunt een back-up maken van alle monitoren en alle meldingen in een JSON-bestand.",
- backupDescription2: "PS: Geschiedenis- en gebeurtenisgegevens zijn niet inbegrepen.",
- backupDescription3: "Gevoelige gegevens zoals melding tokens zijn opgenomen in het exportbestand, houd het veilig opgeslagen.",
- alertNoFile: "Selecteer een bestand om te importeren.",
- alertWrongFileType: "Selecteer een JSON-bestand.",
- "Verify Token": "Controleer token",
- "Setup 2FA": "2FA instellingen",
- "Enable 2FA": "Schakel 2FA in",
- "Disable 2FA": "Schakel 2FA uit",
- "2FA Settings": "2FA-instellingen",
- "Two Factor Authentication": "Two Factor Authenticatie",
- Active: "Actief",
- Inactive: "Inactief",
- "Also apply to existing monitors": "Voeg ook toe aan bestaande monitors",
- Token: "Token",
- "Show URI": "Toon URI",
- "Clear all statistics": "Wis alle statistieken",
- retryCheckEverySecond: "Probeer elke {0} seconden.",
- importHandleDescription: "Kies 'Sla bestaande over' als je elke monitor of melding met dezelfde naam wilt overslaan. Kies 'Overschrijf' als je elke monitor of notificatie wilt verwijderen.",
- confirmImportMsg: "Weet je zeker dat je dit bestand wilt importeren?",
- "Heartbeat Retry Interval": "Heartbeat Retry Interval",
- "Import Backup": "Importeer Backup",
- "Export Backup": "Exporteer Backup",
- "Skip existing": "Sla bestaande over",
- Overwrite: "Overschrijf",
- Options: "Opties",
- "Keep both": "Bewaar beide",
- Tags: "Labels",
- "Add New below or Select...": "Voeg nieuwe toe of selecteer...",
- "Tag with this name already exist.": "Label met deze naam bestaat al",
- "Tag with this value already exist.": "Label met deze waarde bestaat al",
- color: "Kleur",
- "value (optional)": "waarde (optioneel)",
- Gray: "Grijs",
- Red: "Rood",
- Orange: "Oranje",
- Green: "Groen",
- Blue: "Blauw",
- Indigo: "Indigo",
- Purple: "Paars",
- Pink: "Roze",
- "Search...": "Zoeken...",
- "Avg. Ping": "Gemiddelde Ping",
- "Avg. Response": "Gemiddelde Response",
- "Entry Page": "Entry Page",
- statusPageNothing: "Niets hier, voeg een groep of monitor toe.",
- "No Services": "Geen diensten",
- "All Systems Operational": "Alle systemen operationeel",
- "Partially Degraded Service": "Gedeeltelijk verminderde prestaties",
- "Degraded Service": "Verminderde prestaties",
- "Add Group": "Voeg groep toe",
- "Add a monitor": "Voeg monitor toe",
- "Edit Status Page": "Wijzig status pagina",
- "Go to Dashboard": "Ga naar Dashboard",
- "Status Page": "Status Pagina",
- "Status Pages": "Status Pagina",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- Method: "Methode",
- Body: "Body",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "The request headers is geen geldige JSON: ",
- BodyInvalidFormat: "De request body is geen geldige JSON: ",
- "Primary Base URL": "Hoofd Basis URL",
- "Push URL": "Push URL",
- needPushEvery: "Je moet deze URL elke {0} seconden aanroepen.",
- pushOptionalParams: "Optionele parameters: {0}",
- defaultNotificationName: "Mijn {notification} Alert ({number})",
- here: "hier",
- Required: "Verplicht",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "Je kunt een token krijgen van {0}.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Ondersteuning Directe Chat / Groep / Kanaal Chat ID",
- wayToGetTelegramChatID: "Je kunt je CHAT ID krijgen door een bericht te sturen naar de bot en naar deze URL te gaan om het chat_id te bekijken:",
- "YOUR BOT TOKEN HERE": "DE BOT TOKEN HIER",
- chatIDNotFound: "Chat ID is niet gevonden; stuur eerst een bericht naar de bot",
- "Post URL": "Post URL",
- "Content Type": "Content Type",
- webhookJsonDesc: "{0} is goed voor een moderne HTTP server zoals Express.js",
- webhookFormDataDesc: "{multipart} is goed voor PHP. De JSON moet worden ontleed met {decodeFunction}",
- secureOptionNone: "Geen / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Negeer TLS Error",
- "From Email": "Van Email",
- emailCustomSubject: "Aangepast Onderwerp",
- "To Email": "Naar Email",
- smtpCC: "CC",
- smtpBCC: "BCC",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Je kunt dit krijgen door te gaan naar Server Instellingen -> Integraties -> Creëer Webhook",
- "Bot Display Name": "Bot Weergave Naam",
- "Prefix Custom Message": "Prefix Aangepast Bericht",
- "Hello @everyone is...": "Hallo {'@'}iedereen is...",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Je kunt hier leren hoe je een webhook URL kunt maken {0}.",
- Number: "Nummer",
- Recipients: "Ontvangers",
- needSignalAPI: "Je moet een signal client met REST API hebben.",
- wayToCheckSignalURL: "Je kunt op deze URL zien hoe je een kunt instellen:",
- signalImportant: "BELANGRIJK: Je kunt groepen en nummers niet mengen in ontvangers!",
- "Application Token": "Applicatie Token",
- "Server URL": "Server URL",
- Priority: "Prioriteit",
- "Icon Emoji": "Icoon Emoji",
- "Channel Name": "Kanaal Naam",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Meer info over Webhooks op: {0}",
- aboutChannelName: "Voer de kanaal naam in op {0} Kannaal Naam veld als je het Webhook kanaal wilt omzeilen. Bv: #other-channel",
- aboutKumaURL: "Als je de Uptime Kuma URL veld leeg laat, wordt standaard het GitHub project pagina weergegeven.",
- emojiCheatSheet: "Emoji cheat sheet: {0}",
- PushByTechulus: "Push door Techulus",
- clicksendsms: "ClickSend SMS",
- GoogleChat: "Google Chat (Google Workspace alleen)",
- "User Key": "Gebruikers sleutel",
- Device: "Apparaat",
- "Message Title": "Bericht Titel",
- "Notification Sound": "Notificatie Geluid",
- "More info on:": "Meer info op: {0}",
- pushoverDesc1: "Nood prioriteit (2) heeft standaard een 30 seconden timeout tussen pogingen en verloopt na 1 uur.",
- pushoverDesc2: "Vul het appraat veld in als je notificaties naar andere apparaten wilt versturen.",
- "SMS Type": "SMS Type",
- octopushTypePremium: "Premium (Snel - aangeraden voor te alarmeren)",
- octopushTypeLowCost: "Low Cost (Langzaam - wordt soms geblokkeerd door operator)",
- checkPrice: "Controleer {0} prijzen:",
- apiCredentials: "API referenties",
- octopushLegacyHint: "Wil je de legacy versie van Octopush (2011-2020) gebruiken of de nieuwe versie?",
- "Check octopush prices": "Controleer Octopush prijzen {0}.",
- octopushPhoneNumber: "Telefoon nummer (Int. formaat, eg : +33612345678) ",
- octopushSMSSender: "SMS zender naam : 3-11 alfanumerieke karakters en spatie (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Apparaat ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Voorbeeld: {0}",
- "Read more:": "Lees meer: {0}",
- "Status:": "Status: {0}",
- "Read more": "Lees meer",
- appriseInstalled: "Apprise is geïnstalleerd.",
- appriseNotInstalled: "Apprise is niet geïnstalleerd. {0}",
- "Access Token": "Access Token",
- "Channel access token": "Kanaal access token",
- "Line Developers Console": "Line Developers Console",
- lineDevConsoleTo: "Line Developers Console - {0}",
- "Basic Settings": "Basis Instellingen",
- "User ID": "Gebruiker ID",
- "Messaging API": "Berichten API",
- wayToGetLineChannelToken: "Begin met {0} te openen, creëer een provider en kanaal (Messaging API), dan kun je de kanaal access token en gebruikers ID van de hierboven genoemde menu items krijgen.",
- "Icon URL": "Icoon URL",
- aboutIconURL: "Je kunt een link om de standaard profiel afbeelding te overschrijving in \"Icoon URL\" meegeven. Dit wordt niet gebruikt als Icon Emoji is ingesteld.",
- aboutMattermostChannelName: "Je kunt het standaard kanaal dat de Webhook plaatst overschijven door de kanaal naam in te vullen in het \"Channel Name\" veld. Dit moet worden ingeschakeld in de Mattermost Webhook instellingen. Bv. #ander-kanaal",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - Goedkoop maar langzaam en vaak overbelast. Gelimiteerd tot Poolse ontvangers.",
- promosmsTypeFlash: "SMS FLASH - Berichten worden automatisch weergegeven op het apparaat van de ontvanger. Gelimiteerd tot Poolse ontvangers.",
- promosmsTypeFull: "SMS FULL - Premium tier van SMS, je kunt de ontvanger naam gebruiken (Je moet eerst de naam registreren). Betrouwbaar voor alarmeringen.",
- promosmsTypeSpeed: "SMS SPEED - Hoogste prioriteit in systeem. Is veel sneller en betrouwbaarder maar kost meer (ongeveer twee keer zoveel als volle SMS prijs).",
- promosmsPhoneNumber: "Telefoon nummer (voor Poolse ontvangers. Je kunt gebieds codes overslaan)",
- promosmsSMSSender: "SMS Ontvanger naam : Voor geregistreerde naam of een van de standaarden: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "Homeserver URL (met http(s):// en optioneel poort)",
- "Internal Room Id": "Interne Room ID",
- matrixDesc1: "Je kunt de interne room ID vinden door in de geavanceerde sectie van de room instellingen in je Matrix client te kijken. Het zou moeten uitzien als !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Het wordt ten zeerste aanbevolen om een nieuwe gebruiker aan te maken en niet de access token van je account te gebruiken, aangezien dit volledige toegang geeft tot je account en alle kamers waar je lid van bent. Maak in plaats daarvan een nieuwe gebruiker aan en nodig deze alleen uit voor de ruimte waarin je de melding wilt ontvangen. Je kunt de access token krijgen door het volgende uit te voeren {0}",
- "Monitor History": "Monitor Geschiedenis",
- clearDataOlderThan: "Bewaar monitor geschiedenis voor {0} dagen.",
- PasswordsDoNotMatch: "Wachtwoorden komen niet overeen",
- records: "records",
- "One record": "Een record",
- steamApiKeyDescription: "Om een Steam Game Server te monitoren heb je een Steam Web-API key nodig. Je kunt hier je API key registreren: ",
- "Current User": "Huidge Gebruiker",
- topic: "Onderwerp",
- topicExplanation: "MQTT onderwerp om te monitoren",
- successMessage: "Succesbericht",
- successMessageExplanation: "MQTT bericht dat als succes wordt beschouwd.",
- recent: "Recent",
- Done: "Klaar",
- Info: "Info",
- Security: "Beveiliging",
- "Steam API Key": "Steam API Sleutel",
- "Shrink Database": "Verklein Database",
- "Pick a RR-Type...": "Kies een RR-Type...",
- "Pick Accepted Status Codes...": "Kies geaccepteerde Status Codes...",
- Default: "Standaard",
- "HTTP Options": "HTTP Opties",
- "Create Incident": "Creëer Incident",
- Title: "Titel",
- Content: "Content",
- Style: "Stijl",
- info: "info",
- warning: "waarschuwing",
- danger: "gevaar",
- primary: "primair",
- light: "licht",
- dark: "donker",
- Post: "Post",
- "Please input title and content": "Voer alstublieft titel en content in",
- Created: "Gemaakt",
- "Last Updated": "Laatst Bijgewerkt",
- Unpin: "Losmaken",
- "Switch to Light Theme": "Wissel naar Licht Thema",
- "Switch to Dark Theme": "Wissel naar Donker Thema",
- "Show Tags": "Toon Labels",
- "Hide Tags": "Verberg Labels",
- Description: "Beschrijving",
- "No monitors available.": "Geen monitors beschikbaar.",
- "Add one": "Voeg een toe",
- "No Monitors": "Geen Monitors",
- "Untitled Group": "Naamloze Groep",
- Services: "Diensten",
- Discard: "Weggooien",
- Cancel: "Annuleren",
- "Powered by": "Mogelijk gemaakt door",
- shrinkDatabaseDescription: "Activeer database VACUUM voor SQLite. Als de database na 1.10.0 aangemaakt is, dan staat AUTO_VACUUM al aan en is deze actie niet nodig.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Gebruikersnaam (incl. webapi_ prefix)",
- serwersmsAPIPassword: "API Wachtwoord",
- serwersmsPhoneNumber: "Telefoon nummer",
- serwersmsSenderName: "SMS Zender Naam (geregistreerd via klant portaal)",
- stackfield: "Stackfield",
- Customize: "Aanpassen",
- "Custom Footer": "Aangepaste Footer",
- "Custom CSS": "Aangepaste CSS",
- smtpDkimSettings: "DKIM Instellingen",
- smtpDkimDesc: "Refereer alsjeblieft naar Nodemailer DKIM {0} voor gebruik.",
- documentation: "documentatie",
- smtpDkimDomain: "Domein Naam",
- smtpDkimKeySelector: "Sleutel Kiezer",
- smtpDkimPrivateKey: "Prive Sleutel",
- smtpDkimHashAlgo: "Hash Algoritme (Optioneel)",
- smtpDkimheaderFieldNames: "Header sleutels om te ondertekenen (Optioneel)",
- smtpDkimskipFields: "Header sleutels niet om te ondertekenen (Optioneel)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Eindpunt",
- alertaEnvironment: "Omgeving",
- alertaApiKey: "API Sleutel",
- alertaAlertState: "Alert Staat",
- alertaRecoverState: "Herstel Staat",
- deleteStatusPageMsg: "Weet je zeker je deze status pagina wilt verwijderen?",
- Proxies: "Proxies",
- default: "Standaard",
- enabled: "Ingeschakeld",
- setAsDefault: "Stel in als standaard",
- deleteProxyMsg: "Weet je zeker dat je deze proxy wilt verwijderen voor alle monitors?",
- proxyDescription: "Proxies moeten worden toegewezen aan een monitor om te functioneren.",
- enableProxyDescription: "Deze proxy heeft geen effect op monitor verzoeken totdat het is geactiveerd. Je kunt tijdelijk de proxy uitschakelen voor alle monitors voor activatie status.",
- setAsDefaultProxyDescription: "Deze proxy wordt standaard aangezet voor alle nieuwe monitors. Je kunt nog steeds de proxy apart uitschakelen voor elke monitor.",
- "Certificate Chain": "Certificaatketen",
- Valid: "Geldig",
- Invalid: "Ongeldig",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "TelefoonNummers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Sms sjabloon moet de volgende parameters bevatten: ",
- "Bark Endpoint": "Bark Endpoint",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "Voor de veiligheid moet je de secret key gebruiken",
- "Device Token": "Apparaat Token",
- Platform: "Platform",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Hoog",
- Retry: "Opnieuw",
- Topic: "Onderwerp",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "Proxy instellen",
- "Proxy Protocol": "Proxy Protocol",
- "Proxy Server": "Proxy Server",
- "Proxy server has authentication": "Proxy server heeft authenticatie",
- User: "Gebruiker",
- Installed: "Geïnstalleerd",
- "Not installed": "Niet geïnstalleerd",
- Running: "Actief",
- "Not running": "Niet actief",
- "Remove Token": "Verwijder Token",
- Start: "Start",
- Stop: "Stop",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Voeg nieuwe status pagina toe",
- Slug: "Slug",
- "Accept characters:": "Geaccepteerde tekens:",
- startOrEndWithOnly: "Start of eindig alleen met {0}",
- "No consecutive dashes": "Geen opeenvolgende streepjes",
- Next: "Volgende",
- "The slug is already taken. Please choose another slug.": "De slug is al in gebruik. Kies een andere slug.",
- "No Proxy": "Geen Proxy",
- "HTTP Basic Auth": "HTTP Basic Auth",
- "New Status Page": "Nieuwe Status Pagina",
- "Page Not Found": "Pagina Niet gevonden",
- "Reverse Proxy": "Reverse Proxy",
- Backup: "Backup",
- About: "Over",
- wayToGetCloudflaredURL: "(Download cloudflared van {0})",
- cloudflareWebsite: "Cloudflare Website",
- "Message:": "Bericht:",
- "Don't know how to get the token? Please read the guide:": "Lees de uitleg als je niet weet hoe je een token krijgt:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "De huidge verbinding kan worden verbroken als je momenteel bent verbonden met Cloudflare Tunnel. Weet je zeker dat je het wilt stoppen? Typ je huidige wachtwoord om het te bevestigen.",
- "Other Software": "Andere Software",
- "For example: nginx, Apache and Traefik.": "Bijvoorbeeld: nginx, Apache and Traefik.",
- "Please read": "Lees alstublieft",
- "Subject:": "Onderwerp:",
- "Valid To:": "Geldig Tot:",
- "Days Remaining:": "Dagen Resterend:",
- "Issuer:": "Uitgever:",
- "Fingerprint:": "Vingerafruk:",
- "No status pages": "Geen status pagina's",
- Proxy: "Proxy",
- "Date Created": "Datum Aangemaakt",
- onebotHttpAddress: "OneBot HTTP Adres",
- onebotMessageType: "OneBot Bericht Type",
- onebotGroupMessage: "Groep",
- onebotPrivateMessage: "Privé",
- onebotUserOrGroupId: "Groep/Gebruiker ID",
- onebotSafetyTips: "Voor de veiligheid moet een toegangssleutel worden ingesteld",
- "PushDeer Key": "PushDeer Key",
- "Footer Text": "Footer Tekst",
- "Show Powered By": "Laat \"Mogeljik gemaakt door\" zien",
- "Domain Names": "Domein Namen",
- "pushoversounds pushover": "Pushover (default)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "Vibrate Only",
- "pushoversounds none": "None (silent)",
- dnsPortDescription: "DNS-serverpoort. Standaard ingesteld op 53. Je kunt de poort op elk moment wijzigen.",
- error: "fout",
- critical: "kritisch",
- wayToGetPagerDutyKey: "Je kunt dit krijgen door naar Service -> Service Directory -> (Selecteer een service) -> Integraties -> Integratie toevoegen te gaan. Hier kunt u zoeken naar \"Events API V2\". Meer informatie {0}",
- "Integration Key": "Integration Key",
- "Integration URL": "Integration URL",
- "Auto resolve or acknowledged": "Automatisch oplossen of bevestigen",
- "do nothing": "niets doen",
- "auto acknowledged": "automatisch bevestigen",
- "auto resolve": "automatisch oplossen",
- Authentication: "authenticatie",
- signedInDisp: "Aangemeld als {0}",
- signedInDispDisabled: "Authenticatie uitgeschakeld.",
- "Certificate Expiry Notification": "Melding over verlopen certificaat",
- "Recipient Number": "Nummer ontvanger",
- "From Name/Number": "Van naam/nummer",
- "Leave blank to use a shared sender number.": "Laat leeg om een gedeeld afzendernummer te gebruiken.",
- endpoint: "endpoint",
- pushyAPIKey: "Secret API Key",
- pushyToken: "Device token",
- "Show update if available": "Update weergeven indien beschikbaar",
- "Also check beta release": "Controleer ook de bètaversies",
- "Using a Reverse Proxy?": "Een reverse proxy gebruiken?",
- "Check how to config it for WebSocket": "Controleer hoe je het configureert voor een WebSocket",
- "Steam Game Server": "Steam gameserver",
- "Most likely causes:": "Meest waarschijnlijke oorzaken:",
- "The resource is no longer available.": "De paginabron is niet langer beschikbaar.",
- "There might be a typing error in the address.": "Er zit een typefout in het de URL.",
- "What you can try:": "Wat je kan proberen:",
- "Retype the address.": "De URL controleren en/of opnnieuw typen.",
- "Go back to the previous page.": "Terug naar de vorige pagina.",
- "Coming Soon": "Binnenkort beschikbaar",
- wayToGetClickSendSMSToken: "Je kan een API Username en API Key krijgen vanuit {0} .",
- "Connection String": "Connection String",
- Query: "Query",
- settingsCertificateExpiry: "TLS Certificate Expiry",
- certificationExpiryDescription: "HTTPS Monitors trigger notification when TLS certificate expires in:",
- "ntfy Topic": "ntfy Topic",
- Domain: "Domein",
- Workstation: "Werkstation",
- disableCloudflaredNoAuthMsg: "De \"Geen authenticatie\" modus staat aan, wachtwoord is niet vereist.",
-};
diff --git a/src/languages/pl.js b/src/languages/pl.js
deleted file mode 100644
index 04a74997a..000000000
--- a/src/languages/pl.js
+++ /dev/null
@@ -1,644 +0,0 @@
-export default {
- languageName: "Polski",
- checkEverySecond: "Sprawdzaj co {0} sekund",
- retryCheckEverySecond: "Ponawiaj co {0} sekund",
- retriesDescription: "Maksymalna liczba powtórzeń, zanim usługa zostanie oznaczona jako niedostępna i zostanie wysłane powiadomienie",
- ignoreTLSError: "Ignoruj błąd TLS/SSL dla stron HTTPS",
- upsideDownModeDescription: "Odwróć status do góry nogami. Jeśli usługa jest osiągalna, to jest oznaczona jako niedostępna.",
- maxRedirectDescription: "Maksymalna liczba przekierowań do wykonania. Ustaw na 0, aby wyłączyć przekierowania.",
- acceptedStatusCodesDescription: "Wybierz kody stanu, które są uważane za prawidłową odpowiedź.",
- passwordNotMatchMsg: "Powtórzone hasło nie pasuje.",
- notificationDescription: "Proszę przypisać powiadomienie do monitora(ów), aby działało.",
- keywordDescription: "Wyszukiwanie słów kluczowych w zwykłym html lub odpowiedzi JSON. Wielkość liter ma znaczenie.",
- pauseDashboardHome: "Wstrzymane",
- deleteMonitorMsg: "Czy na pewno chcesz usunąć ten monitor?",
- deleteNotificationMsg: "Czy na pewno chcesz usunąć to powiadomienie dla wszystkich monitorów?",
- resolverserverDescription: "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w każdej chwili.",
- rrtypeDescription: "Wybierz rodzaj rekordu, który chcesz monitorować.",
- pauseMonitorMsg: "Czy na pewno chcesz wstrzymać monitorowanie?",
- enableDefaultNotificationDescription: "Dla każdego nowego monitora to powiadomienie będzie domyślnie włączone. Nadal możesz wyłączyć powiadomienia osobno dla każdego monitora.",
- clearEventsMsg: "Jesteś pewien, że chcesz wyczyścić historię zdarzeń dla tego monitora?",
- clearHeartbeatsMsg: "Jesteś pewien, że chcesz wyczyścić historię bicia serca dla tego monitora?",
- confirmClearStatisticsMsg: "Jesteś pewien, że chcesz usunąć WSZYSTKIE statystyki?",
- importHandleDescription: "Wybierz 'Pomiń istniejące', jeśli chcesz pominąć każdy monitor lub powiadomienie o tej samej nazwie. 'Nadpisz' spowoduje usunięcie każdego istniejącego monitora i powiadomienia.",
- confirmImportMsg: "Czy na pewno chcesz zaimportować kopię zapasową? Upewnij się, że wybrałeś właściwą opcję importu.",
- twoFAVerifyLabel: "Proszę, podaj swój token 2FA, aby sprawdzić, czy 2FA działa.",
- tokenValidSettingsMsg: "Token jest prawidłowy! Teraz możesz zapisać ustawienia 2FA.",
- confirmEnableTwoFAMsg: "Jesteś pewien, że chcesz włączyć 2FA?",
- confirmDisableTwoFAMsg: "Jesteś pewien, że chcesz wyłączyć 2FA?",
- Settings: "Ustawienia",
- Dashboard: "Panel",
- "New Update": "Nowa aktualizacja",
- Language: "Język",
- Appearance: "Wygląd",
- Theme: "Motyw",
- General: "Ogólne",
- Version: "Wersja",
- "Check Update On GitHub": "Sprawdź aktualizację na GitHub",
- List: "Lista",
- Add: "Dodaj",
- "Add New Monitor": "Dodaj monitor",
- "Quick Stats": "Szybki podgląd statystyk",
- Up: "Online",
- Down: "Offline",
- Pending: "Oczekuje",
- Unknown: "Nieznane",
- Pause: "Wstrzymaj",
- Name: "Nazwa",
- Status: "Status",
- DateTime: "Data i godzina",
- Message: "Wiadomość",
- "No important events": "Brak ważnych wydarzeń",
- Resume: "Wznów",
- Edit: "Edytuj",
- Delete: "Usuń",
- Current: "Aktualny",
- Uptime: "Czas pracy",
- "Cert Exp.": "Certyfikat wygasa",
- day: "dzień | dni",
- "-day": " dni",
- hour: "godzina",
- "-hour": " godzin",
- Response: "Odpowiedź",
- Ping: "Ping",
- "Monitor Type": "Rodzaj monitora",
- Keyword: "Słowo kluczowe",
- "Friendly Name": "Przyjazna nazwa",
- URL: "URL",
- Hostname: "Nazwa hosta",
- Port: "Port",
- "Heartbeat Interval": "Częstotliwość bicia serca",
- Retries: "Prób",
- "Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca",
- Advanced: "Zaawansowane",
- "Upside Down Mode": "Tryb odwrócony",
- "Max. Redirects": "Maks. przekierowań",
- "Accepted Status Codes": "Akceptowane kody statusu",
- Save: "Zapisz",
- Notifications: "Powiadomienia",
- "Not available, please setup.": "Niedostępne, proszę skonfigurować.",
- "Setup Notification": "Skonfiguruj powiadomienie",
- Light: "Jasny",
- Dark: "Ciemny",
- Auto: "Automatyczny",
- "Theme - Heartbeat Bar": "Motyw - pasek bicia serca",
- Normal: "Domyślne",
- Bottom: "Na dole",
- None: "Brak",
- Timezone: "Strefa czasowa",
- "Search Engine Visibility": "Widoczność w wyszukiwarce",
- "Allow indexing": "Zezwól na indeksowanie",
- "Discourage search engines from indexing site": "Zniechęcaj wyszukiwarki do indeksowania strony",
- "Change Password": "Zmień hasło",
- "Current Password": "Aktualne hasło",
- "New Password": "Nowe hasło",
- "Repeat New Password": "Powtórz nowe hasło",
- "Update Password": "Zaktualizuj hasło",
- "Disable Auth": "Wyłącz autoryzację",
- "Enable Auth": "Włącz autoryzację",
- "disableauth.message1": "Czy na pewno chcesz wyłączyć autoryzację ?",
- "disableauth.message2": "Jest przeznaczony dla kogoś, kto ma autoryzację zewnętrzną przed Uptime Kuma, taką jak Cloudflare Access.",
- "Please use this option carefully!": "Proszę używać ostrożnie.",
- Logout: "Wyloguj",
- Leave: "Zostaw",
- "I understand, please disable": "Rozumiem, proszę wyłączyć",
- Confirm: "Potwierdź",
- Yes: "Tak",
- No: "Nie",
- Username: "Nazwa użytkownika",
- Password: "Hasło",
- "Remember me": "Zapamiętaj mnie",
- Login: "Zaloguj",
- "No Monitors, please": "Brak monitorów, proszę",
- "add one": "dodać jeden",
- "Notification Type": "Rodzaj powiadomienia",
- Email: "E-mail",
- Test: "Test",
- "Certificate Info": "Informacje o certyfikacie",
- "Resolver Server": "Serwer rozwiązywania nazw",
- "Resource Record Type": "Typ rekordu zasobów",
- "Last Result": "Ostatni wynik",
- "Create your admin account": "Utwórz swoje konto administratora",
- "Repeat Password": "Powtórz hasło",
- "Import Backup": "Importuj kopię zapasową",
- "Export Backup": "Eksportuj kopię zapasową",
- Export: "Eksportuj",
- Import: "Importuj",
- respTime: "Czas odp. (ms)",
- notAvailableShort: "N/D",
- "Default enabled": "Włącz domyślnie",
- "Apply on all existing monitors": "Zastosuj do istniejących monitorów",
- Create: "Stwórz",
- "Clear Data": "Usuń dane",
- Events: "Wydarzenia",
- Heartbeats: "Bicia serca",
- "Auto Get": "Wykryj",
- backupDescription: "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień do pliku JSON.",
- backupDescription2: "PS: Historia i dane zdarzeń nie są uwzględniane.",
- backupDescription3: "Poufne dane, takie jak tokeny powiadomień, są zawarte w pliku eksportu, prosimy o ostrożne przechowywanie.",
- alertNoFile: "Wybierz plik do importu.",
- alertWrongFileType: "Proszę wybrać plik JSON.",
- "Clear all statistics": "Wyczyść wszystkie statystyki",
- "Skip existing": "Pomiń istniejące",
- Overwrite: "Nadpisz",
- Options: "Opcje",
- "Keep both": "Zachowaj oba",
- "Verify Token": "Zweryfikuj token",
- "Setup 2FA": "Konfiguracja 2FA",
- "Enable 2FA": "Włącz 2FA",
- "Disable 2FA": "Wyłącz 2FA",
- "2FA Settings": "Ustawienia 2FA",
- "Two Factor Authentication": "Uwierzytelnienie dwuskładnikowe",
- Active: "Włączone",
- Inactive: "Wyłączone",
- Token: "Token",
- "Show URI": "Pokaż URI",
- Tags: "Tagi",
- "Add New below or Select...": "Dodaj nowy poniżej lub wybierz...",
- "Tag with this name already exist.": "Tag o tej nazwie już istnieje.",
- "Tag with this value already exist.": "Tag o tej wartości już istnieje.",
- color: "kolor",
- "value (optional)": "wartość (opcjonalnie)",
- Gray: "Szary",
- Red: "Czerwony",
- Orange: "Pomarańczowy",
- Green: "Zielony",
- Blue: "Niebieski",
- Indigo: "Indygo",
- Purple: "Fioletowy",
- Pink: "Różowy",
- "Search...": "Szukaj...",
- "Avg. Ping": "Średni ping",
- "Avg. Response": "Średnia odpowiedź",
- "Entry Page": "Strona startowa",
- statusPageNothing: "Nic tu nie ma, dodaj grupę lub monitor.",
- "No Services": "Brak usług",
- "All Systems Operational": "Wszystkie systemy działają poprawnie",
- "Partially Degraded Service": "Część usług nie działa",
- "Degraded Service": "Usługa nie działa",
- "Add Group": "Dodaj grupę",
- "Add a monitor": "Dodaj monitor",
- "Edit Status Page": "Edytuj stronę statusu",
- "Go to Dashboard": "Idź do panelu",
- "Status Page": "Strona statusu",
- "Status Pages": "Strony statusów",
- defaultNotificationName: "Moje powiadomienie {notification} ({number})",
- here: "tutaj",
- Required: "Wymagane",
- telegram: "Telegram",
- "Bot Token": "Token bota",
- wayToGetTelegramToken: "Token można uzyskać z {0}.",
- "Chat ID": "Identyfikator czatu",
- supportTelegramChatID: "Czat wsparcia technicznego / Bezpośrednia rozmowa / Czat grupowy",
- wayToGetTelegramChatID: "Możesz uzyskać swój identyfikator czatu, wysyłając wiadomość do bota i przechodząc pod ten adres URL, aby wyświetlić identyfikator czatu:",
- "YOUR BOT TOKEN HERE": "TWÓJ TOKEN BOTA",
- chatIDNotFound: "Identyfikator czatu nie znaleziony, najpierw napisz do bota",
- webhook: "Webhook",
- "Post URL": "Adres URL",
- "Content Type": "Rodzaj danych",
- webhookJsonDesc: "{0} jest dobry w przypadku serwerów HTTP, takich jak express.js",
- webhookFormDataDesc: "{multipart} jest dobry dla PHP, musisz jedynie przetworzyć dane przez {decodeFunction}",
- smtp: "Email (SMTP)",
- secureOptionNone: "Brak / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Zignoruj błędy TLS",
- "From Email": "Nadawca (OD)",
- "To Email": "Odbiorca (DO)",
- smtpCC: "DW",
- smtpBCC: "UDW",
- discord: "Discord",
- "Discord Webhook URL": "URL webhook Discorda",
- wayToGetDiscordURL: "Możesz go uzyskać, przechodząc do Ustawienia serwera -> Integracje -> Tworzenie webhooka",
- "Bot Display Name": "Wyświetlana nazwa bota",
- "Prefix Custom Message": "Własny początek wiadomości",
- "Hello @everyone is...": "Hej {'@'}everyone ...",
- teams: "Microsoft Teams",
- "Webhook URL": "URL webhooka",
- wayToGetTeamsURL: "Możesz dowiedzieć się, jak utworzyć adres url webhooka {0}.",
- signal: "Signal",
- Number: "Numer",
- Recipients: "Odbiorcy",
- needSignalAPI: "Musisz mieć klienta Signal z REST API.",
- wayToCheckSignalURL: "W celu dowiedzenia się, jak go skonfigurować, odwiedź poniższy link:",
- signalImportant: "UWAGA: Nie można mieszać nazw grup i numerów odbiorców!",
- gotify: "Gotify",
- "Application Token": "Token aplikacji",
- "Server URL": "Server URL",
- Priority: "Priorytet",
- slack: "Slack",
- "Icon Emoji": "Ikona emoji",
- "Channel Name": "Nazwa kanału",
- "Uptime Kuma URL": "Adres Uptime Kuma",
- aboutWebhooks: "Więcej informacji na temat webhooków: {0}",
- aboutChannelName: "Podaj nazwę kanału {0} w polu Nazwa kanału, jeśli chcesz pominąć kanał webhooka. Np.: #inny-kanal",
- aboutKumaURL: "Jeśli pozostawisz pole Adres Uptime Kuma puste, domyślnie będzie to strona projektu na GitHub.",
- emojiCheatSheet: "Ściąga emoji: {0}",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push od Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (obsługuje 50+ usług powiadomień)",
- GoogleChat: "Google Chat (wyłącznie Google Workspace)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "Klucz użytkownika",
- Device: "Urządzenie",
- "Message Title": "Tytuł wiadomości",
- "Notification Sound": "Dźwięk powiadomienia",
- "More info on:": "Więcej informacji na: {0}",
- pushoverDesc1: "Priorytet awaryjny (2) ma domyślny 30-sekundowy limit czasu między kolejnymi próbami i wygaśnie po 1 godzinie.",
- pushoverDesc2: "Jeśli chcesz wysyłać powiadomienia na różne urządzenia, wypełnij pole Urządzenie.",
- "SMS Type": "Rodzaj SMS",
- octopushTypePremium: "Premium (szybki - rekomendowany dla powiadomień)",
- octopushTypeLowCost: "Low Cost (wolny, czasami blokowany przez operatorów)",
- "Check octopush prices": "Sprawdź ceny Octopush {0}.",
- octopushPhoneNumber: "Numer telefonu (format międzynarodowy np.: +33612345678)",
- octopushSMSSender: "Nadawca SMS: 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)",
- "LunaSea Device ID": "Identyfikator urządzenia LunaSea",
- "Apprise URL": "URL Apprise",
- "Example:": "Przykład: {0}",
- "Read more:": "Czytaj dalej: {0}",
- "Status:": "Status: {0}",
- "Read more": "Czytaj dalej",
- appriseInstalled: "Apprise jest zainstalowane.",
- appriseNotInstalled: "Apprise nie zostało zainstalowane. {0}",
- "Access Token": "Token dostępu",
- "Channel access token": "Token dostępu kanału",
- "Line Developers Console": "Konsola deweloperska Line",
- lineDevConsoleTo: "Konsola deweloperska Line - {0}",
- "Basic Settings": "Ustawienia ogólne",
- "User ID": "Identyfikator użytkownika",
- "Messaging API": "API wiadomości",
- wayToGetLineChannelToken: "Najpierw uzyskaj dostęp do {0}, utwórz dostawcę i kanał (Messaging API), a następnie możesz uzyskać token dostępu do kanału i identyfikator użytkownika z wyżej wymienionych pozycji menu.",
- "Icon URL": "Adres Ikony",
- aboutIconURL: "Możesz podać link do zdjęcia w \"Adres URL ikony\", aby zastąpić domyślne zdjęcie profilowe. Nie będzie używany, jeśli ustawiona jest ikona emoji.",
- aboutMattermostChannelName: "Możesz zastąpić domyślny kanał, na którym publikowane są posty webhooka, wpisując nazwę kanału w polu \"Nazwa kanału\". Należy to włączyć w ustawieniach webhooka Mattermost. Np.: #inny-kanał",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - tanie, lecz wolne. Dostępne tylko w Polsce",
- promosmsTypeFlash: "SMS FLASH - wiadomość automatycznie wyświetli się na urządzeniu. Dostępne tylko w Polsce.",
- promosmsTypeFull: "SMS FULL - szybkie i dostępne międzynarodowo. Wersja premium usługi, która pozwala min. ustawić własną nazwę nadawcy.",
- promosmsTypeSpeed: "SMS SPEED - wysyłka priorytetowa, ma wszystkie zalety SMS FULL",
- promosmsPhoneNumber: "Numer odbiorcy",
- promosmsSMSSender: "Nadawca SMS (wcześniej zatwierdzone nazwy z panelu PromoSMS)",
- "Primary Base URL": "Główny URL",
- "Push URL": "Push URL",
- needPushEvery: "Powinieneś wywoływać ten URL co {0} sekund",
- pushOptionalParams: "Parametry opcjonalne: {0}",
- emailCustomSubject: "Niestandardowy temat",
- checkPrice: "Sprawdź ceny {0}:",
- octopushLegacyHint: "Czy używasz starszej wersji Octopush (2011-2020) czy nowej wersji?",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "Adres URL serwera domowego (z http(s):// i opcjonalnie port)",
- "Internal Room Id": "Wewnętrzne ID pokoju",
- matrixDesc1: "Możesz znaleźć wewnętrzne ID pokoju, patrząc w zaawansowanej sekcji ustawień pokoju w twoim kliencie Matrix. Powinien on wyglądać jak !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Jest wysoce zalecane, abyś stworzył nowego użytkownika i nie używał tokena dostępu swojego użytkownika Matrix, ponieważ pozwoli on na pełny dostęp do twojego konta i wszystkich pokoi, do których dołączyłeś. Zamiast tego, utwórz nowego użytkownika i zaproś go tylko do pokoju, w którym chcesz otrzymywać powiadomienia. Możesz uzyskać token dostępu przez uruchomienie {0}",
- Method: "Metoda",
- Body: "Treść",
- Headers: "Nagłówki",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "Nagłówki żądania nie są w poprawnym formacie JSON: ",
- BodyInvalidFormat: "Treść żądania nie jest w poprawnym formacie JSON: ",
- "Monitor History": "Historia monitorów",
- clearDataOlderThan: "Przechowuj dane dotyczące historii monitorowania {0} dni.",
- PasswordsDoNotMatch: "Hasła nie pasują.",
- records: "rekordy",
- "One record": "Jeden rekord",
- steamApiKeyDescription: "Do monitorowania serwera gier Steam potrzebny jest klucz Steam Web-API. Możesz zarejestrować swój klucz API tutaj: ",
- "Current User": "Aktualny użytkownik",
- topic: "Temat",
- topicExplanation: "Temat MQTT do monitorowania",
- successMessage: "Komunikat o powodzeniu",
- successMessageExplanation: "Komunikat MQTT, który zostanie uznany za powodzenie",
- recent: "Ostatnie",
- Done: "Zrobione",
- Info: "Info",
- Security: "Bezpieczeństwo",
- "Steam API Key": "Klucz Steam API",
- "Shrink Database": "Zmniejsz bazę danych",
- "Pick a RR-Type...": "Wybierz typ RR...",
- "Pick Accepted Status Codes...": "Wybierz akceptowalne kody statusu...",
- Default: "Domyślnie",
- "HTTP Options": "Opcje HTTP",
- "Create Incident": "Stwórz incydent",
- Title: "Tytuł",
- Content: "Treść",
- Style: "Styl",
- info: "info",
- warning: "ostrzeżenie",
- danger: "niebezpieczeństwo",
- primary: "podstawowy",
- light: "jasny",
- dark: "ciemny",
- Post: "Wyślij",
- "Please input title and content": "Podaj tytuł i treść",
- Created: "Stworzony",
- "Last Updated": "Ostatnio zaktualizowany",
- Unpin: "Odepnij",
- "Switch to Light Theme": "Przełącz na jasny motyw",
- "Switch to Dark Theme": "Przełącz na ciemny motyw",
- "Show Tags": "Pokaż tagi",
- "Hide Tags": "Ukryj tagi",
- Description: "Opis",
- "No monitors available.": "Brak dostępnych monitorów.",
- "Add one": "Dodaj jeden",
- "No Monitors": "Brak monitorów",
- "Untitled Group": "Nienazwana grupa",
- Services: "Usługi",
- Discard: "Odrzuć",
- Cancel: "Anuluj",
- "Powered by": "Napędzane przez",
- shrinkDatabaseDescription: "Uruchom VACUUM na bazie SQLite. Jeżeli twoja baza została stworzona po wersji 1.10.0, to ma już włączoną opcję AUTO_VACUUM i stosowanie ręcznego oczyszczania nie jest potrzebne.",
- clicksendsms: "ClickSend SMS",
- apiCredentials: "Poświadczenia API",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "Nazwa użytkownika API (z prefiksem webapi_)",
- serwersmsAPIPassword: "Hasło API",
- serwersmsPhoneNumber: "Numer telefonu",
- serwersmsSenderName: "Nazwa nadawcy (zatwierdzona w panelu klienta)",
- smseagle: "SMSEagle",
- smseagleTo: "Numer/y telefonu",
- smseagleGroup: "Grupa/y z Książki adresowej",
- smseagleContact: "Kontakt/y z Książki adresowej",
- smseagleRecipientType: "Typ odbiorcy",
- smseagleRecipient: "Odbiorca/y (wiele musi być oddzielone przecinkami)",
- smseagleToken: "Klucz dostępu API",
- smseagleUrl: "URL Twojego urządzenia SMSEagle",
- smseagleEncoding: "Wyślij jako Unicode",
- smseaglePriority: "Priorytet wiadomości (0-9, domyślnie = 0)",
- stackfield: "Stackfield",
- Customize: "Dostosuj",
- "Custom Footer": "Niestandardowa stopka",
- "Custom CSS": "Niestandardowy CSS",
- smtpDkimSettings: "Ustawienia DKIM",
- smtpDkimDesc: "Zapoznaj się z Nodemailer DKIM {0}, aby dowiedzieć się więcej",
- documentation: "dokumentacja",
- smtpDkimDomain: "Nazwa domeny",
- smtpDkimKeySelector: "Selektor klucza",
- smtpDkimPrivateKey: "Klucz prywatny",
- smtpDkimHashAlgo: "Algorytm haszujący (opcjonalne)",
- smtpDkimheaderFieldNames: "Klucze nagłówka do podpisu (opcjonalne)",
- smtpDkimskipFields: "Klucze nagłówka do pominięcia (opcjonalne)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "Punkt końcowy API",
- alertaEnvironment: "Środowisko",
- alertaApiKey: "Klucz API",
- alertaAlertState: "Alert State",
- alertaRecoverState: "Recover State",
- deleteStatusPageMsg: "Jesteś pewien, że chcesz usunąć tę stronę statusów?",
- Proxies: "Proxy",
- default: "Domyślny",
- enabled: "Włączony",
- setAsDefault: "Ustaw jako domyślny",
- deleteProxyMsg: "Jesteś pewien, że chcesz usunąć proxy ze wszystkich monitorów?",
- proxyDescription: "Proxy muszą być przypisane do monitora, aby działały.",
- enableProxyDescription: "Ten serwer proxy nie będzie miał wpływu na żądania monitorów, dopóki nie zostanie aktywowany. Możesz kontrolować tymczasowe wyłączenie serwera proxy ze wszystkich monitorów za pomocą statusu aktywacji.",
- setAsDefaultProxyDescription: "Ten serwer proxy będzie domyślnie włączony dla nowych monitorów. Można go jednak wyłączyć osobno dla każdego monitora.",
- "Certificate Chain": "Łańcuch certyfikatów",
- Valid: "Ważny",
- Invalid: "Nieważny",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Sekret",
- PhoneNumbers: "Numery telefonów",
- TemplateCode: "Kod szablonu",
- SignName: "Podpis",
- "Sms template must contain parameters: ": "Szablon sms musi posiadać parametry: ",
- "Bark Endpoint": "Punkt końcowy Bark",
- WebHookUrl: "WebHookUrl",
- SecretKey: "Tajny klucz",
- "For safety, must use secret key": "Ze względów bezpieczeństwa musisz użyć tajnego klucza",
- "Device Token": "Device Token",
- Platform: "Platforma",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Wysoki",
- Retry: "Ponów",
- Topic: "Temat",
- "WeCom Bot Key": "Klucz bota WeCom",
- "Setup Proxy": "Skonfiguruj proxy",
- "Proxy Protocol": "Protokół proxy",
- "Proxy Server": "Serwer proxy",
- "Proxy server has authentication": "Serwer proxy ma autoryzację",
- User: "Użytkownik",
- Installed: "Zainstalowany",
- "Not installed": "Nie zainstalowany",
- Running: "Działa",
- "Not running": "Nie działa",
- "Remove Token": "Usuń token",
- Start: "Start",
- Stop: "Stop",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Dodaj nową stronę statusów",
- Slug: "Symbol",
- "Accept characters:": "Dozwolone znaki:",
- startOrEndWithOnly: "Zaczynające się i kończące wyłącznie {0} znakami",
- "No consecutive dashes": "Bez powtarzających się myślników",
- Next: "Dalej",
- "The slug is already taken. Please choose another slug.": "Ten symbol jest już zajęty. Proszę, wybierz inny.",
- "No Proxy": "Bez proxy",
- Authentication: "Uwierzytelnianie",
- "HTTP Basic Auth": "Podstawowa autoryzacja HTTP",
- "New Status Page": "Nowa strona statusu",
- "Page Not Found": "Strona nie została znaleziona",
- "Reverse Proxy": "Zwrotny serwer proxy",
- Backup: "Backup",
- About: "O skrypcie",
- wayToGetCloudflaredURL: "(Pobierz cloudflared z {0})",
- cloudflareWebsite: "Strona Cloudflare",
- "Message:": "Wiadomość:",
- "Don't know how to get the token? Please read the guide:": "Nie wiesz jak uzyksać token? Przeczytaj proszę poradnik:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Bieżące połączenie może zostać utracone, jeśli aktualnie łączysz się przez tunel Cloudflare. Czy na pewno chcesz to przerwać? Wpisz swoje aktualne hasło, aby je potwierdzić.",
- "Other Software": "Inne oprogramowanie",
- "For example: nginx, Apache and Traefik.": "Na przykład: nginx, Apache i Traefik.",
- "Please read": "Przeczytaj proszę",
- "Subject:": "Temat:",
- "Valid To:": "Ważny do:",
- "Days Remaining:": "Pozostało dni:",
- "Issuer:": "Wydawca:",
- "Fingerprint:": "Odcisk palca:",
- "No status pages": "Brak stron statusów",
- "Domain Name Expiry Notification": "Powiadomienie o wygasaniu domeny",
- Proxy: "Proxy",
- "Date Created": "Data stworzenia",
- onebotHttpAddress: "Adres HTTP OneBot",
- onebotMessageType: "Rodzaj wiadomości OneBot",
- onebotGroupMessage: "Grupowa",
- onebotPrivateMessage: "Prywatna",
- onebotUserOrGroupId: "ID Grupy/Użytkownika",
- onebotSafetyTips: "Ze względów bezpieczeństwa musisz ustawić token dostępu",
- "PushDeer Key": "Klucz PushDeer",
- "Footer Text": "Treść stopki",
- "Show Powered By": "Pokaż co napędza stronę",
- "Domain Names": "Domeny",
- signedInDisp: "Zalogowany jako {0}",
- signedInDispDisabled: "Autoryzacja wyłączona.",
- resendEveryXTimes: "Wysyłaj ponownie co {0} razy",
- resendDisabled: "Ponowne wysyłanie jest wyłączone",
- Maintenance: "Konserwacja",
- statusMaintenance: "Konserwacja",
- "Schedule maintenance": "Planowanie konserwacji",
- "Affected Monitors": "Monitory dotknięte problemem",
- "Pick Affected Monitors...": "Wybierz monitory, których to dotyczy...",
- "Start of maintenance": "Rozpoczęcie konserwacji",
- "All Status Pages": "Wszystkie strony statusu",
- "Select status pages...": "Wybierz strony statusu...",
- recurringIntervalMessage: "Uruchom raz dziennie | Uruchom raz na {0} dni",
- affectedMonitorsDescription: "Wybierz monitory, których dotyczy bieżąca konserwacja",
- affectedStatusPages: "Pokaż ten komunikat o konserwacji na wybranych stronach statusu",
- atLeastOneMonitor: "Wybierz co najmniej jeden monitor, którego dotyczy problem",
- deleteMaintenanceMsg: "Czy na pewno chcesz usunąć tę konserwację?",
- dnsPortDescription: "Port serwera DNS. Domyślnie 53. Możesz zmienić port w dowolnym momencie.",
- "Resend Notification if Down X times consequently": "Wyślij ponownie powiadomienie, jeśli nie działa X razy pod rząd",
- error: "błąd",
- critical: "krytyczny",
- wayToGetPagerDutyKey: "Możesz to uzyskać, przechodząc do Service -> Service Directory -> (wybierz usługę) -> Integrations -> Add integration. Tutaj możesz wyszukać \"Events API V2\". Więcej informacji {0}",
- "Integration Key": "Klucz integracji",
- "Integration URL": "Adres URL integracji",
- "Auto resolve or acknowledged": "Automatycznie rozwiązany lub potwierdzony",
- "do nothing": "nie rób nic",
- "auto acknowledged": "auto potwierdzony",
- "auto resolve": "automatycznie rozwiązany",
- "Bark Group": "Grupa Bark",
- "Bark Sound": "Dźwięk Bark",
- "HTTP Headers": "Nagłówki HTTP",
- "Trust Proxy": "Ufaj proxy",
- HomeAssistant: "Home Assistant",
- RadiusSecret: "Sekretny klucz Radius",
- RadiusSecretDescription: "Współdzielony sekretny klucz pomiędzy klientem a serwerem",
- RadiusCalledStationId: "Id stacji wywoływanej",
- RadiusCalledStationIdDescription: "Identyfikator wywoływanego urządzenia",
- RadiusCallingStationId: "Id stacji wywoławczej",
- RadiusCallingStationIdDescription: "Identyfikator urządzenia wywołującego",
- "Certificate Expiry Notification": "Powiadomienie o wygaśnięciu certyfikatu",
- "API Username": "Nazwa użytkownika API",
- "API Key": "Klucz API",
- "Recipient Number": "Numer odbiorcy",
- "From Name/Number": "Od nazwa/numer",
- "Leave blank to use a shared sender number.": "Pozostaw puste, aby użyć wspólnego numeru nadawcy.",
- "Octopush API Version": "Wersja API Octopush",
- "Legacy Octopush-DM": "Starsze Octopush-DM",
- endpoint: "punkt końcowy",
- octopushAPIKey: "\"API key\" z poświadczeń HTTP API w panelu sterowania",
- octopushLogin: "\"Login\" z poświadczeń HTTP API w panelu sterowania",
- promosmsLogin: "Nazwa logowania API",
- promosmsPassword: "Hasło API",
- "pushoversounds pushover": "Pushover (domyślny)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (długie)",
- "pushoversounds climb": "Climb (długie)",
- "pushoversounds persistent": "Persistent (długie)",
- "pushoversounds echo": "Pushover Echo (długie)",
- "pushoversounds updown": "Up Down (długie)",
- "pushoversounds vibrate": "Tylko wibracje",
- "pushoversounds none": "Brak (cisza)",
- pushyAPIKey: "Tajny klucz API",
- pushyToken: "Token urządzenia",
- "Show update if available": "Pokaż aktualizację, jeśli jest dostępna",
- "Also check beta release": "Sprawdź również wydanie beta",
- "Using a Reverse Proxy?": "Używasz odwróconego proxy?",
- "Check how to config it for WebSocket": "Sprawdź jak go skonfigurować dla WebSocket",
- "Steam Game Server": "Serwer gry Steam",
- "Most likely causes:": "Najbardziej prawdopodobne przyczyny:",
- "The resource is no longer available.": "Zasób nie jest już dostępny.",
- "There might be a typing error in the address.": "W adresie może być błąd w pisowni.",
- "What you can try:": "Co możesz spróbować:",
- "Retype the address.": "Ponownie wpisz adres.",
- "Go back to the previous page.": "Wróć do poprzedniej strony.",
- "Coming Soon": "Wkrótce",
- wayToGetClickSendSMSToken: "Możesz uzyskać nazwę użytkownika API i klucz API z {0}.",
- "Connection String": "Ciąg połączenia",
- Query: "Zapytanie",
- settingsCertificateExpiry: "Wygaśnięcie certyfikatu TLS",
- certificationExpiryDescription: "Monitory HTTPS uruchamiają powiadomienia o wygaśnięciu certyfikatu TLS w:",
- "Setup Docker Host": "Konfiguracja hosta Docker",
- "Connection Type": "Typ połączenia",
- "Docker Daemon": "Demon Dockera",
- deleteDockerHostMsg: "Czy na pewno chcesz usunąć ten host Dockera dla wszystkich monitorów?",
- socket: "Gniazdo",
- tcp: "TCP / HTTP",
- "Docker Container": "Kontener Dockera",
- "Container Name / ID": "Nazwa kontenera / ID",
- "Docker Host": "Host Dockera",
- "Docker Hosts": "Hosty Dockera",
- "ntfy Topic": "Temat ntfy",
- Domain: "Domena",
- Workstation: "Stacja robocza",
- disableCloudflaredNoAuthMsg: "Jesteś w trybie No Auth, hasło nie jest wymagane.",
- trustProxyDescription: "Zaufaj nagłówkom 'X-Forwarded-*'. Jeśli chcesz uzyskać poprawne IP klienta, a twój Uptime Kuma jest za Nginx lub Apache, powinieneś to włączyć.",
- wayToGetLineNotifyToken: "Możesz uzyskać token dostępu z {0}",
- Examples: "Przykłady",
- "Home Assistant URL": "URL Home Assistant",
- "Long-Lived Access Token": "Długotrwały token dostępu",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Długotrwały token dostępu można utworzyć klikając na nazwę swojego profilu (na dole po lewej stronie) i przewijając do dołu, a następnie klikając Create Token. ",
- "Notification Service": "Usługa powiadamiania",
- "default: notify all devices": "domyślnie: powiadamiaj wszystkie urządzenia",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Listę usług powiadamiania można znaleźć w Home Assistant pod \"Developer Tools > Services\" wyszukaj \"notification\", aby znaleźć nazwę swojego urządzenia/telefonu.",
- "Automations can optionally be triggered in Home Assistant:": "Automaty mogą być opcjonalnie uruchamiane w Home Assistant:",
- "Trigger type:": "Typ wyzwalacza:",
- "Event type:": "Typ zdarzenia:",
- "Event data:": "Dane o zdarzeniu:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Następnie wybierz akcję, na przykład przełącz scenę na taką, w której światło RGB jest czerwone.",
- "Frontend Version": "Wersja frontu",
- "Frontend Version do not match backend version!": "Wersja frontu nie pasuje do wersji backendu!",
- "Base URL": "Bazowy adres URL",
- goAlertInfo: "GoAlert to aplikacja open source do planowania, automatycznych eskalacji i powiadomień (jak SMS lub połączenia głosowe). Automatycznie angażuj właściwą osobę, we właściwy sposób i we właściwym czasie! {0}",
- goAlertIntegrationKeyInfo: "Pobierz generyczny klucz integracyjny API dla usługi, którego wartość skopiowanego tokena URL jest zwykle w formacie \"aaaaaaaa-bbb-cccc-dddd-eeeeee\".",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Przestarzałe: ponieważ dodano wiele funkcji i funkcja tworzenia kopii zapasowych nie jest wystarczająco utrzymywana, nie może generować ani przywracać pełnej kopii zapasowej.",
- backupRecommend: "Zamiast tego należy wykonać bezpośrednią kopię zapasową woluminu lub folderu danych (./data/).",
- Optional: "Opcjonalne",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "Dokumentacja API SMSManager ",
- "Gateway Type": "Typ bramy",
- SMSManager: "SMSManager",
- "You can divide numbers with": "Możesz dzielić liczby przez",
- or: "lub",
- recurringInterval: "odstęp czasu",
- Recurring: "powtarzający się",
- strategyManual: "Aktywowany/dezaktywowany ręcznie",
- warningTimezone: "Używa strefy czasowej serwera",
- weekdayShortMon: "pon",
- weekdayShortTue: "wt",
- weekdayShortWed: "śr",
- weekdayShortThu: "czw",
- weekdayShortFri: "pt",
- weekdayShortSat: "sob",
- weekdayShortSun: "niedz",
- dayOfWeek: "Dzień tygodnia",
- dayOfMonth: "Dzień miesiąca",
- lastDay: "Ostatni dzień",
- lastDay1: "Ostatni dzień miesiąca",
- lastDay2: "2. ostatni dzień miesiąca",
- lastDay3: "3. ostatni dzień miesiąca",
- lastDay4: "4. ostatni dzień miesiąca",
- "No Maintenance": "Brak konserwacji",
- pauseMaintenanceMsg: "Jesteś pewien, że chcesz zatrzymać?",
- "maintenanceStatus-under-maintenance": "Podczas konserwacji",
- "maintenanceStatus-inactive": "Nieaktywny",
- "maintenanceStatus-scheduled": "Zaplanowany",
- "maintenanceStatus-ended": "Zakończony",
- "maintenanceStatus-unknown": "Nieznany",
- "Display Timezone": "Wyświetlana strefa czasowa",
- "Server Timezone": "Strefa czasowa serwera",
- statusPageMaintenanceEndDate: "Koniec",
-};
diff --git a/src/languages/pt-BR.js b/src/languages/pt-BR.js
deleted file mode 100644
index 7bc8d0fd7..000000000
--- a/src/languages/pt-BR.js
+++ /dev/null
@@ -1,203 +0,0 @@
-export default {
- languageName: "Português (Brasileiro)",
- checkEverySecond: "Verificar cada {0} segundos.",
- retryCheckEverySecond: "Tentar novamente a cada {0} segundos.",
- retriesDescription: "Máximo de tentativas antes que o serviço seja marcado como inativo e uma notificação seja enviada",
- ignoreTLSError: "Ignorar erros TLS/SSL para sites HTTPS",
- upsideDownModeDescription: "Inverta o status de cabeça para baixo. Se o serviço estiver acessível, ele está OFFLINE.",
- maxRedirectDescription: "Número máximo de redirecionamentos a seguir. Defina como 0 para desativar redirecionamentos.",
- acceptedStatusCodesDescription: "Selecione os códigos de status que são considerados uma resposta bem-sucedida.",
- passwordNotMatchMsg: "A senha repetida não corresponde.",
- notificationDescription: "Atribua uma notificação ao (s) monitor (es) para que funcione.",
- keywordDescription: "Pesquise a palavra-chave em html simples ou resposta JSON e diferencia maiúsculas de minúsculas",
- pauseDashboardHome: "Pausar",
- deleteMonitorMsg: "Tem certeza de que deseja excluir este monitor?",
- deleteNotificationMsg: "Tem certeza de que deseja excluir esta notificação para todos os monitores?",
- resolverserverDescription: "Cloudflare é o servidor padrão, você pode alterar o servidor resolvedor a qualquer momento.",
- rrtypeDescription: "Selecione o RR-Type que você deseja monitorar",
- pauseMonitorMsg: "Tem certeza que deseja fazer uma pausa?",
- enableDefaultNotificationDescription: "Para cada novo monitor, esta notificação será habilitada por padrão. Você ainda pode desativar a notificação separadamente para cada monitor.",
- clearEventsMsg: "Tem certeza de que deseja excluir todos os eventos deste monitor?",
- clearHeartbeatsMsg: "Tem certeza de que deseja excluir todos os heartbeats deste monitor?",
- confirmClearStatisticsMsg: "Tem certeza que deseja excluir TODAS as estatísticas?",
- importHandleDescription: "Escolha 'Ignorar existente' se quiser ignorar todos os monitores ou notificações com o mesmo nome. 'Substituir' excluirá todos os monitores e notificações existentes.",
- confirmImportMsg: "Tem certeza que deseja importar o backup? Certifique-se de que selecionou a opção de importação correta.",
- twoFAVerifyLabel: "Digite seu token para verificar se 2FA está funcionando",
- tokenValidSettingsMsg: "O token é válido! Agora você pode salvar as configurações 2FA.",
- confirmEnableTwoFAMsg: "Tem certeza de que deseja habilitar 2FA?",
- confirmDisableTwoFAMsg: "Tem certeza de que deseja desativar 2FA?",
- Settings: "Configurações",
- Dashboard: "Dashboard",
- "New Update": "Nova Atualização",
- Language: "Linguagem",
- Appearance: "Aparência",
- Theme: "Tema",
- General: "Geral",
- Version: "Versão",
- "Check Update On GitHub": "Verificar atualização no Github",
- List: "Lista",
- Add: "Adicionar",
- "Add New Monitor": "Adicionar novo monitor",
- "Quick Stats": "Estatísticas rápidas",
- Up: "On",
- Down: "Off",
- Pending: "Pendente",
- Unknown: "Desconhecido",
- Pause: "Pausar",
- Name: "Nome",
- Status: "Status",
- DateTime: "Data hora",
- Message: "Mensagem",
- "No important events": "Nenhum evento importante",
- Resume: "Resumo",
- Edit: "Editar",
- Delete: "Deletar",
- Current: "Atual",
- Uptime: "Tempo de atividade",
- "Cert Exp.": "Cert Exp.",
- day: "dia | dias",
- "-day": "-dia",
- hour: "hora",
- "-hour": "-hora",
- Response: "Resposta",
- Ping: "Ping",
- "Monitor Type": "Tipo de Monitor",
- Keyword: "Palavra-Chave",
- "Friendly Name": "Nome Amigável",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Porta",
- "Heartbeat Interval": "Intervalo de Heartbeat",
- Retries: "Novas tentativas",
- "Heartbeat Retry Interval": "Intervalo de repetição de Heartbeat",
- Advanced: "Avançado",
- "Upside Down Mode": "Modo de cabeça para baixo",
- "Max. Redirects": "Redirecionamento Máx.",
- "Accepted Status Codes": "Status Code Aceitáveis",
- Save: "Salvar",
- Notifications: "Notificações",
- "Not available, please setup.": "Não disponível, por favor configure.",
- "Setup Notification": "Configurar Notificação",
- Light: "Claro",
- Dark: "Escuro",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Tema - Barra de Heartbeat",
- Normal: "Normal",
- Bottom: "Inferior",
- None: "Nenhum",
- Timezone: "Fuso horário",
- "Search Engine Visibility": "Visibilidade do mecanismo de pesquisa",
- "Allow indexing": "Permitir Indexação",
- "Discourage search engines from indexing site": "Desencoraje os motores de busca de indexar o site",
- "Change Password": "Mudar senha",
- "Current Password": "Senha atual",
- "New Password": "Nova Senha",
- "Repeat New Password": "Repetir Nova Senha",
- "Update Password": "Atualizar Senha",
- "Disable Auth": "Desativar Autenticação",
- "Enable Auth": "Ativar Autenticação",
- "disableauth.message1": "Você tem certeza que deseja desativar a autenticação ?",
- "disableauth.message2": "Isso é para alguém que tem autenticação de terceiros na frente do 'UpTime Kuma' como o Cloudflare Access.",
- "Please use this option carefully!": "Por favor, utilize isso com cautela.",
- Logout: "Deslogar",
- Leave: "Sair",
- "I understand, please disable": "Eu entendo, por favor desative.",
- Confirm: "Confirmar",
- Yes: "Sim",
- No: "Não",
- Username: "Usuário",
- Password: "Senha",
- "Remember me": "Lembre-me",
- Login: "Autenticar",
- "No Monitors, please": "Nenhum monitor, por favor",
- "add one": "adicionar um",
- "Notification Type": "Tipo de Notificação",
- Email: "Email",
- Test: "Testar",
- "Certificate Info": "Info. do Certificado ",
- "Resolver Server": "Resolver Servidor",
- "Resource Record Type": "Tipo de registro de aplicação",
- "Last Result": "Último resultado",
- "Create your admin account": "Crie sua conta de admin",
- "Repeat Password": "Repita a senha",
- "Import Backup": "Importar Backup",
- "Export Backup": "Exportar Backup",
- Export: "Exportar",
- Import: "Importar",
- respTime: "Tempo de Resp. (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Padrão habilitado",
- "Apply on all existing monitors": "Aplicar em todos os monitores existentes",
- Create: "Criar",
- "Clear Data": "Limpar Dados",
- Events: "Eventos",
- Heartbeats: "Heartbeats",
- "Auto Get": "Obter Automático",
- backupDescription: "Você pode fazer backup de todos os monitores e todas as notificações em um arquivo JSON.",
- backupDescription2: "OBS: Os dados do histórico e do evento não estão incluídos.",
- backupDescription3: "Dados confidenciais, como tokens de notificação, estão incluídos no arquivo de exportação, mantenha-o com cuidado.",
- alertNoFile: "Selecione um arquivo para importar.",
- alertWrongFileType: "Selecione um arquivo JSON.",
- "Clear all statistics": "Limpar todas as estatísticas",
- "Skip existing": "Pular existente",
- Overwrite: "Sobrescrever",
- Options: "Opções",
- "Keep both": "Manter os dois",
- "Verify Token": "Verificar Token",
- "Setup 2FA": "Configurar 2FA",
- "Enable 2FA": "Ativar 2FA",
- "Disable 2FA": "Desativar 2FA",
- "2FA Settings": "Configurações do 2FA ",
- "Two Factor Authentication": "Autenticação e Dois Fatores",
- Active: "Ativo",
- Inactive: "Inativo",
- Token: "Token",
- "Show URI": "Mostrar URI",
- Tags: "Tag",
- "Add New below or Select...": "Adicionar Novo abaixo ou Selecionar ...",
- "Tag with this name already exist.": "Já existe uma etiqueta com este nome.",
- "Tag with this value already exist.": "Já existe uma etiqueta com este valor.",
- color: "cor",
- "value (optional)": "valor (opcional)",
- Gray: "Cinza",
- Red: "Vermelho",
- Orange: "Laranja",
- Green: "Verde",
- Blue: "Azul",
- Indigo: "Índigo",
- Purple: "Roxo",
- Pink: "Rosa",
- "Search...": "Buscar...",
- "Avg. Ping": "Ping Médio.",
- "Avg. Response": "Resposta Média. ",
- "Status Page": "Página de Status",
- "Status Pages": "Página de Status",
- "Entry Page": "Página de entrada",
- statusPageNothing: "Nada aqui, por favor, adicione um grupo ou monitor.",
- "No Services": "Nenhum Serviço",
- "All Systems Operational": "Todos os Serviços Operacionais",
- "Partially Degraded Service": "Serviço parcialmente degradado",
- "Degraded Service": "Serviço Degradado",
- "Add Group": "Adicionar Grupo",
- "Add a monitor": "Adicionar um monitor",
- "Edit Status Page": "Editar Página de Status",
- "Go to Dashboard": "Ir para a dashboard",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
-};
diff --git a/src/languages/pt-PT.js b/src/languages/pt-PT.js
deleted file mode 100644
index 21e68d268..000000000
--- a/src/languages/pt-PT.js
+++ /dev/null
@@ -1,203 +0,0 @@
-export default {
- languageName: "Português (Portugal)",
- checkEverySecond: "Verificar a cada {0} segundos.",
- retryCheckEverySecond: "Tentar novamente a cada {0} segundos.",
- retriesDescription: "Máximo de tentativas antes que o serviço seja marcado como inativo e uma notificação seja enviada",
- ignoreTLSError: "Ignorar erros TLS/SSL para sites HTTPS",
- upsideDownModeDescription: "Inverte o status de cabeça para baixo. Se o serviço estiver acessível, ele está OFFLINE.",
- maxRedirectDescription: "Número máximo de redirecionamentos a seguir. Define como 0 para desativar redirecionamentos.",
- acceptedStatusCodesDescription: "Seleciona os códigos de status que são considerados uma resposta bem-sucedida.",
- passwordNotMatchMsg: "A senha repetida não corresponde.",
- notificationDescription: "Atribuir uma notificação ao (s) monitor (es) para que funcione.",
- keywordDescription: "Pesquisa a palavra-chave em HTML simples ou resposta JSON e diferencia maiúsculas de minúsculas",
- pauseDashboardHome: "Pausa",
- deleteMonitorMsg: "Tens a certeza de que queres excluir este monitor?",
- deleteNotificationMsg: "Tens a certeza de que queres excluir esta notificação para todos os monitores?",
- resolverserverDescription: "A Cloudflare é o servidor padrão, podes alterar o servidor 'resolvedor' a qualquer momento.",
- rrtypeDescription: "Seleciona o RR-Type que queres monitorizar",
- pauseMonitorMsg: "Tens a certeza que queres fazer uma pausa?",
- enableDefaultNotificationDescription: "Para cada monitor novo esta notificação vai estar activa por padrão. Podes também desativar a notificação separadamente para cada monitor.",
- clearEventsMsg: "Tens a certeza que queres excluir todos os eventos deste monitor?",
- clearHeartbeatsMsg: "Tens a certeza de que queres excluir todos os heartbeats deste monitor?",
- confirmClearStatisticsMsg: "Tens a certeza que queres excluir TODAS as estatísticas?",
- importHandleDescription: "Escolhe 'Ignorar existente' se quiseres ignorar todos os monitores ou notificações com o mesmo nome. 'Substituir' excluirá todos os monitores e notificações existentes.",
- confirmImportMsg: "Tens a certeza que queres importar o backup? Certifica-te que selecionaste a opção de importação correta.",
- twoFAVerifyLabel: "Insire o teu token para verificares se o 2FA está a funcionar",
- tokenValidSettingsMsg: "O token é válido! Agora podes salvar as configurações do 2FA.",
- confirmEnableTwoFAMsg: "Tens a certeza de que queres habilitar 2FA?",
- confirmDisableTwoFAMsg: "Tens a certeza de que queres desativar 2FA?",
- Settings: "Configurações",
- Dashboard: "Dashboard",
- "New Update": "Nova Atualização",
- Language: "Linguagem",
- Appearance: "Aparência",
- Theme: "Tema",
- General: "Geral",
- Version: "Versão",
- "Check Update On GitHub": "Verificar atualização no Github",
- List: "Lista",
- Add: "Adicionar",
- "Add New Monitor": "Adicionar novo monitor",
- "Quick Stats": "Estatísticas rápidas",
- Up: "On",
- Down: "Off",
- Pending: "Pendente",
- Unknown: "Desconhecido",
- Pause: "Pausa",
- Name: "Nome",
- Status: "Status",
- DateTime: "Data hora",
- Message: "Mensagem",
- "No important events": "Nenhum evento importante",
- Resume: "Resumo",
- Edit: "Editar",
- Delete: "Apagar",
- Current: "Atual",
- Uptime: "Tempo de atividade",
- "Cert Exp.": "Cert Exp.",
- day: "dia | dias",
- "-day": "-dia",
- hour: "hora",
- "-hour": "-hora",
- Response: "Resposta",
- Ping: "Ping",
- "Monitor Type": "Tipo de Monitor",
- Keyword: "Palavra-Chave",
- "Friendly Name": "Nome Amigável",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Porta",
- "Heartbeat Interval": "Intervalo de Heartbeats",
- Retries: "Novas tentativas",
- "Heartbeat Retry Interval": "Intervalo de repetição de Heartbeats",
- Advanced: "Avançado",
- "Upside Down Mode": "Modo de cabeça para baixo",
- "Max. Redirects": "Redirecionamento Máx.",
- "Accepted Status Codes": "Status Code Aceitáveis",
- Save: "Guardar",
- Notifications: "Notificações",
- "Not available, please setup.": "Não disponível, por favor configura.",
- "Setup Notification": "Configurar Notificação",
- Light: "Claro",
- Dark: "Escuro",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Tema - Barra de Heartbeat",
- Normal: "Normal",
- Bottom: "Inferior",
- None: "Nenhum",
- Timezone: "Fuso horário",
- "Search Engine Visibility": "Visibilidade do mecanismo de pesquisa",
- "Allow indexing": "Permitir Indexação",
- "Discourage search engines from indexing site": "Desencorajar que motores de busca indexem o site",
- "Change Password": "Mudar senha",
- "Current Password": "Senha atual",
- "New Password": "Nova Senha",
- "Repeat New Password": "Repetir Nova Senha",
- "Update Password": "Atualizar Senha",
- "Disable Auth": "Desativar Autenticação",
- "Enable Auth": "Ativar Autenticação",
- "disableauth.message1": "Tens a certeza que queres desativar a autenticação ?",
- "disableauth.message2": "Isso é para alguém que tem autenticação de terceiros em frente ao 'UpTime Kuma' como o Cloudflare Access.",
- "Please use this option carefully!": "Por favor, utiliza esta opção com cuidado.",
- Logout: "Logout",
- Leave: "Sair",
- "I understand, please disable": "Eu entendo, por favor desativa.",
- Confirm: "Confirmar",
- Yes: "Sim",
- No: "Não",
- Username: "Utilizador",
- Password: "Senha",
- "Remember me": "Lembra-me",
- Login: "Autenticar",
- "No Monitors, please": "Nenhum monitor, por favor",
- "add one": "adicionar um",
- "Notification Type": "Tipo de Notificação",
- Email: "Email",
- Test: "Testar",
- "Certificate Info": "Info. do Certificado ",
- "Resolver Server": "Resolver Servidor",
- "Resource Record Type": "Tipo de registro de aplicação",
- "Last Result": "Último resultado",
- "Create your admin account": "Cria a tua conta de admin",
- "Repeat Password": "Repete a senha",
- "Import Backup": "Importar Backup",
- "Export Backup": "Exportar Backup",
- Export: "Exportar",
- Import: "Importar",
- respTime: "Tempo de Resp. (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Padrão habilitado",
- "Apply on all existing monitors": "Aplicar em todos os monitores existentes",
- Create: "Criar",
- "Clear Data": "Limpar Dados",
- Events: "Eventos",
- Heartbeats: "Heartbeats",
- "Auto Get": "Obter Automático",
- backupDescription: "Podes fazer backup de todos os monitores e todas as notificações num arquivo JSON.",
- backupDescription2: "OBS: Os dados do histórico e do evento não estão incluídos.",
- backupDescription3: "Dados confidenciais, como tokens de notificação, estão incluídos no arquivo de exportação, mantem-no com cuidado.",
- alertNoFile: "Seleciona um arquivo para importar.",
- alertWrongFileType: "Seleciona um arquivo JSON.",
- "Clear all statistics": "Limpar todas as estatísticas",
- "Skip existing": "Saltar existente",
- Overwrite: "Sobrescrever",
- Options: "Opções",
- "Keep both": "Manter os dois",
- "Verify Token": "Verificar Token",
- "Setup 2FA": "Configurar 2FA",
- "Enable 2FA": "Ativar 2FA",
- "Disable 2FA": "Desativar 2FA",
- "2FA Settings": "Configurações do 2FA ",
- "Two Factor Authentication": "Autenticação de Dois Fatores",
- Active: "Ativo",
- Inactive: "Inativo",
- Token: "Token",
- "Show URI": "Mostrar URI",
- Tags: "Tag",
- "Add New below or Select...": "Adicionar Novo abaixo ou Selecionar ...",
- "Tag with this name already exist.": "Já existe uma etiqueta com este nome.",
- "Tag with this value already exist.": "Já existe uma etiqueta com este valor.",
- color: "cor",
- "value (optional)": "valor (opcional)",
- Gray: "Cinza",
- Red: "Vermelho",
- Orange: "Laranja",
- Green: "Verde",
- Blue: "Azul",
- Indigo: "Índigo",
- Purple: "Roxo",
- Pink: "Rosa",
- "Search...": "Pesquisa...",
- "Avg. Ping": "Ping Médio.",
- "Avg. Response": "Resposta Média. ",
- "Status Page": "Página de Status",
- "Status Pages": "Página de Status",
- "Entry Page": "Página de entrada",
- statusPageNothing: "Nada aqui, por favor, adiciona um grupo ou monitor.",
- "No Services": "Nenhum Serviço",
- "All Systems Operational": "Todos os Serviços Operacionais",
- "Partially Degraded Service": "Serviço parcialmente degradados",
- "Degraded Service": "Serviço Degradado",
- "Add Group": "Adicionar Grupo",
- "Add a monitor": "Adicionar um monitor",
- "Edit Status Page": "Editar Página de Status",
- "Go to Dashboard": "Ir para o dashboard",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
-};
diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js
deleted file mode 100644
index 2e6fdf7be..000000000
--- a/src/languages/ru-RU.js
+++ /dev/null
@@ -1,581 +0,0 @@
-export default {
- languageName: "Русский",
- checkEverySecond: "Проверка каждые {0} секунд",
- retriesDescription: "Максимальное количество попыток перед пометкой сервиса как недоступного и отправкой уведомления",
- ignoreTLSError: "Игнорировать ошибку TLS/SSL для HTTPS сайтов",
- upsideDownModeDescription: "Реверс статуса сервиса. Если сервис доступен, то он помечается как НЕДОСТУПНЫЙ.",
- maxRedirectDescription: "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.",
- acceptedStatusCodesDescription: "Выберите коды статусов для определения доступности сервиса.",
- passwordNotMatchMsg: "Повтор пароля не совпадает.",
- notificationDescription: "Привяжите уведомления к мониторам.",
- keywordDescription: "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру)",
- pauseDashboardHome: "Пауза",
- deleteMonitorMsg: "Вы действительно хотите удалить данный монитор?",
- deleteNotificationMsg: "Вы действительно хотите удалить это уведомление для всех мониторов?",
- resolverserverDescription: "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.",
- rrtypeDescription: "Выберите тип ресурсной записи, который вы хотите отслеживать",
- pauseMonitorMsg: "Вы действительно хотите поставить на паузу?",
- Settings: "Настройки",
- Dashboard: "Панель управления",
- "New Update": "Обновление",
- Language: "Язык",
- Appearance: "Внешний вид",
- Theme: "Тема",
- General: "Общее",
- Version: "Версия",
- "Check Update On GitHub": "Проверить обновления на GitHub",
- List: "Список",
- Add: "Добавить",
- "Add New Monitor": "Новый монитор",
- "Quick Stats": "Статистика",
- Up: "Доступен",
- Down: "Недоступен",
- Pending: "Ожидание",
- Unknown: "Неизвестно",
- Pause: "Пауза",
- Name: "Имя",
- Status: "Статус",
- DateTime: "Дата и время",
- Message: "Сообщение",
- "No important events": "Важных событий нет",
- Resume: "Возобновить",
- Edit: "Изменить",
- Delete: "Удалить",
- Current: "Текущий",
- Uptime: "Аптайм",
- "Cert Exp.": "Сертификат истекает",
- day: "день | дней",
- "-day": " дней",
- hour: "час",
- "-hour": " часа",
- Response: "Ответ",
- Ping: "Пинг",
- "Monitor Type": "Тип монитора",
- Keyword: "Слово",
- "Friendly Name": "Имя",
- URL: "URL",
- Hostname: "Имя хоста",
- Port: "Порт",
- "Heartbeat Interval": "Частота опроса",
- Retries: "Попыток",
- Advanced: "Дополнительно",
- "Upside Down Mode": "Реверс статуса",
- "Max. Redirects": "Макс. количество перенаправлений",
- "Accepted Status Codes": "Допустимые коды статуса",
- Save: "Сохранить",
- Notifications: "Уведомления",
- "Not available, please setup.": "Доступных уведомлений нет, необходимо создать.",
- "Setup Notification": "Создать уведомление",
- Light: "Светлая",
- Dark: "Тёмная",
- Auto: "Авто",
- "Theme - Heartbeat Bar": "Тема - Полоса частоты опроса",
- Normal: "Обычный",
- Bottom: "Снизу",
- None: "Отсутствует",
- Timezone: "Часовой пояс",
- "Search Engine Visibility": "Индексация поисковыми системами:",
- "Allow indexing": "Разрешить индексирование",
- "Discourage search engines from indexing site": "Запретить индексирование",
- "Change Password": "Сменить пароль",
- "Current Password": "Текущий пароль",
- "New Password": "Новый пароль",
- "Repeat New Password": "Повтор нового пароля",
- "Update Password": "Обновить пароль",
- "Disable Auth": "Отключить авторизацию",
- "Enable Auth": "Включить авторизацию",
- "disableauth.message1": "Вы уверены, что хотите отключить авторизацию ?",
- "disableauth.message2": "Это подходит для тех, у кого стоит другая авторизация перед открытием Uptime Kuma, например Cloudflare Access.",
- "Please use this option carefully!": "Пожалуйста, используйте с осторожностью.",
- Logout: "Выйти",
- Leave: "Отмена",
- "I understand, please disable": "Я понимаю, всё равно отключить",
- Confirm: "Подтвердить",
- Yes: "Да",
- No: "Нет",
- Username: "Логин",
- Password: "Пароль",
- "Remember me": "Запомнить меня",
- Login: "Вход в систему",
- "No Monitors, please": "Мониторов нет, пожалуйста",
- "No Monitors": "Мониторы отсутствуют",
- "add one": "создайте новый",
- "Notification Type": "Тип уведомления",
- Email: "Почта",
- Test: "Проверка",
- "Certificate Info": "Информация о сертификате",
- "Resolver Server": "DNS сервер",
- "Resource Record Type": "Тип ресурсной записи",
- "Last Result": "Последний результат",
- "Create your admin account": "Создайте аккаунт администратора",
- "Repeat Password": "Повторите пароль",
- respTime: "Время ответа (мс)",
- notAvailableShort: "N/A",
- Create: "Создать",
- clearEventsMsg: "Вы действительно хотите удалить всю статистику событий данного монитора?",
- clearHeartbeatsMsg: "Вы действительно хотите удалить всю статистику опросов данного монитора?",
- confirmClearStatisticsMsg: "Вы действительно хотите удалить ВСЮ статистику?",
- "Clear Data": "Удалить статистику",
- Events: "События",
- Heartbeats: "Опросы",
- "Auto Get": "Авто-получение",
- enableDefaultNotificationDescription: "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.",
- "Default enabled": "Использовать по умолчанию",
- "Also apply to existing monitors": "Применить к существующим мониторам",
- Export: "Экспорт",
- Import: "Импорт",
- backupDescription: "Вы можете сохранить резервную копию всех мониторов и уведомлений в виде JSON-файла",
- backupDescription2: "P.S. История и события сохранены не будут",
- backupDescription3: "Важные данные, такие как токены уведомлений, добавляются при экспорте, поэтому храните файлы в безопасном месте",
- alertNoFile: "Выберите файл для импорта.",
- alertWrongFileType: "Выберите JSON-файл.",
- twoFAVerifyLabel: "Пожалуйста, введите свой токен, чтобы проверить работу 2FA",
- tokenValidSettingsMsg: "Токен действителен! Теперь вы можете сохранить настройки 2FA.",
- confirmEnableTwoFAMsg: "Вы действительно хотите включить 2FA?",
- confirmDisableTwoFAMsg: "Вы действительно хотите выключить 2FA?",
- "Apply on all existing monitors": "Применить ко всем существующим мониторам",
- "Verify Token": "Проверить токен",
- "Setup 2FA": "Настройка 2FA",
- "Enable 2FA": "Включить 2FA",
- "Disable 2FA": "Выключить 2FA",
- "2FA Settings": "Настройки 2FA",
- "Two Factor Authentication": "Двухфакторная аутентификация",
- Active: "Активно",
- Inactive: "Неактивно",
- Token: "Токен",
- "Show URI": "Показать URI",
- "Clear all statistics": "Очистить статистику",
- retryCheckEverySecond: "Повтор каждые {0} секунд",
- importHandleDescription: "Выберите \"Пропустить существующие\", если вы хотите пропустить каждый монитор или уведомление с таким же именем. \"Перезаписать\" удалит каждый существующий монитор или уведомление и добавит заново. Вариант \"Не проверять\" принудительно восстанавливает все мониторы и уведомления, даже если они уже существуют.",
- confirmImportMsg: "Вы действительно хотите восстановить резервную копию? Убедитесь, что вы выбрали подходящий вариант импорта.",
- "Heartbeat Retry Interval": "Интервал повтора опроса",
- "Import Backup": "Импорт",
- "Export Backup": "Скачать",
- "Skip existing": "Пропустить существующие",
- Overwrite: "Перезаписать",
- Options: "Опции",
- "Keep both": "Не проверять",
- Tags: "Теги",
- "Add New below or Select...": "Добавить новый или выбрать...",
- "Tag with this name already exist.": "Такой тег уже существует.",
- "Tag with this value already exist.": "Тег с таким значением уже существует.",
- color: "цвет",
- "value (optional)": "значение (опционально)",
- Gray: "Серый",
- Red: "Красный",
- Orange: "Оранжевый",
- Green: "Зелёный",
- Blue: "Синий",
- Indigo: "Индиго",
- Purple: "Пурпурный",
- Pink: "Розовый",
- "Search...": "Поиск...",
- "Avg. Ping": "Среднее значение пинга",
- "Avg. Response": "Среднее время ответа",
- "Entry Page": "Главная страница",
- statusPageNothing: "Здесь пусто. Добавьте группу или монитор.",
- "No Services": "Нет сервисов",
- "All Systems Operational": "Все системы работают в штатном режиме",
- "Partially Degraded Service": "Сервисы работают частично",
- "Degraded Service": "Все сервисы не работают",
- "Add Group": "Добавить группу",
- "Add a monitor": "Добавить монитор",
- "Edit Status Page": "Редактировать",
- "Go to Dashboard": "Панель управления",
- "Status Page": "Страница статуса",
- "Status Pages": "Страницы статуса",
- Discard: "Отмена",
- "Create Incident": "Создать инцидент",
- "Switch to Dark Theme": "Тёмная тема",
- "Switch to Light Theme": "Светлая тема",
- telegram: "Telegram",
- webhook: "Вебхук",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Поддержка 50+ сервисов уведомлений)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "Primary Base URL": "Основной URL",
- "Push URL": "URL пуша",
- needPushEvery: "К этому URL необходимо обращаться каждые {0} секунд",
- pushOptionalParams: "Опциональные параметры: {0}",
- defaultNotificationName: "Моё уведомление {notification} ({number})",
- here: "здесь",
- Required: "Требуется",
- "Bot Token": "Токен бота",
- wayToGetTelegramToken: "Вы можете взять токен здесь - {0}.",
- "Chat ID": "ID чата",
- supportTelegramChatID: "Поддерживаются ID чатов, групп и каналов",
- wayToGetTelegramChatID: "Вы можете взять ID вашего чата, отправив сообщение боту и перейдя по этому URL для просмотра chat_id:",
- "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ЗДЕСЬ",
- chatIDNotFound: "ID чата не найден; пожалуйста отправьте сначала сообщение боту",
- "Post URL": "Post URL",
- "Content Type": "Тип контента",
- webhookJsonDesc: "{0} подходит для любых современных HTTP-серверов, например Express.js",
- webhookFormDataDesc: "{multipart} подходит для PHP. JSON-вывод необходимо будет обработать с помощью {decodeFunction}",
- secureOptionNone: "Нет / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Игнорировать ошибки TLS",
- "From Email": "От кого",
- emailCustomSubject: "Своя тема",
- "To Email": "Кому",
- smtpCC: "Копия",
- smtpBCC: "Скрытая копия",
- "Discord Webhook URL": "Discord вебхук URL",
- wayToGetDiscordURL: "Вы можете создать его в Параметрах сервера -> Интеграции -> Создать вебхук",
- "Bot Display Name": "Отображаемое имя бота",
- "Prefix Custom Message": "Свой префикс сообщения",
- "Hello @everyone is...": "Привет {'@'}everyone это...",
- "Webhook URL": "URL вебхука",
- wayToGetTeamsURL: "Как создать URL вебхука вы можете узнать здесь - {0}.",
- Number: "Номер",
- Recipients: "Получатели",
- needSignalAPI: "Вам необходим клиент Signal с поддержкой REST API.",
- wayToCheckSignalURL: "Пройдите по этому URL, чтобы узнать как настроить такой клиент:",
- signalImportant: "ВАЖНО: Нельзя смешивать в Получателях группы и номера!",
- "Application Token": "Токен приложения",
- "Server URL": "URL сервера",
- Priority: "Приоритет",
- "Icon Emoji": "Иконка Emoji",
- "Channel Name": "Имя канала",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Больше информации о вебхуках: {0}",
- aboutChannelName: "Введите имя канала в поле {0} Имя канала, если вы хотите обойти канал вебхука. Например: #other-channel",
- aboutKumaURL: "Если поле Uptime Kuma URL в настройках останется пустым, по умолчанию будет использоваться ссылка на проект на GitHub.",
- emojiCheatSheet: "Шпаргалка по Emoji: {0}",
- "User Key": "Ключ пользователя",
- Device: "Устройство",
- "Message Title": "Заголовок сообщения",
- "Notification Sound": "Звук уведомления",
- "More info on:": "Больше информации: {0}",
- pushoverDesc1: "Экстренный приоритет (2) имеет таймаут повтора по умолчанию 30 секунд и истекает через 1 час.",
- pushoverDesc2: "Если вы хотите отправлять уведомления различным устройствам, необходимо заполнить поле Устройство.",
- "SMS Type": "Тип SMS",
- octopushTypePremium: "Премиум (Быстрый - рекомендуется для алертов)",
- octopushTypeLowCost: "Дешёвый (Медленный - иногда блокируется операторами)",
- checkPrice: "Тарифы {0}:",
- octopushLegacyHint: "Вы используете старую версию Octopush (2011-2020) или новую?",
- "Check octopush prices": "Тарифы Octopush {0}.",
- octopushPhoneNumber: "Номер телефона (межд. формат, например: +79831234567) ",
- octopushSMSSender: "Имя отправителя SMS: 3-11 символов алвафита, цифр и пробелов (a-zA-Z0-9)",
- "LunaSea Device ID": "ID устройства LunaSea",
- "Apprise URL": "Apprise URL",
- "Example:": "Пример: {0}",
- "Read more:": "Подробнее: {0}",
- "Status:": "Статус: {0}",
- "Read more": "Подробнее",
- appriseInstalled: "Apprise установлен.",
- appriseNotInstalled: "Apprise не установлен. {0}",
- "Access Token": "Токен доступа",
- "Channel access token": "Токен доступа канала",
- "Line Developers Console": "Консоль разработчиков Line",
- lineDevConsoleTo: "Консоль разработчиков Line - {0}",
- "Basic Settings": "Базовые настройки",
- "User ID": "ID пользователя",
- "Messaging API": "API сообщений",
- wayToGetLineChannelToken: "Сначала зайдите в {0}, создайте провайдера и канал (API сообщений), затем вы сможете получить токен доступа канала и ID пользователя из вышеупомянутых пунктов меню.",
- "Icon URL": "URL иконки",
- aboutIconURL: "Вы можете предоставить ссылку на иконку в поле \"URL иконки\" чтобы переопределить картинку профиля по умолчанию. Не используется, если задана иконка Emoji.",
- aboutMattermostChannelName: "Вы можете переопределить канал по умолчанию, в который вебхук пишет, введя имя канала в поле \"Имя канала\". Это необходимо включить в настройках вебхука Mattermost. Например: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - дёшево и медленно, часто перегружен. Только для получателей из Польши.",
- promosmsTypeFlash: "SMS FLASH - сообщения автоматически появятся на устройстве получателя. Только для получателей из Польши.",
- promosmsTypeFull: "SMS FULL - премиум-уровень SMS, можно использовать своё имя отправителя (предварительно зарегистрировав его). Надёжно для алертов.",
- promosmsTypeSpeed: "SMS SPEED - наивысший приоритет в системе. Очень быстро и надёжно, но очень дорого (в два раза дороже, чем SMS FULL).",
- promosmsPhoneNumber: "Номер телефона (для получателей из Польши можно пропустить код региона)",
- promosmsSMSSender: "Имя отправителя SMS: Зарегистрированное или одно из имён по умолчанию: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "URL сервера (вместе с http(s):// и опционально порт)",
- "Internal Room Id": "Внутренний ID комнаты",
- matrixDesc1: "Внутренний ID комнаты можно найти в Подробностях в параметрах канала вашего Matrix клиента. Он должен выглядеть примерно как !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Рекомендуется создать нового пользователя и не использовать токен доступа личного пользователя Matrix, т.к. это влечёт за собой полный доступ к аккаунту и к комнатам, в которых вы состоите. Вместо этого создайте нового пользователя и пригласите его только в ту комнату, в которой вы хотите получать уведомления. Токен доступа можно получить, выполнив команду {0}",
- Method: "Метод",
- Body: "Тело",
- Headers: "Заголовки",
- PushUrl: "URL пуша",
- HeadersInvalidFormat: "Заголовки запроса некорректны JSON: ",
- BodyInvalidFormat: "Тело запроса некорректно JSON: ",
- "Monitor History": "Статистика",
- clearDataOlderThan: "Сохранять статистику за {0} дней.",
- PasswordsDoNotMatch: "Пароли не совпадают.",
- records: "записей",
- "One record": "Одна запись",
- steamApiKeyDescription: "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ",
- "Certificate Chain": "Цепочка сертификатов",
- Valid: "Действительный",
- "Hide Tags": "Скрыть тэги",
- Title: "Название инцидента:",
- Content: "Содержание инцидента:",
- Post: "Опубликовать",
- Cancel: "Отмена",
- Created: "Создано",
- Unpin: "Открепить",
- "Show Tags": "Показать тэги",
- recent: "Сейчас",
- "3h": "3 часа",
- "6h": "6 часов",
- "24h": "24 часа",
- "1w": "1 неделя",
- "No monitors available.": "Нет доступных мониторов",
- "Add one": "Добавить новый",
- Backup: "Резервная копия",
- Security: "Безопасность",
- "Shrink Database": "Сжать Базу Данных",
- "Current User": "Текущий пользователь",
- About: "О программе",
- Description: "Описание",
- "Powered by": "Работает на основе скрипта от",
- shrinkDatabaseDescription: "Включает VACUUM для базы данных SQLite. Если ваша база данных была создана на версии 1.10.0 и более, AUTO_VACUUM уже включен и это действие не требуется.",
- deleteStatusPageMsg: "Вы действительно хотите удалить эту страницу статуса сервисов?",
- Style: "Стиль",
- info: "ИНФО",
- warning: "ВНИМАНИЕ",
- danger: "ОШИБКА",
- primary: "ОСНОВНОЙ",
- light: "СВЕТЛЫЙ",
- dark: "ТЕМНЫЙ",
- "New Status Page": "Новая страница статуса",
- "Show update if available": "Показывать доступные обновления",
- "Also check beta release": "Проверять обновления для бета версий",
- "Add New Status Page": "Добавить страницу статуса",
- Next: "Далее",
- "Accept characters: a-z 0-9 -": "Разрешены символы: a-z 0-9 -",
- "Start or end with a-z 0-9 only": "Начало и окончание имени только на символы: a-z 0-9",
- "No consecutive dashes --": "Запрещено использовать тире --",
- "HTTP Options": "HTTP Опции",
- Authentication: "Аутентификация",
- "HTTP Basic Auth": "HTTP Авторизация",
- PushByTechulus: "Push by Techulus",
- clicksendsms: "ClickSend SMS",
- GoogleChat: "Google Chat (только Google Workspace)",
- apiCredentials: "API реквизиты",
- Done: "Готово",
- Info: "Инфо",
- "Steam API Key": "Steam API-Ключ",
- "Pick a RR-Type...": "Выберите RR-Тип...",
- "Pick Accepted Status Codes...": "Выберите принятые коды состояния...",
- Default: "По умолчанию",
- "Please input title and content": "Пожалуйста, введите название и содержание",
- "Last Updated": "Последнее Обновление",
- "Untitled Group": "Группа без названия",
- Services: "Сервисы",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Пользователь (включая префикс webapi_)",
- serwersmsAPIPassword: "API Пароль",
- serwersmsPhoneNumber: "Номер телефона",
- serwersmsSenderName: "SMS Имя Отправителя (регистрированный через пользовательский портал)",
- stackfield: "Stackfield",
- smtpDkimSettings: "DKIM Настройки",
- smtpDkimDesc: "Пожалуйста ознакомьтесь с {0} Nodemailer DKIM для использования.",
- documentation: "документацией",
- smtpDkimDomain: "Имя Домена",
- smtpDkimKeySelector: "Ключ",
- smtpDkimPrivateKey: "Приватный ключ",
- smtpDkimHashAlgo: "Алгоритм хэша (опционально)",
- smtpDkimheaderFieldNames: "Заголовок ключей для подписи (опционально)",
- smtpDkimskipFields: "Заголовок ключей не для подписи (опционально)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "Конечная точка API",
- alertaEnvironment: "Среда",
- alertaApiKey: "Ключ API",
- alertaAlertState: "Состояние алерта",
- alertaRecoverState: "Состояние восстановления",
- Proxies: "Прокси",
- "Setup Proxy": "Настройка Прокси",
- "Proxy Protocol": "Протокол Прокси",
- "Proxy Server": "Прокси",
- "Proxy server has authentication": "Прокси имеет аутентификацию",
- "Reverse Proxy": "Обратный прокси",
- "No Proxy": "Без прокси",
- default: "По умолчанию",
- enabled: "Включено",
- setAsDefault: "Установлено по умолчанию",
- deleteProxyMsg: "Вы действительно хотите удалить этот прокси для всех мониторов?",
- proxyDescription: "Прокси должны быть привязаны к монитору, чтобы работать.",
- enableProxyDescription: "Этот прокси не будет влиять на запросы монитора, пока не будет активирован. Вы можете контролировать временное отключение прокси для всех мониторов через статус активации.",
- setAsDefaultProxyDescription: "Этот прокси будет по умолчанию включен для новых мониторов. Вы всё ещё можете отдельно отключать прокси в каждом мониторе.",
- Invalid: "Недействительный",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Шаблон СМС должен содержать параметры: ",
- "Bark Endpoint": "Bark Endpoint",
- "Bark Group": "Bark Group",
- "Bark Sound": "Bark Sound",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "В целях безопасности необходимо использовать секретный ключ",
- "Device Token": "Токен устройства",
- Platform: "Платформа",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "High",
- Retry: "Повторить",
- Topic: "Тема",
- "WeCom Bot Key": "WeCom Bot Key",
- User: "Пользователь",
- Installed: "Установлено",
- "Not installed": "Не установлено",
- Running: "Запускается",
- "Not running": "Не запускается",
- "Remove Token": "Удалить токен",
- Start: "Запустить",
- Stop: "Остановить",
- "Uptime Kuma": "Uptime Kuma",
- Slug: "Slug",
- "Accept characters:": "Принимаемые символы:",
- startOrEndWithOnly: "Начинается или кончается только {0}",
- "No consecutive dashes": "Без последовательных тире",
- "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.",
- "Page Not Found": "Страница не найдена",
- wayToGetCloudflaredURL: "(Скачать cloudflared с {0})",
- cloudflareWebsite: "Cloudflare Website",
- "Message:": "Сообщение:",
- "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.",
- "HTTP Headers": "HTTP заголовки",
- "Trust Proxy": "Доверять прокси",
- "Other Software": "Другое программное обеспечение",
- "For example: nginx, Apache and Traefik.": "К примеру: nginx, Apache и Traefik.",
- "Please read": "Пожалуйста, прочитайте",
- "Subject:": "Тема:",
- "Valid To:": "Действителен до:",
- "Days Remaining:": "Дней осталось:",
- "Issuer:": "Издатель:",
- "Fingerprint:": "Отпечаток:",
- "No status pages": "Нет статусных страниц",
- "Domain Name Expiry Notification": "Уведомление об истечении срока действия доменного имени",
- Proxy: "Прокси",
- "Date Created": "Дата создания",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP Address",
- onebotMessageType: "OneBot Message Type",
- onebotGroupMessage: "Группа",
- onebotPrivateMessage: "Private",
- onebotUserOrGroupId: "Группа/ID пользователя",
- onebotSafetyTips: "В целях безопасности необходимо установить токен доступа",
- "PushDeer Key": "PushDeer Key",
- "Footer Text": "Текст нижнего колонтитула",
- "Show Powered By": "Показывать на чем создано",
- "Domain Names": "Доменные имена",
- signedInDisp: "Вы вошли как {0}",
- signedInDispDisabled: "Аутентификация отключена.",
- RadiusSecret: "Секрет Radius",
- RadiusSecretDescription: "Общий секрет между клиентом и сервером",
- RadiusCalledStationId: "Идентификатор вызываемой станции",
- RadiusCalledStationIdDescription: "Идентификатор вызываемого устройства",
- RadiusCallingStationId: "Идентификатор вызывающей станции",
- RadiusCallingStationIdDescription: "Идентификатор вызывающего устройства",
- "Certificate Expiry Notification": "Уведомление об истечении срока действия сертификата",
- "API Username": "Имя пользователя API",
- "API Key": "API ключ",
- "Recipient Number": "Номер получателя",
- "From Name/Number": "Имя/номер отправителя",
- "Leave blank to use a shared sender number.": "Оставьте пустым, чтобы использовать общий номер отправителя.",
- "Octopush API Version": "Версия API Octopush",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "endpoint",
- octopushAPIKey: "\"API key\" из учетных данных HTTP API в панели управления",
- octopushLogin: "\"Login\" из учетных данных HTTP API в панели управления",
- promosmsLogin: "Логин API",
- promosmsPassword: "Пароль API",
- "pushoversounds pushover": "Pushover (default)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "Vibrate Only",
- "pushoversounds none": "None (silent)",
- pushyAPIKey: "Secret API Key",
- pushyToken: "Токен устройства",
- "Using a Reverse Proxy?": "Используете обратный прокси?",
- "Check how to config it for WebSocket": "Проверьте, как настроить его для WebSocket",
- "Steam Game Server": "Steam Game Server",
- "Most likely causes:": "Наиболее вероятные причины:",
- "The resource is no longer available.": "Ресурс больше не доступен.",
- "There might be a typing error in the address.": "В адресе может быть опечатка.",
- "What you can try:": "Что вы можете попробовать:",
- "Retype the address.": "Повторите адрес.",
- "Go back to the previous page.": "Вернуться на предыдущую страницу.",
- "Coming Soon": "Скоро",
- wayToGetClickSendSMSToken: "Вы можете получить имя пользователя API и ключ API из {0} .",
- "Connection String": "Строка подключения",
- Query: "Запрос",
- settingsCertificateExpiry: "Истекание TLS сертификата",
- certificationExpiryDescription: "HTTPS Мониторы инициируют уведомление, когда срок действия сертификата TLS истечет:",
- "Setup Docker Host": "Настроить Docker Host",
- "Connection Type": "Тип соединения",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "Are you sure want to delete this docker host for all monitors?",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker контейнер",
- "Container Name / ID": "Название контейнера / ID",
- "Docker Host": "Docker Host",
- "Docker Hosts": "Docker Hosts",
- "ntfy Topic": "ntfy Topic",
- Domain: "Домен",
- Workstation: "Workstation",
- disableCloudflaredNoAuthMsg: "Вы находитесь в режиме без авторизации, пароль не требуется.",
- trustProxyDescription: "Доверять заголовкам 'X-Forwarded-*'. Если вы хотите получить правильный IP-адрес клиента, а ваш Uptime Kuma находится под Nginx или Apache, вам следует включить этот параметр.",
- wayToGetLineNotifyToken: "Вы можете получить токен доступа в {0}",
- Examples: "Примеры",
- "Home Assistant URL": "Home Assistant URL",
- "Long-Lived Access Token": "Токен доступа с длительным сроком службы",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ",
- "Notification Service": "Служба уведомлений",
- "default: notify all devices": "по стандарту: уведомлять все устройства",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.",
- "Automations can optionally be triggered in Home Assistant:": "При желании автоматизацию можно активировать в Home Assistant.:",
- "Trigger type:": "Тип триггера:",
- "Event type:": "Тип события:",
- "Event data:": "Данные события:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Затем выберите действие, например, переключите сцену на красный индикатор RGB..",
- "Frontend Version": "Версия интерфейса",
- "Frontend Version do not match backend version!": "Версия интерфейса не соответствует версии серверной части!",
- "Base URL": "Базовый URL",
- goAlertInfo: "GoAlert is a An open source application for on-call scheduling, automated escalations and notifications (like SMS or voice calls). Automatically engage the right person, the right way, and at the right time! {0}",
- goAlertIntegrationKeyInfo: "Получить общий ключ интеграции API для сервиса в этом формате \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обычно значение параметра токена скопированного URL.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Устарело: поскольку добавлено множество функций, а эта функция резервного копирования немного не поддерживается, она не может создать или восстановить полную резервную копию.",
- backupRecommend: "Сделайте резервную копию тома или папки с данными (./data/) напрямую.",
- "Optional": "Необязательно",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "Документация к API SMSManager ",
- "Gateway Type": "Тип шлюза",
- SMSManager: "SMSManager",
- "You can divide numbers with": "Вы можете делить числа с",
- "or": "или",
-};
diff --git a/src/languages/sl-SI.js b/src/languages/sl-SI.js
deleted file mode 100644
index 48bbeb206..000000000
--- a/src/languages/sl-SI.js
+++ /dev/null
@@ -1,357 +0,0 @@
-export default {
- languageName: "Slovenščina",
- checkEverySecond: "Preveri na vsakih {0} sekund",
- retryCheckEverySecond: "Ponovno poskusi na vsakih {0} sekund",
- retriesDescription: "Maksimalno število poskusov predenj se storitev označi kot 'ne deluje' in se pošlje obvestilo",
- ignoreTLSError: "Ignoriraj TLS/SSL napake za HTTPS spletne strani",
- upsideDownModeDescription: "Negiraj status. Če je storitev deluje bo označena kot 'ne deluje'.",
- maxRedirectDescription: "Maksimalno število sledečih preusmeritev. 0 onemogoči preusmeritve.",
- acceptedStatusCodesDescription: "Izberi kode statusa veljavna kot uspešen odgovor.",
- passwordNotMatchMsg: "Ponovljeno geslo se ne ujema.",
- notificationDescription: "Obvestila morajo biti dodeljena monitorju, da delujejo.",
- keywordDescription: "Iskana ključna beseda v surovem HTML ali JSON odgovoru. Iskanje je občutljivo na začetnico.",
- pauseDashboardHome: "Pavza",
- deleteMonitorMsg: "Ste prepričani, da želite izbrisati ta monitor?",
- deleteNotificationMsg: "Ste prepričani, da želite izbrisati to obvestilo za vse monitorje?",
- resolverserverDescription: "Cloudflare je privzeti strežnik. DNS strežnik lahko spremenite kadarkoli.",
- rrtypeDescription: "Izberite RR tip, ki ga želite spremljati",
- pauseMonitorMsg: "Ste prepričani, da želite pavzirati?",
- enableDefaultNotificationDescription: "To obvestilo bo kot privzeto omogočeno za vse nove monitorje. Še vedno ga lahko izključite posebej za vsak monitor.",
- clearEventsMsg: "Ste prepričani da želite izbrisati vse dogodke tega monitorja?",
- clearHeartbeatsMsg: "Ste prepričani da želite izbrisati vse srčne utripe tega monitorja?",
- confirmClearStatisticsMsg: "Ste prepričani da želite izbrisati VSO statistiko?",
- importHandleDescription: "Izberite 'Preskoči obstoječe', če želite preskočiti vsak monitor ali obvestilo z istim imenom. 'Prepiši' bo prepisal vse obstoječe monitorje in obvestila.",
- confirmImportMsg: "Ste prepričani da želite uvoziti varnostno kopijo? Preverite da ste izbrali pravo opcijo za uvoz.",
- twoFAVerifyLabel: "Prosimo vnesite žeton za potrditev 2FA:",
- tokenValidSettingsMsg: "Žeton je veljaven! Sedaj lahko shranite 2FA nastavitev.",
- confirmEnableTwoFAMsg: "Ste prepričani, da želite omogočiti 2FA?",
- confirmDisableTwoFAMsg: "Ste prepričani, da želite onemogočiti 2FA?",
- Settings: "Nastavitve",
- Dashboard: "Nadzorna plošča",
- "New Update": "Nova posodobitev",
- Language: "Jezik",
- Appearance: "Izgled",
- Theme: "Teme",
- General: "Splošno",
- "Primary Base URL": "Primaren URL",
- Version: "Različica",
- "Check Update On GitHub": "Preveri posodobitev na GitHub-u",
- List: "Seznam",
- Add: "Dodaj",
- "Add New Monitor": "Dodaj nov monitor",
- "Quick Stats": "Hitro stanje",
- Up: "Deluje",
- Down: "Ne deluje",
- Pending: "Na čakanju",
- Unknown: "Neznano",
- Pause: "Pavza",
- Name: "Ime",
- Status: "Status",
- DateTime: "DateTime",
- Message: "Sporočilo",
- "No important events": "Ni pomembnih dogodkov",
- Resume: "Nadaljuj",
- Edit: "Uredi",
- Delete: "Izbriši",
- Current: "Trenutno",
- Uptime: "Uptime",
- "Cert Exp.": "Potek certifikata",
- day: "dan | dni",
- "-day": "-dni",
- hour: "ura",
- "-hour": "-ur",
- Response: "Odgovor",
- Ping: "Ping",
- "Monitor Type": "Tip monitorja",
- Keyword: "Ključna beseda",
- "Friendly Name": "Ime za prikaz",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Vrata",
- "Heartbeat Interval": "Interval srčnega utripa",
- Retries: "Ponovni poskusi",
- "Heartbeat Retry Interval": "Ponovni poskus srčnega utripa",
- Advanced: "Napredno",
- "Upside Down Mode": "Negiran način",
- "Max. Redirects": "Max. preusmeritev",
- "Accepted Status Codes": "Sprejete kode statusa",
- "Push URL": "Push URL",
- needPushEvery: "Pokliči ta URL vsakih {0} sekund.",
- pushOptionalParams: "Dodatni parametri: {0}",
- Save: "Shrani",
- Notifications: "Obvestila",
- "Not available, please setup.": "Ni na voljo, prosimo nastavite.",
- "Setup Notification": "Nastavi obvestila",
- Light: "Svetlo",
- Dark: "Temno",
- Auto: "Auto",
- "Theme - Heartbeat Bar": "Tema - vrstica srčnega utripa",
- Normal: "Normalna",
- Bottom: "Spodaj",
- None: "Brez",
- Timezone: "Časovni pas",
- "Search Engine Visibility": "Vidljivost v spletnih iskalnikih",
- "Allow indexing": "Dovoli indeksiranje",
- "Discourage search engines from indexing site": "Odvračaj spletne iskalnike od indeksiranja te strani",
- "Change Password": "Zamenjaj geslo",
- "Current Password": "Trenutno geslo",
- "New Password": "Novo geslo",
- "Repeat New Password": "Ponovi novo geslo",
- "Update Password": "Posodobi geslo",
- "Disable Auth": "Onemogoči auth",
- "Enable Auth": "Omogoči auth",
- "disableauth.message1": "Ali ste prepričani, da želite onemogočiti avtentikacijo ?",
- "disableauth.message2": "Namenjen je nekomu, ki ima pred programom Uptime Kuma vklopljeno zunanje preverjanje pristnosti , na primer Cloudflare Access.",
- "Please use this option carefully!": "Uporabljajte previdno.",
- Logout: "Odjava",
- Leave: "Zapusti",
- "I understand, please disable": "Razumem, prosim onemogočite",
- Confirm: "Potrdi",
- Yes: "Da",
- No: "Ne",
- Username: "Uporabniško ime",
- Password: "Geslo",
- "Remember me": "Zapomni si me",
- Login: "Vpis",
- "No Monitors, please": "Prosim, brez monitorjev",
- "add one": "Dodaj enega",
- "Notification Type": "Tip obvestila",
- Email: "Email",
- Test: "Test",
- "Certificate Info": "Informacije certifikata",
- "Resolver Server": "Strežnik za razreševanje",
- "Resource Record Type": "Vrsta zapisa o viru",
- "Last Result": "Zadnji rezultat",
- "Create your admin account": "Ustvari administratorski račun",
- "Repeat Password": "Ponovi geslo",
- "Import Backup": "Uvozi varnostno kopijo",
- "Export Backup": "Izvozi varnostno kopijo",
- Export: "Izvozi",
- Import: "Uvozi",
- respTime: "Odzivni čas (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Privzeto omogočeno",
- "Apply on all existing monitors": "Uporabi na vseh obstoječih monitorjih",
- Create: "Ustvari",
- "Clear Data": "Izbriši podatke",
- Events: "Dogodki",
- Heartbeats: "Srčni utripi",
- "Auto Get": "Auto Get",
- backupDescription: "Izvozite lahko vse monitorje in obvestila v JSON datoteko.",
- backupDescription2: "Pomni: Zgodovina in podatki dogodkov niso vključeni.",
- backupDescription3: "Občutljivi podatki, kot žetoni za obvestila so vlkjučeni v datoteko za izvoz; prosimo hranite na varnem.",
- alertNoFile: "Izberite datoteko za Uvoz.",
- alertWrongFileType: "Prosimo izberite JSON datoteko.",
- "Clear all statistics": "Pobrišite vso statistiko",
- "Skip existing": "Preskoči obstoječe",
- Overwrite: "Prepiši",
- Options: "Možnosti",
- "Keep both": "Ohrani oboje",
- "Verify Token": "Potrdi žeton",
- "Setup 2FA": "Nastavi 2FA",
- "Enable 2FA": "Omogoči 2FA",
- "Disable 2FA": "Onemogoči 2FA",
- "2FA Settings": "2FA nastavitve",
- "Two Factor Authentication": "Preverjanje pristnosti z dvema dejavnikoma",
- Active: "Aktivno",
- Inactive: "Neaktivno",
- Token: "Žeton",
- "Show URI": "Prikaži URI",
- Tags: "Značke",
- "Add New below or Select...": "Dodaj novo spodaj ali izberi iz seznama...",
- "Tag with this name already exist.": "Značka s tem imenom že obstaja.",
- "Tag with this value already exist.": "Značka s to vrednostjo že obstaja.",
- color: "barva",
- "value (optional)": "vrednost (po želji)",
- Gray: "Siva",
- Red: "Rdeča",
- Orange: "Oranžna",
- Green: "Zelena",
- Blue: "Modra",
- Indigo: "Indigo",
- Purple: "Vijolična",
- Pink: "Roza",
- "Search...": "Išči...",
- "Avg. Ping": "Avg. Ping",
- "Avg. Response": "Avg. odziv",
- "Entry Page": "Vstopna stran",
- statusPageNothing: "Nikjer nič... Dodajte skupino ali monitor.",
- "No Services": "Ni storitev",
- "All Systems Operational": "Vsi sistemi delujejo",
- "Partially Degraded Service": "Delno poslabšana storitev",
- "Degraded Service": "Poslabšana storitev",
- "Add Group": "Dodaj skupino",
- "Add a monitor": "Dodaj monitor",
- "Edit Status Page": "Uredi statusno stran",
- "Go to Dashboard": "Pojdi na nadzorno ploščo",
- "Status Page": "Statusna stran",
- "Status Pages": "Statusne strani",
- defaultNotificationName: "Moje {notification} Obvestilo ({number})",
- here: "tukaj",
- Required: "Obvezno",
- telegram: "Telegram",
- "Bot Token": "Robotkov žetonček",
- wayToGetTelegramToken: "Lahko dobiš žeton od {0}.",
- "Chat ID": "ID pogovora",
- supportTelegramChatID: "Direkten pogovor pomoči / Skupina / ID kanala",
- wayToGetTelegramChatID: "Id lahko dobiš, če pošlješ sporočilo robotku in odpreš ta URL, da bi videl chat_id:",
- "YOUR BOT TOKEN HERE": "ROBOTKOV ŽETON TUKAJ",
- chatIDNotFound: "Ne najdem Chat Id-ja; prvo pošlji sporočilo robotku",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Vrsta vsebine",
- webhookJsonDesc: "{0} je v redu za vsak moderen HTTP strežnik, kot recimo Express.js",
- webhookFormDataDesc: "{multipart} je v redu za PHP. JSON bo moral biti razčlenjen s {decodeFunction}",
- smtp: "Email (SMTP)",
- secureOptionNone: "Brez / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ignoriraj TLS napako",
- "From Email": "Od Email",
- emailCustomSubject: "Poljubna zadeva",
- "To Email": "Za Email",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "To lahko dibiš v Server Settings -> Integrations -> Create Webhook",
- "Bot Display Name": "Prikazno ime robotka",
- "Prefix Custom Message": "Predpona poljubnega sporočila",
- "Hello @everyone is...": "Pozdravljen {'@'}everyone je...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Izvedi kako narediš webhook URL {0}.",
- signal: "Signal",
- Number: "Številka",
- Recipients: "Prejemniki",
- needSignalAPI: "Imeti moraš signal klienta z REST API.",
- wayToCheckSignalURL: "Kako se to naredi, lahko preveriš na tem URL-ju:",
- signalImportant: "POMEMBNO: Ne moreš mešati skupin in številk v prejemnikih!",
- gotify: "Gotify",
- "Application Token": "Žeton za aplikacijo",
- "Server URL": "URL Strežnika",
- Priority: "Prioriteta",
- slack: "Slack",
- "Icon Emoji": "Emoji ikona",
- "Channel Name": "Ime kanala",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Več o webhook-ih: {0}",
- aboutChannelName: "Vnesi ime kanala na {0} Channel Name polje, če želiš preskočiti webhook kanal. npr.: #drug-kanal",
- aboutKumaURL: "Če pustite polje Uptime Kuma URL prazno, bo nastavljeno privzeto na GitHub stran projekta.",
- emojiCheatSheet: "Emoji plonk listek: {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (podpira 50+ storitev za obveščevanje)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "User Key",
- Device: "Naprava",
- "Message Title": "Naslov sporočila",
- "Notification Sound": "Zvok obvestila",
- "More info on:": "Več informacij na: {0}",
- pushoverDesc1: "Prioriteta nujnosti (2) ima privzeto nastavitev 30 sekund časa med ponovni poskusi in poteče po 1 uri.",
- pushoverDesc2: "Če želite pošiljati obvestila na različne naprave izpolnite polje 'Naprava'.",
- "SMS Type": "Vrsta SMS-a",
- octopushTypePremium: "Premium (hitro - priporočljivo za opozarjanje)",
- octopushTypeLowCost: "Cenovno ugodno (počasno - včasih jih blokira operater)",
- checkPrice: "preveri {0} cene:",
- apiCredentials: "API poverilnice",
- octopushLegacyHint: "Uporabljate legacy verzijo Octopush-a (2011-2020) ali novo verzijo?",
- "Check octopush prices": "Preveri octopush cene {0}.",
- octopushPhoneNumber: "Telefonska številka (npr.: +386031234567) ",
- octopushSMSSender: "Ime SMS pošiljatelja: 3-11 alfanumeričnih znakov in presledki (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Device ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Primer: {0}",
- "Read more:": "Preberi več: {0}",
- "Status:": "Status: {0}",
- "Read more": "Preberi več",
- appriseInstalled: "Apprise je nameščen.",
- appriseNotInstalled: "Apprise ni nameščen. {0}",
- "Access Token": "Žeton za dostop",
- "Channel access token": "Žeton za dostop do kanala",
- "Line Developers Console": "Line Developers Console",
- lineDevConsoleTo: "Line Developers Console - {0}",
- "Basic Settings": "Osnovne nastavitve",
- "User ID": "User ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "Prvo odpri {0}, ustvarite ponudnika in kanal (Messaging API), potem lahko žeton za dostop do kanala in ID uporabnika dobite iz zgoraj navedenih elementov menija.",
- "Icon URL": "URL ikone",
- aboutIconURL: "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji.",
- aboutMattermostChannelName: "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - poceni, vendar počasen in pogosto preobremenjen. Omejeno samo na poljske prejemnike.",
- promosmsTypeFlash: "SMS FLASH - sporočilo se samodejno prikaže v napravi prejemnika. Omejeno samo na poljske prejemnike.",
- promosmsTypeFull: "SMS FULL - Premium raven SMS, Uporabite lahko svoje ime pošiljatelja (najprej morate registrirati ime). Zanesljivo za opozorila.",
- promosmsTypeSpeed: "SMS SPEED - Najvišja prednost v sistemu. Zelo hitro in zanesljivo, vendar drago (približno dvakratnik cene SMS FULL)..",
- promosmsPhoneNumber: "Telefonska številka (za poljskega prejemnika Lahko preskočite področne oznake",
- promosmsSMSSender: "Ime pošiljatelja SMS : vnaprej registrirano ime ali eno od privzetih: SMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "Homeserver URL (z http(s):// in vrata po želji)",
- "Internal Room Id": "Interni ID sobe",
- matrixDesc1: "Notranji ID sobe lahko poiščete v naprednem razdelku nastavitev sobe v odjemalcu Matrix. Izgledati mora kot !QMdRCpUIfLwsfjxye6:home.server",
- matrixDesc2: "Zelo priporočljivo je, da ustvarite novega uporabnika in ne uporabljate svojega žetona za dostop uporabnika Matrix, saj bo omogočil popoln dostop do vašega računa in vseh sob, ki ste se jim pridružili. Namesto tega ustvarite novega uporabnika in ga povabite le v sobo, v kateri želite prejemati obvestila. Token dostopa lahko dobite tako, da zaženete {0}",
- Method: "Metoda",
- Body: "Telo",
- Headers: "Glave",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "Glave zahtevka niso veljavni JSON: ",
- BodyInvalidFormat: "Telo zahteve ni veljaven JSON: ",
- "Monitor History": "Zgodovina",
- clearDataOlderThan: "Ohrani zgodovino {0} dni.",
- PasswordsDoNotMatch: "Gesli se ne ujemata.",
- records: "vnosi",
- "One record": "En vnos",
- steamApiKeyDescription: "Za spremljanje igralnega strežnika Steam potrebujete ključ spletnega vmesnika Steam. Ključ API lahko registrirate tukaj: ",
- "Current User": "Trenuten uporabnik",
- recent: "Nedavno",
- Done: "Zaključi",
- Info: "Info",
- Security: "Varnost",
- "Steam API Key": "Steam API Key",
- "Shrink Database": "Stisni bazo",
- "Pick a RR-Type...": "Izberi RR tip...",
- "Pick Accepted Status Codes...": "Izbiranje sprejetih kod stanja...",
- Default: "Privzeto",
- "HTTP Options": "HTTP možnosti",
- "Create Incident": "Ustvari incident",
- Title: "Naslov",
- Content: "Vsebina",
- Style: "Stil",
- info: "info",
- warning: "opozorilo",
- danger: "nevarnost",
- primary: "primarno",
- light: "svetlo",
- dark: "temno",
- Post: "Objavi",
- "Please input title and content": "Vnesi naslov in vsebino",
- Created: "Ustvarjeno",
- "Last Updated": "Nazadnje posodobljeno",
- Unpin: "Odpni",
- "Switch to Light Theme": "Preklopi na svetlo temo",
- "Switch to Dark Theme": "Preklopi na temno temo",
- "Show Tags": "Prikaži značke",
- "Hide Tags": "Skrij značke",
- Description: "Opis",
- "No monitors available.": "Nobenega monitorja ni na voljo.",
- "Add one": "Dodaj enega",
- "No Monitors": "Ni monitorjev",
- "Untitled Group": "Skupina brez imena",
- Services: "Storitve",
- Discard: "zavrzi",
- Cancel: "Prekliči",
- "Powered by": "Powered by",
- shrinkDatabaseDescription: "Sprožitev podatkovne zbirke VACUUM za SQLite. Če je vaša zbirka podatkov ustvarjena po različici 1.10.0, je funkcija AUTO_VACUUM že omogočena in ta ukrep ni potreben.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API uporabniško ime (vključno z webapi_ prefix)",
- serwersmsAPIPassword: "API geslo",
- serwersmsPhoneNumber: "Telefonska številka",
- serwersmsSenderName: "Ime SMS pošiljatelja (registrirani prek portala za stranke)",
- "stackfield": "Stackfield",
-};
diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js
deleted file mode 100644
index 32e074eea..000000000
--- a/src/languages/sr-latn.js
+++ /dev/null
@@ -1,204 +0,0 @@
-export default {
- languageName: "Srpski",
- checkEverySecond: "Proveri svakih {0} sekundi.",
- retriesDescription: "Maksimum pokušaja pre nego što se servis obeleži kao neaktivan i pošalje se obaveštenje.",
- ignoreTLSError: "Ignoriši TLS/SSL greške za HTTPS veb stranice.",
- upsideDownModeDescription: "Obrnite status. Ako je servis dostupan, onda je obeležen kao neaktivan.",
- maxRedirectDescription: "Maksimani broj preusmerenja da se prate. Postavite na 0 da bi se isključila preusmerenja.",
- acceptedStatusCodesDescription: "Odaberite statusne kodove koji se smatraju uspešnim odgovorom.",
- passwordNotMatchMsg: "Ponovljena lozinka se ne poklapa.",
- notificationDescription: "Molim Vas postavite obaveštenje za masmatrače da bise aktivirali.",
- keywordDescription: "Pretraži ključnu reč u čistom html ili JSON odgovoru sa osetljivim velikim i malim slovima",
- pauseDashboardHome: "Pauziraj",
- deleteMonitorMsg: "Da li ste sigurni da želite da obrišete ovog posmatrača?",
- deleteNotificationMsg: "Da li ste sigurni d aželite da uklonite ovo obaveštenje za sve posmatrače?",
- resolverserverDescription: "Cloudflare je podrazumevani server. Možete promeniti server za raszrešavanje u bilo kom trenutku.",
- rrtypeDescription: "Odaberite RR-Type koji želite da posmatrate",
- pauseMonitorMsg: "Da li ste sigurni da želite da pauzirate?",
- Settings: "Podešavanja",
- Dashboard: "Komandna tabla",
- "New Update": "Nova verzija",
- Language: "Jezik",
- Appearance: "Izgled",
- Theme: "Tema",
- General: "Opšte",
- Version: "Verzija",
- "Check Update On GitHub": "Proverite novu verziju na GitHub-u",
- List: "Lista",
- Add: "Dodaj",
- "Add New Monitor": "Dodaj novog posmatrača",
- "Quick Stats": "Brze statistike",
- Up: "Aktivno",
- Down: "Neaktivno",
- Pending: "Nerešeno",
- Unknown: "Nepoznato",
- Pause: "Pauziraj",
- Name: "Ime",
- Status: "Status",
- DateTime: "Datum i vreme",
- Message: "Poruka",
- "No important events": "Nema bitnih događaja",
- Resume: "Nastavi",
- Edit: "Izmeni",
- Delete: "Ukloni",
- Current: "Trenutno",
- Uptime: "Vreme rada",
- "Cert Exp.": "Istek sert.",
- day: "dan | dana",
- "-day": "-dana",
- hour: "sat",
- "-hour": "-sata",
- Response: "Odgovor",
- Ping: "Ping",
- "Monitor Type": "Tip posmatrača",
- Keyword: "Ključna reč",
- "Friendly Name": "Prijateljsko ime",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "Interval otkucaja srca",
- Retries: "Pokušaji",
- Advanced: "Napredno",
- "Upside Down Mode": "Naopak mod",
- "Max. Redirects": "Maks. preusmerenja",
- "Accepted Status Codes": "Prihvaćeni statusni kodovi",
- Save: "Sačuvaj",
- Notifications: "Obaveštenja",
- "Not available, please setup.": "Nije dostupno, molim Vas podesite.",
- "Setup Notification": "Postavi obaveštenje",
- Light: "Svetlo",
- Dark: "Tamno",
- Auto: "Automatsko",
- "Theme - Heartbeat Bar": "Tema - Traka otkucaja srca",
- Normal: "Normalno",
- Bottom: "Dole",
- None: "Isključeno",
- Timezone: "Vremenska zona",
- "Search Engine Visibility": "Vidljivost pretraživačima",
- "Allow indexing": "Dozvoli indeksiranje",
- "Discourage search engines from indexing site": "Odvraćajte pretraživače od indeksiranja sajta",
- "Change Password": "Promeni lozinku",
- "Current Password": "Trenutna lozinka",
- "New Password": "Nova lozinka",
- "Repeat New Password": "Ponovi novu lozinku",
- "Update Password": "Izmeni lozinku",
- "Disable Auth": "Isključi autentifikaciju",
- "Enable Auth": "Uključi autentifikaciju",
- "disableauth.message1": "Da li ste sigurni da želite da isključite autentifikaciju ?",
- "disableauth.message2": "To je za one koji imaju dodatu autentifikaciju ispred Uptime Kuma kao na primer Cloudflare Access.",
- "Please use this option carefully!": "Molim Vas koristite ovo sa pažnjom.",
- Logout: "Odloguj se",
- Leave: "Izađi",
- "I understand, please disable": "Razumem, molim te isključi",
- Confirm: "Potvrdi",
- Yes: "Da",
- No: "Ne",
- Username: "Korisničko ime",
- Password: "Lozinka",
- "Remember me": "Zapamti me",
- Login: "Uloguj se",
- "No Monitors, please": "Bez posmatrača molim",
- "add one": "dodaj jednog",
- "Notification Type": "Tip obaveštenja",
- Email: "E-pošta",
- Test: "Test",
- "Certificate Info": "Informacije sertifikata",
- "Resolver Server": "Razrešivački server",
- "Resource Record Type": "Tip zapisa resursa",
- "Last Result": "Poslednji rezultat",
- "Create your admin account": "Naprivi administratorski nalog",
- "Repeat Password": "Ponovite lozinku",
- respTime: "Vreme odg. (ms)",
- notAvailableShort: "N/A",
- Create: "Create",
- clearEventsMsg: "Are you sure want to delete all events for this monitor?",
- clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?",
- confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?",
- "Clear Data": "Clear Data",
- Events: "Events",
- Heartbeats: "Heartbeats",
- "Auto Get": "Auto Get",
- enableDefaultNotificationDescription: "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.",
- "Default enabled": "Default enabled",
- "Also apply to existing monitors": "Also apply to existing monitors",
- Export: "Export",
- Import: "Import",
- backupDescription: "You can backup all monitors and all notifications into a JSON file.",
- backupDescription2: "PS: History and event data is not included.",
- backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
- alertNoFile: "Please select a file to import.",
- alertWrongFileType: "Please select a JSON file.",
- twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
- tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
- confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
- confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
- "Apply on all existing monitors": "Apply on all existing monitors",
- "Verify Token": "Verify Token",
- "Setup 2FA": "Setup 2FA",
- "Enable 2FA": "Enable 2FA",
- "Disable 2FA": "Disable 2FA",
- "2FA Settings": "2FA Settings",
- "Two Factor Authentication": "Two Factor Authentication",
- Active: "Active",
- Inactive: "Inactive",
- Token: "Token",
- "Show URI": "Show URI",
- "Clear all statistics": "Clear all Statistics",
- retryCheckEverySecond: "Retry every {0} seconds.",
- importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.",
- confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.",
- "Heartbeat Retry Interval": "Heartbeat Retry Interval",
- "Import Backup": "Import Backup",
- "Export Backup": "Export Backup",
- "Skip existing": "Skip existing",
- Overwrite: "Overwrite",
- Options: "Options",
- "Keep both": "Keep both",
- Tags: "Tags",
- "Add New below or Select...": "Add New below or Select...",
- "Tag with this name already exist.": "Tag with this name already exist.",
- "Tag with this value already exist.": "Tag with this value already exist.",
- color: "color",
- "value (optional)": "value (optional)",
- Gray: "Gray",
- Red: "Red",
- Orange: "Orange",
- Green: "Green",
- Blue: "Blue",
- Indigo: "Indigo",
- Purple: "Purple",
- Pink: "Pink",
- "Search...": "Search...",
- "Avg. Ping": "Avg. Ping",
- "Avg. Response": "Avg. Response",
- "Entry Page": "Entry Page",
- statusPageNothing: "Nothing here, please add a group or a monitor.",
- "No Services": "No Services",
- "All Systems Operational": "All Systems Operational",
- "Partially Degraded Service": "Partially Degraded Service",
- "Degraded Service": "Degraded Service",
- "Add Group": "Add Group",
- "Add a monitor": "Add a monitor",
- "Edit Status Page": "Edit Status Page",
- "Go to Dashboard": "Go to Dashboard",
- "Status Page": "Status Page",
- "Status Pages": "Status Pages",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
-};
diff --git a/src/languages/sr.js b/src/languages/sr.js
deleted file mode 100644
index bd8e4dd31..000000000
--- a/src/languages/sr.js
+++ /dev/null
@@ -1,204 +0,0 @@
-export default {
- languageName: "Српски",
- checkEverySecond: "Провери сваких {0} секунди.",
- retriesDescription: "Максимум покушаја пре него што се сервис обележи као неактиван и пошаље се обавештење.",
- ignoreTLSError: "Игнориши TLS/SSL грешке за HTTPS веб странице.",
- upsideDownModeDescription: "Обрните статус. Ако је сервис доступан, онда је обележен као неактиван.",
- maxRedirectDescription: "Максимани број преусмерења да се прате. Поставите на 0 да би се искључила преусмерења.",
- acceptedStatusCodesDescription: "Одаберите статусне кодове који се сматрају успешним одговором.",
- passwordNotMatchMsg: "Поновљена лозинка се не поклапа.",
- notificationDescription: "Молим Вас поставите обавештење за масматраче да бисе активирали.",
- keywordDescription: "Претражи кључну реч у чистом html или JSON одговору са осетљивим великим и малим словима",
- pauseDashboardHome: "Паузирај",
- deleteMonitorMsg: "Да ли сте сигурни да желите да обришете овог посматрача?",
- deleteNotificationMsg: "Да ли сте сигурни д ажелите да уклоните ово обавештење за све посматраче?",
- resolverserverDescription: "Cloudflare је подразумевани сервер. Можете променити сервер за расзрешавање у било ком тренутку.",
- rrtypeDescription: "Одаберите RR-Type који желите да посматрате",
- pauseMonitorMsg: "Да ли сте сигурни да желите да паузирате?",
- Settings: "Подешавања",
- Dashboard: "Командна табла",
- "New Update": "Нова верзија",
- Language: "Језик",
- Appearance: "Изглед",
- Theme: "Тема",
- General: "Опште",
- Version: "Верзија",
- "Check Update On GitHub": "Проверите нову верзију на GitHub-у",
- List: "Листа",
- Add: "Додај",
- "Add New Monitor": "Додај новог посматрача",
- "Quick Stats": "Брзе статистике",
- Up: "Активно",
- Down: "Неактивно",
- Pending: "Нерешено",
- Unknown: "Непознато",
- Pause: "Паузирај",
- Name: "Име",
- Status: "Статус",
- DateTime: "Датум и време",
- Message: "Порука",
- "No important events": "Нема битних догађаја",
- Resume: "Настави",
- Edit: "Измени",
- Delete: "Уклони",
- Current: "Тренутно",
- Uptime: "Време рада",
- "Cert Exp.": "Истек серт.",
- day: "дан | дана",
- "-day": "-дана",
- hour: "сат",
- "-hour": "-сата",
- Response: "Одговор",
- Ping: "Пинг",
- "Monitor Type": "Тип посматрача",
- Keyword: "Кључна реч",
- "Friendly Name": "Пријатељско име",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Порт",
- "Heartbeat Interval": "Интервал откуцаја срца",
- Retries: "Покушаји",
- Advanced: "Напредно",
- "Upside Down Mode": "Наопак мод",
- "Max. Redirects": "Макс. преусмерења",
- "Accepted Status Codes": "Прихваћени статусни кодови",
- Save: "Сачувај",
- Notifications: "Обавештења",
- "Not available, please setup.": "Није доступно, молим Вас подесите.",
- "Setup Notification": "Постави обавештење",
- Light: "Светло",
- Dark: "Тамно",
- Auto: "Аутоматско",
- "Theme - Heartbeat Bar": "Тема - Трака откуцаја срца",
- Normal: "Нормално",
- Bottom: "Доле",
- None: "Искључено",
- Timezone: "Временска зона",
- "Search Engine Visibility": "Видљивост претраживачима",
- "Allow indexing": "Дозволи индексирање",
- "Discourage search engines from indexing site": "Одвраћајте претраживаче од индексирања сајта",
- "Change Password": "Промени лозинку",
- "Current Password": "Тренутна лозинка",
- "New Password": "Нова лозинка",
- "Repeat New Password": "Понови нову лозинку",
- "Update Password": "Измени лозинку",
- "Disable Auth": "Искључи аутентификацију",
- "Enable Auth": "Укључи аутентификацију",
- "disableauth.message1": "Да ли сте сигурни да желите да искључите аутентификацију ?",
- "disableauth.message2": "То је за оне који имају додату аутентификацију испред Uptime Kuma као на пример Cloudflare Access.",
- "Please use this option carefully!": "Молим Вас користите ово са пажњом.",
- Logout: "Одлогуј се",
- Leave: "Изађи",
- "I understand, please disable": "Разумем, молим те искључи",
- Confirm: "Потврди",
- Yes: "Да",
- No: "Не",
- Username: "Корисничко име",
- Password: "Лозинка",
- "Remember me": "Запамти ме",
- Login: "Улогуј се",
- "No Monitors, please": "Без посматрача молим",
- "add one": "додај једног",
- "Notification Type": "Тип обавештења",
- Email: "Е-пошта",
- Test: "Тест",
- "Certificate Info": "Информације сертификата",
- "Resolver Server": "Разрешивачки сервер",
- "Resource Record Type": "Тип записа ресурса",
- "Last Result": "Последњи резултат",
- "Create your admin account": "Наприви администраторски налог",
- "Repeat Password": "Поновите лозинку",
- respTime: "Време одг. (мс)",
- notAvailableShort: "N/A",
- Create: "Create",
- clearEventsMsg: "Are you sure want to delete all events for this monitor?",
- clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?",
- confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?",
- "Clear Data": "Clear Data",
- Events: "Events",
- Heartbeats: "Heartbeats",
- "Auto Get": "Auto Get",
- enableDefaultNotificationDescription: "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.",
- "Default enabled": "Default enabled",
- "Also apply to existing monitors": "Also apply to existing monitors",
- Export: "Export",
- Import: "Import",
- backupDescription: "You can backup all monitors and all notifications into a JSON file.",
- backupDescription2: "PS: History and event data is not included.",
- backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
- alertNoFile: "Please select a file to import.",
- alertWrongFileType: "Please select a JSON file.",
- twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
- tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
- confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
- confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
- "Apply on all existing monitors": "Apply on all existing monitors",
- "Verify Token": "Verify Token",
- "Setup 2FA": "Setup 2FA",
- "Enable 2FA": "Enable 2FA",
- "Disable 2FA": "Disable 2FA",
- "2FA Settings": "2FA Settings",
- "Two Factor Authentication": "Two Factor Authentication",
- Active: "Active",
- Inactive: "Inactive",
- Token: "Token",
- "Show URI": "Show URI",
- "Clear all statistics": "Clear all Statistics",
- retryCheckEverySecond: "Retry every {0} seconds.",
- importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.",
- confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.",
- "Heartbeat Retry Interval": "Heartbeat Retry Interval",
- "Import Backup": "Import Backup",
- "Export Backup": "Export Backup",
- "Skip existing": "Skip existing",
- Overwrite: "Overwrite",
- Options: "Options",
- "Keep both": "Keep both",
- Tags: "Tags",
- "Add New below or Select...": "Add New below or Select...",
- "Tag with this name already exist.": "Tag with this name already exist.",
- "Tag with this value already exist.": "Tag with this value already exist.",
- color: "color",
- "value (optional)": "value (optional)",
- Gray: "Gray",
- Red: "Red",
- Orange: "Orange",
- Green: "Green",
- Blue: "Blue",
- Indigo: "Indigo",
- Purple: "Purple",
- Pink: "Pink",
- "Search...": "Search...",
- "Avg. Ping": "Avg. Ping",
- "Avg. Response": "Avg. Response",
- "Entry Page": "Entry Page",
- statusPageNothing: "Nothing here, please add a group or a monitor.",
- "No Services": "No Services",
- "All Systems Operational": "All Systems Operational",
- "Partially Degraded Service": "Partially Degraded Service",
- "Degraded Service": "Degraded Service",
- "Add Group": "Add Group",
- "Add a monitor": "Add a monitor",
- "Edit Status Page": "Edit Status Page",
- "Go to Dashboard": "Go to Dashboard",
- "Status Page": "Status Page",
- "Status Pages": "Status Pages",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Support 50+ Notification services)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
-};
diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js
deleted file mode 100644
index 1fc35be10..000000000
--- a/src/languages/sv-SE.js
+++ /dev/null
@@ -1,110 +0,0 @@
-export default {
- languageName: "Svenska",
- checkEverySecond: "Uppdatera var {0} sekund.",
- retriesDescription: "Max antal försök innan tjänsten markeras som nere och en notis skickas",
- ignoreTLSError: "Ignorera TLS/SSL-fel för webbsidor med HTTPS",
- upsideDownModeDescription: "Vänd upp och ner på statusen. Om tjänsten är nåbar visas den som NERE.",
- maxRedirectDescription: "Max antal omdirigeringar att följa. Välj 0 för att avaktivera omdirigeringar.",
- acceptedStatusCodesDescription: "Välj statuskoder som räknas som lyckade.",
- passwordNotMatchMsg: "Det bekräftade lösenordet stämmer ej överens.",
- notificationDescription: "Vänligen lägg till en notistjänst till dina övervakare.",
- keywordDescription: "Sök efter nyckelord i ren HTML eller JSON-svar. Sökningen är skiftkänslig.",
- pauseDashboardHome: "Pausa",
- deleteMonitorMsg: "Är du säker på att du vill ta bort den här övervakningen?",
- deleteNotificationMsg: "Är du säker på att du vill ta bort den här notisen för alla övervakare?",
- resolverserverDescription: "Cloudflare är den förvalda servern. Du kan byta resolver när som helst.",
- rrtypeDescription: "Välj den RR-typ du vill övervaka",
- pauseMonitorMsg: "Är du säker på att du vill pausa?",
- Settings: "Inställningar",
- Dashboard: "Infopanel",
- "New Update": "Ny uppdatering",
- Language: "Språk",
- Appearance: "Utseende",
- Theme: "Tema",
- General: "Allmänt",
- Version: "Version",
- "Check Update On GitHub": "Sök efter uppdatering på GitHub",
- List: "Lista",
- Add: "Lägg till",
- "Add New Monitor": "Lägg Till Ny Övervakare",
- "Quick Stats": "Snabbstatistik",
- Up: "Uppe",
- Down: "Nere",
- Pending: "Pågående",
- Unknown: "Okänt",
- Pause: "Pausa",
- Name: "Namn",
- Status: "Status",
- DateTime: "Datum & Tid",
- Message: "Meddelande",
- "No important events": "Inga viktiga händelser",
- Resume: "Återuppta",
- Edit: "Redigera",
- Delete: "Ta bort",
- Current: "Nuvarande",
- Uptime: "Drifttid",
- "Cert Exp.": "Certifikat utgår",
- day: "dag | dagar",
- "-day": " dagar",
- hour: "timme",
- "-hour": " timmar",
- Response: "Svar",
- Ping: "Ping",
- "Monitor Type": "Övervakningstyp",
- Keyword: "Nyckelord",
- "Friendly Name": "Namn",
- URL: "URL",
- Hostname: "Värdnamn",
- Port: "Port",
- "Heartbeat Interval": "Hjärtslagsintervall",
- Retries: "Försök",
- Advanced: "Avancerat",
- "Upside Down Mode": "Upp och ner-läge",
- "Max. Redirects": "Max antal omdirigeringar",
- "Accepted Status Codes": "Tillåtna statuskoder",
- Save: "Spara",
- Notifications: "Notiser",
- "Not available, please setup.": "Ej tillgänglig, vänligen konfigurera.",
- "Setup Notification": "Ny Notistjänst",
- Light: "Ljust",
- Dark: "Mörkt",
- Auto: "Automatiskt",
- "Theme - Heartbeat Bar": "Tema - Heartbeat Bar",
- Normal: "Normal",
- Bottom: "Botten",
- None: "Tomt",
- Timezone: "Tidszon",
- "Search Engine Visibility": "Synlighet på Sökmotorer",
- "Allow indexing": "Tillåt indexering",
- "Discourage search engines from indexing site": "Hindra sökmotorer från att indexera sidan",
- "Change Password": "Byt Lösenord",
- "Current Password": "Nuvarande Lösenord",
- "New Password": "Nytt Lösenord",
- "Repeat New Password": "Upprepa Nytt Lösenord",
- "Update Password": "Uppdatera Lösenord",
- "Disable Auth": "Avaktivera Autentisering",
- "Enable Auth": "Aktivera Autentisering",
- Logout: "Logga ut",
- Leave: "Lämna",
- "I understand, please disable": "Jag förstår, vänligen avaktivera",
- Confirm: "Bekräfta",
- Yes: "Ja",
- No: "Nej",
- Username: "Användarnamn",
- Password: "Lösenord",
- "Remember me": "Kom ihåg mig",
- Login: "Logga in",
- "No Monitors, please": "Inga Övervakare, tack",
- "add one": "lägg till en",
- "Notification Type": "Notistyp",
- Email: "Email",
- Test: "Test",
- "Certificate Info": "Certifikatsinfo",
- "Resolver Server": "Resolverserver",
- "Resource Record Type": "RR-typ",
- "Last Result": "Senaste resultat",
- "Create your admin account": "Skapa ditt administratörskonto",
- "Repeat Password": "Upprepa Lösenord",
- respTime: "Svarstid (ms)",
- notAvailableShort: "Ej Tillg.",
-};
diff --git a/src/languages/th-TH.js b/src/languages/th-TH.js
deleted file mode 100644
index 3d847038d..000000000
--- a/src/languages/th-TH.js
+++ /dev/null
@@ -1,580 +0,0 @@
-export default {
- languageName: "ไทย",
- checkEverySecond: "ตรวจสอบทุก {0} วินาที",
- retryCheckEverySecond: "ลองใหม่ทุก {0} วินาที",
- retriesDescription: "จำนวนครั้งสูงสุดที่จะลองก่อนบริการถูกระบุว่าไม่สามารถใช้งานได้และส่งการแจ้งเตือน",
- ignoreTLSError: "ไม่สนใจข้อผิดพลาด TLS/SSL สำหรับเว็บไซต์ HTTPS",
- upsideDownModeDescription: "กลับด้านสถานะ เช่น ถ้าบริการสามารถใช้งานได้จะถูกเปลี่ยนเป็นใช้งานไม่ได้",
- maxRedirectDescription: "จำนวนครั้งสูงสุดที่จะเปลี่ยนเส้นทาง, ตั้งเป็น 0 เพื่อปิดการเปลี่ยนเส้นทาง",
- acceptedStatusCodesDescription: "เลือกรหัสสถานะที่ถือว่าการตอบกลับสำเร็จ",
- passwordNotMatchMsg: "รหัสผ่านไม่ตรงกัน",
- notificationDescription: "การแจ้งเตือนต้องกำหนดให้มอนิเตอร์เพื่อให้สามารถใช้งานได้",
- keywordDescription: "ค้นหาคำสำคัญใน HTML หรือ JSON ของการตอบกลับ, คำสำคัญต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่",
- pauseDashboardHome: "หยุดชั่วคราว",
- deleteMonitorMsg: "คุณแน่ใจหรือไม่ที่จะลบมอนิเตอร์?",
- deleteNotificationMsg: "คุณแน่ใจหรือไม่ที่จะลบการแจ้งเตือนสำหรับมอนิเตอร์ทั้งหมด?",
- resolverserverDescription: "Cloudflare เป็นเซิร์ฟเวอร์ค้นหาเริ่มต้น, คุณสามารถเปลี่ยนเซิร์ฟเวอร์ได้ตลอดเวลา",
- rrtypeDescription: "เลือกประเภท DNS Record ที่คุณต้องการจะมอนิเตอร์",
- pauseMonitorMsg: "คุณแน่ใจหรือไม่ที่จะหยุดมอนิเตอร์ชั่วคราว?",
- enableDefaultNotificationDescription: "การแจ้งเตือนนี้จะถูกเปิดโดยค่าเริ่มต้นสำหรับมอนิเตอร์ใหม่, คุณสามารถปิดการแจ้งเตือนสำหรับแต่ละมอนิเตอร์ได้",
- clearEventsMsg: "คุณแน่ใจหรือไม่ที่จะลบเหตุการณ์ทั้งหมดสำหรับมอนิเตอร์นี้?",
- clearHeartbeatsMsg: "คุณแน่ใจหรือไม่ที่จะลบประวัติการตรวจสอบทั้งหมดสำหรับมอนิเตอร์นี้?",
- confirmClearStatisticsMsg: "คุณแน่ใจหรือไม่ที่จะลบสถิติทั้งหมด?",
- importHandleDescription: "เลือก \"ข้ามรายการที่มีอยู่แล้ว\" ถ้าคุณต้องการข้ามทุกมอนิเตอร์หรือการแจ้งเตือนที่มีชื่อซ้ำกัน, \"เขียนทับ\" จะลบทุกมอนิเตอร์หรือการแจ้งเตือนที่มีชื่อซ้ำกัน",
- confirmImportMsg: "คุณแน่ใจหรือไม่ที่จะนำเข้าข้อมูลสำรอง, กรุณาตรวจสอบว่าคุณเลือกข้อมูลที่ถูกต้อง",
- twoFAVerifyLabel: "โปรดกรอกกุญแจ 2FA ของคุณเพื่อยืนยัน:",
- tokenValidSettingsMsg: "กุญแจถูกต้อง, ตอนนี้คุณสามารถบันทึกการตั้งค่า 2FA ของคุณได้แล้ว",
- confirmEnableTwoFAMsg: "คุณแน่ใจหรือไม่ที่จะเปิดใช้งาน 2FA?",
- confirmDisableTwoFAMsg: "คุณแน่ใจหรือไม่ที่จะปิดใช้งาน 2FA?",
- Settings: "การตั้งค่า",
- Dashboard: "แผงควบคุม",
- "New Update": "อัพเดทใหม่",
- Language: "ภาษา",
- Appearance: "รูปร่าง",
- Theme: "หน้าตา",
- General: "ทั่วไป",
- "Primary Base URL": "URL หลัก",
- Version: "เวอร์ชั่น",
- "Check Update On GitHub": "ตรวจสอบการอัปเดตบน GitHub",
- List: "รายการ",
- Add: "เพิ่ม",
- "Add New Monitor": "เพิ่มมอนิเตอร์ใหม่",
- "Quick Stats": "สถิติด่วน",
- Up: "ใช้งานได้",
- Down: "ไม่สามารถใช้งานได้",
- Pending: "รอดำเนินการ",
- Unknown: "ไม่ทราบ",
- Pause: "หยุดชั่วคราว",
- Name: "ชื่อ",
- Status: "สถานะ",
- DateTime: "วันที่และเวลา",
- Message: "ข้อความ",
- "No important events": "ไม่มีเหตการณ์ที่สำคัญ",
- Resume: "ดำเนินการต่อ",
- Edit: "แก้ไข",
- Delete: "ลบ",
- Current: "ปัจจุบัน",
- Uptime: "เวลาที่ใช้งานได้",
- "Cert Exp.": "วันหมดอายุใบรับรอง",
- days: "วัน",
- day: "วัน",
- "-day": "-วัน",
- hour: "ชั่วโมง",
- "-hour": "-ชั่วโมง",
- Response: "การตอบสนอง",
- Ping: "การตอบสนอง",
- "Monitor Type": "ประเภทมอนิเตอร์",
- Keyword: "คำสำคัญ",
- "Friendly Name": "ชื่อที่เป็นมิตร",
- URL: "URL",
- Hostname: "ชื่อโฮสต์",
- Port: "พอร์ต",
- "Heartbeat Interval": "ระยะเวลาระหว่างการทดสอบ",
- Retries: "จำนวนครั้งที่จะลองใหม่",
- "Heartbeat Retry Interval": "ระยะห่างระหว่างการทดสอบใหม่หลังจากไม่สำเร็จ",
- Advanced: "ขั้นสูง",
- "Upside Down Mode": "โหมดกลับด้าน",
- "Max. Redirects": "จำนวนการเปลี่ยนเส้นทางสูงสุด",
- "Accepted Status Codes": "รหัสสถานะที่ยอมรับ",
- "Push URL": "URL เป้าหมาย",
- needPushEvery: "คุณควรเรียก URL นี้ทุก {0} วินาที",
- pushOptionalParams: "ตัวแปรเสริม: {0}",
- Save: "บันทึก",
- Notifications: "การแจ้งเตือน",
- "Not available, please setup.": "ไม่พร้อมใช้งาน, กรุณาตั้งค่า",
- "Setup Notification": "ตั้งค่าการแจ้งเตือน",
- Light: "สว่าง",
- Dark: "มืด",
- Auto: "อัตโนมัติ",
- "Theme - Heartbeat Bar": "หน้าตา - แถบการตอบสนอง",
- Normal: "ปกติ",
- Bottom: "ด้านล่าง",
- None: "ไม่มี",
- Timezone: "เขตเวลา",
- "Search Engine Visibility": "การมองเห็นของเครื่องมือค้นหา",
- "Allow indexing": "อนุญาตให้สร้างดัชนี",
- "Discourage search engines from indexing site": "ปฏิเสธเครื่องมือค้นหาไม่ให้สร้างดัชนีของเว็บไซต์",
- "Change Password": "เปลี่ยนรหัสผ่าน",
- "Current Password": "รหัสผ่านปัจจุบัน",
- "New Password": "รหัสผ่านใหม่",
- "Repeat New Password": "ยืนยันรหัสผ่านใหม่",
- "Update Password": "อัพเดทรหัสผ่าน",
- "Disable Auth": "ปิดใช้งานการตรวจสอบสิทธิ์",
- "Enable Auth": "เปิดใช้งานการตรวจสอบสิทธิ์",
- "disableauth.message1": "คุณต้องการที่จะ ปิดใช้งานระบบรับรองความถูกต้องใช่หรือไม่ ?",
- "disableauth.message2": "ระบบนี้ถูกออกแบบมาเพื่อการใช้งานกับระบบรับรองความถูกต้องของบุคคลที่สามเช่น Cloudflare Access, Authelia หรือวิธีการอื่น ๆ",
- "Please use this option carefully!": "โปรดใช้ความระมัดระวังในการเลือกใช้งานระบบนี้ !",
- Logout: "ออกจากระบบ",
- Leave: "ออก",
- "I understand, please disable": "ฉันเข้าใจแล้ว, กรุณาปิดการใช้งาน",
- Confirm: "ยืนยัน",
- Yes: "ใช่",
- No: "ไม่",
- Username: "ชื่อผู้ใช้",
- Password: "รหัสผ่าน",
- "Remember me": "จดจำฉันไว้",
- Login: "เข้าสู่ระบบ",
- "No Monitors, please": "ไม่มีมอนิเตอร์, กรุณา",
- "add one": "สร้าง",
- "Notification Type": "ประเภทการแจ้งเตือน",
- Email: "อีเมล",
- Test: "ทดสอบ",
- "Certificate Info": "ข้อมูลใบรับรอง",
- "Resolver Server": "เซิร์ฟเวอร์ที่ค้นหา",
- "Resource Record Type": "ประเภท DNS Record",
- "Last Result": "ผลล่าสุด",
- "Create your admin account": "สร้างบัญชีผู้ดูแลระบบ",
- "Repeat Password": "ยืนยันรหัสผ่าน",
- "Import Backup": "นำเข้าข้อมูลสำรอง",
- "Export Backup": "ส่งออกข้อมูลสำรอง",
- Export: "ส่งออก",
- Import: "นำเข้า",
- respTime: "ระยะเวลาการตอบสนอง (ms)",
- notAvailableShort: "ไม่สามารถใช้งานได้",
- "Default enabled": "เปิดใช้งานโดยค่าเริ่มต้น",
- "Apply on all existing monitors": "ใช้กับมอนิเตอร์ทั้งหมด",
- Create: "สร้าง",
- "Clear Data": "ล้างข้อมูล",
- Events: "เหตุการณ์",
- Heartbeats: "ประวัติการตรวจสอบ",
- "Auto Get": "ดึงอัตโนมัติ",
- backupDescription: "คุณสามารถสำรองข้อมูลการแจ้งเตือนและมอนิเตอร์ทั้งหมดไว้ได้ในไฟล์ JSON",
- backupDescription2: "หมายเหตุ : ประวัติและข้อมูลเหตการณ์จะไม่ถูกสำรอง",
- backupDescription3: "ข้อมูลที่ละเอียดอ่อนเช่นกุญแจการแจ้งเตือนจะรวมอยู่ในไฟล์ข้อมูลสำรอง, โปรดเก็บข้อมูลสำรองอย่างปลอดภัย",
- alertNoFile: "กรุณาเลือกไฟล์ที่จะใช้งาน",
- alertWrongFileType: "กรุณาเลือกไฟล์ที่เป็น JSON",
- "Clear all statistics": "ล้างข้อมูลสถิติทั้งหมด",
- "Skip existing": "ข้ามรายการที่มีอยู่แล้ว",
- Overwrite: "เขียนทับ",
- Options: "ตัวเลือก",
- "Keep both": "เก็บทั้งสอง",
- "Verify Token": "ยืนยันกุญแจ",
- "Setup 2FA": "ติดตั้ง 2FA",
- "Enable 2FA": "เปิดใช้งาน 2FA",
- "Disable 2FA": "ปิดใช้งาน 2FA",
- "2FA Settings": "ตั้งค่า 2FA",
- "Two Factor Authentication": "การยืนยันตัวตนแบบสองขั้นตอน",
- Active: "ใช้งาน",
- Inactive: "ไม่ใช้งาน",
- Token: "กุญแจ",
- "Show URI": "แสดง URI",
- Tags: "แท็ก",
- "Add New below or Select...": "เพิ่มใหม่ด้านล่างหรือเลือก...",
- "Tag with this name already exist.": "แท็กที่มีชื่อนี้มีอยู่แล้ว",
- "Tag with this value already exist.": "แท็กที่มีข้อมูลนี้มีอยู่แล้ว",
- color: "สี",
- "value (optional)": "ข้อมูล (ไม่จำเป็น)",
- Gray: "เทา",
- Red: "แดง",
- Orange: "ส้ม",
- Green: "เขียว",
- Blue: "น้ำเงิน",
- Indigo: "ม่วง",
- Purple: "ม่วง",
- Pink: "ชมพู",
- "Search...": "ค้นหา...",
- "Avg. Ping": "ค่า Ping เฉลี่ย",
- "Avg. Response": "ค่า Response เฉลี่ย",
- "Entry Page": "หน้าต้อนรับ",
- statusPageNothing: "ไม่มีอะไรตรงนี้ !, กรุณาเพิ่มกลุ่มหรือมอนิเตอร์",
- "No Services": "ไม่มีบริการ",
- "All Systems Operational": "บริการทั้งหมดทำงานได้ปกติ",
- "Partially Degraded Service": "บริการมีปัญหาบางส่วน",
- "Degraded Service": "บริการมีปัญหา",
- "Add Group": "เพิ่มกลุ่ม",
- "Add a monitor": "เพิ่มมอนิเตอร์",
- "Edit Status Page": "แก้ไขหน้าสถานะ",
- "Go to Dashboard": "ไปที่หน้าควบคุม",
- "Status Page": "หน้าสถานะ",
- "Status Pages": "หน้าสถานะ",
- defaultNotificationName: "การแจ้งเตือน {notification} ของฉัน ({number})",
- here: "ที่นี่",
- Required: "จำเป็น",
- telegram: "Telegram",
- "Bot Token": "กุญแจของบอท",
- wayToGetTelegramToken: "คุณสามารถรับกุญแจได้จาก {0}.",
- "Chat ID": "ไอดีแชท",
- supportTelegramChatID: "รองรับ แชทส่วนตัว, แชทกลุ่ม, ไอดีแชท",
- wayToGetTelegramChatID: "คุณสามารถรับ ID แชทของคุณได้โดยส่งข้อความไปยังบอทและไปที่ URL นี้เพื่อดู chat_id :",
- "YOUR BOT TOKEN HERE": "กุญแจของบอทของคุณที่นี่",
- chatIDNotFound: "ไม่พบไอดีแชท, กรุณาส่งข้อความไปที่บอท",
- webhook: "Webhook",
- "Post URL": "URL โพสต์",
- "Content Type": "ประเภทเนื้อหา",
- webhookJsonDesc: "{0} ดีสำหรับเซิร์ฟเวอร์ HTTP สมัยใหม่เช่น Express.js",
- webhookFormDataDesc: "{multipart} ดีสำหรับ PHP, ข้อมูล JSON จะต้องถูกประมวลผลด้วย {decodeFunction}",
- smtp: "Email (SMTP)",
- secureOptionNone: "None / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "เพิกเฉยข้อผิดพลาด TLS",
- "From Email": "จากอีเมล",
- emailCustomSubject: "หัวข้อที่กำหนดเอง",
- "To Email": "ถึงอีเมล",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "คุณสามารถรับได้โดยการไปที่ Server Settings -> Integrations -> Create Webhook",
- "Bot Display Name": "ชื่อบอท",
- "Prefix Custom Message": "คำนำหน้าข้อความที่กำหนดเอง",
- "Hello @everyone is...": "สวัสดี {'@'}everyone นี่...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "คุณสามารถเรียนรู้วิธีการสร้าง Webhook URL {0}",
- signal: "Signal",
- Number: "หมายเลข",
- Recipients: "ผู้รับ",
- needSignalAPI: "คุณต้องมี Signal Client ที่มี Rest API",
- wayToCheckSignalURL: "คุณสามารถตรวจสอบ URL นี้เพื่อดูวิธีตั้งค่า :",
- signalImportant: "สำคัญ: คุณไม่สามารถผสมกลุ่มและตัวเลขในผู้รับได้!",
- gotify: "Gotify",
- "Application Token": "กุญแจของแอพพลิเคชั่น",
- "Server URL": "Server URL",
- Priority: "ลำดับความสำคัญ",
- slack: "Slack",
- "Icon Emoji": "Icon Emoji",
- "Channel Name": "ชื่อห้อง",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "ข้อมูลเพิ่มเติมสำหรับ Webhooks : {0}",
- aboutChannelName: "ใส่ชื่อห้องใน {0} ในช่องชื่อห้องถ้าต้องการที่จะข้าม Webhook, เช่น: #ช่องอื่นๆ",
- aboutKumaURL: "ถ้าคุณไม่ใส่ข้อมูลในช่อง Uptime Kuma URL ค่าเริ่มต้นจะเป็นจะเป็น Uptime Kuma Github",
- emojiCheatSheet: "ตาราง Emoji : {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (รองรับการแจ้งเตือนมากกว่า 50 บริการ)",
- GoogleChat: "Google Chat (สำหรับ Google Workspace เท่านั้น)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "กุญแจผู้ใช้งาน",
- Device: "อุปกรณ์",
- "Message Title": "หัวข้อข้อความ",
- "Notification Sound": "เสียงแจ้งเตือน",
- "More info on:": "ข้อมูลเพิ่มเติม : {0}",
- pushoverDesc1: "ลำดับความสำคัญฉุกเฉิน (2) มีการหมดเวลาเริ่มต้น 30 วินาทีระหว่างการลองใหม่และจะหมดอายุหลังจาก 1 ชั่วโมง",
- pushoverDesc2: "ถ้าคุณต้องการจะส่งการแจ้งเตือนไปยังอุปกรณ์อื่นๆ สามารถกำหนดได้ที่ช่องอุปกรณ์",
- "SMS Type": "ประเภท SMS",
- octopushTypePremium: "พรีเมี่ยม (เร็ว - แนะนำสำหรับการแจ้งเตือน)",
- octopushTypeLowCost: "ต้นทุนต่ำ (ช้า - บางครั้งจะถูกบล็อกโดยผู้ให้บริการ)",
- checkPrice: "ตรวจสอบราคาของ {0} :",
- apiCredentials: "ข้อมูลการตรวจสอบสิทธิ์ API",
- octopushLegacyHint: "คุณใช้เวอร์ชันดั้งเดิมของ Octopush (2011 - 2020) หรือเวอร์ชันใหม่หรือไม่?",
- "Check octopush prices": "ตรวจสอบราคาของ Octopush {0}",
- octopushPhoneNumber: "หมายเลขโทรศัพท์ (รูปแบบสากล เช่น +33612345678) ",
- octopushSMSSender: "ชื่อผู้ส่ง SMS : ความยาว 3 - 11 ตัวอักษร, ตัวเลข และช่องว่าง (a-zA-Z0-9 )",
- "LunaSea Device ID": "ไอดีอุปกรณ์ LunaSea",
- "Apprise URL": "Apprise URL",
- "Example:": "ตัวอย่าง : {0}",
- "Read more:": "อ่านเพิ่มเติม : {0}",
- "Status:": "สถานะ : {0}",
- "Read more": "อ่านเพิ่มเติม",
- appriseInstalled: "Apprise ถูกติดตั้งแล้ว",
- appriseNotInstalled: "Apprise ยังไม่ถูกติดตั้ง {0}",
- "Access Token": "กุญแจการเข้าถึง",
- "Channel access token": "กุญแจการเข้าถึงของช่อง",
- "Line Developers Console": "Line Developers Console",
- lineDevConsoleTo: "Line Developers Console - {0}",
- "Basic Settings": "การตั้งค่าพื้นฐาน",
- "User ID": "ไอดีผู้ใช้",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "ขั้นแรกให้เข้า {0} สร้างผู้ให้บริการและช่องทาง (Messaging API) จากนั้นคุณจะได้รับกุญแจการเข้าถึงช่องและไอดีผู้ใช้จากรายการเมนูที่กล่าวถึงข้างต้น",
- "Icon URL": "Icon URL",
- aboutIconURL: "คุณสามารถระบุลิงก์รูปภาพใน \"URL ไอคอน\" เพื่อแทนที่รูปภาพโปรไฟล์เริ่มต้น จะไม่ถูกใช้หากมีการตั้งค่า Icon Emoji",
- aboutMattermostChannelName: "คุณลบช่องเริ่มต้นที่ Webhook โพสต์ได้ด้วยการป้อนชื่อช่องลงในช่อง \"ชื่อช่อง\" ต้องเปิดใช้งานในการตั้งค่า Mattermost Webhook เช่น #ช่องอื่นๆ",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - ราคาถูก แต่ช้าและมักจะโอเวอร์โหลด จำกัดเฉพาะผู้รับในโปแลนด์",
- promosmsTypeFlash: "SMS FLASH - ข้อความจะแสดงบนอุปกรณ์ของผู้รับโดยอัตโนมัติ จำกัดเฉพาะผู้รับในโปแลนด์",
- promosmsTypeFull: "SMS FULL - SMS ระดับพรีเมียม คุณสามารถใช้ชื่อผู้ส่งของคุณได้ (คุณต้องลงทะเบียนชื่อก่อน) เชื่อถือได้สำหรับการแจ้งเตือน",
- promosmsTypeSpeed: "SMS SPEED - ลำดับความสำคัญสูงสุดในระบบ รวดเร็วและเชื่อถือได้ แต่มีค่าใช้จ่ายสูง (ประมาณสองเท่าของราคาเต็ม SMS)",
- promosmsPhoneNumber: "หมายเลขโทรศัพท์ (สำหรับผู้รับโปแลนด์ คุณสามารถข้ามรหัสพื้นที่ได้)",
- promosmsSMSSender: "ชื่อผู้ส่ง SMS : ชื่อที่ลงทะเบียนล่วงหน้าหรือหนึ่งในค่าเริ่มต้น: InfoSMS, ข้อมูล SMS, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "URL ของโฮมเซิร์ฟเวอร์ (พร้อม http(s):// และพอร์ตเสริม)",
- "Internal Room Id": "รหัสห้องภายใน",
- matrixDesc1: "คุณค้นหารหัสห้องภายในได้โดยดูในส่วนขั้นสูงของการตั้งค่าห้องในไคลเอ็นต์ Matrix มันควรจะมีลักษณะเช่น !PMdRCpsIfLwsfjIye6:kiznick.server.",
- matrixDesc2: "ขอแนะนำเป็นอย่างยิ่งให้คุณสร้างผู้ใช้ใหม่และอย่าใช้โทเค็นการเข้าถึงของผู้ใช้ Matrix ของคุณเอง เนื่องจากจะทำให้สามารถเข้าถึงบัญชีของคุณและห้องทั้งหมดที่คุณเข้าร่วม ให้สร้างผู้ใช้ใหม่และเชิญเฉพาะห้องที่คุณต้องการรับการแจ้งเตือนแทน คุณสามารถรับโทเค็นเพื่อการเข้าถึงได้โดยเรียกใช้ {0}",
- Method: "วิธี",
- Body: "เนื้อหา",
- Headers: "ส่วนหัว",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "เนื้อหาคำขอส่วนหัวไม่ใช่ JSON ที่ถูกต้อง :",
- BodyInvalidFormat: "เนื้อหาคำขอไม่ใช่ JSON ที่ถูกต้อง : ",
- "Monitor History": "ประวัติมอนิเตอร์",
- clearDataOlderThan: "เก็บข้อมูลมอนิเตอร์ {0} วัน",
- PasswordsDoNotMatch: "รหัสผ่านไม่ตรงกัน",
- records: "บันทึก",
- "One record": "หนึ่งบันทึก",
- steamApiKeyDescription: "สำหรับการมอนิเตอร์ Steam Game Server คุณต้องมี Steam Web-API key, คุณสามารถสมัครได้จากที่นี่ : ",
- "Current User": "ผู้ใช้ปัจจุบัน",
- topic: "หัวข้อ",
- topicExplanation: "หัวข้อ MQTT ที่จะมอนิเตอร์",
- successMessage: "ข้อความที่จะถือว่าประสบความสำเร็จ",
- successMessageExplanation: "ข้อความ MQTT ที่จะถือว่าประสบความสำเร็จ",
- recent: "ล่าสุด",
- Done: "สำเร็จ",
- Info: "ข้อมูล",
- Security: "ความปลอดภัย",
- "Steam API Key": "Steam API Key",
- "Shrink Database": "ย่อฐานข้อมูล",
- "Pick a RR-Type...": "เลือกชนิด DNS Record",
- "Pick Accepted Status Codes...": "เลือกสถานะที่ยอมรับ...",
- Default: "ค่าเริ่มต้น",
- "HTTP Options": "ตัวเลือก HTTP",
- "Create Incident": "สร้างเหตุการณ์",
- Title: "หัวข้อ",
- Content: "เนื้อหา",
- Style: "สไตล์",
- info: "ข้อมูล",
- warning: "แจ้งเตือน",
- danger: "อันตราย",
- primary: "หลัก",
- light: "สว่าง",
- dark: "มืด",
- Post: "โพสต์",
- "Please input title and content": "กรุณาใส่ชื่อและเนื้อหา",
- Created: "สร้าง",
- "Last Updated": "อัพเดทล่าสุด",
- Unpin: "เลิกตรึง",
- "Switch to Light Theme": "เปลี่ยนเป็นแบบสว่าง",
- "Switch to Dark Theme": "เปลี่ยนเป็นแบบมืด",
- "Show Tags": "แสดงแท็ก",
- "Hide Tags": "ซ่อนแท็ก",
- Description: "รายละเอียด",
- "No monitors available.": "ไม่มีมอนิเตอร์ที่สามารถใช้งานได้",
- "Add one": "เพิ่ม",
- "No Monitors": "ไม่มีมอนิเตอร์",
- "Untitled Group": "กลุ่มที่ไม่มีชื่อ",
- Services: "บริการ",
- Discard: "ทิ้ง",
- Cancel: "ยกเลิก",
- "Powered by": "ขับเคลื่อนโดย",
- shrinkDatabaseDescription: "ทริกเกอร์ฐานข้อมูล VACUUM สำหรับ SQLite หากฐานข้อมูลของคุณถูกสร้างขึ้นหลังจากเวอร์ชั่น 1.10.0 แสดงว่า AUTO_VACUUM เปิดใช้งานอยู่แล้วและไม่จำเป็นต้องดำเนินการนี้",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Username (incl. webapi_ prefix)",
- serwersmsAPIPassword: "API Password",
- serwersmsPhoneNumber: "หมายเลขโทรศัพท์",
- serwersmsSenderName: "ชื่อผู้ส่ง SMS (ลงทะเบียนผ่านหน้าควบคุม)",
- stackfield: "Stackfield",
- Customize: "ปรับแต่ง",
- "Custom Footer": "ส่วนท้ายที่กำหนดเอง",
- "Custom CSS": "CSS ที่กำหนดเอง",
- smtpDkimSettings: "การตั้งค่า DKIM",
- smtpDkimDesc: "โปรดดู Nodemailer DKIM {0} สำหรับการใช้งาน",
- documentation: "คู่มือการใช้งาน",
- smtpDkimDomain: "ชื่อโดเมน",
- smtpDkimKeySelector: "Key Selector",
- smtpDkimPrivateKey: "Private Key",
- smtpDkimHashAlgo: "อัลกอริทึมแฮช (ไม่บังคับ)",
- smtpDkimheaderFieldNames: "คีย์ส่วนหัวสำหรับลงชื่อ (ไม่บังคับ)",
- smtpDkimskipFields: "Header Keys ไม่ต้องเซ็น (ไม่บังคับ)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "Environment",
- alertaApiKey: "กุญแจ API",
- alertaAlertState: "แจ้งเตือนสถานะ",
- alertaRecoverState: "กู้คืนสถานะ",
- deleteStatusPageMsg: "คุณแน่ใจหรือไม่ว่าต้องการลบหน้าสถานะนี้",
- Proxies: "พร็อกซี",
- default: "ค่าเริ่มต้น",
- enabled: "เปิดใช้งานแล้ว",
- setAsDefault: "ตั้งเป็นค่าเริ่มต้น",
- deleteProxyMsg: "คุณแน่ใจหรือไม่ว่าต้องการลบพร็อกซีสำหรับมอนิเตอร์ทั้งหมด?",
- proxyDescription: "ต้องตั้งค่ามอนิเตอร์ให้ใช้พร็อกซีเพื่อให้ใช้งานได้",
- enableProxyDescription: "พร็อกซีนี้จะไม่ส่งผลต่อมอนิเตอร์จนกว่าจะเปิดใช้งาน คุณสามารถควบคุมการปิดใช้งานพร็อกซีชั่วคราวจากมอนิเตอร์ทั้งหมดได้ที่ส่วนสถานะการเปิดใช้งาน",
- setAsDefaultProxyDescription: "พร็อกซีนี้จะถูกเปิดโดนค่าเริ่มต้นสำหรับมอนิเตอร์ใหม่, คุณสามารถปิดการแจ้งเตือนสำหรับแต่ละมอนิเตอร์ได้",
- "Certificate Chain": "ห่วงโซ่ใบรับรอง",
- Valid: "ถูกต้อง",
- Invalid: "ไม่ถูกต้อง",
- AccessKeyId: "กุญแจสิทธิ ID",
- SecretAccessKey: "กุญแจสิทธิ Secret",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "รหัสเทมเพลต",
- SignName: "ป้ายชื่อ",
- "Sms template must contain parameters: ": "เทมเพลต SMS ต้องมีพารามิเตอร์ : ",
- "Bark Endpoint": "Bark Endpoint",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "เพื่อความปลอดภัย จำเป็นต้องตั้งค่ากุญแจการเข้าถึง",
- "Device Token": "Device Token",
- Platform: "แพลตฟอร์ม",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "สูง",
- Retry: "ลองใหม่",
- Topic: "หัวข้อ",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "ติดตั้งพร็อกซี่",
- "Proxy Protocol": "โปรโตคอลพร็อกซี่",
- "Proxy Server": "เซิร์ฟเวอร์พร็อกซี",
- "Proxy server has authentication": "พร็อกซีเซิร์ฟเวอร์มีการตรวจสอบสิทธิ์",
- User: "ผู้ใช้",
- Installed: "ติดตั้งแล้ว",
- "Not installed": "ไม่ได้ติดตั้ง",
- Running: "กำลังทำงาน",
- "Not running": "ไม่ได้ทำงาน",
- "Remove Token": "ลบกุญแจ",
- Start: "เริ่ม",
- Stop: "หยุด",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "เพิ่มหน้าสถานะใหม่",
- Slug: "ชื่อ",
- "Accept characters:": "ตัวอักษรที่ใช้งานได้ :",
- startOrEndWithOnly: "เริ่มหรือจบด้วย {0} เท่านั้น",
- "No consecutive dashes": "ไม่มีขีดกลางติดต่อกัน",
- Next: "ต่อไป",
- "The slug is already taken. Please choose another slug.": "ชื่อนี้ถูกใช้งานแล้ว กรุณาใช้ชื่ออื่น",
- "No Proxy": "ไม่มีพร็อกซี่",
- "HTTP Basic Auth": "HTTP Basic Auth",
- "New Status Page": "หน้าสถานะใหม่",
- "Page Not Found": "ไม่พบหน้านี้",
- "Reverse Proxy": "พร็อกซีย้อนกลับ",
- Backup: "สำรองข้อมูล",
- About: "เกี่ยวกับ",
- wayToGetCloudflaredURL: "(ดาวโหลด cloudflared จาก {0})",
- cloudflareWebsite: "เว็บไซต์ Cloudflare",
- "Message:": "ข้อความ :",
- "Don't know how to get the token? Please read the guide:": "ไม่รู้วิธีการรับกุญแจ?, กรุณาอ่านคู่มือ",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "การเชื่อมต่อปัจุบันอาจขาดหายหากคุณกำลังเชื่อมต่อ Cloudflare Tunnel คุณแน่ใจหรือไม่ที่จะหยุด, พิมรหัสผ่านของคุณเพื่อยืนยัน",
- "Other Software": "ซอฟต์แวร์อื่นๆ ",
- "For example: nginx, Apache and Traefik.": "เช่น: nginx, Apache และ Traefik",
- "Please read": "กรุณาอ่าน",
- "Subject:": "เรื่อง :",
- "Valid To:": "ใช้ได้ถึง :",
- "Days Remaining:": "จำนวนวันที่เหลือ :",
- "Issuer:": "ผู้ออก :",
- "Fingerprint:": "ลายนิ้วมือ :",
- "No status pages": "ไม่มีหน้าสถานะ",
- "Domain Name Expiry Notification": "แจ้งเตือนการหมดอายุของโดเมน",
- Proxy: "Proxy",
- "Date Created": "วันที่สร้าง",
- onebotHttpAddress: "ที่อยู่ HTTP OneBot ",
- onebotMessageType: "ชนิดข้อความ OneBot",
- onebotGroupMessage: "กลุ่ม",
- onebotPrivateMessage: "ส่วนตัว",
- onebotUserOrGroupId: "กลุ่ม / ไอดีผู้ใช้",
- onebotSafetyTips: "เพื่อความปลอดภัย จำเป็นต้องตั้งค่ากุญแจการเข้าถึง",
- "PushDeer Key": "กุญแจ PushDeer",
- "Footer Text": "ข้อความส่วนท้าย",
- "Show Powered By": "แสดงข้อความ \"ขับเคลื่อนโดย\"",
- "Domain Names": "Domain Names",
- signedInDisp: "เข้าใช้งานในฐานะ {0}",
- signedInDispDisabled: "ปิดการยืนยันตัวตน",
- "Certificate Expiry Notification": "แจ้งเตือนใบรับรองหมดอายุ",
- "API Username": "API Username",
- "API Key": "API Key",
- "Recipient Number": "หมายเลขผู้รับ",
- "From Name/Number": "จาก ชื่อ / หมายเลข",
- "Leave blank to use a shared sender number.": "ไม่ต้องกรอกเพื่อใช้ชื่อผู้ส่งร่วมกัน",
- "Octopush API Version": "Octopush API Version",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- endpoint: "endpoint",
- octopushAPIKey: "\"API key\" จากข้อมูลยืนยันตัวตน HTTP API ในแผงควบคุม",
- octopushLogin: "\"Login\" จากข้อมูลยืนยันตัวตน HTTP API ในแผงควบคุม",
- promosmsLogin: "API Login Name",
- promosmsPassword: "API Password",
- "pushoversounds pushover": "Pushover (default)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "Vibrate Only",
- "pushoversounds none": "None (silent)",
- pushyAPIKey: "Secret API Key",
- pushyToken: "Device token",
- "Show update if available": "แสดงการอัปเดตถ้ามี",
- "Also check beta release": "ตรวจสอบรุ่นเบต้า",
- "Using a Reverse Proxy?": "ใช้ Reverse Proxy อยู่ใช่มั้ย?",
- "Check how to config it for WebSocket": "ตรวจสอบวิธีการตั้งค่าสำหรับ WebSocket",
- "Steam Game Server": "Steam Game Server",
- "Most likely causes:": "สาเหตุที่เป็นไปได้มากที่สุด :",
- "The resource is no longer available.": "ทรัพยากรไม่สามารถใช้งานได้อีกต่อไป",
- "There might be a typing error in the address.": "อาจมีข้อผิดพลาดในการพิมพ์ที่อยู่",
- "What you can try:": "สิ่งที่คุณสามารถลองทำ :",
- "Retype the address.": "พิมพ์ที่อยู่อีกครั้ง",
- "Go back to the previous page.": "กลับไปหน้าที่แล้ว",
- "Coming Soon": "เร็วๆ นี้",
- wayToGetClickSendSMSToken: "คุณสามารถรับ API Username และ API Key ได้จาก {0}",
- wayToGetLineNotifyToken: "คุณสามารถรับ access token ได้จาก {0}",
- resendEveryXTimes: "ส่งซ้ำทุก {0} ครั้ง",
- resendDisabled: "การส่งซ้ำถูกปิดใช้งาน",
- dnsPortDescription: "พอร์ตของเซิร์ฟเวอร์ DNS, ค่าเริ่มต้นคือ 53, คุณสามารถเปลี่ยนพอร์ตตอนไหนก็ได้",
- "Resend Notification if Down X times consequently": "ส่งการแจ้งเตือนซ้ำถ้าออฟไลน์ครบ X ครั้ง",
- error: "เกิดข้อผิดพลาด",
- critical: "วิกฤต",
- wayToGetPagerDutyKey: "คุณสามารถรับคีย์ได้โดยการไปที่ Service -> Service Directory -> (Select a service) -> Integrations -> Add integration, และค้นหา \"Events API V2\", สำหรับข้อมูลเพิ่มเติม {0}",
- "Integration Key": "Integration Key",
- "Integration URL": "Integration URL",
- "Auto resolve or acknowledged": "แก้ไขอัตโนมัติหรือยอมรับ",
- "do nothing": "ไม่ทำอะไร",
- "auto acknowledged": "ยอมรับอัตโนมัติ",
- "auto resolve": "แก้ไขอัตโนมัติ",
- "Bark Group": "กลุ่มที่จะประกาศ",
- "Bark Sound": "เสียงประกาศ",
- Authentication: "การตรวจสอบสิทธิ์",
- "HTTP Headers": "HTTP Headers",
- "Trust Proxy": "Trust Proxy",
- HomeAssistant: "Home Assistant",
- RadiusSecret: "Radius Secret",
- RadiusSecretDescription: "แบ่งปันคีย์ลับระหว่างผู้ใช้งานและเซิร์ฟเวอร์",
- RadiusCalledStationId: "Called Station Id",
- RadiusCalledStationIdDescription: "Identifier of the called device",
- RadiusCallingStationId: "Calling Station Id",
- RadiusCallingStationIdDescription: "Identifier of the calling device",
- "Connection String": "Connection String",
- Query: "Query",
- settingsCertificateExpiry: "วันหมดอายุของใบรับรอง TLS",
- certificationExpiryDescription: "การตรวจสอบ HTTPS จะแจ้งเตือนถ้าใบอนุญาติ TLS จะหมดอายุใน:",
- "Setup Docker Host": "ติดตั้ง Docker Host",
- "Connection Type": "ประเภทการเชื่อมต่อ",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "คุณแน่ใจหรือไม่ที่จะลบ Docker host นี้สำหรับการมอนิเตอร์ทั้งหมด?",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker Container",
- "Container Name / ID": "Container Name / ID",
- "Docker Host": "Docker Host",
- "Docker Hosts": "Docker Hosts",
- "ntfy Topic": "ntfy Topic",
- Domain: "โดเมน",
- Workstation: "Workstation",
- disableCloudflaredNoAuthMsg: "คุณอยู่ในโหมดไม่มีการตรวจสอบสิทธิ์, ไม่จำเป็นต้องมีรหัสผ่าน",
- trustProxyDescription: "เชื่อ Header 'X-Forwarded-*' ถ้าคุณต้องการไอพีที่ถูกต้องและ Uptime Kuma อยู่ข้างหลัง Nginx หรือ Apache, คุณควรเปิดใช้งาน",
- Examples: "ตัวอย่าง",
- "Home Assistant URL": "Home Assistant URL",
- "Long-Lived Access Token": "Access Token แบบมีอายุนาน",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Access Token แบบมีอายุนานสามารถสร้างได้โดยคลิกชื่อบนโปรไฟล์ (ล่างซ้าย) และเลื่อนไปข้างล่างจากนั้นคลิก \"Create Token\"",
- "Notification Service": "บริการแจ้งเตือน",
- "default: notify all devices": "ค่าเริ่มต้น: แจ้งเตือนทุกอุปกรณ์",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "รายการแจ้งเตือนสามารถหาได้ใน Home Assistant ในเมนู \"Developer Tools > Services\" แล้วค้นหา \"notification\" เพื่อหาชื่ออุปกรณ์หรือชื่อโทรศัพท์",
- "Automations can optionally be triggered in Home Assistant:": "สามารถเลือกสั่งงานระบบอัตโนมัติได้ใน Home Assistant:",
- "Trigger type:": "ชนิดสิ่งกระตุ้น:",
- "Event type:": "ชนิดเหตการณ์:",
- "Event data:": "ข้อมูลกิจกรรม:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "จากนั้นเลือกการกระทำ, ตัวอย่าง เช่น เปลี่ยนเป็นไฟสีแดง",
- "Frontend Version": "เวอร์ชั่น Frontend",
- "Frontend Version do not match backend version!": "เวอร์ชั่น Frontend ไม่ตรงกับ Backend !",
-};
diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js
deleted file mode 100644
index c84fa1f2d..000000000
--- a/src/languages/tr-TR.js
+++ /dev/null
@@ -1,678 +0,0 @@
-export default {
- languageName: "Türkçe",
- checkEverySecond: "{0} Saniyede bir kontrol et.",
- retryCheckEverySecond: "{0} Saniyede bir dene.",
- resendEveryXTimes: "Her {0} bir yeniden gönder",
- resendDisabled: "Yeniden gönderme devre dışı",
- retriesDescription: "Servisin kapalı olarak işaretlenmeden ve bir bildirim gönderilmeden önce maksimum yeniden deneme sayısı",
- ignoreTLSError: "HTTPS web siteleri için TLS/SSL hatasını yoksay",
- upsideDownModeDescription: "Servisin durumunu tersine çevirir. Servis çalışıyorsa kapalı olarak işaretler.",
- maxRedirectDescription: "İzlenecek maksimum yönlendirme sayısı. Yönlendirmeleri devre dışı bırakmak için 0'a ayarlayın.",
- acceptedStatusCodesDescription: "Servisin çalıştığını hangi durum kodları belirlesin?",
- passwordNotMatchMsg: "Şifre eşleşmiyor.",
- notificationDescription: "Servislerin bildirim gönderebilmesi için bir bildirim yöntemi belirleyin.",
- keywordDescription: "Anahtar kelimeyi düz html veya JSON yanıtında arayın ve büyük/küçük harfe duyarlıdır",
- pauseDashboardHome: "Durdur",
- deleteMonitorMsg: "Servisi silmek istediğinden emin misin?",
- deleteNotificationMsg: "Bu bildirimi tüm servisler için silmek istediğinden emin misin?",
- dnsPortDescription: "DNS sunucusu bağlantı noktası. Varsayılan değer 53'tür. Bağlantı noktasını istediğiniz zaman değiştirebilirsiniz.",
- resolverserverDescription: "Cloudflare varsayılan sunucudur, çözümleyici sunucusunu istediğiniz zaman değiştirebilirsiniz.",
- rrtypeDescription: "İzlemek istediğiniz servisin RR-Tipini seçin",
- pauseMonitorMsg: "Durdurmak istediğinden emin misin?",
- enableDefaultNotificationDescription: "Bu bildirim her yeni serviste aktif olacaktır. Bildirimi servisler için ayrı ayrı deaktive edebilirsiniz. ",
- clearEventsMsg: "Bu servisin bütün kayıtlarını silmek istediğinden emin misin?",
- clearHeartbeatsMsg: "Bu servis için tüm sağlık durumunu silmek istediğinden emin misin?",
- confirmClearStatisticsMsg: "Tüm istatistikleri silmek istediğinden emin misin?",
- importHandleDescription: "Aynı isimdeki bütün servisleri ve bildirimleri atlamak için 'Var olanı atla' seçiniz. 'Üzerine yaz' var olan bütün servisleri ve bildirimleri silecektir. ",
- confirmImportMsg: "Yedeği içeri aktarmak istediğinize emin misiniz? Lütfen doğru içeri aktarma seçeneğini seçtiğinizden emin olunuz. ",
- twoFAVerifyLabel: "Lütfen tokeni yazarak 2FA doğrulamanın çalıştığından emin olunuz.",
- tokenValidSettingsMsg: "Token geçerli! Şimdi 2FA ayarlarını kaydedebilirsiniz. ",
- confirmEnableTwoFAMsg: "2FA'ı etkinleştirmek istediğinizden emin misiniz?",
- confirmDisableTwoFAMsg: "2FA'ı devre dışı bırakmak istediğinize emin misiniz?",
- Settings: "Ayarlar",
- Dashboard: "Panel",
- "New Update": "Yeni Güncelleme",
- Language: "Dil",
- Appearance: "Görünüm",
- Theme: "Tema",
- General: "Genel",
- "Primary Base URL": "Birincil Temel URL",
- Version: "Versiyon",
- "Check Update On GitHub": "GitHub'da Güncellemeyi Kontrol Edin",
- List: "Liste",
- Add: "Ekle",
- "Add New Monitor": "Yeni Servis Ekle",
- "Quick Stats": "Servis istatistikleri",
- Up: "Normal",
- Down: "Hatalı",
- Pending: "Bekliyor",
- Unknown: "Bilinmeyen",
- Pause: "Durdur",
- Name: "Servis ismi",
- Status: "Durum",
- DateTime: "Zaman",
- Message: "Mesaj",
- "No important events": "Önemli olay yok",
- Resume: "Devam et",
- Edit: "Düzenle",
- Delete: "Sil",
- Current: "Şu anda",
- Uptime: "Çalışma zamanı",
- "Cert Exp.": "Sertifika Süresi",
- day: "gün | günler",
- "-day": "-gün",
- hour: "saat",
- "-hour": "-saat",
- Response: "Cevap Süresi",
- Ping: "Ping",
- "Monitor Type": "Servis Tipi",
- Keyword: "Anahtar Kelime",
- "Friendly Name": "Panelde görünecek isim",
- URL: "URL",
- Hostname: "IP Adresi",
- Port: "Port",
- "Heartbeat Interval": "Servis Test Aralığı",
- Retries: "Yeniden deneme",
- "Heartbeat Retry Interval": "Sağlık Durumları Tekrar Deneme Sıklığı",
- "Resend Notification if Down X times consequently": "Sonuç olarak X kez düşerse bildirimi yeniden gönder",
- Advanced: "Gelişmiş",
- "Upside Down Mode": "Ters/Düz Modu",
- "Max. Redirects": "Maksimum Yönlendirme",
- "Accepted Status Codes": "Kabul Edilen Durum Kodları",
- "Push URL": "Push URL",
- needPushEvery: "Bu URL'yi her {0} saniyede bir aramalısınız.",
- pushOptionalParams: "İsteğe bağlı parametreler: {0}",
- Save: "Kaydet",
- Notifications: "Bildirimler",
- "Not available, please setup.": "Atanmış bildirim yöntemi yok. Ayarlardan belirleyebilirsiniz.",
- "Setup Notification": "Bildirim yöntemi kur",
- Light: "Açık",
- Dark: "Koyu",
- Auto: "Oto",
- "Theme - Heartbeat Bar": "Servis Bar Konumu",
- Normal: "Normal",
- Bottom: "Aşağıda",
- None: "Gösterme",
- Timezone: "Zaman Dilimi",
- "Search Engine Visibility": "Arama Motoru Görünürlüğü",
- "Allow indexing": "İndekslemeye izin ver",
- "Discourage search engines from indexing site": "İndekslemeyi reddet",
- "Change Password": "Şifre Değiştir",
- "Current Password": "Şuan ki Şifre",
- "New Password": "Yeni Şifre",
- "Repeat New Password": "Yeni Şifreyi Tekrar Girin",
- "Update Password": "Şifreyi Değiştir",
- "Disable Auth": "Şifreli girişi iptal et.",
- "Enable Auth": "Şifreli girişi aktif et.",
- "disableauth.message1": "Şifreli girişi devre dışı bırakmak istediğinizden emin misiniz?",
- "disableauth.message2": "Bu, Uptime Kuma'nın önünde Cloudflare Access gibi üçüncü taraf yetkilendirmesi olan kişiler içindir.",
- "Please use this option carefully!": "Lütfen dikkatli kullanın.",
- Logout: "Çıkış yap",
- Leave: "Ayrıl",
- "I understand, please disable": "Evet farkındayım, iptal et",
- Confirm: "Onayla",
- Yes: "Evet",
- No: "Hayır",
- Username: "Kullanıcı Adı",
- Password: "Şifre",
- "Remember me": "Beni Hatırla",
- Login: "Giriş yap",
- "No Monitors, please": "Servis yok, lütfen",
- "add one": "bir servis ekleyin",
- "Notification Type": "Bildirim Yöntemi",
- Email: "E-mail",
- Test: "Test",
- "Certificate Info": "Sertifika Bilgisi",
- "Resolver Server": "Çözümleyici Sunucu",
- "Resource Record Type": "Kaynak Kayıt Türü",
- "Last Result": "En son sonuçlar",
- "Create your admin account": "Yönetici hesabınızı oluşturun",
- "Repeat Password": "Şifrenizi tekrar girin",
- "Import Backup": "Yedeği içe aktar",
- "Export Backup": "Yedeği dışa aktar",
- Export: "Dışa aktar",
- Import: "İçe aktar",
- respTime: "Cevap Süresi (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Varsayılan etkinleştirilmiş",
- "Apply on all existing monitors": "Var olan bütün servislere uygula",
- Create: "Oluştur",
- "Clear Data": "Verileri Temizle",
- Events: "Olaylar",
- Heartbeats: "Sağlık Durumları",
- "Auto Get": "Otomatik Al",
- backupDescription: "Bütün servisleri ve bildirimleri JSON dosyasına yedekleyebilirsiniz.",
- backupDescription2: "Not: Geçmiş ve etkinlik verileri içinde değildir.",
- backupDescription3: "Dışa aktarma dosyasında bildirim tokeni gibi hassas veriler bulunur, dikkatli bir şekilde saklayınız.",
- alertNoFile: "İçeri aktarmak için bir dosya seçiniz.",
- alertWrongFileType: "Lütfen bir JSON dosyası seçiniz.",
- "Clear all statistics": "Bütün istatistikleri temizle",
- "Skip existing": "Var olanı atla",
- Overwrite: "Üzerine yaz",
- Options: "Seçenekler",
- "Keep both": "İkisini sakla",
- "Verify Token": "Tokeni doğrula",
- "Setup 2FA": "2FA Kur",
- "Enable 2FA": "2FA Etkinleştir",
- "Disable 2FA": "2FA Devre dışı bırak",
- "2FA Settings": "2FA Ayarları",
- "Two Factor Authentication": "İki Faktörlü Kimlik Doğrulama (2FA)",
- Active: "Aktif",
- Inactive: "İnaktif",
- Token: "Token",
- "Show URI": "URI'yi göster",
- Tags: "Etiketler",
- "Add New below or Select...": "Aşağıya Yeni Ekle veya Seç...",
- "Tag with this name already exist.": "Bu ada sahip etiket zaten var.",
- "Tag with this value already exist.": "Bu değere sahip etiket zaten var.",
- color: "renk",
- "value (optional)": "değer (isteğe bağlı)",
- Gray: "Gri",
- Red: "Kırmızı",
- Orange: "Turuncu",
- Green: "Yeşil",
- Blue: "Mavi",
- Indigo: "Çivit mavisi",
- Purple: "Mor",
- Pink: "Pembe",
- "Search...": "Ara...",
- "Avg. Ping": "Ortalama Ping",
- "Avg. Response": "Ortalama Cevap Süresi",
- "Entry Page": "Giriş Sayfası",
- statusPageNothing: "Burada hiçbir şey yok, lütfen bir grup veya servis ekleyin.",
- "No Services": "Hizmet Yok",
- "All Systems Operational": "Tüm Sistemler Operasyonel",
- "Partially Degraded Service": "Kısmen Bozulmuş Hizmet",
- "Degraded Service": "Bozulmuş Hizmet",
- "Add Group": "Grup Ekle",
- "Add a monitor": "Servis Ekle",
- "Edit Status Page": "Durum Sayfasını Düzenle",
- "Go to Dashboard": "Panele Git",
- "Status Page": "Durum Sayfası",
- "Status Pages": "Durum Sayfaları",
- defaultNotificationName: "My {notification} Alert ({number})",
- here: "burada",
- Required: "Gerekli",
- telegram: "Telegram",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "{0} adresinden bir token alabilirsiniz.",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Doğrudan Sohbet / Grup / Kanalın Sohbet Kimliğini Destekleyin",
- wayToGetTelegramChatID: "Bot'a bir mesaj göndererek ve chat_id'yi görüntülemek için bu URL'ye giderek sohbet kimliğinizi alabilirsiniz:",
- "YOUR BOT TOKEN HERE": "BOT TOKENİNİZ BURADA",
- chatIDNotFound: "Chat ID bulunamadı; lütfen önce bu bota bir mesaj gönderin",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Content Type",
- webhookJsonDesc: "{0}, Express.js gibi tüm modern HTTP sunucuları için iyidir",
- webhookFormDataDesc: "{multipart} PHP için iyidir. JSON'un {decodeFunction} ile ayrıştırılması gerekecek",
- smtp: "E-mail (SMTP)",
- secureOptionNone: "Hiçbiri / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "TLS Hatasını Yoksay",
- "From Email": "E-postadan",
- emailCustomSubject: "Özel Konu",
- "To Email": "E-postaya",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Bunu Sunucu Ayarları -> Entegrasyonlar -> Webhook Oluştur'a giderek alabilirsiniz.",
- "Bot Display Name": "Botun Görünecek Adı",
- "Prefix Custom Message": "Önek Özel Mesaj",
- "Hello @everyone is...": "Merhaba {'@'}everyone ...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.",
- signal: "Sinyal",
- Number: "Numara",
- Recipients: "Alıcılar",
- needSignalAPI: "REST API ile bir signal istemciniz olması gerekiyor.",
- wayToCheckSignalURL: "Nasıl kurulacağını görmek için bu URL'yi kontrol edebilirsiniz:",
- signalImportant: "ÖNEMLİ: Alıcılarda grupları ve sayıları karıştıramazsınız!",
- gotify: "Gotify",
- "Application Token": "Uygulama Tokeni",
- "Server URL": "Sunucu URL",
- Priority: "Öncelik",
- slack: "Slack",
- "Icon Emoji": "İkon Emoji",
- "Channel Name": "Kanal Adı",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Webhook hakkında daha fazla bilgi: {0}",
- aboutChannelName: "Webhook kanalını atlamak istiyorsanız, {0} Kanal Adı alanına kanal adını girin. Ör: #diğer-kanal",
- aboutKumaURL: "Uptime Kuma URL alanını boş bırakırsanız, varsayılan olarak Project GitHub sayfası olur.",
- emojiCheatSheet: "Emoji cheat sheet: {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (50'den fazla Bildirim hizmetini destekler)",
- GoogleChat: "Google Chat (sadece Google Workspace)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "Kullancı Anahtarı",
- Device: "Cihaz",
- "Message Title": "Mesaj Başlığı",
- "Notification Sound": "Bilgilendirme sesi",
- "More info on:": "Daha fazla bilgi: {0}",
- pushoverDesc1: "Acil durum önceliği (2), yeniden denemeler arasında varsayılan olarak 30 saniyelik bir zaman aşımına sahiptir ve 1 saat sonra sona erecektir.",
- pushoverDesc2: "Farklı cihazlara bildirim göndermek istiyorsanız Cihaz alanını doldurunuz.",
- "SMS Type": "SMS Tipi",
- octopushTypePremium: "Premium (Hızlı - uyarı için önerilir)",
- octopushTypeLowCost: "Düşük Maliyet (Yavaş - bazen operatör tarafından engellenir)",
- checkPrice: "{0} fiyatlarını kontrol edin:",
- apiCredentials: "API kimlik bilgileri",
- octopushLegacyHint: "Octopush'un (2011-2020) eski sürümünü mü yoksa yeni sürümünü mü kullanıyorsunuz?",
- "Check octopush prices": "Octopush fiyatlarını kontrol edin {0}.",
- octopushPhoneNumber: "Telefon numarası (uluslararası biçim, örneğin: +33612345678) ",
- octopushSMSSender: "SMS Gönderici Adı : 3-11 alfanümerik karakter ve boşluk (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea Cihaz ID",
- "Apprise URL": "Apprise URL",
- "Example:": "Örnek: {0}",
- "Read more:": "Daha fazla oku: {0}",
- "Status:": "Durum: {0}",
- "Read more": "Daha fazla oku",
- appriseInstalled: "Apprise yüklendi.",
- appriseNotInstalled: "Appris yüklü değil. {0}",
- "Access Token": "Erişim Tokeni",
- "Channel access token": "Kanal erişim tokeni",
- "Line Developers Console": "Line Geliştirici Konsolu",
- lineDevConsoleTo: "Line Geliştirici Konsolu - {0}",
- "Basic Settings": "Temel Ayarlar",
- "User ID": "Kullanıcı ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "Önce {0}'e erişin, bir sağlayıcı ve kanal (Messaging API) oluşturun, ardından yukarıda belirtilen menü öğelerinden kanal erişim tokenini ve kullanıcı id alabilirsiniz.",
- "Icon URL": "Simge URL",
- aboutIconURL: "Varsayılan profil resmini geçersiz kılmak için \"Simge URL\" bölümünde bir resme bağlantı sağlayabilirsiniz. Simge Emojisi ayarlanmışsa kullanılmayacaktır.",
- aboutMattermostChannelName: "Kanal adını \"Kanal Adı\" alanına girerek Webhook'un gönderi yaptığı varsayılan kanalı geçersiz kılabilirsiniz. Bunun Mattermost Webhook ayarlarında etkinleştirilmesi gerekir. Ör: #diğer-kanal",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - ucuz ama yavaş ve genellikle aşırı yüklü. Yalnızca Polonyalı alıcılarla sınırlıdır.",
- promosmsTypeFlash: "SMS FLASH - Mesaj, alıcı cihazda otomatik olarak gösterilecektir. Yalnızca Polonyalı alıcılarla sınırlıdır.",
- promosmsTypeFull: "SMS FULL - Premium SMS katmanı, Gönderici Adınızı kullanabilirsiniz (Önce adınızı kaydetmeniz gerekir). Uyarılar için güvenilir.",
- promosmsTypeSpeed: "SMS HIZI - Sistemde en yüksek öncelik. Çok hızlı ve güvenilir ancak maliyetli (SMS FULL fiyatının yaklaşık iki katı).",
- promosmsPhoneNumber: "Telefon numarası (Polonyalı alıcı için Alan kodlarını atlayabilirsiniz)",
- promosmsSMSSender: "SMS Gönderici Adı : Ön kayıtlı ad veya varsayılanlardan biri: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
- matrixHomeserverURL: "Homeserver URL (http(s):// ve isteğe bağlı olarak bağlantı noktası ile)",
- "Internal Room Id": "Internal Room ID",
- matrixDesc1: "Internal Room ID'sini, Matrix istemcinizdeki oda ayarlarının gelişmiş bölümüne bakarak bulabilirsiniz. !QMdRCpUIfLwsfjxye6:home.server gibi görünmelidir.",
- matrixDesc2: "Hesabınıza ve katıldığınız tüm odalara tam erişime izin vereceğinden, yeni bir kullanıcı oluşturmanız ve kendi Matrix kullanıcınızın erişim belirtecini kullanmamanız şiddetle tavsiye edilir. Bunun yerine, yeni bir kullanıcı oluşturun ve onu yalnızca bildirimi almak istediğiniz odaya davet edin. {0} komutunu çalıştırarak erişim tokenini alabilirsiniz.",
- Method: "Yöntem",
- Body: "Gövde",
- Headers: "Başlıklar",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "İstek başlıkları geçerli JSON değil:",
- BodyInvalidFormat: "İstek gövdesi geçerli JSON değil:",
- "Monitor History": "Servis Geçmişi",
- clearDataOlderThan: "{0} gün boyunca izleme geçmişi verilerini saklayın.",
- PasswordsDoNotMatch: "Parolalar uyuşmuyor.",
- records: "kayıtlar",
- "One record": "Bir Kayıt",
- steamApiKeyDescription: "Bir Steam Oyun Sunucusunu izlemek için bir Steam Web-API anahtarına ihtiyacınız vardır. API anahtarınızı buradan kaydedebilirsiniz: ",
- "Current User": "Şu anki kullanıcı",
- topic: "Başlık",
- topicExplanation: "İzlenecek MQTT servisi",
- successMessage: "Başarılı Mesaj",
- successMessageExplanation: "Başarılı olarak kabul edilecek MQTT mesajı",
- recent: "Son",
- Done: "Tamamlandı",
- Info: "Bilgi",
- Security: "Güvenlik",
- "Steam API Key": "Steam API Anahtarı",
- "Shrink Database": "Veritabanını Küçült",
- "Pick a RR-Type...": "Bir RR-Tipi seçin...",
- "Pick Accepted Status Codes...": "Kabul Edilen Durum Kodlarını Seçin...",
- Default: "Varsayılan",
- "HTTP Options": "HTTP Ayarları",
- "Create Incident": "Olay Oluştur",
- Title: "Başlık",
- Content: "İçerik",
- Style: "Stil",
- info: "info",
- warning: "warning",
- danger: "danger",
- error: "hata",
- critical: "kritik",
- primary: "primary",
- light: "light",
- dark: "dark",
- Post: "Post",
- "Please input title and content": "Lütfen başlık ve içerik girin",
- Created: "Oluşturuldu",
- "Last Updated": "Son Güncelleme",
- Unpin: "Unpin",
- "Switch to Light Theme": "Açık Temaya Geç",
- "Switch to Dark Theme": "Karanlık Temaya Geç",
- "Show Tags": "Etiketleri Göster",
- "Hide Tags": "Etiketleri Gizle",
- Description: "Açıklama",
- "No monitors available.": "Kullanılabilir servis yok.",
- "Add one": "Bir tane ekle",
- "No Monitors": "Servis Yok",
- "Untitled Group": "Adsız Grup",
- Services: "Hizmetler",
- Discard: "İptal Et",
- Cancel: "İptal Et",
- "Powered by": "Powered by",
- shrinkDatabaseDescription: "SQLite için veritabanı VACUUM'unu tetikleyin. Veritabanınız 1.10.0'dan sonra oluşturulduysa, AUTO_VACUUM zaten etkinleştirilmiştir ve bu eyleme gerek yoktur.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Kullanıcı Adı (webapi_ öneki dahil)",
- serwersmsAPIPassword: "API Şifre",
- serwersmsPhoneNumber: "Telefon numarası",
- serwersmsSenderName: "SMS Gönderici Adı (müşteri portalı üzerinden kayıtlı)",
- stackfield: "Stackfield",
- Customize: "Özelleştirme",
- "Custom Footer": "Özel Altbilgi",
- "Custom CSS": "Özel CSS",
- smtpDkimSettings: "DKIM Ayarları",
- smtpDkimDesc: "Kullanım için lütfen Nodemailer DKIM'e {0} bakın.",
- documentation: "belgeler",
- smtpDkimDomain: "Alan adı",
- smtpDkimKeySelector: "Anahtar Seçici",
- smtpDkimPrivateKey: "Özel anahtar",
- smtpDkimHashAlgo: "Hash Algoritması (Opsiyonel)",
- smtpDkimheaderFieldNames: "İmzalanacak Başlık Anahtarları (Opsiyonel)",
- smtpDkimskipFields: "İmzalamayacak Başlık Anahtarları (Opsiyonel)",
- wayToGetPagerDutyKey: "Bunu Hizmet -> Hizmet Dizini -> (Bir hizmet seçin) -> Entegrasyonlar -> Entegrasyon ekle'ye giderek alabilirsiniz. Burada \"Events API V2\" için arama yapabilirsiniz. Daha fazla bilgi {0}",
- "Integration Key": "Entegrasyon Anahtarı",
- "Integration URL": "Entegrasyon URL'si",
- "Auto resolve or acknowledged": "Otomatik çözümleme veya onaylandı",
- "do nothing": "hiçbir şey yapma",
- "auto acknowledged": "otomatik onaylandı",
- "auto resolve": "otomatik çözümleme",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "Environment",
- alertaApiKey: "API Key",
- alertaAlertState: "Uyarı Durumu",
- alertaRecoverState: "Kurtarma Durumu",
- deleteStatusPageMsg: "Bu durum sayfasını silmek istediğinizden emin misiniz?",
- Proxies: "Proxy'ler",
- default: "Varsayılan",
- enabled: "Etkinleştirilmiş",
- setAsDefault: "Varsayılan Olarak Ayarla",
- deleteProxyMsg: "Bu proxy'yi tüm servisler için silmek istediğinizden emin misiniz?",
- proxyDescription: "Proxy'lerin çalışması için bir servise atanması gerekir.",
- enableProxyDescription: "Bu proxy, etkinleştirilene kadar izleme isteklerini etkilemeyecektir. Aktivasyon durumuna göre proxy'yi tüm servislerden geçici olarak devre dışı bırakabilirsiniz.",
- setAsDefaultProxyDescription: "Bu proxy, yeni servisler için varsayılan olarak etkinleştirilecektir. Yine de proxy'yi her servis için ayrı ayrı devre dışı bırakabilirsiniz.",
- "Certificate Chain": "Sertifika Zinciri",
- Valid: "Geçerli",
- Invalid: "Geçersiz",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Sms şablonu parametreleri içermelidir:",
- "Bark Endpoint": "Bark Endpoint",
- "Bark Group": "Bark Group",
- "Bark Sound": "Bark Sound",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "Güvenlik için gizli anahtar kullanılmalıdır",
- "Device Token": "Cihaz Tokeni",
- Platform: "Platform",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "High",
- Retry: "Retry",
- Topic: "Topic",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "Proxy kur",
- "Proxy Protocol": "Proxy Protokolü",
- "Proxy Server": "Proxy Sunucusu",
- "Proxy server has authentication": "Proxy sunucusunun kimlik doğrulaması var",
- User: "Kullanıcı",
- Installed: "Yüklenmiş",
- "Not installed": "Yüklü değil",
- Running: "Çalışıyor",
- "Not running": "Çalışmıyor",
- "Remove Token": "Tokeni Kaldır",
- Start: "Başlat",
- Stop: "Durdur",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Yeni Durum Sayfası Ekle",
- Slug: "Slug",
- "Accept characters:": "Kabul edilen karakterler:",
- startOrEndWithOnly: "Yalnızca {0} ile başlayın veya bitirin",
- "No consecutive dashes": "Ardışık tire yok",
- Next: "Sonraki",
- "The slug is already taken. Please choose another slug.": "Slug zaten alındı. Lütfen başka bir slug seçin.",
- "No Proxy": "Proxy Yok",
- Authentication: "Kimlik doğrulama",
- "HTTP Basic Auth": "HTTP Temel Yetkilendirme",
- "New Status Page": "Yeni Durum Sayfası",
- "Page Not Found": "Sayfa bulunamadı",
- "Reverse Proxy": "Ters Proxy",
- Backup: "Yedek",
- About: "Hakkında",
- wayToGetCloudflaredURL: "(Cloudflared'i {0} adresinden indirin)",
- cloudflareWebsite: "Cloudflare Website",
- "Message:": "Mesaj:",
- "Don't know how to get the token? Please read the guide:": "Tokeni nasıl alacağınızı bilmiyor musunuz? Lütfen kılavuzu okuyun:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Halihazırda Cloudflare Tüneli üzerinden bağlanıyorsanız mevcut bağlantı kesilebilir. Durdurmak istediğinden emin misin? Onaylamak için mevcut şifrenizi yazın.",
- "HTTP Headers": "HTTP Headers",
- "Trust Proxy": "Trust Proxy",
- "Other Software": "Diğer Yazılımlar",
- "For example: nginx, Apache and Traefik.": "Örneğin: nginx, Apache ve Traefik.",
- "Please read": "Lütfen oku",
- "Subject:": "Başlık:",
- "Valid To:": "Geçerlilik:",
- "Days Remaining:": "Kalan günler:",
- "Issuer:": "Veren:",
- "Fingerprint:": "Parmak izi:",
- "No status pages": "Durum sayfası yok",
- "Domain Name Expiry Notification": "Alan Adı Sona Erme Bildirimi",
- Proxy: "Proxy",
- "Date Created": "Tarih Oluşturuldu",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP Adresi",
- onebotMessageType: "OneBot Mesaj Türü",
- onebotGroupMessage: "Grup",
- onebotPrivateMessage: "Özel",
- onebotUserOrGroupId: "Grup/Kullanıcı Kimliği",
- onebotSafetyTips: "Güvenlik için erişim tokeni ayarlamalısınız",
- "PushDeer Key": "PushDeer Anahtarı",
- "Footer Text": "Altbilgi metni",
- "Show Powered By": "\"Powered by\" kısmını göster",
- "Domain Names": "Alan isimleri",
- signedInDisp: "{0} olarak oturum açıldı",
- signedInDispDisabled: "Yetkilendirme Devre Dışı.",
- RadiusSecret: "Radius Secret",
- RadiusSecretDescription: "İstemci ve sunucu arasında paylaşılan gizli anahtar",
- RadiusCalledStationId: "Aranan İstasyon Kimliği",
- RadiusCalledStationIdDescription: "Aranan cihazın tanımlayıcısı",
- RadiusCallingStationId: "Arayan İstasyon Kimliği",
- RadiusCallingStationIdDescription: "Arayan cihazın tanımlayıcısı",
- "Certificate Expiry Notification": "Sertifika Sona Erme Bildirimi",
- "API Username": "API Kullanıc Adı",
- "API Key": "API Anahtarı",
- "Recipient Number": "Alıcı Numarası",
- "From Name/Number": "İsimden/Numaradan",
- "Leave blank to use a shared sender number.": "Paylaşılan bir gönderen numarası kullanmak için boş bırakın.",
- "Octopush API Version": "Octopush API Sürümü",
- "Legacy Octopush-DM": "Eski Octopush-DM",
- endpoint: "uç nokta",
- octopushAPIKey: "Kontrol panelindeki HTTP API kimlik bilgilerinden \"API Key\"",
- octopushLogin: "Kontrol panelindeki HTTP API kimlik bilgilerinden \"Login\"",
- promosmsLogin: "API Oturum Açma Adı",
- promosmsPassword: "API Şifresi",
- "pushoversounds pushover": "Pushover (varsayılan)",
- "pushoversounds bike": "Bisiklet",
- "pushoversounds bugle": "Boru",
- "pushoversounds cashregister": "Yazar kasa",
- "pushoversounds classical": "Klasik",
- "pushoversounds cosmic": "Kozmik",
- "pushoversounds falling": "Düşme",
- "pushoversounds gamelan": "Oyun Alanı",
- "pushoversounds incoming": "Gelen",
- "pushoversounds intermission": "Ara",
- "pushoversounds magic": "Büyü",
- "pushoversounds mechanical": "Mekanik",
- "pushoversounds pianobar": "Piano",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Uzay Alarmı",
- "pushoversounds tugboat": "Römorkör",
- "pushoversounds alien": "Uzaylı Alarmı (uzun)",
- "pushoversounds climb": "Tırmanış (uzun)",
- "pushoversounds persistent": "Sürekli (uzun)",
- "pushoversounds echo": "Pushover Yankı (uzun)",
- "pushoversounds updown": "Yukarı Aşağı (uzun)",
- "pushoversounds vibrate": "Sadece titreşim",
- "pushoversounds none": "Yok (sessiz)",
- pushyAPIKey: "Gizli API Anahtarı",
- pushyToken: "Cihaz tokeni",
- "Show update if available": "Varsa güncellemeyi göster",
- "Also check beta release": "Ayrıca beta sürümünü kontrol edin",
- "Using a Reverse Proxy?": "Ters Proxy mi Kullanıyorsunuz?",
- "Check how to config it for WebSocket": "WebSocket için nasıl yapılandırılacağını kontrol edin",
- "Steam Game Server": "Steam Oyun Sunucusu",
- "Most likely causes:": "En olası nedenler:",
- "The resource is no longer available.": "Kaynak artık mevcut değil.",
- "There might be a typing error in the address.": "Adreste bir yazım hatası olabilir.",
- "What you can try:": "Ne deneyebilirsin:",
- "Retype the address.": "Adresi tekrar yazın.",
- "Go back to the previous page.": "Bir önceki sayfaya geri git.",
- "Coming Soon": "Yakında gelecek",
- wayToGetClickSendSMSToken: "API Kullanıcı Adı ve API Anahtarını {0} adresinden alabilirsiniz.",
- "Connection String": "Bağlantı dizisi",
- Query: "Sorgu",
- settingsCertificateExpiry: "TLS Sertifikasının Geçerlilik Süresi",
- certificationExpiryDescription: "HTTPS Monitörleri, TLS sertifikasının süresi dolduğunda bildirimi tetikler:",
- "Setup Docker Host": "Docker Ana Bilgisayarını Kur",
- "Connection Type": "Bağlantı türü",
- "Docker Daemon": "Docker Daemon",
- deleteDockerHostMsg: "Bu docker ana bilgisayarını tüm monitörler için silmek istediğinizden emin misiniz?",
- socket: "Soket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker Konteyner",
- "Container Name / ID": "Konteyner Adı / Kimliği",
- "Docker Host": "Docker Ana Bilgisayarı",
- "Docker Hosts": "Docker Ana Bilgisayarları",
- "ntfy Topic": "ntfy Konu",
- Domain: "Domain",
- Workstation: "İş İstasyonu",
- disableCloudflaredNoAuthMsg: "Yetki yok modundasınız, şifre gerekli değil.",
- trustProxyDescription: "'X-Forwarded-*' başlıklarına güvenin. Doğru istemci IP'sini almak istiyorsanız ve Uptime Kuma'nız Nginx veya Apache'nin arkasındaysa, bunu etkinleştirmelisiniz.",
- wayToGetLineNotifyToken: "{0} adresinden bir erişim jetonu alabilirsiniz.",
- Examples: "Örnekler",
- "Home Assistant URL": "Home Assistant URL",
- "Long-Lived Access Token": "Long-Lived Erişim Anahtarı",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Erişim Anahtarı, profil adınıza (sol altta) tıklayarak ve aşağıya kaydırarak ve ardından Anahtar Oluştur'a tıklayarak oluşturulabilir. ",
- "Notification Service": "Bildirim Hizmeti",
- "default: notify all devices": "varsayılan: tüm cihazları bilgilendir",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Cihazınızın/telefonunuzun adını bulmak için Home Assistant'ta \"Geliştirici Araçları > Hizmetler\" \"bildirim\" araması altında bir Bildirim Hizmetleri listesi bulunabilir.",
- "Automations can optionally be triggered in Home Assistant:": "Otomasyonlar isteğe bağlı olarak Home Assistant'ta tetiklenebilir:",
- "Trigger type:": "Trigger tipi:",
- "Event type:": "Etkinlik tipi:",
- "Event data:": "Etkinlik verileri:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Ardından bir eylem seçin, örneğin RGB ışığının kırmızı olduğu sahneyi değiştirin.",
- "Frontend Version": "Frontend Sürümü",
- "Frontend Version do not match backend version!": "Frontend Sürümü, backend sürümüyle eşleşmiyor!",
- "Base URL": "Temel URL",
- goAlertInfo: "GoAlert, çağrı üzerine zamanlama, otomatik eskalasyonlar ve bildirimler (SMS veya sesli çağrılar gibi) için açık kaynaklı bir uygulamadır. Doğru kişiyi, doğru şekilde ve doğru zamanda otomatik olarak devreye sokun! {0}",
- goAlertIntegrationKeyInfo: "Servis için genel API entegrasyon anahtarını, genellikle kopyalanan URL'nin belirteç parametresinin değeri olan \"aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biçiminde alın.",
- goAlert: "GoAlert",
- backupOutdatedWarning: "Kullanımdan Kaldırıldı: Birçok özellik eklendiğinden ve bu yedekleme özelliği biraz bakımsız olduğundan, tam bir yedekleme oluşturamaz veya geri yükleyemez.",
- backupRecommend: "Lütfen bunun yerine birimi veya veri klasörünü (./data/) doğrudan yedekleyin.",
- enableGRPCTls: "TLS bağlantısıyla gRPC isteği göndermeye izin ver",
- grpcMethodDescription: "Yöntem adı, sayHello, check, vb. gibi cammelCase biçimine dönüştürülür.",
- Maintenance: "Bakım",
- statusMaintenance: "Bakım",
- "Schedule maintenance": "Bakım Planla",
- "Affected Monitors": "Etkilenen Monitörler",
- "Pick Affected Monitors...": "Etkilenen Monitörleri Seçin...",
- "Start of maintenance": "Bakım başlangıcı",
- "All Status Pages": "Tüm Durum Sayfaları",
- "Select status pages...": "Durum sayfalarını seçin...",
- recurringIntervalMessage: "Her gün bir kez çalıştırın | {0} günde bir çalıştırın",
- affectedMonitorsDescription: "Geçerli bakımdan etkilenen monitörleri seçin",
- affectedStatusPages: "Bu bakım mesajını seçili durum sayfalarında göster",
- atLeastOneMonitor: "Etkilenen en az bir monitör seçin",
- deleteMaintenanceMsg: "Bu bakımı silmek istediğinizden emin misiniz?",
- ZohoCliq: "ZohoCliq",
- webhookAdditionalHeadersTitle: "Ek Başlıklar",
- webhookAdditionalHeadersDesc: "Webhook ile gönderilen ek başlıkları ayarlar.",
- wayToGetZohoCliqURL: "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.",
- Kook: "Kook",
- wayToGetKookBotToken: "Uygulama oluşturun ve {0} adresinde bot tokenı alın",
- wayToGetKookGuildID: "Kook ayarında \"Geliştirici Modu\"nu açın ve kimliğini almak için guild'e sağ tıklayın",
- "Guild ID": "Guild ID",
- smseagle: "SMSEagle",
- smseagleTo: "Telefon numara(ları)",
- smseagleGroup: "Telefon defteri grubu ad(lar)ı",
- smseagleContact: "Telefon rehberi kişi ad(lar)ı",
- smseagleRecipientType: "Alıcı Türü",
- smseagleRecipient: "Alıcı(lar) (birden çok olanlar virgülle ayrılmalıdır)",
- smseagleToken: "API Erişim Tokenı",
- smseagleUrl: "SMSEagle cihaz URL\"niz",
- smseagleEncoding: "Unicode olarak gönder",
- smseaglePriority: "Mesaj önceliği (0-9, varsayılan = 0)",
- Optional: "İsteğe bağlı",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "SMSManager API Dökümanları ",
- "Gateway Type": "Ağ Geçidi Türü",
- SMSManager: "SMSManager",
- "You can divide numbers with": "Sayıları aşağıdakilerle bölebilirsiniz",
- or: "veya",
- recurringInterval: "Sıklık",
- Recurring: "Yineleme",
- strategyManual: "Manuel olarak Aktif/Pasif",
- warningTimezone: "Sunucunun kullandığı saat dilimi",
- weekdayShortMon: "Pzt",
- weekdayShortTue: "Sal",
- weekdayShortWed: "Çar",
- weekdayShortThu: "Per",
- weekdayShortFri: "Cum",
- weekdayShortSat: "Cmt",
- weekdayShortSun: "Paz",
- dayOfWeek: "Haftanın Günleri",
- dayOfMonth: "Ayın Günleri",
- lastDay: "Son Gün",
- lastDay1: "Ayın Son Günü",
- lastDay2: "Ayın 2. Son Günü",
- lastDay3: "Ayın 3. Son Günü",
- lastDay4: "Ayın 4. Son Günü",
- "No Maintenance": "Bakım Yok",
- pauseMaintenanceMsg: "Duraklatmak istediğinizden emin misiniz?",
- "maintenanceStatus-under-maintenance": "Bakımda",
- "maintenanceStatus-inactive": "Etkin Değil",
- "maintenanceStatus-scheduled": "Planlanmış",
- "maintenanceStatus-ended": "Bitti",
- "maintenanceStatus-unknown": "Bilinmiyor",
- "Display Timezone": "Saat dilimini göster",
- "Server Timezone": "Sunucu Saat Dilimi",
- statusPageMaintenanceEndDate: "Bitiş Zamanı",
- IconUrl: "Icon URL",
- "Enable DNS Cache": "DNS Önbelleğini Etkinleştir",
- Enable: "Etkin",
- Disable: "Devre Dışı",
- dnsCacheDescription: "Bazı IPv6 ortamlarında çalışmıyor olabilir, herhangi bir sorunla karşılaşırsanız devre dışı bırakın.",
- "Single Maintenance Window": "Tek Seferlik Bakım",
- "Maintenance Time Window of a Day": "Bür Günlük Bakım",
- "Effective Date Range": "Bakim Tarih Aralığı",
- "Schedule Maintenance": "Bakım Planla",
- "Date and Time": "Tarih ve Saat",
- "DateTime Range": "Tarih ve Saat Aralığı",
- Strategy: "Strateji",
- "Free Mobile User Identifier": "Ücretsiz Mobil Kullanıcı ID",
- "Free Mobile API Key": "Ücretsiz Mobil API Anahtarı",
- "Enable TLS": "TLS'yi Etkinleştir",
- "Proto Service Name": "Proto Service İsmi",
- "Proto Method": "Proto Method",
- "Proto Content": "Proto İçeriği",
- Economy: "Ekonomik",
- Lowcost: "Düşük maliyetli",
- high: "Yüksek",
- "General Monitor Type": "Genel Monitör Tipi",
- "Passive Monitor Type": "Pasif Monitör Tipi",
- "Specific Monitor Type": "Özel Monitör Tipi",
-};
diff --git a/src/languages/uk-UA.js b/src/languages/uk-UA.js
deleted file mode 100644
index cc01793cd..000000000
--- a/src/languages/uk-UA.js
+++ /dev/null
@@ -1,530 +0,0 @@
-export default {
- languageName: "Українська",
- checkEverySecond: "Перевірка кожні {0} секунд",
- retriesDescription: "Максимальна кількість спроб перед позначенням сервісу як недоступного та надсиланням повідомлення",
- ignoreTLSError: "Ігнорувати помилку TLS/SSL для сайтів HTTPS",
- upsideDownModeDescription: "Реверс статусу сервісу. Якщо сервіс доступний, він позначається як НЕДОСТУПНИЙ.",
- maxRedirectDescription: "Максимальна кількість перенаправлень. Поставте 0, щоб вимкнути перенаправлення.",
- acceptedStatusCodesDescription: "Виберіть коди статусів для визначення доступності сервісу.",
- passwordNotMatchMsg: "Повторення паролю не збігається.",
- notificationDescription: "Прив'яжіть сповіщення до моніторів.",
- keywordDescription: "Пошук слова в чистому HTML або JSON-відповіді (чутливо до регістру)",
- pauseDashboardHome: "Пауза",
- deleteMonitorMsg: "Ви дійсно хочете видалити цей монітор?",
- deleteNotificationMsg: "Ви дійсно хочете видалити це сповіщення для всіх моніторів?",
- resolverserverDescription: "Cloudflare є сервером за замовчуванням. Ви завжди можете змінити цей сервер.",
- rrtypeDescription: "Виберіть тип ресурсного запису, який ви хочете відстежувати",
- pauseMonitorMsg: "Ви дійсно хочете поставити на паузу?",
- Settings: "Налаштування",
- Dashboard: "Панель управління",
- "New Update": "Оновлення",
- Language: "Мова",
- Appearance: "Зовнішній вигляд",
- Theme: "Тема",
- General: "Загальне",
- Version: "Версія",
- "Check Update On GitHub": "Перевірити оновлення на GitHub",
- List: "Список",
- Add: "Додати",
- "Add New Monitor": "Новий монітор",
- "Quick Stats": "Статистика",
- Up: "Доступний",
- Down: "Недоступний",
- Pending: "Очікування",
- Unknown: "Невідомо",
- Pause: "Пауза",
- Name: "Ім'я",
- Status: "Статус",
- DateTime: "Дата і час",
- Message: "Повідомлення",
- "No important events": "Важливих подій немає",
- Resume: "Відновити",
- Edit: "Змінити",
- Delete: "Видалити",
- Current: "Поточний",
- Uptime: "Аптайм",
- "Cert Exp.": "Сертифікат спливає",
- day: "день | днів",
- "-day": " днів",
- hour: "година",
- "-hour": " години",
- Response: "Відповідь",
- Ping: "Пінг",
- "Monitor Type": "Тип монітора",
- Keyword: "Ключове слово",
- "Friendly Name": "Ім'я",
- URL: "URL",
- Hostname: "Адреса хоста",
- Port: "Порт",
- "Heartbeat Interval": "Частота опитування",
- Retries: "Спроб",
- Advanced: "Додатково",
- "Upside Down Mode": "Реверс статусу",
- "Max. Redirects": "Макс. кількість перенаправлень",
- "Accepted Status Codes": "Припустимі коди статусу",
- Save: "Зберегти",
- Notifications: "Сповіщення",
- "Not available, please setup.": "Доступних сповіщень немає, необхідно створити.",
- "Setup Notification": "Створити сповіщення",
- Light: "Світла",
- Dark: "Темна",
- Auto: "Авто",
- "Theme - Heartbeat Bar": "Тема - Смуга частоти опитування",
- Normal: "Звичайний",
- Bottom: "Знизу",
- None: "Відсутня",
- Timezone: "Часовий пояс",
- "Search Engine Visibility": "Індексація пошуковими системами:",
- "Allow indexing": "Дозволити індексування",
- "Discourage search engines from indexing site": "Заборонити індексування",
- "Change Password": "Змінити пароль",
- "Current Password": "Поточний пароль",
- "New Password": "Новий пароль",
- "Repeat New Password": "Повтор нового пароля",
- "Update Password": "Оновити пароль",
- "Disable Auth": "Вимкнути авторизацію",
- "Enable Auth": "Увімкнути авторизацію",
- "disableauth.message1": "Ви впевнені, що бажаєте вимкнути авторизацію ?",
- "disableauth.message2": "Це підходить для тих, у кого встановлена інша авторизація пееред відкриттям Uptime Kuma, наприклад Cloudflare Access.",
- "Please use this option carefully!": "Будь ласка, використовуйте з обережністю.",
- Logout: "Вийти",
- Leave: "Відміна",
- "I understand, please disable": "Я розумію, все одно відключити",
- Confirm: "Підтвердити",
- Yes: "Так",
- No: "Ні",
- Username: "Логін",
- Password: "Пароль",
- "Remember me": "Запам'ятати мене",
- Login: "Вхід до системи",
- "No Monitors, please": "Моніторів немає, будь ласка",
- "No Monitors": "Монітори відсутні",
- "add one": "створіть новий",
- "Notification Type": "Тип сповіщення",
- Email: "Пошта",
- Test: "Перевірка",
- "Certificate Info": "Інформація про сертифікат",
- "Resolver Server": "DNS сервер",
- "Resource Record Type": "Тип ресурсного запису",
- "Last Result": "Останній результат",
- "Create your admin account": "Створіть обліковий запис адміністратора",
- "Repeat Password": "Повторіть пароль",
- respTime: "Час відповіді (мс)",
- notAvailableShort: "Н/д",
- Create: "Створити",
- clearEventsMsg: "Ви дійсно хочете видалити всю статистику подій цього монітора?",
- clearHeartbeatsMsg: "Ви дійсно хочете видалити всю статистику опитувань цього монітора?",
- confirmClearStatisticsMsg: "Ви дійсно хочете видалити ВСЮ статистику?",
- "Clear Data": "Видалити статистику",
- Events: "Події",
- Heartbeats: "Опитування",
- "Auto Get": "Авто-отримання",
- enableDefaultNotificationDescription: "Для кожного нового монітора це сповіщення буде включено за замовчуванням. Ви все ще можете відключити сповіщення в кожному моніторі окремо.",
- "Default enabled": "Використовувати за промовчанням",
- "Also apply to existing monitors": "Застосувати до існуючих моніторів",
- Export: "Експорт",
- Import: "Імпорт",
- backupDescription: "Ви можете зберегти резервну копію всіх моніторів та повідомлень у вигляді JSON-файлу",
- backupDescription2: "P.S.: Історія та події збережені не будуть",
- backupDescription3: "Важливі дані, такі як токени повідомлень, додаються під час експорту, тому зберігайте файли в безпечному місці",
- alertNoFile: "Виберіть файл для імпорту.",
- alertWrongFileType: "Виберіть JSON-файл.",
- twoFAVerifyLabel: "Будь ласка, введіть свій токен, щоб перевірити роботу 2FA",
- tokenValidSettingsMsg: "Токен дійсний! Тепер ви можете зберегти налаштування 2FA.",
- confirmEnableTwoFAMsg: "Ви дійсно хочете увімкнути 2FA?",
- confirmDisableTwoFAMsg: "Ви дійсно хочете вимкнути 2FA?",
- "Apply on all existing monitors": "Застосувати до всіх існуючих моніторів",
- "Verify Token": "Перевірити токен",
- "Setup 2FA": "Налаштування 2FA",
- "Enable 2FA": "Увімкнути 2FA",
- "Disable 2FA": "Вимкнути 2FA",
- "2FA Settings": "Налаштування 2FA",
- "Two Factor Authentication": "Двофакторна аутентифікація",
- Active: "Активно",
- Inactive: "Неактивно",
- Token: "Токен",
- "Show URI": "Показати URI",
- "Clear all statistics": "Очистити статистику",
- retryCheckEverySecond: "Повтор кожні {0} секунд",
- importHandleDescription: "Виберіть \"Пропустити існуючі\", якщо ви хочете пропустити кожен монітор або повідомлення з таким же ім'ям. \"Перезаписати\" видалить кожен існуючий монітор або повідомлення та додасть заново. Варіант \"Не перевіряти\" примусово відновлює всі монітори і повідомлення, навіть якщо вони вже існують.",
- confirmImportMsg: "Ви дійсно хочете відновити резервну копію? Переконайтеся, що ви вибрали відповідний варіант імпорту.",
- "Heartbeat Retry Interval": "Інтервал повтору опитування",
- "Import Backup": "Імпорт",
- "Export Backup": "Експорт",
- "Skip existing": "Пропустити існуючі",
- Overwrite: "Перезаписати",
- Options: "Опції",
- "Keep both": "Не перевіряти",
- Tags: "Теги",
- "Add New below or Select...": "Додати новий або вибрати...",
- "Tag with this name already exist.": "Такий тег вже існує.",
- "Tag with this value already exist.": "Тег із таким значенням вже існує.",
- color: "колір",
- "value (optional)": "значення (опціонально)",
- Gray: "Сірий",
- Red: "Червоний",
- Orange: "Помаранчевий",
- Green: "Зелений",
- Blue: "Синій",
- Indigo: "Індиго",
- Purple: "Пурпурний",
- Pink: "Рожевий",
- "Search...": "Пошук...",
- "Avg. Ping": "Середній пінг",
- "Avg. Response": "Середній час відповіді",
- "Entry Page": "Головна сторінка",
- statusPageNothing: "Тут порожньо. Додайте групу або монітор.",
- "No Services": "Немає сервісів",
- "All Systems Operational": "Всі системи працюють у штатному режимі",
- "Partially Degraded Service": "Сервіси працюють частково",
- "Degraded Service": "Всі сервіси не працюють",
- "Add Group": "Додати групу",
- "Add a monitor": "Додати монітор",
- "Edit Status Page": "Редагувати",
- "Go to Dashboard": "Панель управління",
- "Status Page": "Сторінка статусу",
- "Status Pages": "Сторінки статусу",
- Discard: "Скасування",
- "Create Incident": "Створити інцидент",
- "Switch to Dark Theme": "Темна тема",
- "Switch to Light Theme": "Світла тема",
- telegram: "Telegram",
- webhook: "Вебхук",
- smtp: "Email (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Підтримка 50+ сервісів повідомлень)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "Primary Base URL": "Основна URL",
- "Push URL": "URL пуша",
- needPushEvery: "До цієї URL необхідно звертатися кожні {0} секунд",
- pushOptionalParams: "Опціональні параметри: {0}",
- defaultNotificationName: "Моє сповіщення {notification} ({number})",
- here: "тут",
- Required: "Потрібно",
- "Bot Token": "Токен бота",
- wayToGetTelegramToken: "Ви можете взяти токен тут - {0}.",
- "Chat ID": "ID чату",
- supportTelegramChatID: "Підтримуються ID чатів, груп та каналів",
- wayToGetTelegramChatID: "Ви можете взяти ID вашого чату, відправивши повідомлення боту і перейшовши по цьому URL для перегляду chat_id:",
- "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ТУТ",
- chatIDNotFound: "ID чату не знайдено; будь ласка, відправте спочатку повідомлення боту",
- "Post URL": "Post URL",
- "Content Type": "Тип контенту",
- webhookJsonDesc: "{0} підходить для будь-яких сучасних HTTP-серверів, наприклад Express.js",
- webhookFormDataDesc: "{multipart} підходить для PHP. JSON-вивід необхідно буде обробити за допомогою {decodeFunction}",
- secureOptionNone: "Ні / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Ігнорувати помилки TLS",
- "From Email": "Від кого",
- emailCustomSubject: "Своя тема",
- "To Email": "Кому",
- smtpCC: "Копія",
- smtpBCC: "Прихована копія",
- "Discord Webhook URL": "Discord Вебхук URL",
- wayToGetDiscordURL: "Ви можете створити його в Параметрах сервера -> Інтеграції -> Створити вебхук",
- "Bot Display Name": "Ім'я бота, що відображається",
- "Prefix Custom Message": "Свій префікс повідомлення",
- "Hello @everyone is...": "Привіт {'@'}everyone це...",
- "Webhook URL": "URL вебхука",
- wayToGetTeamsURL: "Як створити URL вебхука ви можете дізнатися тут - {0}.",
- Номер: "Номер",
- Recipients: "Одержувачі",
- needSignalAPI: "Вам необхідний клієнт Signal із підтримкою REST API.",
- wayToCheckSignalURL: "Пройдіть по цьому URL, щоб дізнатися як налаштувати такий клієнт:",
- signalImportant: "ВАЖЛИВО: Не можна змішувати в Одержувачах групи та номери!",
- "Application Token": "Токен програми",
- "Server URL": "URL сервера",
- Priority: "Пріоритет",
- "Icon Emoji": "Іконка Emoji",
- "Channel Name": "Ім'я каналу",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Більше інформації про вебхуки: {0}",
- aboutChannelName: "Введіть ім'я каналу в поле {0} Ім'я каналу, якщо ви хочете обійти канал вебхука. Наприклад: #other-channel",
- aboutKumaURL: "Якщо поле Uptime Kuma URL в налаштуваннях залишиться порожнім, за замовчуванням буде використовуватися посилання на проект на GitHub.",
- emojiCheatSheet: "Шпаргалка по Emoji: {0}",
- "User Key": "Ключ користувача",
- Device: "Пристрій",
- "Message Title": "Заголовок повідомлення",
- "Notification Sound": "Звук сповіщення",
- "More info on:": "Більше інформації: {0}",
- pushoverDesc1: "Екстренний пріоритет (2) має таймуут повтору за замовчуванням 30 секунд і закінчується через 1 годину.",
- pushoverDesc2: "Якщо ви бажаєте надсилати повідомлення різним пристроям, необхідно заповнити поле Пристрій.",
- "SMS Type": "Тип SMS",
- octopushTypePremium: "Преміум (Швидкий - рекомендується для алертів)",
- octopushTypeLowCost: "Дешевий (Повільний - іноді блокується операторами)",
- checkPrice: "Тарифи {0}:",
- octopushLegacyHint: "Ви використовуєте стару версію Octopush (2011-2020) або нову?",
- "Check octopush prices": "Тарифи Octopush {0}.",
- octopushPhoneNumber: "Номер телефону (між. формат, наприклад: +380123456789)",
- octopushSMSSender: "Ім'я відправника SMS: 3-11 символів алвафіту, цифр та пробілів (a-zA-Z0-9)",
- "LunaSea Device ID": "ID пристрою LunaSea",
- "Apprise URL": "Apprise URL",
- "Example:": "Приклад: {0}",
- "Read more:": "Докладніше: {0}",
- "Status:": "Статус: {0}",
- "Read more": "Докладніше",
- appriseInstalled: "Apprise встановлено.",
- appriseNotInstalled: "Apprise не встановлено. {0}",
- "Access Token": "Токен доступу",
- "Channel access token": "Токен доступу каналу",
- "Line Developers Console": "Консоль розробників Line",
- lineDevConsoleTo: "Консоль розробників Line - {0}",
- "Basic Settings": "Базові налаштування",
- "User ID": "ID користувача",
- "Messaging API": "API повідомлень",
- wayToGetLineChannelToken: "Спочатку зайдіть в {0}, створіть провайдера та канал (API повідомлень), потім ви зможете отримати токен доступу каналу та ID користувача з вищезгаданих пунктів меню.",
- "Icon URL": "URL іконки",
- aboutIconURL: "Ви можете надати посилання на іконку в полі \"URL іконки\", щоб перевизначити картинку профілю за замовчуванням. Не використовується, якщо задана іконка Emoji.",
- aboutMattermostChannelName: "Ви можете перевизначити канал за замовчуванням, в який пише вебхук, ввівши ім'я каналу в полі \"Ім'я каналу\". Це необхідно включити в налаштуваннях вебхука Mattermost. Наприклад: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - дешево та повільно, часто перевантажений. Тільки для одержувачів з Польщі.",
- promosmsTypeFlash: "SMS FLASH - повідомлення автоматично з'являться на пристрої одержувача. Тільки для одержувачів з Польщі.",
- promosmsTypeFull: "SMS FULL - преміум-рівень SMS, можна використовувати своє ім'я відправника (попередньо зареєструвавши його). Надійно для алертів.",
- promosmsTypeSpeed: "SMS SPEED - найвищий пріоритет у системі. Дуже швидко і надійно, але дуже дорого (вдвічі дорожче, ніж SMS FULL).",
- promosmsPhoneNumber: "Номер телефону (для одержувачів з Польщі можна пропустити код регіону)",
- promosmsSMSSender: "Ім'я відправника SMS: Зареєстроване або одне з імен за замовчуванням: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookURL": "Feishu WebHookURL",
- matrixHomeserverURL: "URL сервера (разом з http(s):// і опціонально порт)",
- "Internal Room Id": "Внутрішній ID кімнати",
- matrixDesc1: "Внутрішній ID кімнати можна знайти в Подробицях у параметрах каналу вашого Matrix клієнта. Він повинен виглядати приблизно як !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Рекомендується створити нового користувача і не використовувати токен доступу особистого користувача Matrix, тому що це спричиняє повний доступ до облікового запису та до кімнат, в яких ви є. Замість цього створіть нового користувача і запросіть його тільки в ту кімнату, в якій ви хочете отримувати повідомлення.Токен доступу можна отримати, виконавши команду {0}",
- Method: "Метод",
- Body: "Тіло",
- Headers: "Заголовки",
- PushUrl: "URL пуша",
- HeadersInvalidFormat: "Заголовки запиту некоректні JSON: ",
- BodyInvalidFormat: "Тіло запиту некоректне JSON: ",
- "Monitor History": "Статистика",
- clearDataOlderThan: "Зберігати статистику за {0} днів.",
- PasswordsDoNotMatch: "Паролі не співпадають.",
- records: "записів",
- "One record": "Один запис",
- steamApiKeyDescription: "Для моніторингу ігрового сервера Steam вам потрібен Web-API ключ Steam. Зареєструвати його можна тут: ",
- "Certificate Chain": "Ланцюжок сертифікатів",
- Valid: "Дійсний",
- "Hide Tags": "Приховати теги",
- Title: "Назва інциденту:",
- Content: "Зміст інциденту:",
- Post: "Опублікувати",
- Cancel: "Скасувати",
- Created: "Створено",
- Unpin: "Відкріпити",
- "Show Tags": "Показати теги",
- recent: "Зараз",
- "3h": "3 години",
- "6h": "6 годин",
- "24h": "24 години",
- "1w": "1 тиждень",
- "No monitors available.": "Немає доступних моніторів",
- "Add one": "Додати новий",
- Backup: "Резервна копія",
- Security: "Безпека",
- "Shrink Database": "Стиснути базу даних",
- "Current User": "Поточний користувач",
- About: "Про програму",
- Description: "Опис",
- "Powered by": "Працює на основі скрипту від",
- shrinkDatabaseDescription: "Включає VACUUM для бази даних SQLite. Якщо база даних була створена на версії 1.10.0 і більше, AUTO_VACUUM вже включений і ця дія не потрібна.",
- Style: "Стиль",
- info: "ІНФО",
- warning: "УВАГА",
- danger: "ПОМИЛКА",
- primary: "ОСНОВНИЙ",
- light: "СВІТЛИЙ",
- dark: "ТЕМНИЙ",
- "New Status Page": "Нова сторінка статусу",
- "Show update if available": "Показувати доступні оновлення",
- "Also check beta release": "Перевіряти оновлення для бета версій",
- "Add New Status Page": "Додати сторінку статусу",
- Next: "Далі",
- "Acz characters: a-z 0-9 -": "Дозволені символи: a-z 0-9 -",
- "Start or end with a-z 0-9 only": "Початок та закінчення імені лише на символи: a-z 0-9",
- "No consecutive dashes --": "Заборонено використовувати тире --",
- "HTTP Options": "HTTP Опції",
- Authentication: "Аутентифікація",
- "HTTP Basic Auth": "Базова HTTP",
- PushByTechulus: "Push by Techulus",
- clicksendsms: "ClickSend SMS",
- GoogleChat: "Google Chat (тільки Google Workspace)",
- apiCredentials: "API реквізити",
- Done: "Готово",
- Info: "Інфо",
- "Steam API Key": "Steam API-Ключ",
- "Pick a RR-Type...": "Виберіть RR-тип...",
- "Pick Accepted Status Codes...": "Виберіть прийняті коди стану...",
- Default: "За замовчуванням",
- "Please input title and content": "Будь ласка, введіть назву та зміст",
- "Last Updated": "Останнє Оновлення",
- "Untitled Group": "Група без назви",
- Services: "Сервіси",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Користувач (включаючи префікс webapi_)",
- serwersmsAPIPassword: "API Пароль",
- serwersmsPhoneNumber: "Номер телефону",
- serwersmsSenderName: "SMS ім'я відправника (реєстрований через портал користувача)",
- stackfield: "Stackfield",
- smtpDkimSettings: "DKIM Налаштування",
- smtpDkimDesc: "Повернутися до Nodemailer DKIM {0} для використання.",
- documentation: "документація",
- smtpDkimDomain: "Ім'я домена",
- smtpDkimKeySelector: "Ключ",
- smtpDkimPrivateKey: "Приватний ключ",
- smtpDkimHashAlgo: "Алгоритм хеша (опціонально)",
- smtpDkimheaderFieldNames: "Заголовок ключів для підпису (опціонально)",
- smtpDkimskipFields: "Заколовок ключів не для підпису (опціонально)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "Кінцева точка API",
- alertaEnvironment: "Середовище",
- alertaApiKey: "Ключ API",
- alertaAlertState: "Стан алерту",
- alertaRecoverState: "Стан відновлення",
- deleteStatusPageMsg: "Дійсно хочете видалити цю сторінку статусів?",
- Proxies: "Проксі",
- default: "За замовчуванням",
- enabled: "Активно",
- setAsDefault: "Встановити за замовчуванням",
- deleteProxyMsg: "Ви впевнені, що хочете видалити цей проксі для всіх моніторів?",
- proxyDescription: "Щоб функціонувати, монітору потрібно призначити проксі.",
- enableProxyDescription: "Цей проксі не впливатиме на запити моніторингу, доки його не буде активовано. Ви можете контролювати тимчасове відключення проксі з усіх моніторів за статусом активації.",
- setAsDefaultProxyDescription: "Цей проксі буде ввімкнено за умовчанням для нових моніторів. Ви все одно можете вимкнути проксі окремо для кожного монітора.",
- Invalid: "Недійсний",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Шаблон смс повинен містити параметри: ",
- "Bark Endpoint": "Bark Endpoint",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "Для безпеки необхідно використовувати секретний ключ",
- "Device Token": "Токен пристрою",
- Platform: "Платформа",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "Високий",
- Retry: "Повтор",
- Topic: "Тема",
- "WeCom Bot Key": "WeCom Bot ключ",
- "Setup Proxy": "Налаштувати проксі",
- "Proxy Protocol": "Протокол проксі",
- "Proxy Server": "Проксі-сервер",
- "Proxy server has authentication": "Проксі-сервер має аутентифікацію",
- User: "Користувач",
- Installed: "Встановлено",
- "Not installed": "Не встановлено",
- Running: "Запущено",
- "Not running": "Не запущено",
- "Remove Token": "Видалити токен",
- Start: "Запустити",
- Stop: "Зупинити",
- "Uptime Kuma": "Uptime Kuma",
- Slug: "Slug",
- "Accept characters:": "Прийняти символи:",
- startOrEndWithOnly: "Починається або закінчується лише {0}",
- "No consecutive dashes": "Немає послідовних тире",
- "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.",
- "No Proxy": "Без проксі",
- "Page Not Found": "Сторінку не знайдено",
- "Reverse Proxy": "Реверсивний проксі",
- wayToGetCloudflaredURL: "(Завантажити Cloudflare з {0})",
- cloudflareWebsite: "Веб-сайт Cloudflare",
- "Message:": "Повідомлення:",
- "Don't know how to get the token? Please read the guide:": "Не знаєте, як отримати токен? Прочитайте посібник:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Поточне з’єднання може бути втрачено, якщо ви зараз під’єднуєтеся через Cloudflare Tunnel. Ви дійсно хочете зробити це? Для підтвердження введіть поточний пароль.",
- "Other Software": "Інше програмне забезпечення",
- "For example: nginx, Apache and Traefik.": "Наприклад: nginx, Apache and Traefik.",
- "Please read": "Будь ласка, прочитайте",
- "Subject:": "Тема:",
- "Valid To:": "Дійсний до:",
- "Days Remaining:": "Залишилось днів:",
- "Issuer:": "Емітент:",
- "Fingerprint:": "Відбиток:",
- "No status pages": "Немає сторінок статусу",
- "Domain Name Expiry Notification": "Сповіщення про закінчення терміну дії доменного імені",
- Proxy: "Проксі",
- "Date Created": "Дата створення",
- onebotHttpAddress: "OneBot адреса HTTP",
- onebotMessageType: "OneBot тип повідомлення",
- onebotGroupMessage: "Група",
- onebotPrivateMessage: "Приватне",
- onebotUserOrGroupId: "Група/Користувач ID",
- onebotSafetyTips: "Для безпеки необхідно встановити маркер доступу",
- "PushDeer Key": "PushDeer ключ",
- "Footer Text": "Текст нижнього колонтитула",
- "Show Powered By": "Показувати платформу",
- "Domain Names": "Доменні імена",
- signedInDisp: "Ви ввійшли як {0}",
- signedInDispDisabled: "Авторизація вимкнена.",
- "Certificate Expiry Notification": "Сповіщення про закінчення терміну дії сертифіката",
- "API Username": "Користувач API",
- "API Key": "Ключ API",
- "Recipient Number": "Номер одержувача",
- "From Name/Number": "Від Ім'я/Номер",
- "Leave blank to use a shared sender number.": "Залиште поле порожнім, щоб використовувати спільний номер відправника.",
- "Octopush API Version": "Octopush API версія",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- "endpoint": "кінцева точка",
- octopushAPIKey: "\"Ключ API\" з облікових даних HTTP API в панелі керування",
- octopushLogin: "\"Ім'я користувача\" з облікових даних HTTP API на панелі керування",
- promosmsLogin: "API Логін",
- promosmsPassword: "API Пароль",
- "pushoversounds pushover": "Pushover (по замовчуванню)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm (long)",
- "pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
- "pushoversounds echo": "Pushover Echo (long)",
- "pushoversounds updown": "Up Down (long)",
- "pushoversounds vibrate": "Vibrate Only",
- "pushoversounds none": "None (silent)",
- pushyAPIKey: "Секретний ключ API",
- pushyToken: "Токен пристрою",
- "Using a Reverse Proxy?": "Використовувати зворотній проксі?",
- "Check how to config it for WebSocket": "Перевірте, як налаштувати його для WebSocket",
- "Steam Game Server": "Ігровий сервер Steam",
- "Most likely causes:": "Найімовірніші причини:",
- "The resource is no longer available.": "Ресурс більше не доступний.",
- "There might be a typing error in the address.": "Можливо, в адресі є помилка.",
- "What you can try:": "Що ви можете спробувати:",
- "Retype the address.": "Повторно введіть адресу.",
- "Go back to the previous page.": "Повернутися на попередню сторінку.",
- "Coming Soon": "Незабаром",
- wayToGetClickSendSMSToken: "Ви можете отримати ім’я користувача API та ключ API з {0} .",
- "Connection String": "Рядок підключення",
- "Query": "Запит",
- settingsCertificateExpiry: "Закінчення терміну дії сертифіката TLS",
- certificationExpiryDescription: "Запуск сповіщення для HTTPS моніторів коли до закінчення терміну дії TLS сертифіката:",
- "ntfy Topic": "ntfy Тема",
- "Domain": "Домен",
- "Workstation": "Робоча станція",
- disableCloudflaredNoAuthMsg: "Ви перебуваєте в режимі без авторизації, пароль не потрібен.",
-};
diff --git a/src/languages/vi-VN.js b/src/languages/vi-VN.js
deleted file mode 100644
index 505776f07..000000000
--- a/src/languages/vi-VN.js
+++ /dev/null
@@ -1,469 +0,0 @@
-export default {
- languageName: "Tiếng Việt",
- checkEverySecond: "Kiểm tra mỗi {0} giây.",
- retryCheckEverySecond: "Thử lại mỗi {0} giây.",
- retriesDescription: "Số lần thử lại tối đa trước khi dịch vụ được đánh dấu là down và gửi thông báo.",
- ignoreTLSError: "Bỏ qua lỗi TLS/SSL với các web HTTPS.",
- upsideDownModeDescription: "Trạng thái đảo ngược, nếu dịch vụ có thể truy cập được nghĩa là DOWN.",
- maxRedirectDescription: "Số lần chuyển hướng (redirect) tối đa. Đặt thành 0 để tắt chuyển hướng",
- acceptedStatusCodesDescription: "Chọn mã trạng thái được coi là phản hồi thành công.",
- passwordNotMatchMsg: "Mật khẩu nhập lại không khớp.",
- notificationDescription: "Vui lòng chỉ định một kênh thông báo.",
- keywordDescription: "Từ khoá tìm kiếm phản hồi ở dạng html hoặc JSON, có phân biệt chữ HOA - thường",
- pauseDashboardHome: "Tạm dừng",
- deleteMonitorMsg: "Bạn chắc chắn muốn xóa kênh theo dõi này chứ?",
- deleteNotificationMsg: "Bạn có chắc chắn muốn xóa kênh thông báo này cho tất cả kênh theo dõi?",
- resolverserverDescription: "Cloudflare là máy chủ mặc định, bạn có thể thay đổi bất cứ lúc nào.",
- rrtypeDescription: "Hãy chọn RR-Type mà bạn muốn giám sát",
- pauseMonitorMsg: "Bạn chắc chắn muốn tạm dừng chứ?",
- enableDefaultNotificationDescription: "Bật làm mặc định cho mọi kênh theo dõi mới về sau. Bạn vẫn có thể tắt thông báo riêng cho từng kênh theo dõi.",
- clearEventsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ sự kiện cho kênh theo dõi này chứ?",
- clearHeartbeatsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ heartbeats cho kênh theo dõi này chứ?",
- confirmClearStatisticsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ số liệu thống kê?",
- importHandleDescription: "Chọn 'Giữ lại' nếu bạn muốn bỏ qua mọi kênh theo dõi và kênh thông báo trùng tên. 'Ghi đè' sẽ ghi đè lên tất cả các kênh theo dõi và kênh thông báo.",
- confirmImportMsg: "Bạn có chắc chắn muốn khôi phục bản bản sao lưu này không?.",
- twoFAVerifyLabel: "Vui lòng nhập mã token của bạn để xác minh rằng xác thực 2 lớp (2FA) đang hoạt động",
- tokenValidSettingsMsg: "Mã token hợp lệ! Bạn có thể lưu cài đặt xác thực 2 lớp (2FA) bây giờ.",
- confirmEnableTwoFAMsg: "Bạn chắc chắn muốn bật xác thực 2 lớp (2FA) chứ?",
- confirmDisableTwoFAMsg: "Bạn chắc chắn muốn tắt xác thực 2 lớp (2FA) chứ?",
- Settings: "Cài đặt",
- Dashboard: "Dashboard",
- "New Update": "Bản cập nhật mới",
- Language: "Ngôn ngữ",
- Appearance: "Giao diện",
- Theme: "Theme",
- General: "Chung",
- "Primary Base URL": "URL chính",
- Version: "Phiên bản",
- "Check Update On GitHub": "Kiểm tra bản cập nhật mới trên GitHub",
- List: "List",
- Add: "Thêm",
- "Add New Monitor": "Thêm mới kênh theo dõi",
- "Quick Stats": "Thống kê nhanh",
- Up: "Up",
- Down: "Down",
- Pending: "Chờ xử lý",
- Unknown: "Không xác định",
- Pause: "Tạm dừng",
- Name: "Tên",
- Status: "Trạng thái",
- DateTime: "Ngày tháng",
- Message: "Trạng thái request",
- "No important events": "Không có sự kiện quan trọng nào",
- Resume: "Khôi phục",
- Edit: "Sửa",
- Delete: "Xoá",
- Current: "Hiện tại",
- Uptime: "Uptime",
- "Cert Exp.": "Cert hết hạn",
- day: "ngày",
- "-day": "-ngày",
- hour: "giờ",
- "-hour": "-giờ",
- Response: "Phản hồi",
- Ping: "Ping",
- "Monitor Type": "Kiểu kênh theo dõi",
- Keyword: "Từ khoá",
- "Friendly Name": "Tên rút gọn",
- URL: "URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "Tần suất kiểm tra",
- Retries: "Thử lại",
- "Heartbeat Retry Interval": "Tần suất kiểm tra lại",
- Advanced: "Nâng cao",
- "Upside Down Mode": "Chế độ đảo ngược",
- "Max. Redirects": "Số chuyển hướng tối đa",
- "Accepted Status Codes": "Codes trạng thái chấp nhận",
- "Push URL": "Push URL",
- needPushEvery: "Bạn nên gọi URL mỗi {0} giây.",
- pushOptionalParams: "Tuỳ chỉnh parameters: {0}",
- Save: "Lưu",
- Notifications: "Thông báo",
- "Not available, please setup.": "Chưa sẵn sàng, hãy cài đặt.",
- "Setup Notification": "Cài đặt thông báo",
- Light: "Sáng",
- Dark: "Tối",
- Auto: "Tự động",
- "Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
- Normal: "Bình thường",
- Bottom: "Dưới",
- None: "Không có",
- Timezone: "Múi giờ",
- "Search Engine Visibility": "Hiển thị với các công cụ tìm kiếm",
- "Allow indexing": "Cho phép indexing",
- "Discourage search engines from indexing site": "Ngăn chặn các công cụ tìm kiếm indexing trang",
- "Change Password": "Thay đổi mật khẩu",
- "Current Password": "Mật khẩu hiện tại",
- "New Password": "Mật khẩu mới",
- "Repeat New Password": "Lặp lại mật khẩu mới",
- "Update Password": "Cập nhật mật khẩu",
- "Disable Auth": "Tắt xác minh",
- "Enable Auth": "Bật xác minh",
- "disableauth.message1": "Bạn có muốn TẮT XÁC THỰC không?",
- "disableauth.message2": "Điều này rất nguy hiểmBẤT KỲ AI cũng có thể truy cập và cướp quyền điều khiển.",
- "Please use this option carefully!": "Vui lòng cẩn thận .",
- Logout: "Đăng xuất",
- Leave: "Rời",
- "I understand, please disable": "Tôi hiểu, làm ơn hãy tắt!",
- Confirm: "Xác nhận",
- Yes: "Có",
- No: "Không",
- Username: "Tài khoản",
- Password: "Mật khẩu",
- "Remember me": "Lưu phiên đăng nhập",
- Login: "Đăng nhập",
- "No Monitors, please": "Không có kênh theo dõi nào",
- "add one": "Thêm mới",
- "Notification Type": "Kiểu thông báo",
- Email: "Email",
- Test: "Thử",
- "Certificate Info": "Thông tin Certificate",
- "Resolver Server": "Máy chủ Resolver",
- "Resource Record Type": "Loại bản ghi",
- "Last Result": "Kết quả cuối cùng",
- "Create your admin account": "Tạo tài khoản quản trị",
- "Repeat Password": "Lặp lại mật khẩu",
- "Import Backup": "Khôi phục bản sao lưu",
- "Export Backup": "Xuất bản sao lưu",
- Export: "Xuất",
- Import: "Nhập",
- respTime: "Thời gian phản hồi (ms)",
- notAvailableShort: "N/A",
- "Default enabled": "Mặc định bật",
- "Apply on all existing monitors": "Áp dụng cho tất cả kênh theo dõi đang có",
- Create: "Tạo",
- "Clear Data": "Xoá dữ liệu",
- Events: "Sự kiện",
- Heartbeats: "Heartbeats",
- "Auto Get": "Tự động lấy",
- backupDescription: "Sao lưu tất cả các kênh theo dõi và tất cả các thông báo vào một file định dạng JSON.",
- backupDescription2: "Lưu ý: Không bao gồm dữ liệu lịch sử các sự kiện.",
- backupDescription3: "Hãy lưu giữ file này cẩn thận, trong file đó chứa cả các token thông báo.",
- alertNoFile: "Hãy chọn file để khôi phục.",
- alertWrongFileType: "Hãy chọn file định dạng JSON.",
- "Clear all statistics": "Xoá tất cả thống kê",
- "Skip existing": "Giữ lại",
- Overwrite: "Ghi đè",
- Options: "Tuỳ chọn",
- "Keep both": "Giữ lại cả hai",
- "Verify Token": "Xác minh Token",
- "Setup 2FA": "Cài đặt xác thực 2 lớp (2FA)",
- "Enable 2FA": "Bật xác thực 2 lớp (2FA)",
- "Disable 2FA": "Tắt xác thực 2 lớp (2FA)",
- "2FA Settings": "Cài đặt xác thực 2 lớp (2FA)",
- "Two Factor Authentication": "Xác thực hai yếu tố",
- Active: "Hoạt động",
- Inactive: "Ngừng hoạt động",
- Token: "Token",
- "Show URI": "Hiển thị URI",
- Tags: "Tags",
- "Add New below or Select...": "Thêm mới ở dưới hoặc Chọn...",
- "Tag with this name already exist.": "Tag với tên đã tồn tại.",
- "Tag with this value already exist.": "Tag với value đã tồn tại.",
- color: "Màu sắc",
- "value (optional)": "Value (tuỳ chọn)",
- Gray: "Xám",
- Red: "Đỏ",
- Orange: "Cam",
- Green: "Xanh lá",
- Blue: "Xanh da trời",
- Indigo: "Chàm",
- Purple: "Tím",
- Pink: "Hồng",
- "Search...": "Tìm kiếm...",
- "Avg. Ping": "Ping trung bình",
- "Avg. Response": "Phản hồi trung bình",
- "Entry Page": "Entry Page",
- statusPageNothing: "Chưa có thông tin gì, hãy thêm nhóm kênh theo dõi hoặc kênh theo dõi.",
- "No Services": "Không có dịch vụ",
- "All Systems Operational": "Tất cả các hệ thống hoạt động bình thường",
- "Partially Degraded Service": "Có hệ thống bị ngưng",
- "Degraded Service": "Toàn bộ hệ thống bị ngưng",
- "Add Group": "Thêm nhóm",
- "Add a monitor": "Thêm kênh theo dõi",
- "Edit Status Page": "Sửa trang trạng thái",
- "Go to Dashboard": "Đi tới Dashboard",
- "Status Page": "Trang trạng thái",
- "Status Pages": "Trang trạng thái",
- defaultNotificationName: "My {notification} Alerts ({number})",
- here: "tại đây",
- Required: "Bắt buộc",
- telegram: "Telegram",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "Bạn có thể lấy mã token từ",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "Hỗ trợ chat trực tiếp / Nhóm / Kênh Chat ID",
- wayToGetTelegramChatID: "Bạn có thể lấy chat id của mình bằng cách gửi tin nhắn tới bot và truy cập url này để xem chat_id:",
- "YOUR BOT TOKEN HERE": "MÃ BOT TOKEN CỦA BẠN",
- chatIDNotFound: "Không tìm thấy Chat ID, vui lòng gửi tin nhắn cho bot này trước",
- webhook: "Webhook",
- "Post URL": "URL webhook",
- "Content Type": "Loại nội dung",
- webhookJsonDesc: "{0} tương thích với máy chủ HTTP ví dụ như Express.js",
- webhookFormDataDesc: "{multipart} tương thích với máy chủ PHP, bạn chỉ cần phân tích cú pháp json bằng {decodeFunction}",
- smtp: "Email (SMTP)",
- secureOptionNone: "None/STARTTLS(25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "Bỏ qua lỗi TLS",
- "From Email": "Email gửi",
- emailCustomSubject: "Tuỳ chỉnh tiêu đề",
- "To Email": "Email nhận",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "Để lấy Discord, hãy vào: Server Settings -> Integrations -> Create Webhook",
- "Bot Display Name": "Tên hiển thị của BOT",
- "Prefix Custom Message": "Tiền tố tin nhắn tuỳ chọn",
- "Hello @everyone is...": "Xin chào {'@'} mọi người đang...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "Bạn có thể học cách tạo webhook url {0}.",
- signal: "Tín hiệu",
- Number: "Số",
- Recipients: "Người nhận",
- needSignalAPI: "Bạn cần một tín hiệu kết nối với REST API.",
- wayToCheckSignalURL: "Bạn có thể kiểm tra URL này để xem cách thiết lập:",
- signalImportant: "QUAN TRỌNG: Bạn không thể kết hợp các nhóm và số trong người nhận!",
- gotify: "Gotify",
- "Application Token": "Mã Token ứng dụng",
- "Server URL": "URL máy chủ",
- Priority: "Mức ưu tiên",
- slack: "Slack",
- "Icon Emoji": "Icon Emoji",
- "Channel Name": "Tên Channel",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "Thông tin thêm về webhook trên: {0}",
- aboutChannelName: "Nhập tên kênh trên {0} trường Channel Name nếu bạn muốn bỏ qua kênh webhook. vd: #other-channel",
- aboutKumaURL: "Nếu bạn để trống trường Uptime Kuma URL, mặc định sẽ là trang Project Github.",
- emojiCheatSheet: "Bảng tra cứu Emoji: {0}",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (Hỗ trợ trên 50 dịch vụ thông báo)",
- GoogleChat: "Google Chat (Google Workspace only)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "User Key",
- Device: "Thiết bị",
- "Message Title": "Tiêu đề tin nhắn",
- "Notification Sound": "Âm thanh thông báo",
- "More info on:": "Thông tin chi tiết tại: {0}",
- pushoverDesc1: "Mức ưu tiên khẩn cấp (2) có thời gian chờ mặc định là 30 giây giữa các lần thử lại và sẽ hết hạn sau 1 giờ.",
- pushoverDesc2: "Nếu bạn muốn gửi thông báo đến các thiết bị khác nhau, hãy điền vào trường Thiết bị.",
- "SMS Type": "SMS Type",
- octopushTypePremium: "Premium (Nhanh - Khuyến nghị nên dùng cho cảnh báo)",
- octopushTypeLowCost: "Giá rẻ (Chậm, thỉnh thoảng bị chặn)",
- checkPrice: "Kiểm tra giá {0}:",
- apiCredentials: "API credentials",
- octopushLegacyHint: "Bạn muốn sử dụng phiên bản cũ của Octopush (2011-2020) hay phiên bản mới?",
- "Check octopush prices": "Kiểm tra giá octopush {0}.",
- octopushPhoneNumber: "Số điện thoại (Định dạng intl, vd : +84692341165) ",
- octopushSMSSender: "SMS người gửi : 3-11 ký tự chữ, số và dấu cách (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea ID thiết bị",
- "Apprise URL": "Apprise URL",
- "Example:": "Ví dụ: {0}",
- "Read more:": "Đọc thêm: {0}",
- "Status:": "Trạng thái: {0}",
- "Read more": "Đọc thêm",
- appriseInstalled: "Đã cài đặt Apprise.",
- appriseNotInstalled: "Chưa cài đặt Apprise. {0}",
- "Access Token": "Token truy cập",
- "Channel access token": "Token kênh truy cập",
- "Line Developers Console": "Line Developers Console",
- lineDevConsoleTo: "Line Developers Console - {0}",
- "Basic Settings": "Cài đặt cơ bản",
- "User ID": "User ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "Trước tiên, hãy truy cập {0},tạo nhà cung cấp và kênh (Messaging API), sau đó bạn có thể nhận mã token truy cập kênh và id người dùng từ các mục menu được đề cập ở trên.",
- "Icon URL": "Icon URL",
- aboutIconURL: "Bạn có thể cung cấp liên kết đến ảnh trong \"Icon URL\" để ghi đè ảnh hồ sơ mặc định. Sẽ không được sử dụng nếu Biểu tượng cảm xúc được thiết lập.",
- aboutMattermostChannelName: "Bạn có thể ghi đè kênh mặc định mà webhook đăng lên bằng cách nhập tên kênh vào trường \"Channel Name\". Điều này cần được bật trong cài đặt Mattermost webhook. Ví dụ: #other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - rẻ nhưng chậm và thường xuyên quá tải. Chỉ dành cho người Ba Lan.",
- promosmsTypeFlash: "SMS FLASH - Tin nhắn sẽ tự động hiển thị trên thiết bị của người nhận. Chỉ dành cho người Ba Lan.",
- promosmsTypeFull: "SMS FULL - SMS cao cấp, Bạn có thể sử dụng Tên Người gửi (Bạn cần đăng ký tên trước). Đáng tin cậy cho các cảnh báo.",
- promosmsTypeSpeed: "SMS SPEED - Ưu tiên cao nhất trong hệ thống. Rất nhanh chóng và đáng tin cậy nhưng tốn kém, (giá gấp đôi SMS FULL).",
- promosmsPhoneNumber: "Số điện thoại (Bỏ qua mã vùng với người Ba Lan)",
- promosmsSMSSender: "SMS Tên người gửi: Tên đã đăng ký trước hoặc tên mặc định: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookUrl",
- matrixHomeserverURL: "Homeserver URL (với http(s):// và port tuỳ chỉnh)",
- "Internal Room Id": "Room ID Nội bộ",
- matrixDesc1: "Bạn có thể tìm thấy room ID nội bộ bằng cách tìm trong mục advanced của phần room settings trong Matrix client của bạn. Nó có dạng giống như !QMdRCpUIfLwsfjxye6:home.server.",
- matrixDesc2: "Bạn nên tạo người dùng mới và đừng sử dụng mã token truy cập của Matrix user vì nó sẽ cho phép truy cập toàn quyền vào tài khoản của bạn và tất cả các phòng bạn đã tham gia. Thay vào đó, hãy tạo một người dùng mới và chỉ mời người đó vào phòng mà bạn muốn nhận thông báo. Bạn có thể lấy được mã token truy cập bằng cách chạy {0}",
- Method: "Method",
- Body: "Body",
- Headers: "Headers",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "Header request không hợp lệ JSON: ",
- BodyInvalidFormat: "Tequest body không hợp lệ JSON: ",
- "Monitor History": "Lịch sử kênh theo dõi",
- clearDataOlderThan: "Giữ dữ liệu lịch sử kênh theo dõi {0} ngày.",
- PasswordsDoNotMatch: "Passwords không khớp.",
- records: "records",
- "One record": "One record",
- steamApiKeyDescription: "Để theo dõi các Steam Game Server bạn cần một Steam Web-API key. Bạn có thể đăng ký API key tại đây: ",
- "Current User": "User hiện tại",
- topic: "Topic",
- topicExplanation: "MQTT topic to monitor",
- successMessage: "Success Message",
- successMessageExplanation: "MQTT message that will be considered as success",
- recent: "Gần đây",
- Done: "Hoàn thành",
- Info: "Thông tin",
- Security: "Bảo mật",
- "Steam API Key": "Steam API Key",
- "Shrink Database": "Shrink Database",
- "Pick a RR-Type...": "Pick a RR-Type...",
- "Pick Accepted Status Codes...": "Chọn các Codes trạng thái chấp nhận được...",
- Default: "Mặc định",
- "HTTP Options": "Tuỳ chọn HTTP",
- "Create Incident": "Tạo Incident",
- Title: "Tiêu đề",
- Content: "Nội dung",
- Style: "Style",
- info: "thông tin",
- warning: "cảnh báo",
- danger: "nguy hiểm",
- primary: "cơ sở",
- light: "sáng",
- dark: "tối",
- Post: "Post",
- "Please input title and content": "Hãy nhập tiêu đề và nội dung",
- Created: "Đã tạo",
- "Last Updated": "Cập nhật mới nhất",
- Unpin: "Bỏ ghim",
- "Switch to Light Theme": "Chuyển sang giao diện Sáng",
- "Switch to Dark Theme": "Chuyển sang giao diện Tối",
- "Show Tags": "Hiện Tags",
- "Hide Tags": "Ẩn Tags",
- Description: "Mô tả",
- "No monitors available.": "Không có kênh theo dõi nào.",
- "Add one": "Thêm mới",
- "No Monitors": "Không có kênh theo dõi",
- "Untitled Group": "Nhóm không có tiêu đề",
- Services: "Dịch vụ",
- Discard: "Bỏ",
- Cancel: "Hủy",
- "Powered by": "Được cung cấp bởi",
- shrinkDatabaseDescription: "Khởi chạy database VACCUM cho SQLite. Nếu database được tạo sau version 1.10.0, AUTO_VACCUM đã được bật sẵn, hành động này không cần thiết.",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API Username (incl. webapi_ prefix)",
- serwersmsAPIPassword: "API Password",
- serwersmsPhoneNumber: "Số điện thoại",
- serwersmsSenderName: "Tên người gửi SMS (Đã đăng ký qua portal)",
- "stackfield": "Stackfield",
- Customize: "Customize",
- "Custom Footer": "Custom Footer",
- "Custom CSS": "Custom CSS",
- smtpDkimSettings: "Cài đặt xác thực Email(DKIM)",
- smtpDkimDesc: "Xem hướng dẫn tại {0}.",
- documentation: "Nodemailer DKIM",
- smtpDkimDomain: "Mail domain",
- smtpDkimKeySelector: "DKIM Key Selector",
- smtpDkimPrivateKey: "Private Key",
- smtpDkimHashAlgo: "Hash Algorithm (Tuỳ chọn)",
- smtpDkimheaderFieldNames: "Header Keys to sign (Tuỳ chọn)",
- smtpDkimskipFields: "Header Keys not to sign (Tuỳ chọn)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "Environment",
- alertaApiKey: "API Key",
- alertaAlertState: "Alert State",
- alertaRecoverState: "Recover State",
- deleteStatusPageMsg: "Bạn có chắc chắn muốn xoá trang status này?",
- Proxies: "Proxies",
- default: "Mặc định",
- enabled: "Enabled",
- setAsDefault: "Set As Default",
- deleteProxyMsg: "Bạn muốn xoá proxy này cho tất cả monitors?",
- proxyDescription: "Proxies must be assigned to a monitor to function.",
- enableProxyDescription: "Proxy này chưa ảnh hưởng tới monitor requests cho tới khi được activated. Bạn có thể tạm thời tắt proxy cho tất cả monitors bằng trạng thái activation.",
- setAsDefaultProxyDescription: "Proxy này sẽ bật mặc định cho tất cả monitors mới. Bạn có thể tắt riêng lẻ proxy trên mỗi monitor.",
- "Certificate Chain": "Certificate Chain",
- Valid: "Hợp lệ",
- Invalid: "Không hợp lệ",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Sms template must contain parameters: ",
- "Bark Endpoint": "Bark Endpoint",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "Để an toàn, hãy dùng secret key",
- "Device Token": "Device Token",
- Platform: "Platform",
- iOS: "iOS",
- Android: "Android",
- Huawei: "Huawei",
- High: "High",
- Retry: "Retry",
- Topic: "Topic",
- "WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "Setup Proxy",
- "Proxy Protocol": "Proxy Protocol",
- "Proxy Server": "Proxy Server",
- "Proxy server has authentication": "Proxy server has authentication",
- User: "User",
- Installed: "Installed",
- "Not installed": "Not installed",
- Running: "Running",
- "Not running": "Not running",
- "Remove Token": "Remove Token",
- Start: "Start",
- Stop: "Stop",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "Thêm mới Status Page",
- Slug: "Slug",
- "Accept characters:": "Accept characters:",
- startOrEndWithOnly: "Start or end with {0} only",
- "No consecutive dashes": "No consecutive dashes",
- Next: "Next",
- "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.",
- "No Proxy": "No Proxy",
- "HTTP Basic Auth": "HTTP Basic Auth",
- "New Status Page": "New Status Page",
- "Page Not Found": "Page Not Found",
- "Reverse Proxy": "Reverse Proxy",
- Backup: "Backup",
- About: "About",
- wayToGetCloudflaredURL: "(Download cloudflared from {0})",
- cloudflareWebsite: "Cloudflare Website",
- "Message:": "Message:",
- "Don't know how to get the token? Please read the guide:": "Chưa biết cách lấy token? Xem hướng dẫn tại:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Nếu bạn đang dùng Cloudflare Tunnel, kết nối hiện tại có thể đang bị mất. Bạn có muốn dừng lại? Nhập lại password để xác nhận.",
- "Other Software": "Phần mềm khác",
- "For example: nginx, Apache and Traefik.": "Ví dụ: Nginx, Apache hay Traefik.",
- "Please read": "Hãy xem qua",
- "Subject:": "Subject:",
- "Valid To:": "Valid To:",
- "Days Remaining:": "Số ngày còn lại:",
- "Issuer:": "Issuer:",
- "Fingerprint:": "Fingerprint:",
- "No status pages": "No status pages",
- "Domain Name Expiry Notification": "Cảnh báo hạn hạn Domain Name",
- Proxy: "Proxy",
- "Date Created": "Ngày khởi tạo",
- onebotHttpAddress: "OneBot HTTP Address",
- onebotMessageType: "OneBot Message Type",
- onebotGroupMessage: "Group",
- onebotPrivateMessage: "Private",
- onebotUserOrGroupId: "Group/User ID",
- onebotSafetyTips: "Để đảm bảo an toàn, hãy thiết lập access token",
- "PushDeer Key": "PushDeer Key",
- "Footer Text": "Footer Text",
- "Show Powered By": "Show Powered By",
- "Domain Names": "Domain Names",
- signedInDisp: "Signed in as {0}",
- signedInDispDisabled: "Auth Disabled.",
-};
diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js
deleted file mode 100644
index ba2a78ac7..000000000
--- a/src/languages/zh-CN.js
+++ /dev/null
@@ -1,683 +0,0 @@
-export default {
- languageName: "简体中文",
- checkEverySecond: "检测频率 {0} 秒",
- retryCheckEverySecond: "重试间隔 {0} 秒",
- resendEveryXTimes: "每 {0} 次失败则重复发送一次",
- resendDisabled: "为 0 时禁用重复发送",
- retriesDescription: "服务被标记为故障并发送通知之前的最大重试次数",
- ignoreTLSError: "忽略 HTTPS 站点的 TLS/SSL 错误",
- upsideDownModeDescription: "反转状态监控,如果服务可访问,则认为是故障。",
- maxRedirectDescription: "允许的最大重定向次数。设置为 0 禁用重定向。",
- enableGRPCTls: "允许通过 TLS 连接发送 gRPC 请求",
- grpcMethodDescription: "方法名会转换为小驼峰格式,例如 sayHello、check 等等",
- acceptedStatusCodesDescription: "选择被视为成功响应的状态码。",
- Maintenance: "维护",
- statusMaintenance: "维护",
- "Schedule maintenance": "计划维护",
- "Affected Monitors": "受影响的监控项",
- "Pick Affected Monitors...": "选择受影响的监控项…",
- "Start of maintenance": "维护开始",
- "All Status Pages": "所有状态页面",
- "Select status pages...": "选择状态页面…",
- recurringIntervalMessage: "每天一次 | 每 {0} 天一次",
- affectedMonitorsDescription: "选择受当前维护影响的监控项",
- affectedStatusPages: "在所选状态页面上显示此维护消息",
- atLeastOneMonitor: "至少选择一个受影响的监控项",
- passwordNotMatchMsg: "两次输入的密码不一致。",
- notificationDescription: "通知必须被分配给监控项才能正常工作。",
- keywordDescription: "在纯 HTML 或 JSON 响应中搜索关键字,区分大小写。",
- pauseDashboardHome: "暂停",
- deleteMonitorMsg: "确定要删除此监控项吗?",
- deleteMaintenanceMsg: "确定要删除此维护吗?",
- deleteNotificationMsg: "确定要为所有监控项删除此通知吗?",
- dnsPortDescription: "DNS 服务器端口,默认为 53,您可以在任何时候更改此端口.",
- resolverserverDescription: "默认服务器是 Cloudflare。您随时可以修改解析服务器。",
- rrtypeDescription: "选择要监控的资源记录类型",
- pauseMonitorMsg: "确定要暂停吗?",
- enableDefaultNotificationDescription: "新的监控项将默认启用此通知,您仍然为每个监控项单独禁用。",
- clearEventsMsg: "确定要删除此监控项的所有事件吗?",
- clearHeartbeatsMsg: "确定要删除此监控项的所有心跳状态吗?",
- confirmClearStatisticsMsg: "确定要删除所有统计信息吗?",
- importHandleDescription: "如果想跳过同名的监控项或消息通知,请选择“跳过已存在”。“覆盖”将删除所有现有的监控项和通知。",
- confirmImportMsg: "确定要导入备份吗?请确保已经选择了正确的导入选项。",
- twoFAVerifyLabel: "请输入令牌码以确认二次验证:",
- tokenValidSettingsMsg: "令牌码有效!您现在可以保存二次验证设置了。",
- confirmEnableTwoFAMsg: "确定要启用二次验证吗?",
- confirmDisableTwoFAMsg: "确定要禁用二次验证吗?",
- Settings: "设置",
- Dashboard: "仪表盘",
- "New Update": "有新版本",
- Language: "语言",
- Appearance: "外观",
- Theme: "主题",
- General: "常规",
- "Primary Base URL": "站点主 URL",
- Version: "版本",
- "Check Update On GitHub": "检查 GitHub 上的更新",
- List: "列表",
- Add: "添加",
- "Add New Monitor": "添加监控项",
- "Quick Stats": "状态速览",
- Up: "正常",
- Down: "故障",
- Pending: "正在检测",
- Unknown: "未知",
- Pause: "暂停",
- Name: "名称",
- Status: "状态",
- DateTime: "日期时间",
- Message: "消息",
- "No important events": "暂无重要事件",
- Resume: "恢复",
- Edit: "编辑",
- Delete: "删除",
- Current: "当前",
- Uptime: "在线时间",
- "Cert Exp.": "证书有效期",
- day: "天",
- "-day": " 天",
- hour: "小时",
- "-hour": " 小时",
- Response: "响应",
- Ping: "Ping",
- "Monitor Type": "监控类型",
- Keyword: "关键字",
- "Friendly Name": "显示名称",
- URL: "URL",
- Hostname: "主机名",
- Port: "端口号",
- "Heartbeat Interval": "心跳间隔",
- Retries: "重试次数",
- "Heartbeat Retry Interval": "心跳重试间隔",
- "Resend Notification if Down X times consequently": "连续失败时重复发送通知的间隔次数",
- Advanced: "高级",
- "Upside Down Mode": "反转监控",
- "Max. Redirects": "最大重定向次数",
- "Accepted Status Codes": "有效状态码",
- "Push URL": "推送 URL",
- needPushEvery: "您需要每 {0} 秒调用一次该 URL",
- pushOptionalParams: "可选参数:{0}",
- Save: "保存",
- Notifications: "通知",
- "Not available, please setup.": "暂不可用,请先设置",
- "Setup Notification": "设置通知",
- Light: "明亮",
- Dark: "黑暗",
- Auto: "自动",
- "Theme - Heartbeat Bar": "主题 - 心跳栏",
- Normal: "正常",
- Bottom: "靠下",
- None: "不显示",
- Timezone: "时区",
- "Search Engine Visibility": "搜索引擎可见性",
- "Allow indexing": "允许索引",
- "Discourage search engines from indexing site": "阻止搜索引擎索引网站",
- "Change Password": "修改密码",
- "Current Password": "当前密码",
- "New Password": "新密码",
- "Repeat New Password": "重复新密码",
- "Update Password": "更新密码",
- "Disable Auth": "禁用身份验证",
- "Enable Auth": "启用身份验证",
- "disableauth.message1": "是否确定 取消登录验证 ?",
- "disableauth.message2": "这是为 有第三方认证 的用户提供的功能,如 Cloudflare Access",
- "Please use this option carefully!": "请谨慎使用!",
- Logout: "退出",
- Leave: "离开",
- "I understand, please disable": "我已了解,继续禁用",
- Confirm: "确认",
- Yes: "是",
- No: "否",
- Username: "用户名",
- Password: "密码",
- "Remember me": "记住我",
- Login: "登录",
- "No Monitors, please": "还没有监控项,",
- "add one": "点击添加",
- "Notification Type": "通知类型",
- Email: "邮件",
- Test: "测试",
- "Certificate Info": "证书信息",
- "Resolver Server": "解析服务器",
- "Resource Record Type": "资源记录类型",
- "Last Result": "上次结果",
- "Create your admin account": "创建管理员账户",
- "Repeat Password": "重复密码",
- "Import Backup": "导入备份",
- "Export Backup": "导出备份",
- Export: "导出",
- Import: "导入",
- respTime: "响应时间(毫秒)",
- notAvailableShort: "N/A",
- "Default enabled": "默认开启",
- "Apply on all existing monitors": "应用到所有现有监控项",
- Create: "创建",
- "Clear Data": "清除数据",
- Events: "事件",
- Heartbeats: "心跳",
- "Auto Get": "自动获取",
- backupDescription: "您可以将所有监控项和通知备份到 JSON 文件。",
- backupDescription2: "注意: 不包括历史状态和事件数据。",
- backupDescription3: "导出的文件可能包含敏感信息,例如通知的令牌信息,请小心存放!",
- alertNoFile: "请选择要导入的文件",
- alertWrongFileType: "请选择一个 JSON 文件",
- "Clear all statistics": "清除所有统计数据",
- "Skip existing": "跳过已存在",
- Overwrite: "覆盖",
- Options: "选项",
- "Keep both": "全部保留",
- "Verify Token": "验证令牌",
- "Setup 2FA": "设置二次验证",
- "Enable 2FA": "启用二次验证",
- "Disable 2FA": "禁用二次验证",
- "2FA Settings": "二次验证设置",
- "Two Factor Authentication": "二次验证",
- Active: "激活",
- Inactive: "停用",
- Token: "令牌",
- "Show URI": "显示 URI",
- Tags: "标签",
- "Add New below or Select...": "在下面添加或选择…",
- "Tag with this name already exist.": "相同名称的标签已存在。",
- "Tag with this value already exist.": "相同内容的标签已存在。",
- color: "颜色",
- "value (optional)": "值(可选)",
- Gray: "灰色",
- Red: "红色",
- Orange: "橙色",
- Green: "绿色",
- Blue: "蓝色",
- Indigo: "靛蓝",
- Purple: "紫色",
- Pink: "粉色",
- "Search...": "搜索…",
- "Avg. Ping": "平均 Ping",
- "Avg. Response": "平均响应",
- "Entry Page": "入口页面",
- statusPageNothing: "这里什么也没有,请添加一个分组或一个监控项。",
- "No Services": "无服务",
- "All Systems Operational": "所有服务运行正常",
- "Partially Degraded Service": "部分服务出现故障",
- "Degraded Service": "全部服务出现故障",
- "Add Group": "添加分组",
- "Add a monitor": "添加监控项",
- "Edit Status Page": "编辑状态页面",
- "Go to Dashboard": "前往仪表盘",
- "Status Page": "状态页面",
- "Status Pages": "状态页面",
- defaultNotificationName: "{notification} 通知({number})",
- here: "这里",
- Required: "必填",
- telegram: "Telegram",
- "ZohoCliq": "ZohoCliq",
- "Bot Token": "Bot Token",
- wayToGetTelegramToken: "您可以从 {0} 获取 Token。",
- "Chat ID": "Chat ID",
- supportTelegramChatID: "支持对话/群组/频道的 Chat ID",
- wayToGetTelegramChatID: "您可以发送一条消息给您的机器人,然后访问此链接来查看 chat_id:",
- "YOUR BOT TOKEN HERE": "这里替换成您的 BOT TOKEN",
- chatIDNotFound: "未找到 Chat ID,请先给您的机器人发送一条消息。",
- webhook: "Webhook",
- "Post URL": "Post URL",
- "Content Type": "Content Type",
- webhookJsonDesc: "{0} 适合现代的 HTTP 服务器,例如 Express.js",
- webhookFormDataDesc: "{multipart} 适合 PHP,其中 JSON 需要使用 {decodeFunction} 解码",
- webhookAdditionalHeadersTitle: "额外 Header",
- webhookAdditionalHeadersDesc: "设置通过此 Webhook 发送的额外 Header。",
- smtp: "电子邮件(SMTP)",
- secureOptionNone: "无 / STARTTLS(常用端口 25、587)",
- secureOptionTLS: "TLS(常用端口 465)",
- "Ignore TLS Error": "忽略 TLS 错误",
- "From Email": "发信人",
- emailCustomSubject: "邮件主题",
- "To Email": "收信人",
- smtpCC: "抄送",
- smtpBCC: "密送",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- wayToGetDiscordURL: "要获取,可以前往服务器设置 -> 整合 -> 创建 Webhook",
- "Bot Display Name": "机器人显示名称",
- "Prefix Custom Message": "自定义消息前缀",
- "Hello @everyone is...": "{'@'}everyone,……",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook URL",
- wayToGetTeamsURL: "您可以在{0}了解如何获取 Webhook URL。",
- wayToGetZohoCliqURL: "您可以在{0}了解如何创建 Webhook URL。",
- signal: "Signal",
- Number: "号码",
- Recipients: "收件人",
- needSignalAPI: "您需要有一个支持 REST API 的 Signal 客户端。",
- wayToCheckSignalURL: "您可以通过下面的 URL 了解如何设置:",
- signalImportant: "重要:您不能混合设定收件人的分组和号码!",
- gotify: "Gotify",
- "Application Token": "Application Token",
- "Server URL": "服务器 URL",
- Priority: "优先级",
- slack: "Slack",
- "Icon Emoji": "Emoji 图标",
- "Channel Name": "频道名称",
- "Uptime Kuma URL": "Uptime Kuma URL",
- aboutWebhooks: "关于 Webhook 的更多信息:{0}",
- aboutChannelName: "如果您想绕过 Webhook 频道,请在 {0} 字段输入所需的频道名称。例如:#other-channel",
- aboutKumaURL: "如果保留 Uptime Kuma URL 为空,将会默认指向项目的 GitHub 页面。",
- emojiCheatSheet: "Emoji 速查:{0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (支持 50+ 种通知服务)",
- GoogleChat: "Google Chat(仅 Google Workspace)",
- pushbullet: "Pushbullet",
- AliyunSMS: "阿里云短信服务",
- Kook: "Kook",
- wayToGetKookBotToken: "在 {0} 创建应用并获取机器人 Token",
- wayToGetKookGuildID: "在 Kook 设置中打开“开发者模式”,然后右键点击频道可获取其 ID",
- "Guild ID": "频道 ID",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "User Key",
- Device: "设备",
- "Message Title": "消息标题",
- "Notification Sound": "通知铃声",
- "More info on:": "更多信息:{0}",
- pushoverDesc1: "紧急优先级(2)会在一小时内每隔 30 秒重试一次。",
- pushoverDesc2: "如果您想发送通知给不同的设备,请填写“设备”字段。",
- "SMS Type": "短信类型",
- octopushTypePremium: "Premium(快 - 推荐用于警报)",
- octopushTypeLowCost: "Low Cost(慢 - 有时会被运营商屏蔽)",
- checkPrice: "查看 {0} 的价格:",
- apiCredentials: "API Credentials",
- octopushLegacyHint: "您是否在使用旧版本的 Octopush(2011-2020)?",
- "Check octopush prices": "查看 Octopush 的价格 {0}。",
- octopushPhoneNumber: "电话号码(国际格式,例如:+33612345678)",
- octopushSMSSender: "短信发送名称:3-11 位大小写字母、数字和空格(a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea 设备 ID",
- "Apprise URL": "Apprise URL",
- "Example:": "例如:{0}",
- "Read more:": "了解更多:{0}",
- "Status:": "状态:{0}",
- "Read more": "了解更多",
- appriseInstalled: "Apprise 已安装",
- appriseNotInstalled: "Apprise 未安装。{0}",
- "Access Token": "Access Token",
- "Channel access token": "频道 Access Token",
- "Line Developers Console": "Line 开发者控制台",
- lineDevConsoleTo: "Line 开发者控制台 - {0}",
- "Basic Settings": "基本设置",
- "User ID": "用户 ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "首先访问 {0},创建一个提供者和频道(Messaging API),然后您就可以从上面提到的菜单获取频道的 Access Token 和用户 ID。",
- "Icon URL": "图标 URL",
- aboutIconURL: "您可以在“图标 URL”中提供一个图片链接来覆盖默认的资料图片。如果设置了 Emoji 图标则此字段会被忽略。",
- aboutMattermostChannelName: "您可以覆盖 Webhook 发送消息的默认频道,只需在“频道名称”字段中输入您想要的频道名。这需要在 Mattermost 的 Webhook 设置中启用。例如:#other-channel",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收信人。",
- promosmsTypeFlash: "SMS FLASH - 消息会自动显示在收信人设备上。仅限波兰地区的收信人。",
- promosmsTypeFull: "SMS FULL - 高级短信,您可以使用您自己的发信人名称(需要先注册)。对于警报来说更可靠。",
- promosmsTypeSpeed: "SMS SPEED - 最高优先级。非常快速可靠,但更贵(大约两倍 SMS FULL 的价格)。",
- promosmsPhoneNumber: "电话号码(波兰地区收信人可以不填区号)",
- promosmsSMSSender: "短信发信人名称:已注册的名称或以下默认值之一:InfoSMS、SMS Info、MaxSMS、INFO、SMS",
- Feishu: "飞书",
- "Feishu WebHookUrl": "飞书 WebHook URL",
- matrixHomeserverURL: "服务器 URL(包含 http(s):// 和可选的端口号)",
- "Internal Room Id": "内部房间 ID",
- matrixDesc1: "您可以在 Matrix 客户端房间设置的高级选项内找到内部房间 ID。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。",
- matrixDesc2: "请不要使用您自己的 Access Token,这将开放您所有的账户权限和您已加入房间的权限。我们强烈建议您创建一个新用户并邀请它至您接收通知的房间中。您可以运行以下命令来获取 Access Token:{0}",
- Method: "方法",
- Body: "请求体",
- Headers: "请求头",
- PushUrl: "推送 URL",
- HeadersInvalidFormat: "请求头不是有效的 JSON: ",
- BodyInvalidFormat: "请求体不是有效的 JSON: ",
- "Monitor History": "监控历史",
- clearDataOlderThan: "保留监控历史数据 {0} 天。",
- PasswordsDoNotMatch: "密码不匹配",
- records: "记录",
- "One record": "一条记录",
- steamApiKeyDescription: "要监控 Steam 游戏服务器,您需要 Steam Web-API 密钥。您可以在这里注册您的 API 密钥: ",
- "Current User": "当前用户",
- topic: "Topic",
- topicExplanation: "要监控的 MQTT Topic",
- successMessage: "成功消息",
- successMessageExplanation: "视为成功的 MQTT 消息",
- recent: "最近",
- Done: "完成",
- Info: "信息",
- Security: "安全性",
- "Steam API Key": "Steam API 密钥",
- "Shrink Database": "压缩数据库",
- "Pick a RR-Type...": "选择资源记录类型…",
- "Pick Accepted Status Codes...": "选择有效的状态码…",
- Default: "默认",
- "HTTP Options": "HTTP 选项",
- "Create Incident": "创建事件",
- Title: "标题",
- Content: "内容",
- Style: "类型",
- info: "信息",
- warning: "警告",
- danger: "危险",
- error: "错误",
- critical: "关键",
- primary: "主要",
- light: "明亮",
- dark: "黑暗",
- Post: "发布",
- "Please input title and content": "请输入标题和内容",
- Created: "创建时间",
- "Last Updated": "更新时间",
- Unpin: "取消钉选",
- "Switch to Light Theme": "切换到浅色主题",
- "Switch to Dark Theme": "切换到深色主题",
- "Show Tags": "显示标签",
- "Hide Tags": "隐藏标签",
- Description: "描述",
- "No monitors available.": "没有可用的监控项。",
- "Add one": "添加一个",
- "No Monitors": "没有监控项",
- "Untitled Group": "无标题分组",
- Services: "服务",
- Discard: "放弃",
- Cancel: "取消",
- "Powered by": "Powered by",
- shrinkDatabaseDescription: "触发 SQLite 数据库的 VACUUM 命令,如果您的数据库是在 1.10.0 版本之后创建的,则已启用 AUTO_VACUUM,不再需要此操作。",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API 用户名(包括 webapi_ 前缀)",
- serwersmsAPIPassword: "API 密码",
- serwersmsPhoneNumber: "电话号码",
- serwersmsSenderName: "SMS 发信人名称(需要在客户中心注册)",
- smseagle: "SMSEagle",
- smseagleTo: "电话号码",
- smseagleGroup: "通讯录群组名",
- smseagleContact: "通讯录联系人",
- smseagleRecipientType: "收信人类型",
- smseagleRecipient: "收信人(多个需用半角逗号分隔)",
- smseagleToken: "API Access token",
- smseagleUrl: "您的 SMSEagle 设备 URL",
- smseagleEncoding: "以 Unicode 发送",
- smseaglePriority: "消息优先级(0-9,默认为 0)",
- stackfield: "Stackfield",
- Customize: "自定义",
- "Custom Footer": "自定义底部",
- "Custom CSS": "自定义 CSS",
- smtpDkimSettings: "DKIM 设置",
- smtpDkimDesc: "请访问 Nodemailer DKIM {0} 了解配置方法。",
- documentation: "文档",
- smtpDkimDomain: "域名",
- smtpDkimKeySelector: "前缀选择器",
- smtpDkimPrivateKey: "密钥",
- smtpDkimHashAlgo: "哈希算法(可选)",
- smtpDkimheaderFieldNames: "包含在哈希计算对象内的 Header 列表(可选)",
- smtpDkimskipFields: "不包含在哈希计算对象内的 Header 列表(可选)",
- wayToGetPagerDutyKey: "您可以在 Service -> Service Directory -> (选择一个 Service) -> Integrations -> Add integration 页面中搜索“Events API V2”以获取此 Integration Key,更多信息请看{0}",
- "Integration Key": "Integration Key",
- "Integration URL": "Integration URL",
- "Auto resolve or acknowledged": "自动标记为已解决或已读",
- "do nothing": "不做任何操作",
- "auto acknowledged": "自动标记为已读",
- "auto resolve": "自动标记为已解决",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API 接入点",
- alertaEnvironment: "环境参数",
- alertaApiKey: "API Key",
- alertaAlertState: "报警时的严重性",
- alertaRecoverState: "恢复后的严重性",
- deleteStatusPageMsg: "您确认要删除此状态页吗?",
- Proxies: "代理",
- default: "默认",
- enabled: "启用",
- setAsDefault: "设为默认",
- deleteProxyMsg: "您确认要在所有监控项中删除此代理吗?",
- proxyDescription: "代理必须配置到至少一个监控项后才会工作。",
- enableProxyDescription: "此代理必须启用才能对监控项的网络请求起作用。您可以通过修改激活状态,临时在所有监控项中禁用此代理。",
- setAsDefaultProxyDescription: "此代理会对新创建的监控项默认激活,您仍可以在监控项配置中单独禁用此代理。",
- "Certificate Chain": "证书链",
- Valid: "有效",
- Invalid: "无效",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey Secret",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "短信模板必须包含以下变量:",
- "Bark Endpoint": "Bark 接入点",
- "Bark Group": "Bark 群组",
- "Bark Sound": "Bark 铃声",
- DingDing: "钉钉自定义机器人",
- WebHookUrl: "钉钉自定义机器人 Webhook 地址",
- SecretKey: "钉钉自定义机器人加签密钥",
- "For safety, must use secret key": "出于安全考虑,必须使用加签密钥",
- "Device Token": "Apple Device Token",
- Platform: "平台",
- iOS: "iOS",
- Android: "Android",
- Huawei: "华为",
- High: "高",
- Retry: "重试次数",
- Topic: "Gorush Topic",
- WeCom: "企业微信群机器人",
- "WeCom Bot Key": "企业微信群机器人 Key",
- "Setup Proxy": "设置代理",
- "Proxy Protocol": "代理协议",
- "Proxy Server": "代理服务器",
- "Server Address": "服务器地址",
- "Proxy server has authentication": "代理服务器启用了身份验证功能",
- User: "用户名",
- Installed: "已安装",
- "Not installed": "未安装",
- Running: "运行中",
- "Not running": "未运行",
- "Remove Token": "移除 Token",
- Start: "启动",
- Stop: "停止",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "添加新的状态页",
- Slug: "路径",
- "Accept characters:": "可接受的字符:",
- startOrEndWithOnly: "开头和结尾必须为 {0}",
- "No consecutive dashes": "不能有连续的破折号",
- Next: "下一步",
- "The slug is already taken. Please choose another slug.": "该路径已被使用。请选择其他路径。",
- "No Proxy": "无代理",
- Authentication: "验证",
- "HTTP Basic Auth": "HTTP 基础身份验证",
- "New Status Page": "新的状态页",
- "Page Not Found": "未找到该页面",
- "Reverse Proxy": "反向代理",
- Backup: "备份",
- About: "关于",
- wayToGetCloudflaredURL: "(可从 {0} 下载 cloudflared)",
- cloudflareWebsite: "Cloudflare 网站",
- "Message:": "信息:",
- "Don't know how to get the token? Please read the guide:": "不知道如何获取 Token?请阅读指南:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您正在通过 Cloudflare Tunnel 访问网站,则停止可能会导致当前连接断开。您确定要停止吗?请输入密码以确认。",
- "HTTP Headers": "HTTP 头",
- "Trust Proxy": "可信的代理类字段",
- "Other Software": "其他软件",
- "For example: nginx, Apache and Traefik.": "例如:nginx、Apache 和 Traefik。",
- "Please read": "请阅读",
- "Subject:": "颁发给:",
- "Valid To:": "有效期至:",
- "Days Remaining:": "剩余有效天数:",
- "Issuer:": "颁发者:",
- "Fingerprint:": "指纹:",
- "No status pages": "无状态页",
- "Domain Name Expiry Notification": "域名到期时通知",
- Proxy: "代理",
- "Date Created": "创建于",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP 地址",
- onebotMessageType: "OneBot 消息类型",
- onebotGroupMessage: "群聊",
- onebotPrivateMessage: "私聊",
- onebotUserOrGroupId: "群组/用户 ID",
- onebotSafetyTips: "出于安全原因,请务必设置 AccessToken",
- "PushDeer Key": "PushDeer Key",
- "Footer Text": "底部自定义文本",
- "Show Powered By": "显示 Powered By",
- "Domain Names": "域名",
- signedInDisp: "当前用户: {0}",
- signedInDispDisabled: "已禁用身份验证",
- RadiusSecret: "Radius 共享机密",
- RadiusSecretDescription: "客户端和服务器之间共享的密钥",
- RadiusCalledStationId: "NAS 网络访问服务器号码(Called Station Id)",
- RadiusCalledStationIdDescription: "所访问的服务器的标识",
- RadiusCallingStationId: "呼叫方号码(Calling Station Id)",
- RadiusCallingStationIdDescription: "发出请求的设备的标识",
- "Certificate Expiry Notification": "证书到期时通知",
- "API Username": "API Username",
- "API Key": "API Key",
- "Recipient Number": "收件人手机号码",
- "From Name/Number": "发件人名称/手机号码",
- "Leave blank to use a shared sender number.": "留空以使用平台共享的发件人手机号码",
- "Octopush API Version": "Octopush API 版本",
- "Legacy Octopush-DM": "旧版本 Octopush-DM",
- endpoint: "接入点",
- octopushAPIKey: "控制台 HTTP API credentials 里的 \"API key\"",
- octopushLogin: "控制台 HTTP API credentials 里的 \"Login\"",
- promosmsLogin: "API 登录名",
- promosmsPassword: "API 密码",
- "pushoversounds pushover": "Pushover(默认)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
- "pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
- "pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
- "pushoversounds tugboat": "Tug Boat",
- "pushoversounds alien": "Alien Alarm(长铃声)",
- "pushoversounds climb": "Climb(长铃声)",
- "pushoversounds persistent": "Persistent(长铃声)",
- "pushoversounds echo": "Pushover Echo(长铃声)",
- "pushoversounds updown": "Up Down(长铃声)",
- "pushoversounds vibrate": "仅震动",
- "pushoversounds none": "无(禁音)",
- pushyAPIKey: "API 密钥",
- pushyToken: "设备 Token",
- "Show update if available": "有更新时通知",
- "Also check beta release": "一并检查 Beta 版更新",
- "Using a Reverse Proxy?": "正在使用反向代理?",
- "Check how to config it for WebSocket": "查看如何将反向代理与 WebSocket 一起使用",
- "Steam Game Server": "Steam 游戏服务器",
- "Most likely causes:": "最可能的原因:",
- "The resource is no longer available.": "您所请求的资源已不再可用;",
- "There might be a typing error in the address.": "您输入的地址可能有误。",
- "What you can try:": "您可以尝试以下操作:",
- "Retype the address.": "重新输入地址;",
- "Go back to the previous page.": "返回到上一页面。",
- "Coming Soon": "即将推出",
- wayToGetClickSendSMSToken: "您可以在{0}获取 API Username 和 API Key。",
- "Connection String": "连接字符串",
- Query: "查询语句",
- settingsCertificateExpiry: "TLS 证书过期通知",
- certificationExpiryDescription: "HTTPS 监控项发现被监控目标的 TLS 证书剩余有效期少于以下天数时将发出通知:",
- "Setup Docker Host": "配置 Docker 宿主信息",
- "Connection Type": "连接方式",
- "Docker Daemon": "Docker 守护进程",
- deleteDockerHostMsg: "您确定您要删除此 Docker 宿主设置吗?这会影响所有 Docker 监控项",
- socket: "Socket",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker 容器",
- "Container Name / ID": "容器名称 / ID",
- "Docker Host": "Docker 宿主",
- "Docker Hosts": "Docker 宿主",
- "ntfy Topic": "ntfy Topic",
- Domain: "域名",
- Workstation: "工作站",
- disableCloudflaredNoAuthMsg: "您现在正处于 No Auth 模式,无需输入密码",
- trustProxyDescription: "信任 'X-Forwarded-*' 头。如果您的 Uptime Kuma 是通过 Nginx 或 Apache 等反代服务对外提供访问的话,则您应当启用本功能以获取正确的客户端 IP。",
- wayToGetLineNotifyToken: "您可以在 {0} 获取 Access token",
- Examples: "例如",
- "Home Assistant URL": "Home Assistant 地址",
- "Long-Lived Access Token": "长期访问令牌",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "长期访问令牌可通过点击左下角您的用户名,滚动到页面底部并点击 Create Token 按钮获取。",
- "Notification Service": "Notification Service",
- "default: notify all devices": "默认:通知所有设备",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "通知服务的列表可在 Home Assistant 中的 Developer Tools > Services 通过搜索您的设备或手机的名称来获得。",
- "Automations can optionally be triggered in Home Assistant:": "可以在 Home Assistant 使用下列模板设置自动化操作的触发条件:",
- "Trigger type:": "触发类型:",
- "Event type:": "事件类型:",
- "Event data:": "事件数据:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "然后您可以选择关联操作,例如切换到 RGB 灯发出红光的场景",
- "Frontend Version": "前端版本",
- "Frontend Version do not match backend version!": "前端版本与后端版本不匹配!",
- "Base URL": "API 基础地址",
- goAlertInfo: "GoAlert 是一个用于呼叫调度、自动汇报和通知(如 SMS 或语音呼叫)的开源应用程序。在正确的时间以正确的方式自动让正确的人参与!{0}",
- goAlertIntegrationKeyInfo: "使用形如 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 的通用 API 集成密钥,通常是复制来的链接中的 token 参数值。",
- goAlert: "GoAlert",
- backupOutdatedWarning: "已弃用:由于大量新功能的加入,以及备份功能没有时时维护,现在备份功能已经无法生成完整的备份和恢复完整的设置。",
- backupRecommend: "请改为直接备份 docker 卷或者数据文件夹(./data/)。",
- Optional: "可选的",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "SMSManager API 文档在",
- "Gateway Type": "网关类型",
- SMSManager: "SMSManager",
- "You can divide numbers with": "可用的分隔符:",
- or: "或",
- recurringInterval: "时间间隔",
- Recurring: "重复",
- strategyManual: "手动启用/禁用",
- warningTimezone: "使用服务器时区",
- weekdayShortMon: "周一",
- weekdayShortTue: "周二",
- weekdayShortWed: "周三",
- weekdayShortThu: "周四",
- weekdayShortFri: "周五",
- weekdayShortSat: "周六",
- weekdayShortSun: "周日",
- dayOfWeek: "每周计划",
- dayOfMonth: "每月计划",
- lastDay: "结束日",
- lastDay1: "每月最后一天",
- lastDay2: "每月倒数第二天",
- lastDay3: "每月倒数第三天",
- lastDay4: "每月倒数第四天",
- "No Maintenance": "无维护计划",
- pauseMaintenanceMsg: "确定要暂停吗?",
- "maintenanceStatus-under-maintenance": "正在维护",
- "maintenanceStatus-inactive": "未启用",
- "maintenanceStatus-scheduled": "已计划",
- "maintenanceStatus-ended": "已结束",
- "maintenanceStatus-unknown": "未知",
- "Display Timezone": "显示时区",
- "Server Timezone": "服务器时区",
- statusPageMaintenanceEndDate: "结束时间",
- IconUrl: "图标 URL",
- "Enable DNS Cache": "启用 DNS 缓存",
- Enable: "启用",
- Disable: "禁用",
- dnsCacheDescription: "可能无法在某些 IPv6 环境工作,如果遇到问题请禁用。",
- "Single Maintenance Window": "单一时间窗口",
- "Maintenance Time Window of a Day": "每日维护时间窗口",
- "Effective Date Range": "生效日期范围",
- "Schedule Maintenance": "计划维护",
- "Date and Time": "日期时间",
- "DateTime Range": "日期时间范围",
- Strategy: "策略",
- "Free Mobile User Identifier": "Free Mobile User Identifier",
- "Free Mobile API Key": "Free Mobile API Key",
- "Enable TLS": "启用 TLS",
- "Proto Service Name": "Proto 服务名称",
- "Proto Method": "Proto 方法",
- "Proto Content": "Proto 内容",
- Economy: "经济",
- Lowcost: "低价",
- high: "高价",
- "General Monitor Type": "常规监控类型",
- "Passive Monitor Type": "被动监控类型",
- "Specific Monitor Type": "针对监控类型",
-};
diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js
deleted file mode 100644
index 6a57b4590..000000000
--- a/src/languages/zh-HK.js
+++ /dev/null
@@ -1,388 +0,0 @@
-export default {
- languageName: "繁體中文 (香港)",
- Settings: "設定",
- Dashboard: "主控台",
- "New Update": "有更新",
- Language: "語言",
- Appearance: "外觀",
- Theme: "主題",
- General: "一般",
- Version: "版本",
- "Check Update On GitHub": "到 Github 查看更新",
- List: "列表",
- Add: "新增",
- "Add New Monitor": "新增監測器",
- "Quick Stats": "綜合數據",
- Up: "上線",
- Down: "離線",
- Pending: "待定",
- Unknown: "不明",
- Pause: "暫停",
- pauseDashboardHome: "暫停",
- Name: "名稱",
- Status: "狀態",
- DateTime: "日期時間",
- Message: "內容",
- "No important events": "沒有重要事件",
- Resume: "恢復",
- Edit: "編輯",
- Delete: "刪除",
- Current: "目前",
- Uptime: "上線率",
- "Cert Exp.": "証書期限",
- day: "日",
- "-day": "日",
- hour: "小時",
- "-hour": "小時",
- checkEverySecond: "每 {0} 秒檢查一次",
- Response: "反應時間",
- Ping: "反應時間",
- "Monitor Type": "監測器類型",
- Keyword: "關鍵字",
- "Friendly Name": "名稱",
- URL: "網址 URL",
- Hostname: "Hostname",
- Port: "Port",
- "Heartbeat Interval": "檢查間距",
- Retries: "重試數次確定為離線",
- retriesDescription: "重試多少次後才判定為離線及傳送通知。如數值為 0 會即判定為離線及傳送通知。",
- Advanced: "進階",
- ignoreTLSError: "忽略 TLS/SSL 錯誤",
- "Upside Down Mode": "反轉模式",
- upsideDownModeDescription: "反轉狀態,如網址是可正常瀏覽,會被判定為 '離線/DOWN'",
- "Max. Redirects": "跟隨重新導向 (Redirect) 的次數",
- maxRedirectDescription: "設為 0 即不跟蹤",
- "Accepted Status Codes": "接受為上線的 HTTP 狀態碼",
- acceptedStatusCodesDescription: "可多選",
- Save: "儲存",
- Notifications: "通知",
- "Not available, please setup.": "無法使用,需要設定",
- "Setup Notification": "設定通知",
- Light: "明亮",
- Dark: "暗黑",
- Auto: "自動",
- "Theme - Heartbeat Bar": "監測器列表 狀態條外觀",
- Normal: "一般",
- Bottom: "下方",
- None: "沒有",
- Timezone: "時區",
- "Search Engine Visibility": "是否允許搜尋器索引",
- "Allow indexing": "允許索引",
- "Discourage search engines from indexing site": "不建議搜尋器索引",
- "Change Password": "變更密碼",
- "Current Password": "目前密碼",
- "New Password": "新密碼",
- "Repeat New Password": "確認新密碼",
- passwordNotMatchMsg: "密碼不一致",
- "Update Password": "更新密碼",
- "Disable Auth": "取消登入認証",
- "Enable Auth": "開啟登入認証",
- "disableauth.message1": "你是否確認取消登入認証 ?",
- "disableauth.message2": "這個功能是設計給已有第三方認証 的用家,例如 Cloudflare Access。",
- "Please use this option carefully!": "請小心使用。",
- Logout: "登出",
- notificationDescription: "新增後,你需要在監測器裡啟用。",
- Leave: "離開",
- "I understand, please disable": "我明白,請取消登入認証",
- Confirm: "確認",
- Yes: "是",
- No: "否",
- Username: "帳號",
- Password: "密碼",
- "Remember me": "記住我",
- Login: "登入",
- "No Monitors, please": "沒有監測器,請",
- "add one": "新增",
- "Notification Type": "通知類型",
- Email: "電郵",
- Test: "測試",
- keywordDescription: "搜索 HTML 或 JSON 裡是否有出現關鍵字(注意英文大細階)",
- "Certificate Info": "憑證詳細資料",
- deleteMonitorMsg: "是否確定刪除這個監測器?",
- deleteNotificationMsg: "是否確定刪除這個通知設定?如監測器啟用了這個通知,將會收不到通知。",
- "Resolver Server": "DNS 伺服器",
- "Resource Record Type": "DNS 記錄類型",
- resolverserverDescription: "預設值為 Cloudflare DNS 伺服器,你可以轉用其他 DNS 伺服器。",
- rrtypeDescription: "請選擇 DNS 記錄類型",
- pauseMonitorMsg: "是否確定暫停?",
- "Last Result": "最後結果",
- "Create your admin account": "建立管理員帳號",
- "Repeat Password": "重複密碼",
- respTime: "反應時間 (ms)",
- notAvailableShort: "N/A",
- Create: "建立",
- clearEventsMsg: "是否確定刪除這個監測器的所有事件?",
- clearHeartbeatsMsg: "是否確定刪除這個監測器的所有脈搏資料?",
- confirmClearStatisticsMsg: "是否確定刪除所有監測器的脈搏資料?(您的監測器會繼續正常運作)",
- "Clear Data": "清除資料",
- Events: "事件",
- Heartbeats: "脈搏",
- "Auto Get": "自動獲取",
- enableDefaultNotificationDescription: "新增監測器時這個通知會預設啟用,當然每個監測器亦可分別控制開關。",
- "Default enabled": "預設通知",
- "Also apply to existing monitors": "同時取用至目前所有監測器",
- Export: "匯出",
- Import: "匯入",
- backupDescription: "您可以備份所有監測器及所有通知。",
- backupDescription2: "註:此備份不包括歷史記錄。",
- backupDescription3: "此備份可能包含了一些敏感資料如通知裡的 Token,請小心保存備份。",
- alertNoFile: "請選擇一個檔案",
- alertWrongFileType: "請選擇 JSON 檔案",
- twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
- tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
- confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
- confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
- "Apply on all existing monitors": "套用至目前所有監測器",
- "Verify Token": "驗証 Token",
- "Setup 2FA": "設定 2FA",
- "Enable 2FA": "開啟 2FA",
- "Disable 2FA": "關閉 2FA",
- "2FA Settings": "2FA 設定",
- "Two Factor Authentication": "雙重認證",
- Active: "生效",
- Inactive: "未生效",
- Token: "Token",
- "Show URI": "顯示 URI",
- "Clear all statistics": "清除所有歷史記錄",
- retryCheckEverySecond: "Retry every {0} seconds.",
- importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.",
- confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.",
- "Heartbeat Retry Interval": "Heartbeat Retry Interval",
- "Import Backup": "匯入備份",
- "Export Backup": "匯出備份",
- "Skip existing": "略過已存在的",
- Overwrite: "覆蓋",
- Options: "選項",
- "Keep both": "兩者並存",
- Tags: "標籤",
- "Add New below or Select...": "Add New below or Select...",
- "Tag with this name already exist.": "Tag with this name already exist.",
- "Tag with this value already exist.": "Tag with this value already exist.",
- color: "顏色",
- "value (optional)": "值 (非必需)",
- Gray: "灰",
- Red: "紅",
- Orange: "橙",
- Green: "綠",
- Blue: "藍",
- Indigo: "靛",
- Purple: "紫",
- Pink: "粉紅",
- "Search...": "搜尋...",
- "Avg. Ping": "平均反應時間",
- "Avg. Response": "平均反應時間",
- "Entry Page": "Entry Page",
- statusPageNothing: "Nothing here, please add a group or a monitor.",
- "No Services": "沒有服務",
- "All Systems Operational": "一切正常",
- "Partially Degraded Service": "部份服務受阻",
- "Degraded Service": "服務受阻",
- "Add Group": "新增群組",
- "Add a monitor": " 新增監測器",
- "Edit Status Page": "編輯 Status Page",
- "Go to Dashboard": "前往主控台",
- "Status Page": "Status Page",
- "Status Pages": "Status Pages",
- telegram: "Telegram",
- webhook: "Webhook",
- smtp: "電郵 (SMTP)",
- discord: "Discord",
- teams: "Microsoft Teams",
- signal: "Signal",
- gotify: "Gotify",
- slack: "Slack",
- "rocket.chat": "Rocket.chat",
- pushover: "Pushover",
- pushy: "Pushy",
- octopush: "Octopush",
- promosms: "PromoSMS",
- lunasea: "LunaSea",
- apprise: "Apprise (支援 50 多種通知)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- deleteStatusPageMsg: "是否確定刪除這個 Status Page?",
- "Push URL": "推送網址",
- needPushEvery: "您應每 {0} 秒呼叫此網址。",
- pushOptionalParams: "選填參數:{0}",
- defaultNotificationName: "我的 {notification} 通知 ({number})",
- here: "此處",
- Required: "必填",
- "Bot Token": "機器人權杖",
- wayToGetTelegramToken: "您可以從 {0} 取得 Token。",
- "Chat ID": "聊天 ID",
- supportTelegramChatID: "支援 對話/群組/頻道的聊天 ID",
- wayToGetTelegramChatID: "傳送訊息給機器人,並前往以下網址以取得您的 chat ID:",
- "YOUR BOT TOKEN HERE": "在此填入您的機器人權杖",
- chatIDNotFound: "找不到 Chat ID;請先傳送訊息給機器人",
- "Post URL": "Post 網址",
- "Content Type": "Content Type",
- webhookJsonDesc: "{0} 適合任何現代的 HTTP 伺服器,如 Express.js",
- webhookFormDataDesc: "{multipart} 適合 PHP。 JSON 必須先經由 {decodeFunction} 剖析。",
- secureOptionNone: "無 / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "忽略 TLS 錯誤",
- "From Email": "寄件人",
- emailCustomSubject: "自訂主旨",
- "To Email": "收件人",
- smtpCC: "CC",
- smtpBCC: "BCC",
- "Discord Webhook URL": "Discord Webhook 網址",
- wayToGetDiscordURL: "您可以前往伺服器設定 -> 整合 -> Webhook -> 新 Webhook 以取得",
- "Bot Display Name": "機器人顯示名稱",
- "Prefix Custom Message": "前綴自訂訊息",
- "Webhook URL": "Webhook 網址",
- wayToGetTeamsURL: "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。",
- Number: "號碼",
- Recipients: "收件人",
- needSignalAPI: "您需要有 REST API 的 Signal 客戶端。",
- wayToCheckSignalURL: "您可以前往下列網址以了解如何設定:",
- signalImportant: "注意: 不得混合收件人的群組和號碼!",
- "Application Token": "應用程式權杖",
- "Server URL": "伺服器網址",
- Priority: "優先度",
- "Icon Emoji": "Emoji 圖示",
- "Channel Name": "頻道名稱",
- "Uptime Kuma URL": "Uptime Kuma 網址",
- aboutWebhooks: "更多關於 Webhook 的資訊: {0}",
- aboutChannelName: "如果您不想使用 Webhook 頻道,請在 {0} 頻道名稱欄位填入您想使用的頻道。例如: #其他頻道",
- aboutKumaURL: "如果您未填入 Uptime Kuma 網址。將預設使用專案 Github 頁面。",
- emojiCheatSheet: "Emoji 一覽表: {0}",
- PushByTechulus: "Push by Techulus",
- clicksendsms: "ClickSend SMS",
- GoogleChat: "Google Chat (僅限 Google Workspace)",
- "User Key": "使用者金鑰",
- Device: "裝置",
- "Message Title": "訊息標題",
- "Notification Sound": "通知音效",
- "More info on:": "更多資訊: {0}",
- pushoverDesc1: "緊急優先度 (2) 的重試間隔為 30 秒並且會在 1 小時後過期。",
- pushoverDesc2: "如果您想要傳送通知到不同裝置,請填寫裝置欄位。",
- "SMS Type": "簡訊類型",
- octopushTypePremium: "Premium (快速 - 建議用於警報)",
- octopushTypeLowCost: "Low Cost (緩慢 - 有時會被營運商阻擋)",
- checkPrice: "查看 {0} 價格:",
- apiCredentials: "API 認證",
- octopushLegacyHint: "您使用的是舊版的 Octopush (2011-2020) 還是新版?",
- "Check octopush prices": "查看 octopush 價格 {0}。",
- octopushPhoneNumber: "電話號碼 (intl 格式,例如:+33612345678) ",
- octopushSMSSender: "簡訊寄件人名稱:3-11位英數字元及空白 (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea 裝置 ID",
- "Apprise URL": "Apprise 網址",
- "Example:": "範例:{0}",
- "Read more:": "深入瞭解:{0}",
- "Status:": "狀態:{0}",
- "Read more": "深入瞭解",
- appriseInstalled: "已安裝 Apprise。",
- appriseNotInstalled: "尚未安裝 Apprise。{0}",
- "Access Token": "存取權杖",
- "Channel access token": "頻道存取權杖",
- "Line Developers Console": "Line 開發者控制台",
- lineDevConsoleTo: "Line 開發者控制台 - {0}",
- "Basic Settings": "基本設定",
- "User ID": "使用者 ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "首先,前往 {0},建立 provider 和 channel (Messaging API)。接著您就可以從上面提到的選單項目中取得頻道存取權杖及使用者 ID。",
- "Icon URL": "圖示網址",
- aboutIconURL: "您可以在 \"圖示網址\" 中提供圖片網址以覆蓋預設個人檔案圖片。若已設定 Emoji 圖示,將忽略此設定。",
- aboutMattermostChannelName: "您可以在 \"頻道名稱\" 欄位中填寫頻道名稱以覆蓋 Webhook 的預設頻道。必須在 Mattermost 的 Webhook 設定中啟用。例如:#其他頻道",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - 便宜,但是很慢且經常過載。僅限位於波蘭的收件人。",
- promosmsTypeFlash: "SMS FLASH - 訊息會自動在收件人的裝置上顯示。僅限位於波蘭的收件人。",
- promosmsTypeFull: "SMS FULL - 高級版,您可以使用您的寄件人名稱 (必須先註冊名稱。對於警報來說十分可靠。",
- promosmsTypeSpeed: "SMS SPEED - 系統中的最高優先度。快速、可靠,但昂貴 (約 SMS FULL 的兩倍價格)。",
- promosmsPhoneNumber: "電話號碼 (若收件人位於波蘭則無需輸入區域代碼)",
- promosmsSMSSender: "簡訊寄件人名稱:預先註冊的名稱或以下的預設名稱:InfoSMS、SMS Info、MaxSMS、INFO、SMS",
- "Feishu WebHookUrl": "飛書 WebHook 網址",
- matrixHomeserverURL: "Homeserver 網址 (開頭為 http(s)://,結尾可能帶連接埠)",
- "Internal Room Id": "Internal Room ID",
- matrixDesc1: "您可以在 Matrix 客戶端的房間設定中的進階選項找到 internal room ID。應該看起來像 !QMdRCpUIfLwsfjxye6:home.server。",
- matrixDesc2: "使用您自己的 Matrix 使用者存取權杖將賦予存取您的帳號和您加入的房間的完整權限。建議建立新使用者,並邀請至您想要接收通知的房間中。您可以執行 {0} 以取得存取權杖",
- Method: "方法",
- Body: "主體",
- Headers: "標頭",
- PushUrl: "Push URL",
- HeadersInvalidFormat: "要求標頭不是有效的 JSON:",
- BodyInvalidFormat: "請求主體不是有效的 JSON:",
- "Monitor History": "監測器歷史紀錄",
- clearDataOlderThan: "保留 {0} 天內的監測器歷史紀錄。",
- PasswordsDoNotMatch: "密碼不相符。",
- records: "記錄",
- "One record": "一項記錄",
- "Showing {from} to {to} of {count} records": "正在顯示 {count} 項記錄中的 {from} 至 {to} 項",
- steamApiKeyDescription: "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:",
- "Current User": "目前使用者",
- recent: "最近",
- Done: "完成",
- Info: "資訊",
- Security: "安全性",
- "Steam API Key": "Steam API 金鑰",
- "Shrink Database": "壓縮資料庫",
- "Pick a RR-Type...": "選擇資源記錄類型...",
- "Pick Accepted Status Codes...": "選擇可接受的狀態碼...",
- Default: "預設",
- "HTTP Options": "HTTP 選項",
- "Create Incident": "建立事件",
- Title: "標題",
- Content: "內容",
- Style: "樣式",
- info: "資訊",
- warning: "警告",
- danger: "危險",
- primary: "主要",
- light: "淺色",
- dark: "暗色",
- Post: "發佈",
- "Please input title and content": "請輸入標題及內容",
- Created: "建立",
- "Last Updated": "最後更新",
- Unpin: "取消釘選",
- "Switch to Light Theme": "切換至淺色佈景主題",
- "Switch to Dark Theme": "切換至深色佈景主題",
- "Show Tags": "顯示標籤",
- "Hide Tags": "隱藏標籤",
- Description: "描述",
- "No monitors available.": "沒有可用的監測器。",
- "Add one": "新增一個",
- "No Monitors": "無監測器",
- "Untitled Group": "未命名群組",
- Services: "服務",
- Discard: "捨棄",
- Cancel: "取消",
- shrinkDatabaseDescription: "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API 使用者名稱 (包括 webapi_ 前綴)",
- serwersmsAPIPassword: "API 密碼",
- serwersmsPhoneNumber: "電話號碼",
- serwersmsSenderName: "SMS 寄件人名稱 (由客戶入口網站註冊)",
- stackfield: "Stackfield",
- smtpDkimSettings: "DKIM 設定",
- smtpDkimDesc: "請參考 Nodemailer DKIM {0} 使用方式。",
- documentation: "文件",
- smtpDkimDomain: "網域名稱",
- smtpDkimKeySelector: "DKIM 選取器",
- smtpDkimPrivateKey: "私密金鑰",
- smtpDkimHashAlgo: "雜湊演算法 (選填)",
- smtpDkimheaderFieldNames: "要簽署的郵件標頭 (選填)",
- smtpDkimskipFields: "不簽署的郵件標頭 (選填)",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API Endpoint",
- alertaEnvironment: "環境",
- alertaApiKey: "API 金鑰",
- alertaAlertState: "警示狀態",
- alertaRecoverState: "恢復狀態",
- Proxies: "代理伺服器",
- default: "預設",
- enabled: "啟用",
- setAsDefault: "設為預設",
- deleteProxyMsg: "您確定要為所有監測器刪除此代理伺服器嗎?",
- proxyDescription: "必須將代理伺服器指派給監測器才能運作。",
- enableProxyDescription: "此代理伺服器在啟用前不會在監測器上生效,您可以藉由控制啟用狀態來暫時對所有的監測器停用代理伺服器。",
- setAsDefaultProxyDescription: "預設情況下,新監測器將啟用此代理伺服器。您仍可分別停用各監測器的代理伺服器。",
- Maintenance: "維護",
- statusMaintenance: "維護中",
- "Enable DNS Cache": "啟用 DNS 快取",
- "Enable": "啟用",
- "Disable": "停用",
-};
diff --git a/src/languages/zh-TW.js b/src/languages/zh-TW.js
deleted file mode 100644
index 668e4c238..000000000
--- a/src/languages/zh-TW.js
+++ /dev/null
@@ -1,672 +0,0 @@
-export default {
- languageName: "繁體中文 (台灣)",
- checkEverySecond: "每 {0} 秒檢查一次",
- retryCheckEverySecond: "每 {0} 秒重試一次",
- resendEveryXTimes: "每 {0} 次便重新傳送",
- resendDisabled: "重新傳送已停用",
- retriesDescription: "在服務被標記為離線並傳送通知前的最大重試次數",
- ignoreTLSError: "忽略 HTTPS 網站的 TLS/SSL 錯誤",
- upsideDownModeDescription: "反轉顯示狀態。若服務可以連線,將顯示離線。",
- maxRedirectDescription: "最大重新導向跟隨次數。設為 0 將停用重新導向。",
- enableGRPCTls: "允許以 TLS 連線傳送 gRPC 要求",
- grpcMethodDescription: "方法名稱將轉換至駝峰式命名,如 sayHello、check 等。",
- acceptedStatusCodesDescription: "選擇視為成功回應的狀態碼。",
- Maintenance: "維護",
- statusMaintenance: "維護",
- "Schedule maintenance": "排程維護",
- "Affected Monitors": "受影響的監測器",
- "Pick Affected Monitors...": "挑選受影響的監測器...",
- "Start of maintenance": "維護起始",
- "All Status Pages": "所有狀態頁",
- "Select status pages...": "選擇狀態頁...",
- recurringIntervalMessage: "每日執行 | 每 {0} 天執行",
- affectedMonitorsDescription: "選擇受目前維護影響的監測器",
- affectedStatusPages: "在已選取的狀態頁中顯示此維護訊息",
- atLeastOneMonitor: "至少選擇一個受影響的監測器",
- passwordNotMatchMsg: "密碼不相符。",
- notificationDescription: "必須將通知指派給監測器才能運作。",
- keywordDescription: "HTML 或 JSON 回應的搜尋關鍵字。區分大小寫。",
- pauseDashboardHome: "暫停",
- deleteMonitorMsg: "您確定要刪除此監測器嗎?",
- deleteMaintenanceMsg: "您確定要刪除此維護嗎?",
- deleteNotificationMsg: "您確定要為所有監測器刪除此通知嗎?",
- dnsPortDescription: "DNS 伺服器連接埠。預設為 53。您可以隨時變更連接埠。",
- resolverserverDescription: "Cloudflare 為預設伺服器。您可以隨時更換解析伺服器。",
- rrtypeDescription: "選擇您想要監測的資源記錄類型",
- pauseMonitorMsg: "您確定要暫停嗎?",
- enableDefaultNotificationDescription: "預設情況下,新監測器將啟用此通知。您仍可分別停用各監測器的通知。",
- clearEventsMsg: "您確定要刪除此監測器的所有事件嗎?",
- clearHeartbeatsMsg: "您確定要刪除此監測器的所有心跳嗎?",
- confirmClearStatisticsMsg: "您確定要刪除所有統計資料嗎?",
- importHandleDescription: "若您想跳過所有相同名稱的監測器或通知,請選擇 '略過現有'。選擇 '覆寫' 將刪除所有現有的監測器及通知。",
- confirmImportMsg: "您確定要匯入備份嗎?請確認是否選擇正確的匯入設定。",
- twoFAVerifyLabel: "請輸入權杖以驗證雙步驟驗證:",
- tokenValidSettingsMsg: "權杖有效!您可以儲存雙步驟驗證設定了。",
- confirmEnableTwoFAMsg: "您確定要啟用雙步驟驗證嗎?",
- confirmDisableTwoFAMsg: "您確定要停用雙步驟驗證嗎?",
- Settings: "設定",
- Dashboard: "儀表板",
- "New Update": "新版本",
- Language: "語言",
- Appearance: "外觀",
- Theme: "主題",
- General: "一般",
- "Primary Base URL": "主要基底網址",
- Version: "版本",
- "Check Update On GitHub": "在 GitHub 檢查更新",
- List: "清單",
- Add: "新增",
- "Add New Monitor": "新增監測器",
- "Quick Stats": "狀態概覽",
- Up: "正常",
- Down: "離線",
- Pending: "等待中",
- Unknown: "未知",
- Pause: "暫停",
- Name: "名稱",
- Status: "狀態",
- DateTime: "日期時間",
- Message: "訊息",
- "No important events": "無重要事件",
- Resume: "繼續",
- Edit: "編輯",
- Delete: "刪除",
- Current: "目前",
- Uptime: "運作率",
- "Cert Exp.": "憑證期限",
- day: "天",
- "-day": "天",
- hour: "小時",
- "-hour": "小時",
- Response: "回應",
- Ping: "Ping",
- "Monitor Type": "監測器類型",
- Keyword: "關鍵字",
- "Friendly Name": "易記名稱",
- URL: "網址",
- Hostname: "主機名稱",
- Port: "連接埠",
- "Heartbeat Interval": "心跳間隔",
- Retries: "重試次數",
- "Heartbeat Retry Interval": "心跳重試間隔",
- "Resend Notification if Down X times consequently": "若 X 次心跳皆離線,重新傳送通知",
- Advanced: "進階",
- "Upside Down Mode": "顛倒模式",
- "Max. Redirects": "最大重新導向次數",
- "Accepted Status Codes": "可接受的狀態碼",
- "Push URL": "推送網址",
- needPushEvery: "您應每 {0} 秒呼叫此網址。",
- pushOptionalParams: "選填參數:{0}",
- Save: "儲存",
- Notifications: "通知",
- "Not available, please setup.": "無法使用,請先設定。",
- "Setup Notification": "設定通知",
- Light: "亮色",
- Dark: "深色",
- Auto: "自動",
- "Theme - Heartbeat Bar": "主題 - 心跳條",
- Normal: "正常",
- Bottom: "下方",
- None: "無",
- Timezone: "時區",
- "Search Engine Visibility": "搜尋引擎可見度",
- "Allow indexing": "允許索引",
- "Discourage search engines from indexing site": "不建議搜尋引擎索引網頁",
- "Change Password": "修改密碼",
- "Current Password": "目前密碼",
- "New Password": "新密碼",
- "Repeat New Password": "確認新密碼",
- "Update Password": "更新密碼",
- "Disable Auth": "停用驗證",
- "Enable Auth": "啟用驗證",
- "disableauth.message1": ">你是否要取消登入驗證 ?",
- "disableauth.message2": "此功能是設計給已有第三方認證 的使用者,例如 Cloudflare Access。",
- "Please use this option carefully!": "請謹慎使用。",
- Logout: "登出",
- Leave: "離開",
- "I understand, please disable": "我了解了,請停用",
- Confirm: "確認",
- Yes: "是",
- No: "否",
- Username: "使用者名稱",
- Password: "密碼",
- "Remember me": "記住我",
- Login: "登入",
- "No Monitors, please": "沒有監測器,請",
- "add one": "新增",
- "Notification Type": "通知類型",
- Email: "電子郵件",
- Test: "測試",
- "Certificate Info": "憑證資訊",
- "Resolver Server": "解析伺服器",
- "Resource Record Type": "資源記錄類型",
- "Last Result": "最後結果",
- "Create your admin account": "建立您的管理員帳號",
- "Repeat Password": "確認密碼",
- "Import Backup": "匯入備份",
- "Export Backup": "匯出備份",
- Export: "匯出",
- Import: "匯入",
- respTime: "回應時間 (毫秒)",
- notAvailableShort: "N/A",
- "Default enabled": "啟用預設",
- "Apply on all existing monitors": "套用到目前所有的監測器",
- Create: "建立",
- "Clear Data": "清除資料",
- Events: "活動",
- Heartbeats: "心跳",
- "Auto Get": "自動取得",
- backupDescription: "您可以將所有監測器及通知備份成一個 JSON 檔案。",
- backupDescription2: "提醒:不包含歷史紀錄及活動紀錄。",
- backupDescription3: "如通知權杖等機密資料也會一同匯出。請妥善保存。",
- alertNoFile: "請選擇要匯入的檔案。",
- alertWrongFileType: "請選擇 JSON 檔案。",
- "Clear all statistics": "清除所有統計資料",
- "Skip existing": "略過現有",
- Overwrite: "覆寫",
- Options: "選項",
- "Keep both": "保留兩者",
- "Verify Token": "認證權杖",
- "Setup 2FA": "設置雙步驟驗證",
- "Enable 2FA": "啟用雙步驟驗證",
- "Disable 2FA": "停用雙步驟驗證",
- "2FA Settings": "雙步驟驗證設定",
- "Two Factor Authentication": "雙步驟驗證",
- Active: "啟用",
- Inactive: "停用",
- Token: "權杖",
- "Show URI": "顯示 URI",
- Tags: "標籤",
- "Add New below or Select...": "在下方新增或選取...",
- "Tag with this name already exist.": "已存在相同名稱的標籤。",
- "Tag with this value already exist.": "已存在相同數值的標籤。",
- color: "顏色",
- "value (optional)": "數值 (選填)",
- Gray: "灰色",
- Red: "紅色",
- Orange: "橘色",
- Green: "綠色",
- Blue: "藍色",
- Indigo: "靛色",
- Purple: "紫色",
- Pink: "粉色",
- "Search...": "搜尋...",
- "Avg. Ping": "平均 Ping",
- "Avg. Response": "平均回應",
- "Entry Page": "入口頁面",
- statusPageNothing: "空空如也,請新增群組或監測器。",
- "No Services": "無服務",
- "All Systems Operational": "所有系統正常運作",
- "Partially Degraded Service": "部分服務效能降低",
- "Degraded Service": "服務效能降低",
- "Add Group": "新增群組",
- "Add a monitor": "加入監測器",
- "Edit Status Page": "編輯狀態頁",
- "Go to Dashboard": "前往儀表板",
- "Status Page": "狀態頁",
- "Status Pages": "狀態頁",
- defaultNotificationName: "我的 {notification} 通知 ({number})",
- here: "此處",
- Required: "必填",
- telegram: "Telegram",
- "Bot Token": "機器人權杖",
- wayToGetTelegramToken: "您可以從 {0} 取得權杖。",
- "Chat ID": "聊天 ID",
- supportTelegramChatID: "支援 對話/群組/頻道的聊天 ID",
- wayToGetTelegramChatID: "傳送訊息給機器人,並前往以下網址以取得您的 chat ID:",
- "YOUR BOT TOKEN HERE": "在此填入您的機器人權杖",
- chatIDNotFound: "找不到 Chat ID;請先傳送訊息給機器人",
- webhook: "Webhook",
- "Post URL": "Post 網址",
- "Content Type": "內容類型",
- webhookJsonDesc: "{0} 適合任何現代的 HTTP 伺服器,如 Express.js",
- webhookFormDataDesc: "{multipart} 適合 PHP。 JSON 必須先經由 {decodeFunction} 剖析。",
- webhookAdditionalHeadersTitle: "額外標頭",
- webhookAdditionalHeadersDesc: "設定與 webhook 一同傳送的額外標頭。",
- smtp: "Email (SMTP)",
- secureOptionNone: "無 / STARTTLS (25, 587)",
- secureOptionTLS: "TLS (465)",
- "Ignore TLS Error": "忽略 TLS 錯誤",
- "From Email": "寄件人",
- emailCustomSubject: "自訂主旨",
- "To Email": "收件者",
- smtpCC: "CC",
- smtpBCC: "BCC",
- discord: "Discord",
- "Discord Webhook URL": "Discord Webhook 網址",
- wayToGetDiscordURL: "您可以前往伺服器設定 -> 整合 -> Webhook -> 新 Webhook 以取得",
- "Bot Display Name": "機器人顯示名稱",
- "Prefix Custom Message": "前綴自訂訊息",
- "Hello @everyone is...": "Hello {'@'}everyone is...",
- teams: "Microsoft Teams",
- "Webhook URL": "Webhook 網址",
- wayToGetTeamsURL: "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。",
- signal: "Signal",
- Number: "號碼",
- Recipients: "收件者",
- needSignalAPI: "您需要有 REST API 的 Signal 客戶端。",
- wayToCheckSignalURL: "您可以前往下列網址以了解如何設定:",
- signalImportant: "注意: 不得混合收件者的群組和號碼!",
- gotify: "Gotify",
- "Application Token": "應用程式權杖",
- "Server URL": "伺服器網址",
- Priority: "優先度",
- slack: "Slack",
- "Icon Emoji": "Emoji 圖示",
- "Channel Name": "頻道名稱",
- "Uptime Kuma URL": "Uptime Kuma 網址",
- aboutWebhooks: "更多關於 Webhook 的資訊: {0}",
- aboutChannelName: "如果您不想使用 Webhook 頻道,請在 {0} 頻道名稱欄位填入您想使用的頻道。例如: #其他頻道",
- aboutKumaURL: "如果您未填入 Uptime Kuma 網址。將預設使用專案 Github 頁面。",
- emojiCheatSheet: "Emoji 一覽表: {0}",
- "rocket.chat": "Rocket.Chat",
- pushover: "Pushover",
- pushy: "Pushy",
- PushByTechulus: "Push by Techulus",
- octopush: "Octopush",
- promosms: "PromoSMS",
- clicksendsms: "ClickSend SMS",
- lunasea: "LunaSea",
- apprise: "Apprise (支援 50 種以上的通知服務)",
- GoogleChat: "Google Chat (僅限 Google Workspace)",
- pushbullet: "Pushbullet",
- line: "Line Messenger",
- mattermost: "Mattermost",
- "User Key": "使用者金鑰",
- Device: "裝置",
- "Message Title": "訊息標題",
- "Notification Sound": "通知音效",
- "More info on:": "更多資訊: {0}",
- pushoverDesc1: "緊急優先度 (2) 的重試間隔為 30 秒並且會在 1 小時後過期。",
- pushoverDesc2: "如果您想要傳送通知到不同裝置,請填寫裝置欄位。",
- "SMS Type": "簡訊類型",
- octopushTypePremium: "Premium (快速 - 建議用於警報)",
- octopushTypeLowCost: "Low Cost (緩慢 - 有時會被營運商阻擋)",
- checkPrice: "查看 {0} 價格:",
- apiCredentials: "API 認證",
- octopushLegacyHint: "您使用的是舊版的 Octopush (2011-2020) 還是新版?",
- "Check octopush prices": "查看 octopush 價格 {0}。",
- octopushPhoneNumber: "電話號碼 (intl 格式,例如:+33612345678) ",
- octopushSMSSender: "簡訊寄件人名稱:3-11位英數字元及空白 (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea 裝置 ID",
- "Apprise URL": "Apprise 網址",
- "Example:": "範例:{0}",
- "Read more:": "深入瞭解:{0}",
- "Status:": "狀態:{0}",
- "Read more": "深入瞭解",
- appriseInstalled: "已安裝 Apprise。",
- appriseNotInstalled: "尚未安裝 Apprise。{0}",
- "Access Token": "存取權杖",
- "Channel access token": "頻道存取權杖",
- "Line Developers Console": "Line 開發者控制台",
- lineDevConsoleTo: "Line 開發者控制台 - {0}",
- "Basic Settings": "基本設定",
- "User ID": "使用者 ID",
- "Messaging API": "Messaging API",
- wayToGetLineChannelToken: "首先,前往 {0},建立 provider 和 channel (Messaging API)。接著您就可以從上面提到的選單項目中取得頻道存取權杖及使用者 ID。",
- "Icon URL": "圖示網址",
- aboutIconURL: "您可以在 \"圖示網址\" 中提供圖片網址以覆蓋預設個人檔案圖片。若已設定 Emoji 圖示,將忽略此設定。",
- aboutMattermostChannelName: "您可以在 \"頻道名稱\" 欄位中填寫頻道名稱以覆蓋 Webhook 的預設頻道。必須在 Mattermost 的 Webhook 設定中啟用。例如:#其他頻道",
- matrix: "Matrix",
- promosmsTypeEco: "SMS ECO - 便宜,但是很慢且經常過載。僅限位於波蘭的收件者。",
- promosmsTypeFlash: "SMS FLASH - 訊息會自動在收件者的裝置上顯示。僅限位於波蘭的收件者。",
- promosmsTypeFull: "SMS FULL - 高級版,您可以使用您的寄件人名稱 (必須先註冊名稱。對於警報來說十分可靠。",
- promosmsTypeSpeed: "SMS SPEED - 系統中的最高優先度。快速、可靠,但昂貴 (約 SMS FULL 的兩倍價格)。",
- promosmsPhoneNumber: "電話號碼 (若收件者位於波蘭則無需輸入區域代碼)",
- promosmsSMSSender: "簡訊寄件人名稱:預先註冊的名稱或以下的預設名稱:InfoSMS、SMS Info、MaxSMS、INFO、SMS",
- "Feishu WebHookUrl": "飛書 WebHook 網址",
- matrixHomeserverURL: "Homeserver 網址 (開頭為 http(s)://,結尾可能帶連接埠)",
- "Internal Room Id": "Internal Room ID",
- matrixDesc1: "您可以在 Matrix 客戶端的房間設定中的進階選項找到 internal room ID。應該看起來像 !QMdRCpUIfLwsfjxye6:home.server。",
- matrixDesc2: "使用您自己的 Matrix 使用者存取權杖將賦予存取您的帳號和您加入的房間的完整權限。建議建立新使用者,並邀請至您想要接收通知的房間中。您可以執行 {0} 以取得存取權杖",
- Method: "方法",
- Body: "主體",
- Headers: "標頭",
- PushUrl: "Push 網址",
- HeadersInvalidFormat: "要求標頭不是有效的 JSON:",
- BodyInvalidFormat: "要求主體不是有效的 JSON:",
- "Monitor History": "監測器歷史紀錄",
- clearDataOlderThan: "保留 {0} 天內的監測器歷史紀錄。",
- PasswordsDoNotMatch: "密碼不相符。",
- records: "記錄",
- "One record": "一項記錄",
- steamApiKeyDescription: "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:",
- "Current User": "目前使用者",
- topic: "Topic",
- topicExplanation: "要監測的 MQTT Topic",
- successMessage: "成功訊息",
- successMessageExplanation: "視為成功的 MQTT 訊息",
- recent: "最近",
- Done: "完成",
- Info: "資訊",
- Security: "安全性",
- "Steam API Key": "Steam API 金鑰",
- "Shrink Database": "壓縮資料庫",
- "Pick a RR-Type...": "選擇資源記錄類型...",
- "Pick Accepted Status Codes...": "選擇可接受的狀態碼...",
- Default: "預設",
- "HTTP Options": "HTTP 選項",
- "Create Incident": "建立事件",
- Title: "標題",
- Content: "內容",
- Style: "樣式",
- info: "資訊",
- warning: "警告",
- danger: "危險",
- error: "錯誤",
- critical: "嚴重",
- primary: "主要",
- light: "淺色",
- dark: "暗色",
- Post: "發佈",
- "Please input title and content": "請輸入標題及內容",
- Created: "建立",
- "Last Updated": "最後更新",
- Unpin: "取消釘選",
- "Switch to Light Theme": "切換至淺色佈景主題",
- "Switch to Dark Theme": "切換至深色佈景主題",
- "Show Tags": "顯示標籤",
- "Hide Tags": "隱藏標籤",
- Description: "說明",
- "No monitors available.": "沒有可用的監測器。",
- "Add one": "新增一個",
- "No Monitors": "無監測器",
- "Untitled Group": "未命名群組",
- Services: "服務",
- Discard: "捨棄",
- Cancel: "取消",
- "Powered by": "技術支援",
- shrinkDatabaseDescription: "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。",
- serwersms: "SerwerSMS.pl",
- serwersmsAPIUser: "API 使用者名稱 (包括 webapi_ 前綴)",
- serwersmsAPIPassword: "API 密碼",
- serwersmsPhoneNumber: "電話號碼",
- serwersmsSenderName: "SMS 寄件人名稱 (由客戶入口網站註冊)",
- smseagle: "SMSEagle",
- smseagleTo: "電話號碼",
- smseagleGroup: "電話簿群組名稱",
- smseagleContact: "電話簿聯絡人名稱",
- smseagleRecipientType: "收件者類型",
- smseagleRecipient: "收件者 (用逗號分隔)",
- smseagleToken: "API 存取權杖",
- smseagleUrl: "您的 SMSEagle 裝置網址",
- smseagleEncoding: "以 Unicode 傳送",
- smseaglePriority: "訊息優先度 (0-9,預設 = 0)",
- stackfield: "Stackfield",
- Customize: "自訂",
- "Custom Footer": "自訂頁尾",
- "Custom CSS": "自訂 CSS",
- smtpDkimSettings: "DKIM 設定",
- smtpDkimDesc: "請參考 Nodemailer DKIM {0} 使用方式。",
- documentation: "文件",
- smtpDkimDomain: "網域名稱",
- smtpDkimKeySelector: "DKIM 選取器",
- smtpDkimPrivateKey: "私密金鑰",
- smtpDkimHashAlgo: "雜湊演算法 (選填)",
- smtpDkimheaderFieldNames: "要簽署的郵件標頭 (選填)",
- smtpDkimskipFields: "不簽署的郵件標頭 (選填)",
- wayToGetPagerDutyKey: "您可以前往服務 -> 服務目錄 -> (選取服務) -> 整合 -> 新增整合以取得。您可以搜尋 \"Events API V2\"。詳細資訊 {0}",
- "Integration Key": "整合金鑰",
- "Integration URL": "整合網址",
- "Auto resolve or acknowledged": "自動解決或認可",
- "do nothing": "不進行任何操作",
- "auto acknowledged": "自動認可",
- "auto resolve": "自動解決",
- gorush: "Gorush",
- alerta: "Alerta",
- alertaApiEndpoint: "API 端點",
- alertaEnvironment: "環境",
- alertaApiKey: "API 金鑰",
- alertaAlertState: "警示狀態",
- alertaRecoverState: "恢復狀態",
- deleteStatusPageMsg: "您確定要刪除此狀態頁嗎?",
- Proxies: "代理伺服器",
- default: "預設",
- enabled: "啟用",
- setAsDefault: "設為預設",
- deleteProxyMsg: "您確定要為所有監測器刪除此代理伺服器嗎?",
- proxyDescription: "必須將代理伺服器指派給監測器才能運作。",
- enableProxyDescription: "此代理伺服器在啟用前不會在監測器上生效,您可以藉由控制啟用狀態來暫時對所有的監測器停用代理伺服器。",
- setAsDefaultProxyDescription: "預設情況下,新監測器將啟用此代理伺服器。您仍可分別停用各監測器的代理伺服器。",
- "Certificate Chain": "憑證鏈結",
- Valid: "有效",
- Invalid: "無效",
- AccessKeyId: "AccessKey ID",
- SecretAccessKey: "AccessKey 密碼",
- PhoneNumbers: "PhoneNumbers",
- TemplateCode: "TemplateCode",
- SignName: "SignName",
- "Sms template must contain parameters: ": "Sms 範本必須包含參數:",
- "Bark Endpoint": "Bark 端點",
- "Bark Group": "Bark 群組",
- "Bark Sound": "Bark 鈴聲",
- WebHookUrl: "WebHookUrl",
- SecretKey: "SecretKey",
- "For safety, must use secret key": "為了安全起見,必須使用秘密金鑰",
- "Device Token": "裝置權杖",
- Platform: "平台",
- iOS: "iOS",
- Android: "Android",
- Huawei: "華為",
- High: "高",
- Retry: "重試",
- Topic: "Topic",
- "WeCom Bot Key": "WeCom 機器人金鑰",
- "Setup Proxy": "設置 Proxy",
- "Proxy Protocol": "Proxy 通訊協定",
- "Proxy Server": "Proxy 伺服器",
- "Proxy server has authentication": "Proxy 伺服器啟用了驗證功能",
- User: "使用者",
- Installed: "已安裝",
- "Not installed": "未安裝",
- Running: "執行中",
- "Not running": "未執行",
- "Remove Token": "移除權杖",
- Start: "開始",
- Stop: "停止",
- "Uptime Kuma": "Uptime Kuma",
- "Add New Status Page": "新增狀態頁",
- Slug: "Slug",
- "Accept characters:": "可用字元:",
- startOrEndWithOnly: "僅能使用 {0} 開頭或結尾",
- "No consecutive dashes": "不得連續使用破折號",
- Next: "下一步",
- "The slug is already taken. Please choose another slug.": "此 slug 已被使用。請選擇其他 slug。",
- "No Proxy": "無 Proxy",
- Authentication: "驗證",
- "HTTP Basic Auth": "HTTP 基本驗證",
- "New Status Page": "新狀態頁",
- "Page Not Found": "找不到頁面",
- "Reverse Proxy": "反向代理",
- Backup: "備份",
- About: "關於",
- wayToGetCloudflaredURL: "(從 {0} 下載 cloudflared)",
- cloudflareWebsite: "Cloudflare 網站",
- "Message:": "訊息:",
- "Don't know how to get the token? Please read the guide:": "不知道如何取得權杖嗎?請閱讀指南:",
- "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您目前正透過 Cloudflare Tunnel 連線,可能會導致連線中斷。您確定要停止嗎?請輸入密碼以確認。",
- "HTTP Headers": "HTTP 標頭",
- "Trust Proxy": "信任的 Proxy",
- "Other Software": "其他軟體",
- "For example: nginx, Apache and Traefik.": "例如 nginx、Apache 和 Traefik。",
- "Please read": "請閱覽",
- "Subject:": "簽發給:",
- "Valid To:": "有效期限:",
- "Days Remaining:": "剩餘天數:",
- "Issuer:": "簽發者:",
- "Fingerprint:": "指紋:",
- "No status pages": "無狀態頁",
- "Domain Name Expiry Notification": "網域名稱到期通知",
- Proxy: "Proxy",
- "Date Created": "建立日期",
- HomeAssistant: "Home Assistant",
- onebotHttpAddress: "OneBot HTTP 位址",
- onebotMessageType: "OneBot 訊息類型",
- onebotGroupMessage: "群組",
- onebotPrivateMessage: "私人",
- onebotUserOrGroupId: "群組/使用者 ID",
- onebotSafetyTips: "為了安全起見,必須設置存取權杖",
- "PushDeer Key": "PushDeer 金鑰",
- "Footer Text": "頁尾文字",
- "Show Powered By": "顯示技術支援文字",
- "Domain Names": "網域名稱",
- signedInDisp: "以 {0} 身分登入",
- signedInDispDisabled: "驗證已停用。",
- RadiusSecret: "Radius Secret",
- RadiusSecretDescription: "客戶端與伺服器端的共享機密",
- RadiusCalledStationId: "被叫站 Id",
- RadiusCalledStationIdDescription: "被呼叫裝置的識別碼",
- RadiusCallingStationId: "呼叫站 Id",
- RadiusCallingStationIdDescription: "呼叫裝置的識別碼",
- "Certificate Expiry Notification": "憑證到期通知",
- "API Username": "API 使用者名稱",
- "API Key": "API 金鑰",
- "Recipient Number": "收件者號碼",
- "From Name/Number": "來自名字/號碼",
- "Leave blank to use a shared sender number.": "留空以使用共享寄件人號碼。",
- "Octopush API Version": "Octopush API 版本",
- "Legacy Octopush-DM": "舊版 Octopush-DM",
- "endpoint": "端",
- octopushAPIKey: "在控制台的 HTTP API 憑證取得的 \"API 金鑰\"",
- octopushLogin: "在控制台的 HTTP API 憑證取得的 \"Login\"",
- promosmsLogin: "API 登入名稱",
- promosmsPassword: "API 密碼",
- "pushoversounds pushover": "Pushover (預設)",
- "pushoversounds bike": "車鈴",
- "pushoversounds bugle": "號角",
- "pushoversounds cashregister": "收銀機",
- "pushoversounds classical": "古典",
- "pushoversounds cosmic": "宇宙",
- "pushoversounds falling": "下落",
- "pushoversounds gamelan": "甘美朗",
- "pushoversounds incoming": "來電",
- "pushoversounds intermission": "中場休息",
- "pushoversounds magic": "魔法",
- "pushoversounds mechanical": "機械",
- "pushoversounds pianobar": "鋼琴酒吧",
- "pushoversounds siren": "警鈴",
- "pushoversounds spacealarm": "太空鬧鐘",
- "pushoversounds tugboat": "汽笛",
- "pushoversounds alien": "外星鬧鐘 (長)",
- "pushoversounds climb": "爬升 (長)",
- "pushoversounds persistent": "持續 (長)",
- "pushoversounds echo": "Pushover 回音 (長)",
- "pushoversounds updown": "上下 (長)",
- "pushoversounds vibrate": "僅震動",
- "pushoversounds none": "無 (靜音)",
- pushyAPIKey: "API 密鑰",
- pushyToken: "裝置權杖",
- "Show update if available": "顯示可用更新",
- "Also check beta release": "檢查 Beta 版",
- "Using a Reverse Proxy?": "正在使用反向代理?",
- "Check how to config it for WebSocket": "查看如何為 WebSocket 設定",
- "Steam Game Server": "Steam 遊戲伺服器",
- "Most likely causes:": "可能原因:",
- "The resource is no longer available.": "資源已不可用。",
- "There might be a typing error in the address.": "網址可能有誤。",
- "What you can try:": "您可以嘗試:",
- "Retype the address.": "重新輸入網址。",
- "Go back to the previous page.": "返回上一頁。",
- "Coming Soon": "即將推出",
- wayToGetClickSendSMSToken: "您可以從 {0} 取得 API 使用者名稱和金鑰。",
- "Connection String": "連線字串",
- Query: "查詢",
- settingsCertificateExpiry: "TLS 憑證到期",
- certificationExpiryDescription: "TLS 將於 X 天後到期時觸發 HTTPS 監測器通知:",
- "Setup Docker Host": "設定 Docker 主機",
- "Connection Type": "連線類型",
- "Docker Daemon": "Docker 精靈",
- deleteDockerHostMsg: "您確定要為所有監測器刪除此 Docker 主機嗎?",
- socket: "通訊端",
- tcp: "TCP / HTTP",
- "Docker Container": "Docker 容器",
- "Container Name / ID": "容器名稱 / ID",
- "Docker Host": "Docker 主機",
- "Docker Hosts": "Docker 主機",
- "ntfy Topic": "ntfy 主題",
- Domain: "網域",
- Workstation: "工作站",
- disableCloudflaredNoAuthMsg: "您處於無驗證模式。無須輸入密碼。",
- trustProxyDescription: "信任 'X-Forwarded-*' 標頭。如果您想要取得正確的客戶端 IP,且您的 Uptime Kuma 架設於 Nginx 或 Apache 後方,您應啟用此選項。",
- wayToGetLineNotifyToken: "您可以從 {0} 取得存取權杖",
- Examples: "範例",
- "Home Assistant URL": "Home Assistant 網址",
- "Long-Lived Access Token": "長期有效存取權杖",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "若要建立長期有效存取權杖,請點擊您的個人檔案名稱 (左下角),捲動至最下方,然後點擊建立權杖。",
- "Notification Service": "通知服務",
- "default: notify all devices": "預設:通知所有服務",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "您可以在 Home Assistant 中查看通知服務的列表,在\"開發者工具 > 服務\"下搜尋\"通知\"來找到您的裝置/手機的名稱。",
- "Automations can optionally be triggered in Home Assistant:": "可以選擇在 Home Assistant 中觸發自動化程序:",
- "Trigger type:": "觸發器類型:",
- "Event type:": "事件類型:",
- "Event data:": "事件資料:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "然後選擇動作,例如切換至 RGB 燈為紅色的場景。",
- "Frontend Version": "前端版本",
- "Frontend Version do not match backend version!": "前端版本與後端版本不符!",
- "Base URL": "基底網址",
- goAlertInfo: "GoAlert 是用於待命排程、升級自動化,以及通知 (如簡訊或語音通話) 的開源應用程式。自動在正確的時間、用洽當的方法、聯絡合適的人! {0}",
- goAlertIntegrationKeyInfo: "取得服務的通用 API 整合金鑰,格式為 \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\"。通常是已複製的網址的權杖參數值。",
- goAlert: "GoAlert",
- backupOutdatedWarning: "過時:由於新功能的增加,且未妥善維護,故此備份功能無法產生或復原完整備份。",
- backupRecommend: "請直接備份磁碟區或 ./data/ 資料夾。",
- "Optional": "選填",
- squadcast: "Squadcast",
- SendKey: "SendKey",
- "SMSManager API Docs": "SMSManager API 文件 ",
- "Gateway Type": "閘道類型",
- SMSManager: "SMSManager",
- "You can divide numbers with": "若要除數,您可以使用",
- "or": "或是",
- recurringInterval: "間隔",
- "Recurring": "週期性",
- strategyManual: "手動切換使用中/非使用中",
- warningTimezone: "正在使用伺服器的時區",
- weekdayShortMon: "一",
- weekdayShortTue: "二",
- weekdayShortWed: "三",
- weekdayShortThu: "四",
- weekdayShortFri: "五",
- weekdayShortSat: "六",
- weekdayShortSun: "日",
- dayOfWeek: "每周特定一天",
- dayOfMonth: "每月特定一天",
- lastDay: "最後一天",
- lastDay1: "每月的最後一天",
- lastDay2: "每月的倒數第二天",
- lastDay3: "每月的倒數第三天",
- lastDay4: "每月的倒數第四天",
- "No Maintenance": "無維護",
- pauseMaintenanceMsg: "您確定要暫停嗎?",
- "maintenanceStatus-under-maintenance": "維護中",
- "maintenanceStatus-inactive": "非使用中",
- "maintenanceStatus-scheduled": "已排程",
- "maintenanceStatus-ended": "已結束",
- "maintenanceStatus-unknown": "未知",
- "Display Timezone": "顯示時區",
- "Server Timezone": "伺服器時區",
- statusPageMaintenanceEndDate: "結束",
- IconUrl: "圖示網址",
- "Enable DNS Cache": "啟用 DNS 快取",
- Enable: "啟用",
- Disable: "停用",
- dnsCacheDescription: "在某些 IPv6 環境可能會無法運作,如果您遇到任何問題,請停用。",
- "Single Maintenance Window": "單一維護時段",
- "Maintenance Time Window of a Day": "每日的維護時段",
- "Effective Date Range": "有效的日期範圍",
- "Schedule Maintenance": "排程維護",
- "Date and Time": "時間和日期",
- "DateTime Range": "DateTime 範圍",
- Strategy: "策略",
- "Free Mobile User Identifier": "Free Mobile User Identifier",
- "Free Mobile API Key": "Free Mobile API 金鑰",
- "Enable TLS": "啟用 TLS",
- "Proto Service Name": "Proto 服務名稱",
- "Proto Method": "Proto 方式",
- "Proto Content": "Proto 內容",
- Economy: "節約",
- Lowcost: "低費率",
- high: "高",
- "General Monitor Type": "一般監測器類型",
- "Passive Monitor Type": "被動監測器類型",
- "Specific Monitor Type": "指定監測器類型",
-};
diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue
index d8e96aa82..49c3dfe51 100644
--- a/src/layouts/Layout.vue
+++ b/src/layouts/Layout.vue
@@ -63,6 +63,12 @@
+
+
+ {{ $t("Help") }}
+
+
+
@@ -89,7 +95,7 @@
-
+
@@ -176,14 +182,14 @@ export default {
z-index: 1000;
position: fixed;
bottom: 0;
- height: 60px;
+ height: calc(60px + env(safe-area-inset-bottom));
width: 100%;
left: 0;
background-color: #fff;
box-shadow: 0 15px 47px 0 rgba(0, 0, 0, 0.05), 0 5px 14px 0 rgba(0, 0, 0, 0.05);
text-align: center;
white-space: nowrap;
- padding: 0 10px;
+ padding: 0 10px env(safe-area-inset-bottom);
a {
text-align: center;
diff --git a/src/mixins/datetime.js b/src/mixins/datetime.js
index 4fa2fa831..5a282ad03 100644
--- a/src/mixins/datetime.js
+++ b/src/mixins/datetime.js
@@ -12,6 +12,11 @@ export default {
},
methods: {
+ /**
+ * Convert value to UTC
+ * @param {string | number | Date | dayjs.Dayjs} value
+ * @returns {dayjs.Dayjs}
+ */
toUTC(value) {
return dayjs.tz(value, this.timezone).utc().format();
},
@@ -34,6 +39,11 @@ export default {
return this.datetimeFormat(value, "YYYY-MM-DD HH:mm:ss");
},
+ /**
+ * Get time for maintenance
+ * @param {string | number | Date | dayjs.Dayjs} value
+ * @returns {string}
+ */
datetimeMaintenance(value) {
const inputDate = new Date(value);
const now = new Date(Date.now());
diff --git a/src/mixins/lang.js b/src/mixins/lang.js
index aca951498..7e36d158b 100644
--- a/src/mixins/lang.js
+++ b/src/mixins/lang.js
@@ -1,6 +1,6 @@
import { currentLocale } from "../i18n";
import { setPageLocale } from "../util-frontend";
-const langModules = import.meta.glob("../languages/*.js");
+const langModules = import.meta.glob("../lang/*.json");
export default {
data() {
@@ -24,7 +24,7 @@ export default {
methods: {
/** Change the application language */
async changeLang(lang) {
- let message = (await langModules["../languages/" + lang + ".js"]()).default;
+ let message = (await langModules["../lang/" + lang + ".json"]()).default;
this.$i18n.setLocaleMessage(lang, message);
this.$i18n.locale = lang;
localStorage.locale = lang;
diff --git a/src/mixins/socket.js b/src/mixins/socket.js
index 378af06a5..e2834251a 100644
--- a/src/mixins/socket.js
+++ b/src/mixins/socket.js
@@ -3,6 +3,7 @@ import { useToast } from "vue-toastification";
import jwtDecode from "jwt-decode";
import Favico from "favico.js";
import dayjs from "dayjs";
+import { DOWN, MAINTENANCE, PENDING, UP } from "../util.ts";
const toast = useToast();
let socket;
@@ -34,7 +35,8 @@ export default {
allowLoginDialog: false, // Allowed to show login dialog, but "loggedIn" have to be true too. This exists because prevent the login dialog show 0.1s in first before the socket server auth-ed.
loggedIn: false,
monitorList: { },
- maintenanceList: { },
+ maintenanceList: {},
+ apiKeyList: {},
heartbeatList: { },
importantHeartbeatList: { },
avgPingList: { },
@@ -45,7 +47,7 @@ export default {
statusPageListLoaded: false,
statusPageList: [],
proxyList: [],
- connectionErrorMsg: "Cannot connect to the socket server. Reconnecting...",
+ connectionErrorMsg: `${this.$t("Cannot connect to the socket server.")} ${this.$t("Reconnecting...")}`,
showReverseProxyGuide: true,
cloudflared: {
cloudflareTunnelToken: "",
@@ -134,6 +136,10 @@ export default {
this.maintenanceList = data;
});
+ socket.on("apiKeyList", (data) => {
+ this.apiKeyList = data;
+ });
+
socket.on("notificationList", (data) => {
this.notificationList = data;
});
@@ -222,7 +228,7 @@ export default {
socket.on("connect_error", (err) => {
console.error(`Failed to connect to the backend. Socket.io connect_error: ${err.message}`);
- this.connectionErrorMsg = `Cannot connect to the socket server. [${err}] Reconnecting...`;
+ this.connectionErrorMsg = `${this.$t("Cannot connect to the socket server.")} [${err}] ${this.$t("Reconnecting...")}`;
this.showReverseProxyGuide = true;
this.socket.connected = false;
this.socket.firstConnect = false;
@@ -454,6 +460,10 @@ export default {
socket.emit("getMonitorList", callback);
},
+ /**
+ * Get list of maintenances
+ * @param {socketCB} callback
+ */
getMaintenanceList(callback) {
if (! callback) {
callback = () => { };
@@ -461,6 +471,17 @@ export default {
socket.emit("getMaintenanceList", callback);
},
+ /**
+ * Send list of API keys
+ * @param {socketCB} callback
+ */
+ getAPIKeyList(callback) {
+ if (!callback) {
+ callback = () => { };
+ }
+ socket.emit("getAPIKeyList", callback);
+ },
+
/**
* Add a monitor
* @param {Object} monitor Object representing monitor to add
@@ -470,22 +491,49 @@ export default {
socket.emit("add", monitor, callback);
},
+ /**
+ * Adds a maintenace
+ * @param {Object} maintenance
+ * @param {socketCB} callback
+ */
addMaintenance(maintenance, callback) {
socket.emit("addMaintenance", maintenance, callback);
},
+ /**
+ * Add monitors to maintenance
+ * @param {number} maintenanceID
+ * @param {number[]} monitors
+ * @param {socketCB} callback
+ */
addMonitorMaintenance(maintenanceID, monitors, callback) {
socket.emit("addMonitorMaintenance", maintenanceID, monitors, callback);
},
+ /**
+ * Add status page to maintenance
+ * @param {number} maintenanceID
+ * @param {number} statusPages
+ * @param {socketCB} callback
+ */
addMaintenanceStatusPage(maintenanceID, statusPages, callback) {
socket.emit("addMaintenanceStatusPage", maintenanceID, statusPages, callback);
},
+ /**
+ * Get monitors affected by maintenance
+ * @param {number} maintenanceID
+ * @param {socketCB} callback
+ */
getMonitorMaintenance(maintenanceID, callback) {
socket.emit("getMonitorMaintenance", maintenanceID, callback);
},
+ /**
+ * Get status pages where maintenance is shown
+ * @param {number} maintenanceID
+ * @param {socketCB} callback
+ */
getMaintenanceStatusPage(maintenanceID, callback) {
socket.emit("getMaintenanceStatusPage", maintenanceID, callback);
},
@@ -499,10 +547,33 @@ export default {
socket.emit("deleteMonitor", monitorID, callback);
},
+ /**
+ * Delete specified maintenance
+ * @param {number} maintenanceID
+ * @param {socketCB} callback
+ */
deleteMaintenance(maintenanceID, callback) {
socket.emit("deleteMaintenance", maintenanceID, callback);
},
+ /**
+ * Add an API key
+ * @param {Object} key API key to add
+ * @param {socketCB} callback
+ */
+ addAPIKey(key, callback) {
+ socket.emit("addAPIKey", key, callback);
+ },
+
+ /**
+ * Delete specified API key
+ * @param {int} keyID ID of key to delete
+ * @param {socketCB} callback
+ */
+ deleteAPIKey(keyID, callback) {
+ socket.emit("deleteAPIKey", keyID, callback);
+ },
+
/** Clear the hearbeat list */
clearData() {
console.log("reset heartbeat list");
@@ -590,28 +661,28 @@ export default {
for (let monitorID in this.lastHeartbeatList) {
let lastHeartBeat = this.lastHeartbeatList[monitorID];
- if (this.monitorList[monitorID] && this.monitorList[monitorID].maintenance) {
- result[monitorID] = {
- text: this.$t("statusMaintenance"),
- color: "maintenance",
- };
- } else if (! lastHeartBeat) {
+ if (! lastHeartBeat) {
result[monitorID] = unknown;
- } else if (lastHeartBeat.status === 1) {
+ } else if (lastHeartBeat.status === UP) {
result[monitorID] = {
text: this.$t("Up"),
color: "primary",
};
- } else if (lastHeartBeat.status === 0) {
+ } else if (lastHeartBeat.status === DOWN) {
result[monitorID] = {
text: this.$t("Down"),
color: "danger",
};
- } else if (lastHeartBeat.status === 2) {
+ } else if (lastHeartBeat.status === PENDING) {
result[monitorID] = {
text: this.$t("Pending"),
color: "warning",
};
+ } else if (lastHeartBeat.status === MAINTENANCE) {
+ result[monitorID] = {
+ text: this.$t("statusMaintenance"),
+ color: "maintenance",
+ };
} else {
result[monitorID] = unknown;
}
@@ -633,17 +704,17 @@ export default {
let beat = this.$root.lastHeartbeatList[monitorID];
let monitor = this.$root.monitorList[monitorID];
- if (monitor && monitor.maintenance) {
- result.maintenance++;
- } else if (monitor && ! monitor.active) {
+ if (monitor && ! monitor.active) {
result.pause++;
} else if (beat) {
- if (beat.status === 1) {
+ if (beat.status === UP) {
result.up++;
- } else if (beat.status === 0) {
+ } else if (beat.status === DOWN) {
result.down++;
- } else if (beat.status === 2) {
+ } else if (beat.status === PENDING) {
result.up++;
+ } else if (beat.status === MAINTENANCE) {
+ result.maintenance++;
} else {
result.unknown++;
}
diff --git a/src/mixins/theme.js b/src/mixins/theme.js
index 8d2252670..e3b361ee8 100644
--- a/src/mixins/theme.js
+++ b/src/mixins/theme.js
@@ -30,6 +30,9 @@ export default {
theme() {
// As entry can be status page now, set forceStatusPageTheme to true to use status page theme
if (this.forceStatusPageTheme) {
+ if (this.statusPageTheme === "auto") {
+ return this.system;
+ }
return this.statusPageTheme;
}
@@ -39,6 +42,9 @@ export default {
}
if (this.path.startsWith("/status-page") || this.path.startsWith("/status")) {
+ if (this.statusPageTheme === "auto") {
+ return this.system;
+ }
return this.statusPageTheme;
} else {
if (this.userTheme === "auto") {
diff --git a/src/pages/Details.vue b/src/pages/Details.vue
index 8325caa45..4a647d32e 100644
--- a/src/pages/Details.vue
+++ b/src/pages/Details.vue
@@ -1,22 +1,41 @@
+
{{ group }}
{{ monitor.name }}
+
{{ monitor.description }}
- {{ monitor.url }}
- TCP Ping {{ monitor.hostname }}:{{ monitor.port }}
+ {{ filterPassword(monitor.url) }}
+ TCP Port {{ monitor.hostname }}:{{ monitor.port }}
Ping: {{ monitor.hostname }}
- {{ $t("Keyword") }}: {{ monitor.keyword }}
+ {{ $t("Keyword") }}:
+ {{ monitor.keyword }}
+ ↧
[{{ monitor.dns_resolve_type }}] {{ monitor.hostname }}
{{ $t("Last Result") }}: {{ monitor.dns_last_result }}
+ Docker container: {{ monitor.docker_container }}
+ Gamedig - {{ monitor.game }}: {{ monitor.hostname }}:{{ monitor.port }}
+ gRPC - {{ filterPassword(monitor.grpcUrl) }}
+
+ {{ $t("Keyword") }}: {{ monitor.keyword }}
+
+ {{ filterPassword(monitor.databaseConnectionString) }}
+ MQTT: {{ monitor.hostname }}:{{ monitor.port }}/{{ monitor.mqttTopic }}
+ {{ filterPassword(monitor.databaseConnectionString) }}
+ {{ filterPassword(monitor.databaseConnectionString) }}
+ Push: {{ pushURL }}
+ Radius: {{ filterPassword(monitor.hostname) }}
+ {{ filterPassword(monitor.databaseConnectionString) }}
+ SQL Server: {{ filterPassword(monitor.databaseConnectionString) }}
+ Steam Game Server: {{ monitor.hostname }}:{{ monitor.port }}
@@ -24,12 +43,15 @@
{{ $t("Pause") }}
-
+
{{ $t("Resume") }}
{{ $t("Edit") }}
+
+ {{ $t("Clone") }}
+
{{ $t("Delete") }}
@@ -48,37 +70,44 @@
+
-
-
{{ pingTitle() }}
-
({{ $t("Current") }})
-
+
+
{{ pingTitle() }}
+
({{ $t("Current") }})
+
-
-
{{ pingTitle(true) }}
-
(24{{ $t("-hour") }})
-
+
+
{{ pingTitle(true) }}
+
(24{{ $t("-hour") }})
+
+
+
-
-
{{ $t("Uptime") }}
-
(24{{ $t("-hour") }})
-
+
+
{{ $t("Uptime") }}
+
(24{{ $t("-hour") }})
+
+
+
-
-
{{ $t("Uptime") }}
-
(30{{ $t("-day") }})
-
+
+
{{ $t("Uptime") }}
+
(30{{ $t("-day") }})
+
+
+
-
-
{{ $t("Cert Exp.") }}
-
( )
-
+
@@ -105,6 +134,15 @@
+
+
+
+
+
+
+
+
+
@@ -132,7 +170,7 @@
-
+
{{ beat.msg }}
@@ -189,6 +227,9 @@ import Pagination from "v-pagination-3";
const PingChart = defineAsyncComponent(() => import("../components/PingChart.vue"));
import Tag from "../components/Tag.vue";
import CertificateInfo from "../components/CertificateInfo.vue";
+import { getMonitorRelativeURL } from "../util.ts";
+import { URL } from "whatwg-url";
+import { getResBaseURL } from "../util-frontend";
export default {
components: {
@@ -214,6 +255,7 @@ export default {
hideCount: true,
chunksNavigation: "scroll",
},
+ cacheTime: Date.now(),
};
},
computed: {
@@ -223,6 +265,10 @@ export default {
},
lastHeartBeat() {
+ // Also trigger screenshot refresh here
+ // eslint-disable-next-line vue/no-side-effects-in-computed-properties
+ this.cacheTime = Date.now();
+
if (this.monitor.id in this.$root.lastHeartbeatList && this.$root.lastHeartbeatList[this.monitor.id]) {
return this.$root.lastHeartbeatList[this.monitor.id];
}
@@ -286,11 +332,27 @@ export default {
const endIndex = startIndex + this.perPage;
return this.heartBeatList.slice(startIndex, endIndex);
},
+
+ group() {
+ if (!this.monitor.pathName.includes("/")) {
+ return "";
+ }
+ return this.monitor.pathName.substr(0, this.monitor.pathName.lastIndexOf("/"));
+ },
+
+ pushURL() {
+ return this.$root.baseURL + "/api/push/" + this.monitor.pushToken + "?status=up&msg=OK&ping=";
+ },
+
+ screenshotURL() {
+ return getResBaseURL() + this.monitor.screenshot + "?time=" + this.cacheTime;
+ }
},
mounted() {
},
methods: {
+ getResBaseURL,
/** Request a test notification be sent for this monitor */
testNotification() {
this.$root.getSocket().emit("testNotification", this.monitor.id);
@@ -372,12 +434,35 @@ export default {
translationPrefix = "Avg. ";
}
- if (this.monitor.type === "http") {
+ if (this.monitor.type === "http" || this.monitor.type === "keyword") {
return this.$t(translationPrefix + "Response");
}
return this.$t(translationPrefix + "Ping");
},
+
+ /**
+ * Get URL of monitor
+ * @param {number} id ID of monitor
+ * @returns {string} Relative URL of monitor
+ */
+ monitorURL(id) {
+ return getMonitorRelativeURL(id);
+ },
+
+ /** Filter and hide password in URL for display */
+ filterPassword(urlString) {
+ try {
+ let parsedUrl = new URL(urlString);
+ if (parsedUrl.password !== "") {
+ parsedUrl.password = "******";
+ }
+ return parsedUrl.toString();
+ } catch (e) {
+ // Handle SQL Server
+ return urlString.replaceAll(/Password=(.+);/ig, "Password=******;");
+ }
+ }
},
};
@@ -411,6 +496,7 @@ export default {
flex-direction: column;
align-items: center;
padding-top: 10px;
+ font-size: 0.9em;
}
a.btn {
@@ -467,6 +553,18 @@ table {
}
}
+@media (max-width: 550px) {
+ .stats {
+ .col {
+ margin: 10px 0 !important;
+ }
+
+ h4 {
+ font-size: 1.1rem;
+ }
+ }
+}
+
.keyword {
color: black;
}
@@ -486,6 +584,10 @@ table {
color: $dark-font-color;
}
+ .keyword-inverted {
+ color: $dark-font-color;
+ }
+
.dropdown-clear-data {
ul {
background-color: $dark-bg;
diff --git a/src/pages/EditMaintenance.vue b/src/pages/EditMaintenance.vue
index d668d1ad1..4376a6507 100644
--- a/src/pages/EditMaintenance.vue
+++ b/src/pages/EditMaintenance.vue
@@ -3,7 +3,7 @@
@@ -223,11 +246,11 @@
diff --git a/src/router.js b/src/router.js
index 380488264..a8644805e 100644
--- a/src/router.js
+++ b/src/router.js
@@ -18,12 +18,14 @@ import NotFound from "./pages/NotFound.vue";
import DockerHosts from "./components/settings/Docker.vue";
import MaintenanceDetails from "./pages/MaintenanceDetails.vue";
import ManageMaintenance from "./pages/ManageMaintenance.vue";
+import APIKeys from "./components/settings/APIKeys.vue";
// Settings - Sub Pages
import Appearance from "./components/settings/Appearance.vue";
import General from "./components/settings/General.vue";
const Notifications = () => import("./components/settings/Notifications.vue");
import ReverseProxy from "./components/settings/ReverseProxy.vue";
+import Tags from "./components/settings/Tags.vue";
import MonitorHistory from "./components/settings/MonitorHistory.vue";
const Security = () => import("./components/settings/Security.vue");
import Proxies from "./components/settings/Proxies.vue";
@@ -65,6 +67,10 @@ const routes = [
},
],
},
+ {
+ path: "/clone/:id",
+ component: EditMonitor,
+ },
{
path: "/add",
component: EditMonitor,
@@ -95,6 +101,10 @@ const routes = [
path: "reverse-proxy",
component: ReverseProxy,
},
+ {
+ path: "tags",
+ component: Tags,
+ },
{
path: "monitor-history",
component: MonitorHistory,
@@ -107,6 +117,10 @@ const routes = [
path: "security",
component: Security,
},
+ {
+ path: "api-keys",
+ component: APIKeys,
+ },
{
path: "proxies",
component: Proxies,
diff --git a/src/util-frontend.js b/src/util-frontend.js
index 3323f3279..3a59dac5e 100644
--- a/src/util-frontend.js
+++ b/src/util-frontend.js
@@ -78,3 +78,45 @@ export function getResBaseURL() {
return "";
}
}
+
+/**
+ *
+ * @param {} mqtt wheather or not the regex should take into account the fact that it is an mqtt uri
+ * @returns RegExp The requested regex
+ */
+export function hostNameRegexPattern(mqtt = false) {
+ // mqtt, mqtts, ws and wss schemes accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect)
+ const mqttSchemeRegexPattern = "((mqtt|ws)s?:\\/\\/)?";
+ // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/
+ const ipRegexPattern = `((^${mqtt ? mqttSchemeRegexPattern : ""}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?$))`;
+ // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address
+ const hostNameRegexPattern = `^${mqtt ? mqttSchemeRegexPattern : ""}([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])(\\.)?$`;
+
+ return `${ipRegexPattern}|${hostNameRegexPattern}`;
+}
+
+/**
+ * Get the tag color options
+ * Shared between components
+ * @returns {Object[]}
+ */
+export function colorOptions(self) {
+ return [
+ { name: self.$t("Gray"),
+ color: "#4B5563" },
+ { name: self.$t("Red"),
+ color: "#DC2626" },
+ { name: self.$t("Orange"),
+ color: "#D97706" },
+ { name: self.$t("Green"),
+ color: "#059669" },
+ { name: self.$t("Blue"),
+ color: "#2563EB" },
+ { name: self.$t("Indigo"),
+ color: "#4F46E5" },
+ { name: self.$t("Purple"),
+ color: "#7C3AED" },
+ { name: self.$t("Pink"),
+ color: "#DB2777" },
+ ];
+}
diff --git a/src/util.js b/src/util.js
index 09e6d0ee7..6b8f8f374 100644
--- a/src/util.js
+++ b/src/util.js
@@ -315,6 +315,11 @@ function getMonitorRelativeURL(id) {
return "/dashboard/" + id;
}
exports.getMonitorRelativeURL = getMonitorRelativeURL;
+/**
+ * Get relative path for maintenance
+ * @param id ID of maintenance
+ * @returns Formatted relative path
+ */
function getMaintenanceRelativeURL(id) {
return "/maintenance/" + id;
}
@@ -361,6 +366,11 @@ function parseTimeFromTimeObject(obj) {
return result;
}
exports.parseTimeFromTimeObject = parseTimeFromTimeObject;
+/**
+ * Convert ISO date to UTC
+ * @param input Date
+ * @returns ISO Date time
+ */
function isoToUTCDateTime(input) {
return dayjs(input).utc().format(exports.SQL_DATETIME_FORMAT);
}
@@ -379,6 +389,12 @@ function utcToLocal(input, format = exports.SQL_DATETIME_FORMAT) {
return dayjs.utc(input).local().format(format);
}
exports.utcToLocal = utcToLocal;
+/**
+ * Convert local datetime to UTC
+ * @param input Local date
+ * @param format Format to return
+ * @returns Date in requested format
+ */
function localToUTC(input, format = exports.SQL_DATETIME_FORMAT) {
return dayjs(input).utc().format(format);
}
diff --git a/src/util.ts b/src/util.ts
index 99038c8d3..e8a2706e3 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -352,6 +352,11 @@ export function getMonitorRelativeURL(id: string) {
return "/dashboard/" + id;
}
+/**
+ * Get relative path for maintenance
+ * @param id ID of maintenance
+ * @returns Formatted relative path
+ */
export function getMaintenanceRelativeURL(id: string) {
return "/maintenance/" + id;
}
@@ -405,7 +410,11 @@ export function parseTimeFromTimeObject(obj : any) {
return result;
}
-
+/**
+ * Convert ISO date to UTC
+ * @param input Date
+ * @returns ISO Date time
+ */
export function isoToUTCDateTime(input : string) {
return dayjs(input).utc().format(SQL_DATETIME_FORMAT);
}
@@ -424,6 +433,12 @@ export function utcToLocal(input : string, format = SQL_DATETIME_FORMAT) {
return dayjs.utc(input).local().format(format);
}
+/**
+ * Convert local datetime to UTC
+ * @param input Local date
+ * @param format Format to return
+ * @returns Date in requested format
+ */
export function localToUTC(input : string, format = SQL_DATETIME_FORMAT) {
return dayjs(input).utc().format(format);
}
diff --git a/test/cypress/unit/i18n.spec.js b/test/cypress/unit/i18n.spec.js
new file mode 100644
index 000000000..da63d95a5
--- /dev/null
+++ b/test/cypress/unit/i18n.spec.js
@@ -0,0 +1,44 @@
+import { currentLocale } from "../../../src/i18n";
+
+describe("Test i18n.js", () => {
+
+ it("currentLocale()", () => {
+ const setLanguage = (language) => {
+ Object.defineProperty(window.navigator, 'language', {
+ value: language,
+ writable: true
+ });
+ }
+ setLanguage('en-EN');
+
+ expect(currentLocale()).equal("en");
+
+ setLanguage('zh-HK');
+ expect(currentLocale()).equal("zh-HK");
+
+ // Note that in Safari on iOS prior to 10.2, the country code returned is lowercase: "en-us", "fr-fr" etc.
+ // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language
+ setLanguage('zh-hk');
+ expect(currentLocale()).equal("en");
+
+ setLanguage('en-US');
+ expect(currentLocale()).equal("en");
+
+ setLanguage('ja-ZZ');
+ expect(currentLocale()).equal("ja");
+
+ setLanguage('zz-ZZ');
+ expect(currentLocale()).equal("en");
+
+ setLanguage('zz-ZZ');
+ expect(currentLocale()).equal("en");
+
+ setLanguage('en');
+ localStorage.locale = "en";
+ expect(currentLocale()).equal("en");
+
+ localStorage.locale = "zh-HK";
+ expect(currentLocale()).equal("zh-HK");
+ });
+
+});
\ No newline at end of file
diff --git a/test/cypress/unit/util-frontend.spec.js b/test/cypress/unit/util-frontend.spec.js
new file mode 100644
index 000000000..9bfd4becc
--- /dev/null
+++ b/test/cypress/unit/util-frontend.spec.js
@@ -0,0 +1,41 @@
+import { hostNameRegexPattern } from "../../../src/util-frontend";
+
+describe("Test util-frontend.js", () => {
+
+ describe("hostNameRegexPattern()", () => {
+ it('should return a valid regex for non mqtt hostnames', () => {
+ const regex = new RegExp(hostNameRegexPattern(false));
+
+ expect(regex.test("www.test.com")).to.be.true;
+ expect(regex.test("127.0.0.1")).to.be.true;
+ expect(regex.test("192.168.1.156")).to.be.true;
+ expect(regex.test(" 192.168.1.145")).to.be.false;
+ expect(regex.test("192.168.1.145 ")).to.be.false;
+ expect(regex.test(" fe80::3282:3ff:ae28:592")).to.be.false;
+ expect(regex.test("fe80::3282:3ff:ae28:592 ")).to.be.false;
+
+ ["mqtt", "mqtts", "ws", "wss"].forEach(schema => {
+ expect(regex.test(`${schema}://www.test.com`)).to.be.false;
+ expect(regex.test(`${schema}://127.0.0.1`)).to.be.false;
+ });
+ });
+ it('should return a valid regex for mqtt hostnames', () => {
+ const hostnameString = hostNameRegexPattern(false);
+ console.log('*********', hostnameString, '***********');
+ const regex = new RegExp(hostNameRegexPattern(true));
+
+ expect(regex.test("www.test.com")).to.be.true;
+ expect(regex.test("127.0.0.1")).to.be.true;
+ expect(regex.test("192.168.1.156")).to.be.true;
+ expect(regex.test(" 192.168.1.145")).to.be.false;
+ expect(regex.test("192.168.1.145 ")).to.be.false;
+ expect(regex.test(" fe80::3282:3ff:ae28:592")).to.be.false;
+ expect(regex.test("fe80::3282:3ff:ae28:592 ")).to.be.false;
+
+ ["mqtt", "mqtts", "ws", "wss"].forEach(schema => {
+ expect(regex.test(`${schema}://www.test.com`)).to.be.true;
+ expect(regex.test(`${schema}://127.0.0.1`)).to.be.true;
+ });
+ });
+ });
+});
diff --git a/tsconfig.json b/tsconfig.json
index c54546424..441d846ed 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -6,7 +6,7 @@
"module": "commonjs",
"lib": [
"es2020",
- "DOM",
+ "DOM"
],
"removeComments": false,
"preserveConstEnums": true,