From 3b84d256c81fee32ad95649f7d82a1cb4a9e0b21 Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 12:12:55 +0100 Subject: [PATCH 01/81] Autosync the updated translations (#18045) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/desktop/src/locales/af/messages.json | 18 ++++++-- apps/desktop/src/locales/ar/messages.json | 18 ++++++-- apps/desktop/src/locales/az/messages.json | 18 ++++++-- apps/desktop/src/locales/be/messages.json | 18 ++++++-- apps/desktop/src/locales/bg/messages.json | 18 ++++++-- apps/desktop/src/locales/bn/messages.json | 18 ++++++-- apps/desktop/src/locales/bs/messages.json | 18 ++++++-- apps/desktop/src/locales/ca/messages.json | 18 ++++++-- apps/desktop/src/locales/cs/messages.json | 18 ++++++-- apps/desktop/src/locales/cy/messages.json | 18 ++++++-- apps/desktop/src/locales/da/messages.json | 18 ++++++-- apps/desktop/src/locales/de/messages.json | 18 ++++++-- apps/desktop/src/locales/el/messages.json | 18 ++++++-- apps/desktop/src/locales/en_GB/messages.json | 18 ++++++-- apps/desktop/src/locales/en_IN/messages.json | 18 ++++++-- apps/desktop/src/locales/eo/messages.json | 18 ++++++-- apps/desktop/src/locales/es/messages.json | 18 ++++++-- apps/desktop/src/locales/et/messages.json | 18 ++++++-- apps/desktop/src/locales/eu/messages.json | 18 ++++++-- apps/desktop/src/locales/fa/messages.json | 18 ++++++-- apps/desktop/src/locales/fi/messages.json | 18 ++++++-- apps/desktop/src/locales/fil/messages.json | 18 ++++++-- apps/desktop/src/locales/fr/messages.json | 18 ++++++-- apps/desktop/src/locales/gl/messages.json | 18 ++++++-- apps/desktop/src/locales/he/messages.json | 18 ++++++-- apps/desktop/src/locales/hi/messages.json | 18 ++++++-- apps/desktop/src/locales/hr/messages.json | 18 ++++++-- apps/desktop/src/locales/hu/messages.json | 18 ++++++-- apps/desktop/src/locales/id/messages.json | 18 ++++++-- apps/desktop/src/locales/it/messages.json | 46 ++++++++++++-------- apps/desktop/src/locales/ja/messages.json | 18 ++++++-- apps/desktop/src/locales/ka/messages.json | 18 ++++++-- apps/desktop/src/locales/km/messages.json | 18 ++++++-- apps/desktop/src/locales/kn/messages.json | 18 ++++++-- apps/desktop/src/locales/ko/messages.json | 18 ++++++-- apps/desktop/src/locales/lt/messages.json | 18 ++++++-- apps/desktop/src/locales/lv/messages.json | 18 ++++++-- apps/desktop/src/locales/me/messages.json | 18 ++++++-- apps/desktop/src/locales/ml/messages.json | 18 ++++++-- apps/desktop/src/locales/mr/messages.json | 18 ++++++-- apps/desktop/src/locales/my/messages.json | 18 ++++++-- apps/desktop/src/locales/nb/messages.json | 18 ++++++-- apps/desktop/src/locales/ne/messages.json | 18 ++++++-- apps/desktop/src/locales/nl/messages.json | 18 ++++++-- apps/desktop/src/locales/nn/messages.json | 18 ++++++-- apps/desktop/src/locales/or/messages.json | 18 ++++++-- apps/desktop/src/locales/pl/messages.json | 18 ++++++-- apps/desktop/src/locales/pt_BR/messages.json | 18 ++++++-- apps/desktop/src/locales/pt_PT/messages.json | 18 ++++++-- apps/desktop/src/locales/ro/messages.json | 18 ++++++-- apps/desktop/src/locales/ru/messages.json | 18 ++++++-- apps/desktop/src/locales/si/messages.json | 18 ++++++-- apps/desktop/src/locales/sk/messages.json | 20 ++++++--- apps/desktop/src/locales/sl/messages.json | 18 ++++++-- apps/desktop/src/locales/sr/messages.json | 18 ++++++-- apps/desktop/src/locales/sv/messages.json | 18 ++++++-- apps/desktop/src/locales/ta/messages.json | 18 ++++++-- apps/desktop/src/locales/te/messages.json | 18 ++++++-- apps/desktop/src/locales/th/messages.json | 18 ++++++-- apps/desktop/src/locales/tr/messages.json | 18 ++++++-- apps/desktop/src/locales/uk/messages.json | 18 ++++++-- apps/desktop/src/locales/vi/messages.json | 18 ++++++-- apps/desktop/src/locales/zh_CN/messages.json | 18 ++++++-- apps/desktop/src/locales/zh_TW/messages.json | 18 ++++++-- 64 files changed, 911 insertions(+), 271 deletions(-) diff --git a/apps/desktop/src/locales/af/messages.json b/apps/desktop/src/locales/af/messages.json index 73a05ce79a6..720e0dde7c2 100644 --- a/apps/desktop/src/locales/af/messages.json +++ b/apps/desktop/src/locales/af/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Lêerformaat" diff --git a/apps/desktop/src/locales/ar/messages.json b/apps/desktop/src/locales/ar/messages.json index 7373bb671fa..d6c42f5883a 100644 --- a/apps/desktop/src/locales/ar/messages.json +++ b/apps/desktop/src/locales/ar/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "تصدير من" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "صيغة الملف" diff --git a/apps/desktop/src/locales/az/messages.json b/apps/desktop/src/locales/az/messages.json index fb818fac642..a031860334d 100644 --- a/apps/desktop/src/locales/az/messages.json +++ b/apps/desktop/src/locales/az/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Buradan xaricə köçür" }, - "export": { - "message": "Xaricə köçür" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Daxilə köçür" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Fayl formatı" diff --git a/apps/desktop/src/locales/be/messages.json b/apps/desktop/src/locales/be/messages.json index 982c5ba2956..50f7bdc668e 100644 --- a/apps/desktop/src/locales/be/messages.json +++ b/apps/desktop/src/locales/be/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Фармат файла" diff --git a/apps/desktop/src/locales/bg/messages.json b/apps/desktop/src/locales/bg/messages.json index b223a4d42b3..539cfb344aa 100644 --- a/apps/desktop/src/locales/bg/messages.json +++ b/apps/desktop/src/locales/bg/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Изнасяне от" }, - "export": { - "message": "Изнасяне" + "exportNoun": { + "message": "Изнасяне", + "description": "The noun form of the word Export" }, - "import": { - "message": "Внасяне" + "exportVerb": { + "message": "Изнасяне", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Внасяне", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Внасяне", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Формат на файла" diff --git a/apps/desktop/src/locales/bn/messages.json b/apps/desktop/src/locales/bn/messages.json index 07233587ba8..bde81f83b42 100644 --- a/apps/desktop/src/locales/bn/messages.json +++ b/apps/desktop/src/locales/bn/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "ফাইলের ধরণ" diff --git a/apps/desktop/src/locales/bs/messages.json b/apps/desktop/src/locales/bs/messages.json index 432f466ebe1..3ed7dee9e92 100644 --- a/apps/desktop/src/locales/bs/messages.json +++ b/apps/desktop/src/locales/bs/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format datoteke" diff --git a/apps/desktop/src/locales/ca/messages.json b/apps/desktop/src/locales/ca/messages.json index b91438416dd..57041a87a31 100644 --- a/apps/desktop/src/locales/ca/messages.json +++ b/apps/desktop/src/locales/ca/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exporta des de" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format de fitxer" diff --git a/apps/desktop/src/locales/cs/messages.json b/apps/desktop/src/locales/cs/messages.json index dffe7b34f8f..fe0c814f2a2 100644 --- a/apps/desktop/src/locales/cs/messages.json +++ b/apps/desktop/src/locales/cs/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exportovat z" }, - "export": { - "message": "Exportovat" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Importovat" + "exportVerb": { + "message": "Exportovat", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importovat", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formát souboru" diff --git a/apps/desktop/src/locales/cy/messages.json b/apps/desktop/src/locales/cy/messages.json index 45461838f58..af6bb971ab3 100644 --- a/apps/desktop/src/locales/cy/messages.json +++ b/apps/desktop/src/locales/cy/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/da/messages.json b/apps/desktop/src/locales/da/messages.json index 38396658400..5b864c57d62 100644 --- a/apps/desktop/src/locales/da/messages.json +++ b/apps/desktop/src/locales/da/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Eksportér fra" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Filformat" diff --git a/apps/desktop/src/locales/de/messages.json b/apps/desktop/src/locales/de/messages.json index 52e92a9dbfe..b49654c4dbe 100644 --- a/apps/desktop/src/locales/de/messages.json +++ b/apps/desktop/src/locales/de/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export aus" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Exportieren", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importieren", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Dateiformat" diff --git a/apps/desktop/src/locales/el/messages.json b/apps/desktop/src/locales/el/messages.json index cc6d1909e94..68b773c74f4 100644 --- a/apps/desktop/src/locales/el/messages.json +++ b/apps/desktop/src/locales/el/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Εξαγωγή από" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Τύπος αρχείου" diff --git a/apps/desktop/src/locales/en_GB/messages.json b/apps/desktop/src/locales/en_GB/messages.json index 66840673b77..3ad78742666 100644 --- a/apps/desktop/src/locales/en_GB/messages.json +++ b/apps/desktop/src/locales/en_GB/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/en_IN/messages.json b/apps/desktop/src/locales/en_IN/messages.json index 50e6671b2fa..987d8d0925c 100644 --- a/apps/desktop/src/locales/en_IN/messages.json +++ b/apps/desktop/src/locales/en_IN/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/eo/messages.json b/apps/desktop/src/locales/eo/messages.json index a9ed68bffd8..1e70ad9a180 100644 --- a/apps/desktop/src/locales/eo/messages.json +++ b/apps/desktop/src/locales/eo/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Elporti el" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Dosierformato" diff --git a/apps/desktop/src/locales/es/messages.json b/apps/desktop/src/locales/es/messages.json index ab6bb68cc82..9ce531994a0 100644 --- a/apps/desktop/src/locales/es/messages.json +++ b/apps/desktop/src/locales/es/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exportar desde" }, - "export": { - "message": "Exportar" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Importar" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formato de archivo" diff --git a/apps/desktop/src/locales/et/messages.json b/apps/desktop/src/locales/et/messages.json index 3b92748908b..0c96d531e40 100644 --- a/apps/desktop/src/locales/et/messages.json +++ b/apps/desktop/src/locales/et/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Ekspordi asukohast" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Failivorming" diff --git a/apps/desktop/src/locales/eu/messages.json b/apps/desktop/src/locales/eu/messages.json index 831636ee240..e86f29770d6 100644 --- a/apps/desktop/src/locales/eu/messages.json +++ b/apps/desktop/src/locales/eu/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Fitxategiaren formatua" diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json index 3f2b28cece0..45cda22a45f 100644 --- a/apps/desktop/src/locales/fa/messages.json +++ b/apps/desktop/src/locales/fa/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "برون ریزی از" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "فرمت پرونده" diff --git a/apps/desktop/src/locales/fi/messages.json b/apps/desktop/src/locales/fi/messages.json index d93e08e759c..7cee4e0c5e5 100644 --- a/apps/desktop/src/locales/fi/messages.json +++ b/apps/desktop/src/locales/fi/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Vie lähteestä" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Tiedostomuoto" diff --git a/apps/desktop/src/locales/fil/messages.json b/apps/desktop/src/locales/fil/messages.json index e82e5698f9f..39651e16f4a 100644 --- a/apps/desktop/src/locales/fil/messages.json +++ b/apps/desktop/src/locales/fil/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format ng file" diff --git a/apps/desktop/src/locales/fr/messages.json b/apps/desktop/src/locales/fr/messages.json index b7792522567..503c93f9f19 100644 --- a/apps/desktop/src/locales/fr/messages.json +++ b/apps/desktop/src/locales/fr/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exporter depuis" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format de fichier" diff --git a/apps/desktop/src/locales/gl/messages.json b/apps/desktop/src/locales/gl/messages.json index 315272ae464..2d0019a1f31 100644 --- a/apps/desktop/src/locales/gl/messages.json +++ b/apps/desktop/src/locales/gl/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/he/messages.json b/apps/desktop/src/locales/he/messages.json index 5a6d486d723..cde90fcc7ef 100644 --- a/apps/desktop/src/locales/he/messages.json +++ b/apps/desktop/src/locales/he/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "ייצוא מ־" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "תבנית קובץ" diff --git a/apps/desktop/src/locales/hi/messages.json b/apps/desktop/src/locales/hi/messages.json index b193e645425..d3f65bef701 100644 --- a/apps/desktop/src/locales/hi/messages.json +++ b/apps/desktop/src/locales/hi/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/hr/messages.json b/apps/desktop/src/locales/hr/messages.json index 4c7ceb732e7..10cf3fac635 100644 --- a/apps/desktop/src/locales/hr/messages.json +++ b/apps/desktop/src/locales/hr/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Izvezi iz" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format datoteke" diff --git a/apps/desktop/src/locales/hu/messages.json b/apps/desktop/src/locales/hu/messages.json index ca03a7d11a9..8cb8897ab09 100644 --- a/apps/desktop/src/locales/hu/messages.json +++ b/apps/desktop/src/locales/hu/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exportálás innen:" }, - "export": { - "message": "Exportálás" + "exportNoun": { + "message": "Exportálás", + "description": "The noun form of the word Export" }, - "import": { - "message": "Importálás" + "exportVerb": { + "message": "Exportálás", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Importálás", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importálás", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Fájlformátum" diff --git a/apps/desktop/src/locales/id/messages.json b/apps/desktop/src/locales/id/messages.json index 9da92c35d11..32a030e584c 100644 --- a/apps/desktop/src/locales/id/messages.json +++ b/apps/desktop/src/locales/id/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File Format" diff --git a/apps/desktop/src/locales/it/messages.json b/apps/desktop/src/locales/it/messages.json index ed46bd2763a..bc3076bbc3c 100644 --- a/apps/desktop/src/locales/it/messages.json +++ b/apps/desktop/src/locales/it/messages.json @@ -1199,7 +1199,7 @@ "message": "Seguici" }, "syncNow": { - "message": "Sync now" + "message": "Sincronizza" }, "changeMasterPass": { "message": "Cambia password principale" @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Esporta da" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Esporta", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Esporta", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Importa", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importa", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formato file" @@ -4334,43 +4344,43 @@ "message": "Aggiorna a Premium" }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "La tua organizzazione non utilizza più le password principali per accedere a Bitwarden. Per continuare, verifica l'organizzazione e il dominio." }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "Accedi e continua" }, "doNotContinue": { - "message": "Do not continue" + "message": "Non continuare" }, "domain": { - "message": "Domain" + "message": "Dominio" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "Questo dominio memorizzerà le chiavi di crittografia del tuo account, quindi assicurati di impostarlo come affidabile. Se non hai la certezza che lo sia, verifica con l'amministratore." }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "Verifica la tua organizzazione per accedere" }, "organizationVerified": { - "message": "Organization verified" + "message": "Organizzazione verificata" }, "domainVerified": { - "message": "Domain verified" + "message": "Dominio verificato" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "Se non verifichi l'organizzazione, il tuo accesso sarà revocato." }, "leaveNow": { - "message": "Leave now" + "message": "Abbandona" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "Verifica il tuo dominio per accedere" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "Per continuare con l'accesso, verifica questo dominio." }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "Per continuare con l'accesso, verifica l'organizzazione e il dominio." }, "sessionTimeoutSettingsAction": { "message": "Azione al timeout" diff --git a/apps/desktop/src/locales/ja/messages.json b/apps/desktop/src/locales/ja/messages.json index d930bd22b9c..e517bdcbe72 100644 --- a/apps/desktop/src/locales/ja/messages.json +++ b/apps/desktop/src/locales/ja/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "エクスポート元" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "ファイル形式" diff --git a/apps/desktop/src/locales/ka/messages.json b/apps/desktop/src/locales/ka/messages.json index d4fae58fca4..caf75a81f38 100644 --- a/apps/desktop/src/locales/ka/messages.json +++ b/apps/desktop/src/locales/ka/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/km/messages.json b/apps/desktop/src/locales/km/messages.json index 315272ae464..2d0019a1f31 100644 --- a/apps/desktop/src/locales/km/messages.json +++ b/apps/desktop/src/locales/km/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/kn/messages.json b/apps/desktop/src/locales/kn/messages.json index 0f880c88f1f..edfb1b6dd6e 100644 --- a/apps/desktop/src/locales/kn/messages.json +++ b/apps/desktop/src/locales/kn/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "ಕಡತದ ಮಾದರಿ" diff --git a/apps/desktop/src/locales/ko/messages.json b/apps/desktop/src/locales/ko/messages.json index 2d3c0bba871..4d4e3221651 100644 --- a/apps/desktop/src/locales/ko/messages.json +++ b/apps/desktop/src/locales/ko/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "파일 형식" diff --git a/apps/desktop/src/locales/lt/messages.json b/apps/desktop/src/locales/lt/messages.json index cce5cd5d223..ead4c1d89f9 100644 --- a/apps/desktop/src/locales/lt/messages.json +++ b/apps/desktop/src/locales/lt/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Failo formatas" diff --git a/apps/desktop/src/locales/lv/messages.json b/apps/desktop/src/locales/lv/messages.json index edfab735fbd..427a6ac2e16 100644 --- a/apps/desktop/src/locales/lv/messages.json +++ b/apps/desktop/src/locales/lv/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Izgūt no" }, - "export": { - "message": "Izgūt" + "exportNoun": { + "message": "Izgūšana", + "description": "The noun form of the word Export" }, - "import": { - "message": "Ievietot" + "exportVerb": { + "message": "Izgūt", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Ievietošana", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Ievietot", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Datnes veids" diff --git a/apps/desktop/src/locales/me/messages.json b/apps/desktop/src/locales/me/messages.json index f2e8df3449b..a5a2212b2b1 100644 --- a/apps/desktop/src/locales/me/messages.json +++ b/apps/desktop/src/locales/me/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format datoteke" diff --git a/apps/desktop/src/locales/ml/messages.json b/apps/desktop/src/locales/ml/messages.json index 97294b878fd..d71af9f752a 100644 --- a/apps/desktop/src/locales/ml/messages.json +++ b/apps/desktop/src/locales/ml/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "ഫയൽ ഫോർമാറ്റ്" diff --git a/apps/desktop/src/locales/mr/messages.json b/apps/desktop/src/locales/mr/messages.json index 315272ae464..2d0019a1f31 100644 --- a/apps/desktop/src/locales/mr/messages.json +++ b/apps/desktop/src/locales/mr/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/my/messages.json b/apps/desktop/src/locales/my/messages.json index 78cce9590cb..12c10bbcd3a 100644 --- a/apps/desktop/src/locales/my/messages.json +++ b/apps/desktop/src/locales/my/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/nb/messages.json b/apps/desktop/src/locales/nb/messages.json index 01bab1584af..069250a562a 100644 --- a/apps/desktop/src/locales/nb/messages.json +++ b/apps/desktop/src/locales/nb/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Eksporter fra" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Filformat" diff --git a/apps/desktop/src/locales/ne/messages.json b/apps/desktop/src/locales/ne/messages.json index a3d42ed7f57..a37dc2f0b5f 100644 --- a/apps/desktop/src/locales/ne/messages.json +++ b/apps/desktop/src/locales/ne/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/nl/messages.json b/apps/desktop/src/locales/nl/messages.json index 0e8b96d747d..824bad9508d 100644 --- a/apps/desktop/src/locales/nl/messages.json +++ b/apps/desktop/src/locales/nl/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exporteren vanuit" }, - "export": { - "message": "Exporteren" + "exportNoun": { + "message": "Exporteren", + "description": "The noun form of the word Export" }, - "import": { - "message": "Importeren" + "exportVerb": { + "message": "Exporteren", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Importeren", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importeren", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Bestandsindeling" diff --git a/apps/desktop/src/locales/nn/messages.json b/apps/desktop/src/locales/nn/messages.json index 5354db9004f..3fc7075911c 100644 --- a/apps/desktop/src/locales/nn/messages.json +++ b/apps/desktop/src/locales/nn/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Filformat" diff --git a/apps/desktop/src/locales/or/messages.json b/apps/desktop/src/locales/or/messages.json index 2447b568d49..2307e43adab 100644 --- a/apps/desktop/src/locales/or/messages.json +++ b/apps/desktop/src/locales/or/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/pl/messages.json b/apps/desktop/src/locales/pl/messages.json index ad0610aad5c..1724a713a30 100644 --- a/apps/desktop/src/locales/pl/messages.json +++ b/apps/desktop/src/locales/pl/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Eksportuj z" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format pliku" diff --git a/apps/desktop/src/locales/pt_BR/messages.json b/apps/desktop/src/locales/pt_BR/messages.json index 8350392709c..2246233a560 100644 --- a/apps/desktop/src/locales/pt_BR/messages.json +++ b/apps/desktop/src/locales/pt_BR/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exportar de" }, - "export": { - "message": "Exportar" + "exportNoun": { + "message": "Exportação", + "description": "The noun form of the word Export" }, - "import": { - "message": "Importar" + "exportVerb": { + "message": "Exportar", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Importação", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importar", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formato do arquivo" diff --git a/apps/desktop/src/locales/pt_PT/messages.json b/apps/desktop/src/locales/pt_PT/messages.json index f8d329480e0..d0e216df217 100644 --- a/apps/desktop/src/locales/pt_PT/messages.json +++ b/apps/desktop/src/locales/pt_PT/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exportar de" }, - "export": { - "message": "Exportar" + "exportNoun": { + "message": "Exportação", + "description": "The noun form of the word Export" }, - "import": { - "message": "Importar" + "exportVerb": { + "message": "Exportar", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Importação", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importar", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formato do ficheiro" diff --git a/apps/desktop/src/locales/ro/messages.json b/apps/desktop/src/locales/ro/messages.json index f68fb7fc86f..173cf6f5f5b 100644 --- a/apps/desktop/src/locales/ro/messages.json +++ b/apps/desktop/src/locales/ro/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format de fișier" diff --git a/apps/desktop/src/locales/ru/messages.json b/apps/desktop/src/locales/ru/messages.json index 2c8a5052988..c0a838d86e2 100644 --- a/apps/desktop/src/locales/ru/messages.json +++ b/apps/desktop/src/locales/ru/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Экспорт из" }, - "export": { - "message": "Экспорт" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Импорт" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Формат файла" diff --git a/apps/desktop/src/locales/si/messages.json b/apps/desktop/src/locales/si/messages.json index 0c3b61c35cf..d53bb073f49 100644 --- a/apps/desktop/src/locales/si/messages.json +++ b/apps/desktop/src/locales/si/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/sk/messages.json b/apps/desktop/src/locales/sk/messages.json index a26cd60b451..6e76a04a9fa 100644 --- a/apps/desktop/src/locales/sk/messages.json +++ b/apps/desktop/src/locales/sk/messages.json @@ -709,7 +709,7 @@ "message": "Priložiť prílohu" }, "itemsTransferred": { - "message": "Items transferred" + "message": "Položky boli prenesené" }, "fixEncryption": { "message": "Opraviť šifrovanie" @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exportovať z" }, - "export": { - "message": "Exportovať" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Importovať" + "exportVerb": { + "message": "Exportovať", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importovať", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formát súboru" diff --git a/apps/desktop/src/locales/sl/messages.json b/apps/desktop/src/locales/sl/messages.json index f336c8c1261..b0acd957d68 100644 --- a/apps/desktop/src/locales/sl/messages.json +++ b/apps/desktop/src/locales/sl/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format datoteke" diff --git a/apps/desktop/src/locales/sr/messages.json b/apps/desktop/src/locales/sr/messages.json index e5b6a9e2762..0142a1bc719 100644 --- a/apps/desktop/src/locales/sr/messages.json +++ b/apps/desktop/src/locales/sr/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Извоз од" }, - "export": { - "message": "Извези" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Увоз" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Формат датотеке" diff --git a/apps/desktop/src/locales/sv/messages.json b/apps/desktop/src/locales/sv/messages.json index 34b55de166b..e19328075d1 100644 --- a/apps/desktop/src/locales/sv/messages.json +++ b/apps/desktop/src/locales/sv/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Exportera från" }, - "export": { - "message": "Exportera" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Importera" + "exportVerb": { + "message": "Exportera", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importera", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Filformat" diff --git a/apps/desktop/src/locales/ta/messages.json b/apps/desktop/src/locales/ta/messages.json index 3abb4eb17c1..01f8f04f945 100644 --- a/apps/desktop/src/locales/ta/messages.json +++ b/apps/desktop/src/locales/ta/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "இருந்து ஏற்றுமதி" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "கோப்பு வடிவம்" diff --git a/apps/desktop/src/locales/te/messages.json b/apps/desktop/src/locales/te/messages.json index 315272ae464..2d0019a1f31 100644 --- a/apps/desktop/src/locales/te/messages.json +++ b/apps/desktop/src/locales/te/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/desktop/src/locales/th/messages.json b/apps/desktop/src/locales/th/messages.json index 1eac91a6c79..a9b08eda022 100644 --- a/apps/desktop/src/locales/th/messages.json +++ b/apps/desktop/src/locales/th/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File Format" diff --git a/apps/desktop/src/locales/tr/messages.json b/apps/desktop/src/locales/tr/messages.json index a7ed829ce32..fb867fba82c 100644 --- a/apps/desktop/src/locales/tr/messages.json +++ b/apps/desktop/src/locales/tr/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Dışa aktarılacak konum" }, - "export": { - "message": "Dışa aktar" + "exportNoun": { + "message": "Dışa aktar", + "description": "The noun form of the word Export" }, - "import": { - "message": "İçe aktar" + "exportVerb": { + "message": "Dışa aktar", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "İçe aktar", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "İçe aktar", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Dosya biçimi" diff --git a/apps/desktop/src/locales/uk/messages.json b/apps/desktop/src/locales/uk/messages.json index 9e4cc948e37..9f86087f883 100644 --- a/apps/desktop/src/locales/uk/messages.json +++ b/apps/desktop/src/locales/uk/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Експортувати з" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Формат файлу" diff --git a/apps/desktop/src/locales/vi/messages.json b/apps/desktop/src/locales/vi/messages.json index 7591b92f8ee..2c248671fbb 100644 --- a/apps/desktop/src/locales/vi/messages.json +++ b/apps/desktop/src/locales/vi/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "Xuất từ" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Định dạng tập tin" diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json index 0709e19a468..f4640ea9d00 100644 --- a/apps/desktop/src/locales/zh_CN/messages.json +++ b/apps/desktop/src/locales/zh_CN/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "导出自" }, - "export": { - "message": "导出" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "导入" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "文件格式" diff --git a/apps/desktop/src/locales/zh_TW/messages.json b/apps/desktop/src/locales/zh_TW/messages.json index 3e00280b364..ea4d8cbc1b0 100644 --- a/apps/desktop/src/locales/zh_TW/messages.json +++ b/apps/desktop/src/locales/zh_TW/messages.json @@ -1775,11 +1775,21 @@ "exportFrom": { "message": "匯出自" }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" }, - "import": { - "message": "Import" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "檔案格式" From e989df475a9f555e2f7a8321adffb4a1f831f5f7 Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 12:18:02 +0100 Subject: [PATCH 02/81] Autosync the updated translations (#18026) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com> --- apps/browser/src/_locales/ar/messages.json | 18 +- apps/browser/src/_locales/az/messages.json | 24 +- apps/browser/src/_locales/be/messages.json | 18 +- apps/browser/src/_locales/bg/messages.json | 24 +- apps/browser/src/_locales/bn/messages.json | 18 +- apps/browser/src/_locales/bs/messages.json | 18 +- apps/browser/src/_locales/ca/messages.json | 18 +- apps/browser/src/_locales/cs/messages.json | 18 +- apps/browser/src/_locales/cy/messages.json | 18 +- apps/browser/src/_locales/da/messages.json | 18 +- apps/browser/src/_locales/de/messages.json | 24 +- apps/browser/src/_locales/el/messages.json | 18 +- apps/browser/src/_locales/en_GB/messages.json | 18 +- apps/browser/src/_locales/en_IN/messages.json | 18 +- apps/browser/src/_locales/es/messages.json | 18 +- apps/browser/src/_locales/et/messages.json | 18 +- apps/browser/src/_locales/eu/messages.json | 18 +- apps/browser/src/_locales/fa/messages.json | 18 +- apps/browser/src/_locales/fi/messages.json | 18 +- apps/browser/src/_locales/fil/messages.json | 18 +- apps/browser/src/_locales/fr/messages.json | 18 +- apps/browser/src/_locales/gl/messages.json | 18 +- apps/browser/src/_locales/he/messages.json | 18 +- apps/browser/src/_locales/hi/messages.json | 18 +- apps/browser/src/_locales/hr/messages.json | 18 +- apps/browser/src/_locales/hu/messages.json | 18 +- apps/browser/src/_locales/id/messages.json | 18 +- apps/browser/src/_locales/it/messages.json | 24 +- apps/browser/src/_locales/ja/messages.json | 18 +- apps/browser/src/_locales/ka/messages.json | 18 +- apps/browser/src/_locales/km/messages.json | 18 +- apps/browser/src/_locales/kn/messages.json | 18 +- apps/browser/src/_locales/ko/messages.json | 18 +- apps/browser/src/_locales/lt/messages.json | 18 +- apps/browser/src/_locales/lv/messages.json | 24 +- apps/browser/src/_locales/ml/messages.json | 18 +- apps/browser/src/_locales/mr/messages.json | 18 +- apps/browser/src/_locales/my/messages.json | 18 +- apps/browser/src/_locales/nb/messages.json | 18 +- apps/browser/src/_locales/ne/messages.json | 18 +- apps/browser/src/_locales/nl/messages.json | 18 +- apps/browser/src/_locales/nn/messages.json | 18 +- apps/browser/src/_locales/or/messages.json | 18 +- apps/browser/src/_locales/pl/messages.json | 20 +- apps/browser/src/_locales/pt_BR/messages.json | 18 +- apps/browser/src/_locales/pt_PT/messages.json | 18 +- apps/browser/src/_locales/ro/messages.json | 18 +- apps/browser/src/_locales/ru/messages.json | 18 +- apps/browser/src/_locales/si/messages.json | 18 +- apps/browser/src/_locales/sk/messages.json | 18 +- apps/browser/src/_locales/sl/messages.json | 18 +- apps/browser/src/_locales/sr/messages.json | 18 +- apps/browser/src/_locales/sv/messages.json | 24 +- apps/browser/src/_locales/ta/messages.json | 18 +- apps/browser/src/_locales/te/messages.json | 18 +- apps/browser/src/_locales/th/messages.json | 2864 +++++++++-------- apps/browser/src/_locales/tr/messages.json | 18 +- apps/browser/src/_locales/uk/messages.json | 146 +- apps/browser/src/_locales/vi/messages.json | 18 +- apps/browser/src/_locales/zh_CN/messages.json | 28 +- apps/browser/src/_locales/zh_TW/messages.json | 18 +- apps/browser/store/locales/th/copy.resx | 67 +- 62 files changed, 2398 insertions(+), 1789 deletions(-) diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json index f1e2da53768..25cc1e31425 100644 --- a/apps/browser/src/_locales/ar/messages.json +++ b/apps/browser/src/_locales/ar/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "التصدير من" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "صيغة الملف" diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json index 81c9fb6a131..3efc2627018 100644 --- a/apps/browser/src/_locales/az/messages.json +++ b/apps/browser/src/_locales/az/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Buradan xaricə köçür" }, - "export": { - "message": "Xaricə köçür" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Daxilə köçür" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Fayl formatı" @@ -4802,13 +4812,13 @@ "message": "Hesab güvənliyi" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "Fişinq əngəlləyici" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "Fişinq aşkarlama" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "Şübhəli fişinq saytlarına erişməzdən əvvəl xəbərdarlıq nümayiş etdir" }, "notifications": { "message": "Bildirişlər" diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json index afe26551760..fd4dbb780da 100644 --- a/apps/browser/src/_locales/be/messages.json +++ b/apps/browser/src/_locales/be/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Экспартаванне з" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Фармат файла" diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json index adaa86369c6..1dc20d6ab65 100644 --- a/apps/browser/src/_locales/bg/messages.json +++ b/apps/browser/src/_locales/bg/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Изнасяне от" }, - "export": { - "message": "Изнасяне" + "exportVerb": { + "message": "Изнасяне", + "description": "The verb form of the word Export" }, - "import": { - "message": "Внасяне" + "exportNoun": { + "message": "Изнасяне", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Внасяне", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Внасяне", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Формат на файла" @@ -4802,13 +4812,13 @@ "message": "Защита на регистрацията" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "Блокатор на измами" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "Разпознаване на измами" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "Показване на предупреждение преди зареждане на уеб сайтове подозирани за измамни" }, "notifications": { "message": "Известия" diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json index 9b2248da59b..baf98bcb50a 100644 --- a/apps/browser/src/_locales/bn/messages.json +++ b/apps/browser/src/_locales/bn/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "ফাইলের ধরণ" diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json index 5c3c01a0ab5..df473b0192d 100644 --- a/apps/browser/src/_locales/bs/messages.json +++ b/apps/browser/src/_locales/bs/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json index 61a12bfb50c..4bbfb9a418e 100644 --- a/apps/browser/src/_locales/ca/messages.json +++ b/apps/browser/src/_locales/ca/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exporta des de" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format de fitxer" diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json index 309c7361de2..e40edbb8091 100644 --- a/apps/browser/src/_locales/cs/messages.json +++ b/apps/browser/src/_locales/cs/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exportovat z" }, - "export": { - "message": "Exportovat" + "exportVerb": { + "message": "Exportovat", + "description": "The verb form of the word Export" }, - "import": { - "message": "Importovat" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importovat", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formát souboru" diff --git a/apps/browser/src/_locales/cy/messages.json b/apps/browser/src/_locales/cy/messages.json index b5d090cc505..896eee5af4f 100644 --- a/apps/browser/src/_locales/cy/messages.json +++ b/apps/browser/src/_locales/cy/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Fformat y ffeil" diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index 0627c97766f..ad6e5b0e90d 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Eksportér fra" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Filformat" diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json index dc972697dc6..5ba6dd419a1 100644 --- a/apps/browser/src/_locales/de/messages.json +++ b/apps/browser/src/_locales/de/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export aus" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Exportieren", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importieren", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Dateiformat" @@ -4802,13 +4812,13 @@ "message": "Kontosicherheit" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "Phishing-Blocker" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "Phishing-Erkennung" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "Warnung vor dem Zugriff auf verdächtige Phishing-Seiten anzeigen" }, "notifications": { "message": "Benachrichtigungen" diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json index e4b7b28a512..29593380dd9 100644 --- a/apps/browser/src/_locales/el/messages.json +++ b/apps/browser/src/_locales/el/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Εξαγωγή από" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Τύπος αρχείου" diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json index 1abb01fcb14..f64bf387a5e 100644 --- a/apps/browser/src/_locales/en_GB/messages.json +++ b/apps/browser/src/_locales/en_GB/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json index 8b5d976a5e9..34f2f0b1105 100644 --- a/apps/browser/src/_locales/en_IN/messages.json +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json index 80139915ff0..276d0dbedb2 100644 --- a/apps/browser/src/_locales/es/messages.json +++ b/apps/browser/src/_locales/es/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exportar desde" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formato de archivo" diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json index 113336c18cb..3efb771966d 100644 --- a/apps/browser/src/_locales/et/messages.json +++ b/apps/browser/src/_locales/et/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Failivorming" diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json index 87469554bea..d8f8c5230c6 100644 --- a/apps/browser/src/_locales/eu/messages.json +++ b/apps/browser/src/_locales/eu/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Fitxategiaren formatua" diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json index 5d4ff7a6d2b..c264b292761 100644 --- a/apps/browser/src/_locales/fa/messages.json +++ b/apps/browser/src/_locales/fa/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "برون ریزی از" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "فرمت پرونده" diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json index 06157846f90..38003bb31b2 100644 --- a/apps/browser/src/_locales/fi/messages.json +++ b/apps/browser/src/_locales/fi/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Vie lähteestä" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Tiedostomuoto" diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json index 918acdac775..38702b940c4 100644 --- a/apps/browser/src/_locales/fil/messages.json +++ b/apps/browser/src/_locales/fil/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format ng file" diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json index cb611df41a1..afc71011900 100644 --- a/apps/browser/src/_locales/fr/messages.json +++ b/apps/browser/src/_locales/fr/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exporter à partir de" }, - "export": { - "message": "Exporter" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Importer" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format de fichier" diff --git a/apps/browser/src/_locales/gl/messages.json b/apps/browser/src/_locales/gl/messages.json index e83baff136f..7bfe70bded5 100644 --- a/apps/browser/src/_locales/gl/messages.json +++ b/apps/browser/src/_locales/gl/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exportar dende" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formato de ficheiro" diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json index 64dddc4db04..fd4e010ce60 100644 --- a/apps/browser/src/_locales/he/messages.json +++ b/apps/browser/src/_locales/he/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "ייצא מ־" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "פורמט הקובץ" diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json index 4602d099b59..dc91aa89197 100644 --- a/apps/browser/src/_locales/hi/messages.json +++ b/apps/browser/src/_locales/hi/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File Format" diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json index 3a42b22eb45..c472bfa50cd 100644 --- a/apps/browser/src/_locales/hr/messages.json +++ b/apps/browser/src/_locales/hr/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Izvezi iz" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format datoteke" diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json index dc34f3b2166..438c574bba9 100644 --- a/apps/browser/src/_locales/hu/messages.json +++ b/apps/browser/src/_locales/hu/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exportálás innen:" }, - "export": { - "message": "Exportálás" + "exportVerb": { + "message": "Exportálás", + "description": "The verb form of the word Export" }, - "import": { - "message": "Importálás" + "exportNoun": { + "message": "Exportálás", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Importálás", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importálás", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Fájlformátum" diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json index 36df2e733f8..4d636a5a79d 100644 --- a/apps/browser/src/_locales/id/messages.json +++ b/apps/browser/src/_locales/id/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Ekspor dari" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format Berkas" diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json index a64b3e0f351..2615640df0a 100644 --- a/apps/browser/src/_locales/it/messages.json +++ b/apps/browser/src/_locales/it/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Esporta da" }, - "export": { - "message": "Esporta" + "exportVerb": { + "message": "Esporta", + "description": "The verb form of the word Export" }, - "import": { - "message": "Importa" + "exportNoun": { + "message": "Esporta", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Importa", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importa", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formato file" @@ -4802,13 +4812,13 @@ "message": "Sicurezza dell'account" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "Blocco phishing" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "Rilevazione phishing" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "Mostra un avviso prima di accedere ai siti sospetti di phishing" }, "notifications": { "message": "Notifiche" diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json index e89c58ae4c3..91c006fccca 100644 --- a/apps/browser/src/_locales/ja/messages.json +++ b/apps/browser/src/_locales/ja/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "エクスポート元" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "ファイル形式" diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json index 6e1a5c556d9..85c2b04f469 100644 --- a/apps/browser/src/_locales/ka/messages.json +++ b/apps/browser/src/_locales/ka/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json index 02945c6ff9b..04386b72930 100644 --- a/apps/browser/src/_locales/km/messages.json +++ b/apps/browser/src/_locales/km/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json index 5d37dbf41b7..c29ecc2d04f 100644 --- a/apps/browser/src/_locales/kn/messages.json +++ b/apps/browser/src/_locales/kn/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "ಕಡತದ ಮಾದರಿ" diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json index 247133a4295..ccf3d96d366 100644 --- a/apps/browser/src/_locales/ko/messages.json +++ b/apps/browser/src/_locales/ko/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "~(으)로부터 내보내기" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "파일 형식" diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index 25c830574c6..a1e3e287892 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Failo formatas" diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json index 65c4591db80..95e5d2399e6 100644 --- a/apps/browser/src/_locales/lv/messages.json +++ b/apps/browser/src/_locales/lv/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Izgūt no" }, - "export": { - "message": "Izgūt" + "exportVerb": { + "message": "Izgūt", + "description": "The verb form of the word Export" }, - "import": { - "message": "Ievietot" + "exportNoun": { + "message": "Izgūšana", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Ievietošana", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Ievietot", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Datnes veids" @@ -4802,13 +4812,13 @@ "message": "Konta drošība" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "Pikšķerēšanas aizturētājs" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "Pikšķerēšanas noteikšana" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "Attēlot brīdinājumu pirms piekļūšanas iespējamām piekšķerēšanas vietnēm" }, "notifications": { "message": "Paziņojumi" diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json index 895ae7baa01..3257c4c745c 100644 --- a/apps/browser/src/_locales/ml/messages.json +++ b/apps/browser/src/_locales/ml/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "ഫയൽ ഫോർമാറ്റ്" diff --git a/apps/browser/src/_locales/mr/messages.json b/apps/browser/src/_locales/mr/messages.json index 2f2f9bbefe8..38487d00f9d 100644 --- a/apps/browser/src/_locales/mr/messages.json +++ b/apps/browser/src/_locales/mr/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/my/messages.json b/apps/browser/src/_locales/my/messages.json index 02945c6ff9b..04386b72930 100644 --- a/apps/browser/src/_locales/my/messages.json +++ b/apps/browser/src/_locales/my/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json index 027e28d1f2c..9056ce4ad8e 100644 --- a/apps/browser/src/_locales/nb/messages.json +++ b/apps/browser/src/_locales/nb/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Eksporter fra" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Filformat" diff --git a/apps/browser/src/_locales/ne/messages.json b/apps/browser/src/_locales/ne/messages.json index 02945c6ff9b..04386b72930 100644 --- a/apps/browser/src/_locales/ne/messages.json +++ b/apps/browser/src/_locales/ne/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json index f91f28e5c1c..ea040cb057b 100644 --- a/apps/browser/src/_locales/nl/messages.json +++ b/apps/browser/src/_locales/nl/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exporteren vanuit" }, - "export": { - "message": "Exporteren" + "exportVerb": { + "message": "Exporteren", + "description": "The verb form of the word Export" }, - "import": { - "message": "Importeren" + "exportNoun": { + "message": "Exporteren", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Importeren", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importeren", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Bestandsindeling" diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json index 02945c6ff9b..04386b72930 100644 --- a/apps/browser/src/_locales/nn/messages.json +++ b/apps/browser/src/_locales/nn/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/or/messages.json b/apps/browser/src/_locales/or/messages.json index 02945c6ff9b..04386b72930 100644 --- a/apps/browser/src/_locales/or/messages.json +++ b/apps/browser/src/_locales/or/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index c8e452d7190..67e7a2a2a00 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Eksportuj z" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Eksportuj", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Importuj", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format pliku" @@ -1422,7 +1432,7 @@ "message": "Enter your master password" }, "updateSettings": { - "message": "Update settings" + "message": "Zaktualizuj ustawienia" }, "later": { "message": "Później" diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json index 20c1a7e098d..c7ecfe3f81d 100644 --- a/apps/browser/src/_locales/pt_BR/messages.json +++ b/apps/browser/src/_locales/pt_BR/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exportar de" }, - "export": { - "message": "Exportar" + "exportVerb": { + "message": "Exportar", + "description": "The verb form of the word Export" }, - "import": { - "message": "Importar" + "exportNoun": { + "message": "Exportação", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Importação", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importar", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formato do arquivo" diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json index e0cbf43a813..d766e8f95fb 100644 --- a/apps/browser/src/_locales/pt_PT/messages.json +++ b/apps/browser/src/_locales/pt_PT/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exportar de" }, - "export": { - "message": "Exportar" + "exportVerb": { + "message": "Exportar", + "description": "The verb form of the word Export" }, - "import": { - "message": "Importar" + "exportNoun": { + "message": "Exportação", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Importar", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importação", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formato do ficheiro" diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json index d6d32804dcb..f0f71168074 100644 --- a/apps/browser/src/_locales/ro/messages.json +++ b/apps/browser/src/_locales/ro/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format fișier" diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json index 575b29350fd..3185edea5d5 100644 --- a/apps/browser/src/_locales/ru/messages.json +++ b/apps/browser/src/_locales/ru/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Экспорт из" }, - "export": { - "message": "Экспорт" + "exportVerb": { + "message": "Экспортировать", + "description": "The verb form of the word Export" }, - "import": { - "message": "Импорт" + "exportNoun": { + "message": "Экспорт", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Импорт", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Импортировать", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Формат файла" diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json index d4fb646f471..7ef837967c9 100644 --- a/apps/browser/src/_locales/si/messages.json +++ b/apps/browser/src/_locales/si/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "ගොනු ආකෘතිය" diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json index c32da5e7adb..343f16a921b 100644 --- a/apps/browser/src/_locales/sk/messages.json +++ b/apps/browser/src/_locales/sk/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exportovať z" }, - "export": { - "message": "Exportovať" + "exportVerb": { + "message": "Exportovať", + "description": "The verb form of the word Export" }, - "import": { - "message": "Importovať" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importovať", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Formát súboru" diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json index fcfa6857588..2806020d5f0 100644 --- a/apps/browser/src/_locales/sl/messages.json +++ b/apps/browser/src/_locales/sl/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Format datoteke" diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json index fa3e918bc01..4a23b7e7141 100644 --- a/apps/browser/src/_locales/sr/messages.json +++ b/apps/browser/src/_locales/sr/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Извоз од" }, - "export": { - "message": "Извези" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Увоз" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Формат датотеке" diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json index bb1e65f82fa..d04202f5c0b 100644 --- a/apps/browser/src/_locales/sv/messages.json +++ b/apps/browser/src/_locales/sv/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Exportera från" }, - "export": { - "message": "Exportera" + "exportVerb": { + "message": "Exportera", + "description": "The verb form of the word Export" }, - "import": { - "message": "Importera" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importera", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Filformat" @@ -4802,13 +4812,13 @@ "message": "Kontosäkerhet" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "Nätfiskeblockerare" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "Nätfiskedetektering" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "Visa varning innan du öppnar misstänkta nätfiskeplatser" }, "notifications": { "message": "Aviseringar" diff --git a/apps/browser/src/_locales/ta/messages.json b/apps/browser/src/_locales/ta/messages.json index 9856e53591d..1e25b5157ef 100644 --- a/apps/browser/src/_locales/ta/messages.json +++ b/apps/browser/src/_locales/ta/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "இதிலிருந்து ஏற்றுமதிசெய்" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "கோப்பு வடிவம்" diff --git a/apps/browser/src/_locales/te/messages.json b/apps/browser/src/_locales/te/messages.json index 02945c6ff9b..04386b72930 100644 --- a/apps/browser/src/_locales/te/messages.json +++ b/apps/browser/src/_locales/te/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Export from" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "File format" diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json index a07b23793b7..50bac4d6a44 100644 --- a/apps/browser/src/_locales/th/messages.json +++ b/apps/browser/src/_locales/th/messages.json @@ -6,7 +6,7 @@ "message": "โลโก้ Bitwarden" }, "extName": { - "message": "Bitwarden - จัดการรหัสผ่าน", + "message": "Bitwarden Password Manager", "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { @@ -14,7 +14,7 @@ "description": "Extension description, MUST be less than 112 characters (Safari restriction)" }, "loginOrCreateNewAccount": { - "message": "ล็อกอิน หรือ สร้างบัญชีใหม่ เพื่อใช้งานตู้นิรภัยของคุณ" + "message": "เข้าสู่ระบบหรือสร้างบัญชีใหม่เพื่อเข้าถึงตู้นิรภัยของคุณ" }, "inviteAccepted": { "message": "ตอบรับคำเชิญแล้ว" @@ -23,28 +23,28 @@ "message": "สร้างบัญชี" }, "newToBitwarden": { - "message": "เพิ่งเริ่มใช้ Bitwarden ใช่ไหม?" + "message": "เพิ่งเคยใช้งาน Bitwarden ใช่หรือไม่" }, "logInWithPasskey": { "message": "เข้าสู่ระบบด้วยพาสคีย์" }, "useSingleSignOn": { - "message": "ใช้การลงชื่อเพียงครั้งเดียว" + "message": "ใช้การลงชื่อเข้าใช้แบบ SSO" }, "yourOrganizationRequiresSingleSignOn": { - "message": "Your organization requires single sign-on." + "message": "องค์กรของคุณบังคับใช้ Single Sign-On" }, "welcomeBack": { - "message": "ยินดีต้อนรับกลับมา" + "message": "ยินดีต้อนรับกลับ" }, "setAStrongPassword": { "message": "ตั้งรหัสผ่านที่รัดกุม" }, "finishCreatingYourAccountBySettingAPassword": { - "message": "ดำเนินการสร้างบัญชีของคุณให้เสร็จสมบูรณ์โดยการตั้งรหัสผ่าน" + "message": "ตั้งรหัสผ่านเพื่อเสร็จสิ้นการสร้างบัญชี" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "SSO สำหรับองค์กร" }, "cancel": { "message": "ยกเลิก" @@ -53,22 +53,22 @@ "message": "ปิด" }, "submit": { - "message": "ส่งข้อมูล" + "message": "ส่ง" }, "emailAddress": { "message": "ที่อยู่อีเมล" }, "masterPass": { - "message": "Master Password" + "message": "รหัสผ่านหลัก" }, "masterPassDesc": { - "message": "รหัสผ่านหลัก คือ รหัสผ่านที่ใช้เข้าถึงตู้นิรภัยของคุณ สิ่งสำคัญมาก คือ คุณจะต้องไม่ลืมรหัสผ่านหลักโดยเด็ดขาด เพราะหากคุณลืมแล้วล่ะก็ จะไม่มีวิธีที่สามารถกู้รหัสผ่านของคุณได้เลย" + "message": "รหัสผ่านหลักคือรหัสที่คุณใช้เข้าถึงตู้นิรภัย สิ่งสำคัญคือห้ามลืมรหัสผ่านหลักเด็ดขาด เนื่องจากไม่มีวิธีกู้คืนรหัสผ่านหากคุณลืม" }, "masterPassHintDesc": { - "message": "คำใบ้เกี่ยวกับรหัสผ่านหลักสามารถช่วยให้คุณนึกรหัสผ่านหลักออกได้หากลืม" + "message": "คำใบ้รหัสผ่านหลักช่วยเตือนความจำหากคุณลืมรหัสผ่าน" }, "masterPassHintText": { - "message": "หากคุณลืมรหัสผ่าน ระบบสามารถส่งคำใบ้รหัสผ่านไปยังอีเมลของคุณได้ จำกัด $CURRENT$/$MAXIMUM$ ตัวอักษร", + "message": "หากลืมรหัสผ่าน ระบบจะส่งคำใบ้ไปที่อีเมลของคุณ สูงสุด $CURRENT$/$MAXIMUM$ ตัวอักษร", "placeholders": { "current": { "content": "$1", @@ -81,13 +81,13 @@ } }, "reTypeMasterPass": { - "message": "Re-type Master Password" + "message": "ป้อนรหัสผ่านหลักอีกครั้ง" }, "masterPassHint": { - "message": "Master Password Hint (optional)" + "message": "คำใบ้รหัสผ่านหลัก (ไม่บังคับ)" }, "passwordStrengthScore": { - "message": "คะแนนความรัดกุมของรหัสผ่าน $SCORE$", + "message": "ระดับความรัดกุมของรหัสผ่าน $SCORE$", "placeholders": { "score": { "content": "$1", @@ -96,10 +96,10 @@ } }, "joinOrganization": { - "message": "Join organization" + "message": "เข้าร่วมองค์กร" }, "joinOrganizationName": { - "message": "Join $ORGANIZATIONNAME$", + "message": "เข้าร่วม $ORGANIZATIONNAME$", "placeholders": { "organizationName": { "content": "$1", @@ -108,7 +108,7 @@ } }, "finishJoiningThisOrganizationBySettingAMasterPassword": { - "message": "Finish joining this organization by setting a master password." + "message": "ตั้งรหัสผ่านหลักเพื่อเสร็จสิ้นการเข้าร่วมองค์กรนี้" }, "tab": { "message": "แท็บ" @@ -117,7 +117,7 @@ "message": "ตู้นิรภัย" }, "myVault": { - "message": "My Vault" + "message": "ตู้นิรภัยของฉัน" }, "allVaults": { "message": "ตู้นิรภัยทั้งหมด" @@ -135,10 +135,10 @@ "message": "คัดลอกรหัสผ่าน" }, "copyPassphrase": { - "message": "Copy passphrase" + "message": "คัดลอกวลีรหัสผ่าน" }, "copyNote": { - "message": "Copy Note" + "message": "คัดลอกโน้ต" }, "copyUri": { "message": "คัดลอก URI" @@ -150,34 +150,34 @@ "message": "คัดลอกหมายเลข" }, "copySecurityCode": { - "message": "คัดลอกรหัสรักษาความปลอดภัย" + "message": "คัดลอกรหัสความปลอดภัย" }, "copyName": { - "message": "Copy name" + "message": "คัดลอกชื่อ" }, "copyCompany": { - "message": "Copy company" + "message": "คัดลอกบริษัท" }, "copySSN": { - "message": "Copy Social Security number" + "message": "คัดลอกหมายเลขประกันสังคม" }, "copyPassportNumber": { - "message": "Copy passport number" + "message": "คัดลอกเลขหนังสือเดินทาง" }, "copyLicenseNumber": { - "message": "Copy license number" + "message": "คัดลอกเลขใบขับขี่" }, "copyPrivateKey": { - "message": "Copy private key" + "message": "คัดลอกกุญแจส่วนตัว" }, "copyPublicKey": { - "message": "Copy public key" + "message": "คัดลอกกุญแจสาธารณะ" }, "copyFingerprint": { - "message": "Copy fingerprint" + "message": "คัดลอกลายนิ้วมือ" }, "copyCustomField": { - "message": "Copy $FIELD$", + "message": "คัดลอก $FIELD$", "placeholders": { "field": { "content": "$1", @@ -186,186 +186,186 @@ } }, "copyWebsite": { - "message": "Copy website" + "message": "คัดลอกเว็บไซต์" }, "copyNotes": { - "message": "Copy notes" + "message": "คัดลอกโน้ต" }, "copy": { - "message": "Copy", + "message": "คัดลอก", "description": "Copy to clipboard" }, "fill": { - "message": "Fill", + "message": "ป้อน", "description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible." }, "autoFill": { - "message": "กรอกข้อมูลอัตโนมัติ" + "message": "ป้อนอัตโนมัติ" }, "autoFillLogin": { - "message": "Autofill login" + "message": "ป้อนข้อมูลเข้าสู่ระบบอัตโนมัติ" }, "autoFillCard": { - "message": "Autofill card" + "message": "ป้อนข้อมูลบัตรอัตโนมัติ" }, "autoFillIdentity": { - "message": "Autofill identity" + "message": "ป้อนข้อมูลระบุตัวตนอัตโนมัติ" }, "fillVerificationCode": { - "message": "Fill verification code" + "message": "ป้อนรหัสยืนยัน" }, "fillVerificationCodeAria": { - "message": "Fill Verification Code", + "message": "ป้อนรหัสยืนยัน", "description": "Aria label for the heading displayed the inline menu for totp code autofill" }, "generatePasswordCopied": { - "message": "Generate Password (copied)" + "message": "สร้างรหัสผ่าน (คัดลอกแล้ว)" }, "copyElementIdentifier": { - "message": "คัดลอกชื่อของช่องที่กำหนดเอง" + "message": "คัดลอกชื่อฟิลด์ที่กำหนดเอง" }, "noMatchingLogins": { - "message": "ไม่พบข้อมูลล็อกอินที่ตรงกัน" + "message": "ไม่พบข้อมูลเข้าสู่ระบบที่ตรงกัน" }, "noCards": { - "message": "No cards" + "message": "ไม่มีบัตร" }, "noIdentities": { - "message": "No identities" + "message": "ไม่มีข้อมูลระบุตัวตน" }, "addLoginMenu": { - "message": "Add login" + "message": "เพิ่มข้อมูลเข้าสู่ระบบ" }, "addCardMenu": { - "message": "Add card" + "message": "เพิ่มบัตร" }, "addIdentityMenu": { - "message": "Add identity" + "message": "เพิ่มข้อมูลระบุตัวตน" }, "unlockVaultMenu": { - "message": "ปลดล็อกกตู้นิรภัยของคุณ" + "message": "ปลดล็อกตู้นิรภัย" }, "loginToVaultMenu": { - "message": "ลงชื่อเข้าใช้ตู้นิรภัยของคุณ" + "message": "เข้าสู่ระบบตู้นิรภัย" }, "autoFillInfo": { - "message": "ไม่พบข้อมูลล็อกอินเพื่อใช้กรอกข้อมูลอัตโนมัติ สำหรับแท็บปัจจุบันของเบราว์เซอร์" + "message": "ไม่มีข้อมูลเข้าสู่ระบบสำหรับป้อนในแท็บเบราว์เซอร์ปัจจุบัน" }, "addLogin": { - "message": "Add a Login" + "message": "เพิ่มข้อมูลเข้าสู่ระบบ" }, "addItem": { "message": "เพิ่มรายการ" }, "accountEmail": { - "message": "Account email" + "message": "อีเมลบัญชี" }, "requestHint": { - "message": "Request hint" + "message": "ขอคำใบ้" }, "requestPasswordHint": { - "message": "Request password hint" + "message": "ขอคำใบ้รหัสผ่าน" }, "enterYourAccountEmailAddressAndYourPasswordHintWillBeSentToYou": { - "message": "กรอกที่อยู่อีเมลบัญชีของคุณ แล้วระบบจะส่งคำใบ้รหัสผ่านไปให้คุณ" + "message": "กรอกอีเมลบัญชี แล้วระบบจะส่งคำใบ้รหัสผ่านไปให้" }, "getMasterPasswordHint": { - "message": "รับคำใบ้เกี่ยวกับรหัสผ่านหลักของคุณ" + "message": "รับคำใบ้รหัสผ่านหลัก" }, "continue": { - "message": "ดำเนินการต่อไป" + "message": "ดำเนินการต่อ" }, "sendVerificationCode": { - "message": "ส่งโค้ดยืนยันไปยังอีเมลของคุณ" + "message": "ส่งรหัสยืนยันไปที่อีเมล" }, "sendCode": { - "message": "ส่งโค้ด" + "message": "ส่งรหัส" }, "codeSent": { - "message": "ส่งโค้ดแล้ว" + "message": "ส่งรหัสแล้ว" }, "verificationCode": { - "message": "Verification Code" + "message": "รหัสยืนยัน" }, "confirmIdentity": { - "message": "ยืนยันตัวตนของคุณเพื่อดำเนินการต่อ" + "message": "ยืนยันตัวตนเพื่อดำเนินการต่อ" }, "changeMasterPassword": { - "message": "Change Master Password" + "message": "เปลี่ยนรหัสผ่านหลัก" }, "continueToWebApp": { - "message": "Continue to web app?" + "message": "ไปที่เว็บแอปหรือไม่" }, "continueToWebAppDesc": { - "message": "Explore more features of your Bitwarden account on the web app." + "message": "สำรวจฟีเจอร์เพิ่มเติมของบัญชี Bitwarden บนเว็บแอป" }, "continueToHelpCenter": { - "message": "Continue to Help Center?" + "message": "ไปที่ศูนย์ช่วยเหลือหรือไม่" }, "continueToHelpCenterDesc": { - "message": "Learn more about how to use Bitwarden on the Help Center." + "message": "เรียนรู้วิธีการใช้งาน Bitwarden เพิ่มเติมได้ที่ศูนย์ช่วยเหลือ" }, "continueToBrowserExtensionStore": { - "message": "Continue to browser extension store?" + "message": "ไปที่ร้านค้าส่วนขยายหรือไม่" }, "continueToBrowserExtensionStoreDesc": { - "message": "Help others find out if Bitwarden is right for them. Visit your browser's extension store and leave a rating now." + "message": "ช่วยบอกต่อว่า Bitwarden ดีอย่างไร แวะไปที่ร้านค้าส่วนขยายของเบราว์เซอร์และให้คะแนนเลย" }, "changeMasterPasswordOnWebConfirmation": { - "message": "You can change your master password on the Bitwarden web app." + "message": "คุณสามารถเปลี่ยนรหัสผ่านหลักได้ที่เว็บแอป Bitwarden" }, "fingerprintPhrase": { - "message": "Fingerprint Phrase", + "message": "วลีลายนิ้วมือ", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "yourAccountsFingerprint": { - "message": "ข้อความลายนิ้วมือของบัญชีของคุณ", + "message": "วลีลายนิ้วมือของบัญชี", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "twoStepLogin": { - "message": "Two-step Login" + "message": "การยืนยันตัวตนสองขั้นตอน" }, "logOut": { "message": "ออกจากระบบ" }, "aboutBitwarden": { - "message": "About Bitwarden" + "message": "เกี่ยวกับ Bitwarden" }, "about": { "message": "เกี่ยวกับ" }, "moreFromBitwarden": { - "message": "More from Bitwarden" + "message": "เพิ่มเติมจาก Bitwarden" }, "continueToBitwardenDotCom": { - "message": "Continue to bitwarden.com?" + "message": "ไปที่ bitwarden.com หรือไม่" }, "bitwardenForBusiness": { - "message": "Bitwarden for Business" + "message": "Bitwarden สำหรับธุรกิจ" }, "bitwardenAuthenticator": { "message": "Bitwarden Authenticator" }, "continueToAuthenticatorPageDesc": { - "message": "Bitwarden Authenticator allows you to store authenticator keys and generate TOTP codes for 2-step verification flows. Learn more on the bitwarden.com website" + "message": "Bitwarden Authenticator ช่วยจัดเก็บคีย์และสร้างรหัส TOTP สำหรับการยืนยันตัวตนสองขั้นตอน เรียนรู้เพิ่มเติมที่เว็บไซต์ bitwarden.com" }, "bitwardenSecretsManager": { "message": "Bitwarden Secrets Manager" }, "continueToSecretsManagerPageDesc": { - "message": "Securely store, manage, and share developer secrets with Bitwarden Secrets Manager. Learn more on the bitwarden.com website." + "message": "จัดเก็บ จัดการ และแชร์ความลับสำหรับนักพัฒนาอย่างปลอดภัยด้วย Bitwarden Secrets Manager เรียนรู้เพิ่มเติมที่เว็บไซต์ bitwarden.com" }, "passwordlessDotDev": { "message": "Passwordless.dev" }, "continueToPasswordlessDotDevPageDesc": { - "message": "Create smooth and secure login experiences free from traditional passwords with Passwordless.dev. Learn more on the bitwarden.com website." + "message": "สร้างประสบการณ์การเข้าสู่ระบบที่ลื่นไหลและปลอดภัย ปราศจากรหัสผ่านแบบเดิม ๆ ด้วย Passwordless.dev เรียนรู้เพิ่มเติมที่เว็บไซต์ bitwarden.com" }, "freeBitwardenFamilies": { - "message": "Free Bitwarden Families" + "message": "Bitwarden Families ฟรี" }, "freeBitwardenFamiliesPageDesc": { - "message": "You are eligible for Free Bitwarden Families. Redeem this offer today in the web app." + "message": "คุณได้รับสิทธิ์ใช้งาน Bitwarden Families ฟรี รับสิทธิ์ข้อเสนอนี้ได้ทันทีในเว็บแอป" }, "version": { "message": "เวอร์ชัน" @@ -386,7 +386,7 @@ "message": "แก้ไขโฟลเดอร์" }, "editFolderWithName": { - "message": "Edit folder: $FOLDERNAME$", + "message": "แก้ไขโฟลเดอร์: $FOLDERNAME$", "placeholders": { "foldername": { "content": "$1", @@ -395,22 +395,22 @@ } }, "newFolder": { - "message": "New folder" + "message": "โฟลเดอร์ใหม่" }, "folderName": { - "message": "Folder name" + "message": "ชื่อโฟลเดอร์" }, "folderHintText": { - "message": "Nest a folder by adding the parent folder's name followed by a “/”. Example: Social/Forums" + "message": "ซ้อนโฟลเดอร์โดยการใส่ชื่อโฟลเดอร์หลักตามด้วยเครื่องหมาย “/” ตัวอย่าง: โซเชียล/ฟอรัม" }, "noFoldersAdded": { - "message": "No folders added" + "message": "ยังไม่ได้เพิ่มโฟลเดอร์" }, "createFoldersToOrganize": { - "message": "Create folders to organize your vault items" + "message": "สร้างโฟลเดอร์เพื่อจัดระเบียบรายการในตู้นิรภัย" }, "deleteFolderPermanently": { - "message": "Are you sure you want to permanently delete this folder?" + "message": "ยืนยันที่จะลบโฟลเดอร์นี้ถาวรหรือไม่" }, "deleteFolder": { "message": "ลบโฟลเดอร์" @@ -419,65 +419,65 @@ "message": "โฟลเดอร์" }, "noFolders": { - "message": "ไม่มีโฟลเดอร์" + "message": "ไม่มีโฟลเดอร์ที่จะแสดง" }, "helpFeedback": { - "message": "Help & Feedback" + "message": "ความช่วยเหลือและข้อเสนอแนะ" }, "helpCenter": { - "message": "Bitwarden Help center" + "message": "ศูนย์ช่วยเหลือ Bitwarden" }, "communityForums": { - "message": "Explore Bitwarden community forums" + "message": "สำรวจฟอรัมชุมชน Bitwarden" }, "contactSupport": { - "message": "Contact Bitwarden support" + "message": "ติดต่อฝ่ายสนับสนุน Bitwarden" }, "sync": { "message": "ซิงค์" }, "syncNow": { - "message": "Sync now" + "message": "ซิงค์ทันที" }, "lastSync": { - "message": "Last Sync:" + "message": "ซิงค์ล่าสุด:" }, "passGen": { - "message": "Password Generator" + "message": "ตัวสร้างรหัสผ่าน" }, "generator": { - "message": "สุ่มรหัส", + "message": "ตัวสร้าง", "description": "Short for 'credential generator'." }, "passGenInfo": { - "message": "สร้างรหัสผ่านที่รัดกุมและไม่ซ้ำใครโดยอัตโนมัติสำหรับการเข้าสู่ระบบของคุณ" + "message": "สร้างรหัสผ่านที่รัดกุมและไม่ซ้ำกันสำหรับข้อมูลเข้าสู่ระบบของคุณโดยอัตโนมัติ" }, "bitWebVaultApp": { - "message": "Bitwarden web app" + "message": "เว็บแอป Bitwarden" }, "select": { "message": "เลือก" }, "generatePassword": { - "message": "Generate Password" + "message": "สร้างรหัสผ่าน" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "สร้างวลีรหัสผ่าน" }, "passwordGenerated": { - "message": "Password generated" + "message": "สร้างรหัสผ่านแล้ว" }, "passphraseGenerated": { - "message": "Passphrase generated" + "message": "สร้างวลีรหัสผ่านแล้ว" }, "usernameGenerated": { - "message": "Username generated" + "message": "สร้างชื่อผู้ใช้แล้ว" }, "emailGenerated": { - "message": "Email generated" + "message": "สร้างอีเมลแล้ว" }, "regeneratePassword": { - "message": "Regenerate Password" + "message": "สร้างรหัสผ่านใหม่" }, "options": { "message": "ตัวเลือก" @@ -486,11 +486,11 @@ "message": "ความยาว" }, "include": { - "message": "Include", + "message": "รวม", "description": "Card header for password generator include block" }, "uppercaseDescription": { - "message": "Include uppercase characters", + "message": "รวมตัวอักษรพิมพ์ใหญ่", "description": "Tooltip for the password generator uppercase character checkbox" }, "uppercaseLabel": { @@ -498,7 +498,7 @@ "description": "Label for the password generator uppercase character checkbox" }, "lowercaseDescription": { - "message": "Include lowercase characters", + "message": "รวมตัวอักษรพิมพ์เล็ก", "description": "Full description for the password generator lowercase character checkbox" }, "lowercaseLabel": { @@ -506,7 +506,7 @@ "description": "Label for the password generator lowercase character checkbox" }, "numbersDescription": { - "message": "Include numbers", + "message": "รวมตัวเลข", "description": "Full description for the password generator numbers checkbox" }, "numbersLabel": { @@ -514,100 +514,100 @@ "description": "Label for the password generator numbers checkbox" }, "specialCharactersDescription": { - "message": "Include special characters", + "message": "รวมอักขระพิเศษ", "description": "Full description for the password generator special characters checkbox" }, "numWords": { - "message": "Number of Words" + "message": "จำนวนคำ" }, "wordSeparator": { - "message": "Word Separator" + "message": "ตัวคั่นคำ" }, "capitalize": { "message": "ขึ้นต้นด้วยตัวพิมพ์ใหญ่", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "ต่อท้ายด้วยตัวเลข" + "message": "รวมตัวเลข" }, "minNumbers": { - "message": "Minimum Numbers" + "message": "จำนวนตัวเลขขั้นต่ำ" }, "minSpecial": { - "message": "Minimum Special" + "message": "จำนวนอักขระพิเศษขั้นต่ำ" }, "avoidAmbiguous": { - "message": "Avoid ambiguous characters", + "message": "หลีกเลี่ยงอักขระที่กำกวม", "description": "Label for the avoid ambiguous characters checkbox." }, "generatorPolicyInEffect": { - "message": "Enterprise policy requirements have been applied to your generator options.", + "message": "มีการใช้นโยบายองค์กรกับตัวเลือกของตัวสร้างรหัสผ่าน", "description": "Indicates that a policy limits the credential generator screen." }, "searchVault": { "message": "ค้นหาในตู้นิรภัย" }, "resetSearch": { - "message": "Reset search" + "message": "รีเซ็ตการค้นหา" }, "archiveNoun": { - "message": "Archive", + "message": "รายการจัดเก็บถาวร", "description": "Noun" }, "archiveVerb": { - "message": "Archive", + "message": "จัดเก็บถาวร", "description": "Verb" }, "unArchive": { - "message": "Unarchive" + "message": "เลิกจัดเก็บถาวร" }, "itemsInArchive": { - "message": "Items in archive" + "message": "รายการในที่จัดเก็บถาวร" }, "noItemsInArchive": { - "message": "No items in archive" + "message": "ไม่มีรายการจัดเก็บถาวร" }, "noItemsInArchiveDesc": { - "message": "Archived items will appear here and will be excluded from general search results and autofill suggestions." + "message": "รายการที่จัดเก็บถาวรจะปรากฏที่นี่ และจะไม่ถูกรวมในผลการค้นหาทั่วไปหรือคำแนะนำการป้อนอัตโนมัติ" }, "itemWasSentToArchive": { - "message": "Item was sent to archive" + "message": "ย้ายรายการไปที่จัดเก็บถาวรแล้ว" }, "itemUnarchived": { - "message": "Item was unarchived" + "message": "เลิกจัดเก็บถาวรรายการแล้ว" }, "archiveItem": { - "message": "Archive item" + "message": "จัดเก็บรายการถาวร" }, "archiveItemConfirmDesc": { - "message": "Archived items are excluded from general search results and autofill suggestions. Are you sure you want to archive this item?" + "message": "รายการที่จัดเก็บถาวรจะไม่ถูกรวมในผลการค้นหาทั่วไปและคำแนะนำการป้อนอัตโนมัติ ยืนยันที่จะจัดเก็บรายการนี้ถาวรหรือไม่" }, "upgradeToUseArchive": { - "message": "A premium membership is required to use Archive." + "message": "ต้องเป็นสมาชิกพรีเมียมจึงจะใช้งานฟีเจอร์จัดเก็บถาวรได้" }, "edit": { "message": "แก้ไข" }, "view": { - "message": "แสดง" + "message": "ดู" }, "viewAll": { - "message": "View all" + "message": "ดูทั้งหมด" }, "showAll": { - "message": "Show all" + "message": "แสดงทั้งหมด" }, "viewLess": { - "message": "View less" + "message": "ดูน้อยลง" }, "viewLogin": { - "message": "View login" + "message": "ดูข้อมูลเข้าสู่ระบบ" }, "noItemsInList": { - "message": "ไม่มีรายการ" + "message": "ไม่มีรายการที่จะแสดง" }, "itemInformation": { - "message": "Item Information" + "message": "ข้อมูลรายการ" }, "username": { "message": "ชื่อผู้ใช้" @@ -616,28 +616,28 @@ "message": "รหัสผ่าน" }, "totp": { - "message": "Authenticator secret" + "message": "รหัสลับยืนยันตัวตน" }, "passphrase": { - "message": "ข้อความรหัสผ่าน" + "message": "วลีรหัสผ่าน" }, "favorite": { "message": "รายการโปรด" }, "unfavorite": { - "message": "Unfavorite" + "message": "เลิกเป็นรายการโปรด" }, "itemAddedToFavorites": { - "message": "Item added to favorites" + "message": "เพิ่มรายการในรายการโปรดแล้ว" }, "itemRemovedFromFavorites": { - "message": "Item removed from favorites" + "message": "ลบรายการออกจากรายการโปรดแล้ว" }, "notes": { "message": "โน้ต" }, "privateNote": { - "message": "Private note" + "message": "โน้ตส่วนตัว" }, "note": { "message": "โน้ต" @@ -655,13 +655,13 @@ "message": "ดูรายการ" }, "launch": { - "message": "เริ่ม" + "message": "เปิด" }, "launchWebsite": { - "message": "Launch website" + "message": "เปิดเว็บไซต์" }, "launchWebsiteName": { - "message": "Launch website $ITEMNAME$", + "message": "เปิดเว็บไซต์ $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -673,7 +673,7 @@ "message": "เว็บไซต์" }, "toggleVisibility": { - "message": "Toggle Visibility" + "message": "สลับการแสดงผล" }, "manage": { "message": "จัดการ" @@ -682,55 +682,55 @@ "message": "อื่น ๆ" }, "unlockMethods": { - "message": "Unlock options" + "message": "ตัวเลือกการปลดล็อก" }, "unlockMethodNeededToChangeTimeoutActionDesc": { - "message": "Set up an unlock method to change your vault timeout action." + "message": "ตั้งค่าวิธีการปลดล็อกเพื่อเปลี่ยนการดำเนินการเมื่อตู้นิรภัยหมดเวลา" }, "unlockMethodNeeded": { - "message": "Set up an unlock method in Settings" + "message": "ตั้งค่าวิธีการปลดล็อกในการตั้งค่า" }, "sessionTimeoutHeader": { - "message": "Session timeout" + "message": "เซสชันหมดเวลา" }, "vaultTimeoutHeader": { - "message": "Vault timeout" + "message": "ตู้นิรภัยหมดเวลา" }, "otherOptions": { - "message": "Other options" + "message": "ตัวเลือกอื่น ๆ" }, "rateExtension": { - "message": "Rate the Extension" + "message": "ให้คะแนนส่วนขยาย" }, "browserNotSupportClipboard": { - "message": "เว็บเบราว์เซอร์ของคุณไม่รองรับการคัดลอกคลิปบอร์ดอย่างง่าย คัดลอกด้วยตนเองแทน" + "message": "เว็บเบราว์เซอร์ของคุณไม่รองรับการคัดลอกไปยังคลิปบอร์ดแบบง่าย โปรดคัดลอกด้วยตนเองแทน" }, "verifyYourIdentity": { - "message": "Verify your identity" + "message": "ยืนยันตัวตนของคุณ" }, "weDontRecognizeThisDevice": { - "message": "We don't recognize this device. Enter the code sent to your email to verify your identity." + "message": "เราไม่รู้จักอุปกรณ์นี้ ป้อนรหัสที่ส่งไปยังอีเมลของคุณเพื่อยืนยันตัวตน" }, "continueLoggingIn": { - "message": "Continue logging in" + "message": "ดำเนินการเข้าสู่ระบบต่อ" }, "yourVaultIsLocked": { - "message": "ตู้เซฟของคุณถูกล็อก ยืนยันตัวตนของคุณเพื่อดำเนินการต่อ" + "message": "ตู้นิรภัยล็อกอยู่ ยืนยันตัวตนเพื่อดำเนินการต่อ" }, "yourVaultIsLockedV2": { - "message": "ห้องนิรภัยของคุณถูกล็อก" + "message": "ตู้นิรภัยล็อกอยู่" }, "yourAccountIsLocked": { - "message": "Your account is locked" + "message": "บัญชีของคุณถูกล็อก" }, "or": { - "message": "or" + "message": "หรือ" }, "unlock": { - "message": "ปลดล็อค" + "message": "ปลดล็อก" }, "loggedInAsOn": { - "message": "ล็อกอินด้วย $EMAIL$ บน $HOSTNAME$", + "message": "เข้าสู่ระบบในชื่อ $EMAIL$ บน $HOSTNAME$", "placeholders": { "email": { "content": "$1", @@ -746,7 +746,7 @@ "message": "รหัสผ่านหลักไม่ถูกต้อง" }, "invalidMasterPasswordConfirmEmailAndHost": { - "message": "Invalid master password. Confirm your email is correct and your account was created on $HOST$.", + "message": "รหัสผ่านหลักไม่ถูกต้อง โปรดยืนยันว่าอีเมลของคุณถูกต้องและบัญชีถูกสร้างขึ้นบน $HOST$", "placeholders": { "host": { "content": "$1", @@ -755,16 +755,16 @@ } }, "vaultTimeout": { - "message": "ระยะเวลาล็อกตู้เซฟ" + "message": "ระยะเวลาหมดเวลาตู้นิรภัย" }, "vaultTimeout1": { - "message": "Timeout" + "message": "หมดเวลา" }, "lockNow": { - "message": "Lock Now" + "message": "ล็อกทันที" }, "lockAll": { - "message": "Lock all" + "message": "ล็อกทั้งหมด" }, "immediately": { "message": "ทันที" @@ -800,52 +800,52 @@ "message": "4 ชั่วโมง" }, "onLocked": { - "message": "On Locked" + "message": "เมื่อล็อกระบบ" }, "onIdle": { - "message": "On system idle" + "message": "เมื่อระบบไม่ได้ใช้งาน" }, "onSleep": { - "message": "On system sleep" + "message": "เมื่อระบบสลีป" }, "onRestart": { - "message": "On Restart" + "message": "เมื่อรีสตาร์ตเบราว์เซอร์" }, "never": { - "message": "ไม่อีกเลย" + "message": "ไม่เลย" }, "security": { "message": "ความปลอดภัย" }, "confirmMasterPassword": { - "message": "Confirm master password" + "message": "ยืนยันรหัสผ่านหลัก" }, "masterPassword": { - "message": "Master password" + "message": "รหัสผ่านหลัก" }, "masterPassImportant": { - "message": "Your master password cannot be recovered if you forget it!" + "message": "รหัสผ่านหลักไม่สามารถกู้คืนได้หากคุณลืม!" }, "masterPassHintLabel": { - "message": "Master password hint" + "message": "คำใบ้รหัสผ่านหลัก" }, "errorOccurred": { - "message": "พบข้อผิดพลาด" + "message": "เกิดข้อผิดพลาด" }, "emailRequired": { - "message": "ต้องระบุอีเมล" + "message": "จำเป็นต้องระบุที่อยู่อีเมล" }, "invalidEmail": { "message": "ที่อยู่อีเมลไม่ถูกต้อง" }, "masterPasswordRequired": { - "message": "ต้องใช้รหัสผ่านหลัก" + "message": "จำเป็นต้องระบุรหัสผ่านหลัก" }, "confirmMasterPasswordRequired": { - "message": "ต้องพิมพ์รหัสผ่านหลักอีกครั้ง" + "message": "จำเป็นต้องป้อนรหัสผ่านหลักซ้ำ" }, "masterPasswordMinlength": { - "message": "Master password must be at least $VALUE$ characters long.", + "message": "รหัสผ่านหลักต้องมีความยาวอย่างน้อย $VALUE$ ตัวอักษร", "description": "The Master Password must be at least a specific number of characters long.", "placeholders": { "value": { @@ -855,37 +855,37 @@ } }, "masterPassDoesntMatch": { - "message": "การยืนยันรหัสผ่านหลักไม่ตรงกัน" + "message": "ยืนยันรหัสผ่านหลักไม่ตรงกัน" }, "newAccountCreated": { - "message": "บัญชีใหม่ของคุณถูกสร้างขึ้นแล้ว! ตอนนี้คุณสามารถเข้าสู่ระบบ" + "message": "สร้างบัญชีใหม่แล้ว! คุณสามารถเข้าสู่ระบบได้ทันที" }, "newAccountCreated2": { - "message": "Your new account has been created!" + "message": "สร้างบัญชีใหม่แล้ว!" }, "youHaveBeenLoggedIn": { - "message": "You have been logged in!" + "message": "เข้าสู่ระบบแล้ว!" }, "youSuccessfullyLoggedIn": { - "message": "You successfully logged in" + "message": "คุณเข้าสู่ระบบสำเร็จ" }, "youMayCloseThisWindow": { - "message": "You may close this window" + "message": "คุณสามารถปิดหน้าต่างนี้ได้" }, "masterPassSent": { - "message": "เราได้ส่งอีเมลพร้อมคำใบ้รหัสผ่านหลักของคุณออกไปแล้ว" + "message": "ส่งอีเมลแจ้งคำใบ้รหัสผ่านหลักให้คุณแล้ว" }, "verificationCodeRequired": { - "message": "ต้องระบุโค้ดยืนยัน" + "message": "จำเป็นต้องระบุรหัสยืนยัน" }, "webauthnCancelOrTimeout": { - "message": "The authentication was cancelled or took too long. Please try again." + "message": "การยืนยันตัวตนถูกยกเลิกหรือใช้เวลานานเกินไป โปรดลองอีกครั้ง" }, "invalidVerificationCode": { - "message": "โค้ดยืนยันไม่ถูกต้อง" + "message": "รหัสยืนยันไม่ถูกต้อง" }, "valueCopied": { - "message": "$VALUE$ copied", + "message": "คัดลอก $VALUE$ แล้ว", "description": "Value has been copied to the clipboard.", "placeholders": { "value": { @@ -895,127 +895,127 @@ } }, "autofillError": { - "message": "Unable to auto-fill the selected login on this page. Copy/paste your username and/or password instead." + "message": "ไม่สามารถป้อนข้อมูลรายการที่เลือกบนหน้านี้ได้อัตโนมัติ โปรดคัดลอกและวางข้อมูลแทน" }, "totpCaptureError": { - "message": "Unable to scan QR code from the current webpage" + "message": "ไม่สามารถสแกน QR Code จากหน้าเว็บปัจจุบัน" }, "totpCaptureSuccess": { - "message": "Authenticator key added" + "message": "เพิ่มคีย์ยืนยันตัวตนแล้ว" }, "totpCapture": { - "message": "Scan authenticator QR code from current webpage" + "message": "สแกน QR Code สำหรับแอปยืนยันตัวตนจากหน้าเว็บปัจจุบัน" }, "totpHelperTitle": { - "message": "Make 2-step verification seamless" + "message": "ทำให้การยืนยันตัวตน 2 ขั้นตอนราบรื่นยิ่งขึ้น" }, "totpHelper": { - "message": "Bitwarden can store and fill 2-step verification codes. Copy and paste the key into this field." + "message": "Bitwarden สามารถจัดเก็บและป้อนรหัสยืนยัน 2 ขั้นตอนได้ คัดลอกและวางคีย์ลงในช่องนี้" }, "totpHelperWithCapture": { - "message": "Bitwarden can store and fill 2-step verification codes. Select the camera icon to take a screenshot of this website's authenticator QR code, or copy and paste the key into this field." + "message": "Bitwarden สามารถจัดเก็บและป้อนรหัสยืนยัน 2 ขั้นตอนได้ เลือกไอคอนกล้องเพื่อถ่ายภาพหน้าจอ QR Code ของแอปยืนยันตัวตนจากเว็บไซต์นี้ หรือคัดลอกและวางคีย์ลงในช่องนี้" }, "learnMoreAboutAuthenticators": { - "message": "Learn more about authenticators" + "message": "เรียนรู้เพิ่มเติมเกี่ยวกับแอปยืนยันตัวตน" }, "copyTOTP": { - "message": "Copy Authenticator key (TOTP)" + "message": "คัดลอกคีย์ยืนยันตัวตน (TOTP)" }, "loggedOut": { - "message": "ออกจากระบบ" + "message": "ออกจากระบบแล้ว" }, "loggedOutDesc": { - "message": "You have been logged out of your account." + "message": "คุณออกจากระบบบัญชีแล้ว" }, "loginExpired": { - "message": "เซสชันของคุณหมดอายุแล้ว" + "message": "เซสชันการเข้าสู่ระบบหมดอายุ" }, "logIn": { - "message": "Log in" + "message": "เข้าสู่ระบบ" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "เข้าสู่ระบบ Bitwarden" }, "enterTheCodeSentToYourEmail": { - "message": "Enter the code sent to your email" + "message": "ป้อนรหัสที่ส่งไปยังอีเมลของคุณ" }, "enterTheCodeFromYourAuthenticatorApp": { - "message": "Enter the code from your authenticator app" + "message": "ป้อนรหัสจากแอปยืนยันตัวตน" }, "pressYourYubiKeyToAuthenticate": { - "message": "Press your YubiKey to authenticate" + "message": "กด YubiKey ของคุณเพื่อยืนยันตัวตน" }, "duoTwoFactorRequiredPageSubtitle": { - "message": "Duo two-step login is required for your account. Follow the steps below to finish logging in." + "message": "บัญชีของคุณจำเป็นต้องเข้าสู่ระบบ 2 ขั้นตอนผ่าน Duo ทำตามขั้นตอนด้านล่างเพื่อเสร็จสิ้นการเข้าสู่ระบบ" }, "followTheStepsBelowToFinishLoggingIn": { - "message": "Follow the steps below to finish logging in." + "message": "ทำตามขั้นตอนด้านล่างเพื่อเสร็จสิ้นการเข้าสู่ระบบ" }, "followTheStepsBelowToFinishLoggingInWithSecurityKey": { - "message": "Follow the steps below to finish logging in with your security key." + "message": "ทำตามขั้นตอนด้านล่างเพื่อเสร็จสิ้นการเข้าสู่ระบบด้วยคีย์ความปลอดภัย" }, "restartRegistration": { - "message": "Restart registration" + "message": "เริ่มการลงทะเบียนใหม่" }, "expiredLink": { - "message": "Expired link" + "message": "ลิงก์หมดอายุ" }, "pleaseRestartRegistrationOrTryLoggingIn": { - "message": "Please restart registration or try logging in." + "message": "โปรดเริ่มการลงทะเบียนใหม่หรือลองเข้าสู่ระบบ" }, "youMayAlreadyHaveAnAccount": { - "message": "You may already have an account" + "message": "คุณอาจมีบัญชีอยู่แล้ว" }, "logOutConfirmation": { - "message": "คุณต้องการล็อกเอาต์ใช่หรือไม่?" + "message": "ยืนยันที่จะออกจากระบบหรือไม่" }, "yes": { "message": "ใช่" }, "no": { - "message": "ไม่ใช่" + "message": "ไม่" }, "location": { - "message": "Location" + "message": "ตำแหน่งที่ตั้ง" }, "unexpectedError": { - "message": "An unexpected error has occured." + "message": "เกิดข้อผิดพลาดที่ไม่คาดคิด" }, "nameRequired": { - "message": "ต้องระบุชื่อ" + "message": "จำเป็นต้องระบุชื่อ" }, "addedFolder": { "message": "เพิ่มโฟลเดอร์แล้ว" }, "twoStepLoginConfirmation": { - "message": "Two-step login makes your account more secure by requiring you to enter a security code from an authenticator app whenever you log in. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "การเข้าสู่ระบบ 2 ขั้นตอนช่วยให้บัญชีปลอดภัยยิ่งขึ้น โดยกำหนดให้คุณยืนยันการเข้าสู่ระบบด้วยอุปกรณ์อื่น เช่น คีย์ความปลอดภัย แอปยืนยันตัวตน SMS โทรศัพท์ หรืออีเมล สามารถตั้งค่าได้ที่เว็บตู้นิรภัย bitwarden.com ต้องการไปที่เว็บไซต์ตอนนี้หรือไม่" }, "twoStepLoginConfirmationContent": { - "message": "Make your account more secure by setting up two-step login in the Bitwarden web app." + "message": "ทำให้บัญชีปลอดภัยยิ่งขึ้นด้วยการตั้งค่าการเข้าสู่ระบบ 2 ขั้นตอนในเว็บแอป Bitwarden" }, "twoStepLoginConfirmationTitle": { - "message": "Continue to web app?" + "message": "ไปที่เว็บแอปหรือไม่" }, "editedFolder": { - "message": "Edited Folder" + "message": "บันทึกโฟลเดอร์แล้ว" }, "deleteFolderConfirmation": { - "message": "คุณแน่ใจหรือไม่ว่าต้องการลบโฟลเดอร์นี้" + "message": "ยืนยันที่จะลบโฟลเดอร์นี้หรือไม่" }, "deletedFolder": { "message": "ลบโฟลเดอร์แล้ว" }, "gettingStartedTutorial": { - "message": "Getting Started Tutorial" + "message": "บทแนะนำการเริ่มต้นใช้งาน" }, "gettingStartedTutorialVideo": { - "message": "ดูบทช่วยสอนการเริ่มต้นของเราเพื่อเรียนรู้วิธีใช้ประโยชน์สูงสุดจากส่วนขยายเบราว์เซอร์" + "message": "ดูวิดีโอแนะนำการเริ่มต้นใช้งานเพื่อเรียนรู้วิธีใช้งานส่วนขยายเบราว์เซอร์ให้คุ้มค่าที่สุด" }, "syncingComplete": { - "message": "การซิงก์เสร็จสมบูรณ์" + "message": "ซิงค์เสร็จสมบูรณ์" }, "syncingFailed": { - "message": "การซิงก์ล้มเหลว" + "message": "การซิงค์ล้มเหลว" }, "passwordCopied": { "message": "คัดลอกรหัสผ่านแล้ว" @@ -1034,23 +1034,23 @@ } }, "newUri": { - "message": "เพิ่ม URI ใหม่" + "message": "URI ใหม่" }, "addDomain": { - "message": "Add domain", + "message": "เพิ่มโดเมน", "description": "'Domain' here refers to an internet domain name (e.g. 'bitwarden.com') and the message in whole described the act of putting a domain value into the context." }, "addedItem": { "message": "เพิ่มรายการแล้ว" }, "editedItem": { - "message": "แก้ไขรายการแล้ว" + "message": "บันทึกรายการแล้ว" }, "savedWebsite": { - "message": "Saved website" + "message": "เว็บไซต์ที่บันทึก" }, "savedWebsites": { - "message": "Saved websites ( $COUNT$ )", + "message": "เว็บไซต์ที่บันทึก ( $COUNT$ )", "placeholders": { "count": { "content": "$1", @@ -1059,88 +1059,88 @@ } }, "deleteItemConfirmation": { - "message": "คุณต้องการส่งไปยังถังขยะใช่หรือไม่?" + "message": "ยืนยันที่จะย้ายไปถังขยะหรือไม่" }, "deletedItem": { - "message": "ส่งรายการไปยังถังขยะแล้ว" + "message": "ย้ายรายการไปถังขยะแล้ว" }, "overwritePassword": { - "message": "Overwrite Password" + "message": "เขียนทับรหัสผ่าน" }, "overwritePasswordConfirmation": { - "message": "คุณต้องการเขียนทับรหัสผ่านปัจจุบันใช่หรือไม่?" + "message": "ยืนยันที่จะเขียนทับรหัสผ่านปัจจุบันหรือไม่" }, "overwriteUsername": { "message": "เขียนทับชื่อผู้ใช้" }, "overwriteUsernameConfirmation": { - "message": "คุณแน่ใจหรือไม่ว่าต้องการเขียนทับชื่อผู้ใช้ปัจจุบัน" + "message": "ยืนยันที่จะเขียนทับชื่อผู้ใช้ปัจจุบันหรือไม่" }, "searchFolder": { - "message": "ค้นหาในโพลเดอร์" + "message": "ค้นหาโฟลเดอร์" }, "searchCollection": { - "message": "คอลเลกชันการค้นหา" + "message": "ค้นหาคอลเลกชัน" }, "searchType": { "message": "ประเภทการค้นหา" }, "noneFolder": { - "message": "No Folder", + "message": "ไม่มีโฟลเดอร์", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { - "message": "ถามเพื่อให้เพิ่มการเข้าสู่ระบบ" + "message": "ถามเพื่อเพิ่มข้อมูลเข้าสู่ระบบ" }, "vaultSaveOptionsTitle": { - "message": "Save to vault options" + "message": "ตัวเลือกการบันทึกลงตู้นิรภัย" }, "addLoginNotificationDesc": { - "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + "message": "ถามเพื่อเพิ่มรายการหากไม่พบข้อมูลในตู้นิรภัย" }, "addLoginNotificationDescAlt": { - "message": "หากไม่พบรายการในห้องนิรภัยของคุณ ระบบจะถามเพื่อเพิ่มรายการ มีผลกับทุกบัญชีที่ลงชื่อเข้าใช้" + "message": "ถามเพื่อเพิ่มรายการหากไม่พบข้อมูลในตู้นิรภัย (สำหรับทุกบัญชีที่เข้าสู่ระบบ)" }, "showCardsInVaultViewV2": { - "message": "Always show cards as Autofill suggestions on Vault view" + "message": "แสดงบัตรเป็นคำแนะนำการป้อนอัตโนมัติในมุมมองตู้นิรภัยเสมอ" }, "showCardsCurrentTab": { - "message": "แสดงการ์ดบนหน้าแท็บ" + "message": "แสดงบัตรในหน้าแท็บ" }, "showCardsCurrentTabDesc": { - "message": "บัตรรายการในหน้าแท็บเพื่อให้ป้อนอัตโนมัติได้ง่าย" + "message": "แสดงรายการบัตรในหน้าแท็บเพื่อให้ป้อนอัตโนมัติได้ง่าย" }, "showIdentitiesInVaultViewV2": { - "message": "Always show identities as Autofill suggestions on Vault view" + "message": "แสดงข้อมูลระบุตัวตนเป็นคำแนะนำการป้อนอัตโนมัติในมุมมองตู้นิรภัยเสมอ" }, "showIdentitiesCurrentTab": { - "message": "แสดงตัวตนบนหน้าแท็บ" + "message": "แสดงข้อมูลระบุตัวตนในหน้าแท็บ" }, "showIdentitiesCurrentTabDesc": { - "message": "แสดงรายการข้อมูลประจำตัวในหน้าแท็บเพื่อให้ป้อนอัตโนมัติได้ง่าย" + "message": "แสดงรายการข้อมูลระบุตัวตนในหน้าแท็บเพื่อให้ป้อนอัตโนมัติได้ง่าย" }, "clickToAutofillOnVault": { - "message": "Click items to autofill on Vault view" + "message": "คลิกรายการเพื่อป้อนข้อมูลอัตโนมัติในมุมมองตู้นิรภัย" }, "clickToAutofill": { - "message": "Click items in autofill suggestion to fill" + "message": "คลิกรายการในคำแนะนำเพื่อป้อนข้อมูล" }, "clearClipboard": { "message": "ล้างคลิปบอร์ด", "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "clearClipboardDesc": { - "message": "ล้างค่าที่คัดลอกโดยอัตโนมัติจากคลิปบอร์ดของคุณ", + "message": "ล้างค่าที่คัดลอกออกจากคลิปบอร์ดโดยอัตโนมัติ", "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { - "message": "Should bitwarden remember this password for you?" + "message": "ต้องการให้ Bitwarden จำรหัสผ่านนี้หรือไม่" }, "notificationAddSave": { - "message": "Yes, Save Now" + "message": "บันทึก" }, "notificationViewAria": { - "message": "View $ITEMNAME$, opens in new window", + "message": "ดู $ITEMNAME$ เปิดในหน้าต่างใหม่", "placeholders": { "itemName": { "content": "$1" @@ -1149,18 +1149,18 @@ "description": "Aria label for the view button in notification bar confirmation message" }, "notificationNewItemAria": { - "message": "New Item, opens in new window", + "message": "รายการใหม่ เปิดในหน้าต่างใหม่", "description": "Aria label for the new item button in notification bar confirmation message when error is prompted" }, "notificationEditTooltip": { - "message": "Edit before saving", + "message": "แก้ไขก่อนบันทึก", "description": "Tooltip and Aria label for edit button on cipher item" }, "newNotification": { - "message": "New notification" + "message": "การแจ้งเตือนใหม่" }, "labelWithNotification": { - "message": "$LABEL$: New notification", + "message": "$LABEL$: การแจ้งเตือนใหม่", "description": "Label for the notification with a new login suggestion.", "placeholders": { "label": { @@ -1170,15 +1170,15 @@ } }, "notificationLoginSaveConfirmation": { - "message": "saved to Bitwarden.", + "message": "บันทึกลง Bitwarden แล้ว", "description": "Shown to user after item is saved." }, "notificationLoginUpdatedConfirmation": { - "message": "updated in Bitwarden.", + "message": "อัปเดตใน Bitwarden แล้ว", "description": "Shown to user after item is updated." }, "selectItemAriaLabel": { - "message": "Select $ITEMTYPE$, $ITEMNAME$", + "message": "เลือก $ITEMTYPE$, $ITEMNAME$", "description": "Used by screen readers. $1 is the item type (like vault or folder), $2 is the selected item name.", "placeholders": { "itemType": { @@ -1190,35 +1190,35 @@ } }, "saveAsNewLoginAction": { - "message": "Save as new login", + "message": "บันทึกเป็นข้อมูลเข้าสู่ระบบใหม่", "description": "Button text for saving login details as a new entry." }, "updateLoginAction": { - "message": "Update login", + "message": "อัปเดตข้อมูลเข้าสู่ระบบ", "description": "Button text for updating an existing login entry." }, "unlockToSave": { - "message": "Unlock to save this login", + "message": "ปลดล็อกเพื่อบันทึกข้อมูลเข้าสู่ระบบนี้", "description": "User prompt to take action in order to save the login they just entered." }, "saveLogin": { - "message": "Save login", + "message": "บันทึกข้อมูลเข้าสู่ระบบ", "description": "Prompt asking the user if they want to save their login details." }, "updateLogin": { - "message": "Update existing login", + "message": "อัปเดตข้อมูลเข้าสู่ระบบเดิม", "description": "Prompt asking the user if they want to update an existing login entry." }, "loginSaveSuccess": { - "message": "Login saved", + "message": "บันทึกข้อมูลเข้าสู่ระบบแล้ว", "description": "Message displayed when login details are successfully saved." }, "loginUpdateSuccess": { - "message": "Login updated", + "message": "อัปเดตข้อมูลเข้าสู่ระบบแล้ว", "description": "Message displayed when login details are successfully updated." }, "loginUpdateTaskSuccess": { - "message": "Great job! You took the steps to make you and $ORGANIZATION$ more secure.", + "message": "เยี่ยมมาก! คุณได้ดำเนินการเพื่อทำให้คุณและ $ORGANIZATION$ ปลอดภัยยิ่งขึ้น", "placeholders": { "organization": { "content": "$1" @@ -1227,7 +1227,7 @@ "description": "Shown to user after login is updated." }, "loginUpdateTaskSuccessAdditional": { - "message": "Thank you for making $ORGANIZATION$ more secure. You have $TASK_COUNT$ more passwords to update.", + "message": "ขอบคุณที่ช่วยให้ $ORGANIZATION$ ปลอดภัยยิ่งขึ้น คุณยังมีรหัสผ่านที่ต้องอัปเดตอีก $TASK_COUNT$ รายการ", "placeholders": { "organization": { "content": "$1" @@ -1239,77 +1239,77 @@ "description": "Shown to user after login is updated." }, "nextSecurityTaskAction": { - "message": "Change next password", + "message": "เปลี่ยนรหัสผ่านถัดไป", "description": "Message prompting user to undertake completion of another security task." }, "saveFailure": { - "message": "Error saving", + "message": "เกิดข้อผิดพลาดในการบันทึก", "description": "Error message shown when the system fails to save login details." }, "saveFailureDetails": { - "message": "Oh no! We couldn't save this. Try entering the details manually.", + "message": "แย่แล้ว! เราไม่สามารถบันทึกรายการนี้ได้ ลองป้อนรายละเอียดด้วยตนเอง", "description": "Detailed error message shown when saving login details fails." }, "changePasswordWarning": { - "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + "message": "หลังจากเปลี่ยนรหัสผ่าน คุณจะต้องเข้าสู่ระบบด้วยรหัสผ่านใหม่ เซสชันที่ใช้งานอยู่บนอุปกรณ์อื่นจะถูกออกจากระบบภายใน 1 ชั่วโมง" }, "accountRecoveryUpdateMasterPasswordSubtitle": { - "message": "Change your master password to complete account recovery." + "message": "เปลี่ยนรหัสผ่านหลักเพื่อเสร็จสิ้นการกู้คืนบัญชี" }, "enableChangedPasswordNotification": { - "message": "ขอให้ปรับปรุงการเข้าสู่ระบบที่มีอยู่" + "message": "ถามเพื่ออัปเดตข้อมูลเข้าสู่ระบบที่มีอยู่" }, "changedPasswordNotificationDesc": { - "message": "Ask to update a login's password when a change is detected on a website." + "message": "ถามเพื่ออัปเดตรหัสผ่านของข้อมูลเข้าสู่ระบบเมื่อตรวจพบการเปลี่ยนแปลงบนเว็บไซต์" }, "changedPasswordNotificationDescAlt": { - "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + "message": "ถามเพื่ออัปเดตรหัสผ่านของข้อมูลเข้าสู่ระบบเมื่อตรวจพบการเปลี่ยนแปลงบนเว็บไซต์ (สำหรับทุกบัญชีที่เข้าสู่ระบบ)" }, "enableUsePasskeys": { - "message": "Ask to save and use passkeys" + "message": "ถามเพื่อบันทึกและใช้พาสคีย์" }, "usePasskeysDesc": { - "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + "message": "ถามเพื่อบันทึกพาสคีย์ใหม่หรือเข้าสู่ระบบด้วยพาสคีย์ที่เก็บในตู้นิรภัย (สำหรับทุกบัญชีที่เข้าสู่ระบบ)" }, "notificationChangeDesc": { - "message": "คุณต้องการอัปเดตรหัสผ่านนี้ใน Bitwarden หรือไม่?" + "message": "คุณต้องการอัปเดตรหัสผ่านนี้ใน Bitwarden หรือไม่" }, "notificationChangeSave": { - "message": "Yes, Update Now" + "message": "อัปเดต" }, "notificationUnlockDesc": { - "message": "Unlock your Bitwarden vault to complete the autofill request." + "message": "ปลดล็อกตู้นิรภัย Bitwarden เพื่อดำเนินการตามคำขอกรอกข้อมูลอัตโนมัติ" }, "notificationUnlock": { - "message": "Unlock" + "message": "ปลดล็อก" }, "additionalOptions": { - "message": "Additional options" + "message": "ตัวเลือกเพิ่มเติม" }, "enableContextMenuItem": { "message": "แสดงตัวเลือกเมนูบริบท" }, "contextMenuItemDesc": { - "message": "ใช้การคลิกสำรองเพื่อเข้าถึงการสร้างรหัสผ่านและการเข้าสู่ระบบที่ตรงกันสำหรับเว็บไซต์ " + "message": "ใช้การคลิกขวาเพื่อเข้าถึงการสร้างรหัสผ่านและข้อมูลเข้าสู่ระบบที่ตรงกันสำหรับเว็บไซต์" }, "contextMenuItemDescAlt": { - "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + "message": "ใช้การคลิกขวาเพื่อเข้าถึงการสร้างรหัสผ่านและข้อมูลเข้าสู่ระบบที่ตรงกันสำหรับเว็บไซต์ (สำหรับทุกบัญชีที่เข้าสู่ระบบ)" }, "defaultUriMatchDetection": { - "message": "การตรวจจับการจับคู่ URI เริ่มต้น", + "message": "การตรวจสอบการจับคู่ URI เริ่มต้น", "description": "Default URI match detection for autofill." }, "defaultUriMatchDetectionDesc": { - "message": "เลือกวิธีเริ่มต้นในการจัดการการตรวจหาการจับคู่ URI สำหรับการเข้าสู่ระบบเมื่อดำเนินการต่างๆ เช่น การป้อนอัตโนมัติ" + "message": "เลือกวิธีเริ่มต้นในการจัดการการจับคู่ URI สำหรับข้อมูลเข้าสู่ระบบเมื่อดำเนินการ เช่น การป้อนอัตโนมัติ" }, "theme": { "message": "ธีม" }, "themeDesc": { - "message": "Change the application's color theme." + "message": "เปลี่ยนธีมสีของแอปพลิเคชัน" }, "themeDescAlt": { - "message": "Change the application's color theme. Applies to all logged in accounts." + "message": "เปลี่ยนธีมสีของแอปพลิเคชัน (สำหรับทุกบัญชีที่เข้าสู่ระบบ)" }, "dark": { "message": "มืด", @@ -1320,75 +1320,85 @@ "description": "Light color" }, "exportFrom": { - "message": "Export from" + "message": "ส่งออกจาก" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { - "message": "File Format" + "message": "รูปแบบไฟล์" }, "fileEncryptedExportWarningDesc": { - "message": "This file export will be password protected and require the file password to decrypt." + "message": "ไฟล์ส่งออกนี้จะได้รับการป้องกันด้วยรหัสผ่าน และต้องใช้รหัสผ่านไฟล์เพื่อถอดรหัส" }, "filePassword": { - "message": "File password" + "message": "รหัสผ่านไฟล์" }, "exportPasswordDescription": { - "message": "This password will be used to export and import this file" + "message": "รหัสผ่านนี้จะถูกใช้เพื่อส่งออกและนำเข้าไฟล์นี้" }, "accountRestrictedOptionDescription": { - "message": "Use your account encryption key, derived from your account's username and Master Password, to encrypt the export and restrict import to only the current Bitwarden account." + "message": "ใช้กุญแจเข้ารหัสบัญชีของคุณ ซึ่งได้มาจากชื่อผู้ใช้และรหัสผ่านหลัก เพื่อเข้ารหัสไฟล์ส่งออก และจำกัดการนำเข้าเฉพาะบัญชี Bitwarden ปัจจุบันเท่านั้น" }, "passwordProtectedOptionDescription": { - "message": "Set a file password to encrypt the export and import it to any Bitwarden account using the password for decryption." + "message": "ตั้งรหัสผ่านไฟล์เพื่อเข้ารหัสไฟล์ส่งออก และสามารถนำเข้าสู่บัญชี Bitwarden ใดก็ได้โดยใช้รหัสผ่านเพื่อถอดรหัส" }, "exportTypeHeading": { - "message": "Export type" + "message": "ประเภทการส่งออก" }, "accountRestricted": { - "message": "Account restricted" + "message": "จำกัดเฉพาะบัญชี" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“File password” and “Confirm file password“ do not match." + "message": "“รหัสผ่านไฟล์” และ “ยืนยันรหัสผ่านไฟล์” ไม่ตรงกัน" }, "warning": { "message": "คำเตือน", "description": "WARNING (should stay in capitalized letters if the language permits)" }, "warningCapitalized": { - "message": "Warning", + "message": "คำเตือน", "description": "Warning (should maintain locale-relevant capitalization)" }, "confirmVaultExport": { "message": "ยืนยันการส่งออกตู้นิรภัย" }, "exportWarningDesc": { - "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + "message": "การส่งออกนี้มีข้อมูลตู้นิรภัยในรูปแบบที่ไม่ได้เข้ารหัส คุณไม่ควรจัดเก็บหรือส่งไฟล์ที่ส่งออกผ่านช่องทางที่ไม่ปลอดภัย (เช่น อีเมล) ลบไฟล์ทันทีหลังจากใช้งานเสร็จ" }, "encExportKeyWarningDesc": { - "message": "การส่งออกนี้เข้ารหัสข้อมูลของคุณโดยใช้คีย์เข้ารหัสของบัญชีของคุณ หากคุณเคยหมุนเวียนคีย์เข้ารหัสของบัญชี คุณควรส่งออกอีกครั้ง เนื่องจากคุณจะไม่สามารถถอดรหัสไฟล์ส่งออกนี้ได้" + "message": "การส่งออกนี้เข้ารหัสข้อมูลของคุณโดยใช้กุญแจเข้ารหัสบัญชีของคุณ หากคุณหมุนเวียนกุญแจเข้ารหัสบัญชี คุณควรส่งออกใหม่อีกครั้ง เนื่องจากคุณจะไม่สามารถถอดรหัสไฟล์ส่งออกนี้ได้" }, "encExportAccountWarningDesc": { - "message": "คีย์การเข้ารหัสบัญชีจะไม่ซ้ำกันสำหรับบัญชีผู้ใช้ Bitwarden แต่ละบัญชี ดังนั้นคุณจึงไม่สามารถนำเข้าการส่งออกที่เข้ารหัสไปยังบัญชีอื่นได้" + "message": "กุญแจเข้ารหัสบัญชีเป็นกุญแจเฉพาะสำหรับผู้ใช้ Bitwarden แต่ละบัญชี ดังนั้นคุณไม่สามารถนำเข้าไฟล์ส่งออกที่เข้ารหัสไปยังบัญชีอื่นได้" }, "exportMasterPassword": { - "message": "ป้อนรหัสผ่านหลักของคุณเพื่อส่งออกข้อมูลตู้นิรภัยของคุณ" + "message": "ป้อนรหัสผ่านหลักเพื่อส่งออกข้อมูลตู้นิรภัย" }, "shared": { "message": "แชร์แล้ว" }, "bitwardenForBusinessPageDesc": { - "message": "Bitwarden for Business allows you to share your vault items with others by using an organization. Learn more on the bitwarden.com website." + "message": "Bitwarden สำหรับธุรกิจช่วยให้คุณแชร์รายการในตู้นิรภัยกับผู้อื่นโดยใช้องค์กร เรียนรู้เพิ่มเติมที่เว็บไซต์ bitwarden.com" }, "moveToOrganization": { - "message": "ย้ายไปยังแบบองค์กร" + "message": "ย้ายไปที่องค์กร" }, "movedItemToOrg": { - "message": "ย้าย $ITEMNAME$ ไปยัง $ORGNAME$ แล้ว", + "message": "ย้าย $ITEMNAME$ ไปที่ $ORGNAME$ แล้ว", "placeholders": { "itemname": { "content": "$1", @@ -1401,40 +1411,40 @@ } }, "moveToOrgDesc": { - "message": "เลือกองค์กรที่คุณต้องการย้ายรายการนี้ไป การย้ายไปยังองค์กรจะโอนความเป็นเจ้าของรายการไปยังองค์กรนั้น คุณจะไม่ได้เป็นเจ้าของโดยตรงของรายการนี้อีกต่อไปเมื่อมีการย้ายแล้ว" + "message": "เลือกองค์กรที่คุณต้องการย้ายรายการนี้ไป การย้ายไปที่องค์กรจะโอนกรรมสิทธิ์ของรายการนั้นไปยังองค์กร คุณจะไม่เป็นเจ้าของโดยตรงของรายการนี้อีกต่อไปหลังจากย้ายแล้ว" }, "learnMore": { "message": "เรียนรู้เพิ่มเติม" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "เกิดข้อผิดพลาดในการอัปเดตการตั้งค่าการเข้ารหัส" }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "อัปเดตการตั้งค่าการเข้ารหัส" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "การตั้งค่าการเข้ารหัสใหม่ที่แนะนำจะช่วยปรับปรุงความปลอดภัยของบัญชี ป้อนรหัสผ่านหลักเพื่ออัปเดตทันที" }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "ยืนยันตัวตนเพื่อดำเนินการต่อ" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "ป้อนรหัสผ่านหลัก" }, "updateSettings": { - "message": "Update settings" + "message": "อัปเดตการตั้งค่า" }, "later": { - "message": "Later" + "message": "ไว้ทีหลัง" }, "authenticatorKeyTotp": { - "message": "Authenticator Key (TOTP)" + "message": "คีย์ยืนยันตัวตน (TOTP)" }, "verificationCodeTotp": { - "message": "Verification Code (TOTP)" + "message": "รหัสยืนยัน (TOTP)" }, "copyVerificationCode": { - "message": "Copy Verification Code" + "message": "คัดลอกรหัสยืนยัน" }, "attachments": { "message": "ไฟล์แนบ" @@ -1443,7 +1453,7 @@ "message": "ลบไฟล์แนบ" }, "deleteAttachmentConfirmation": { - "message": "คุณต้องการลบไฟล์แนบนี้ใช่หรือไม่?" + "message": "ยืนยันที่จะลบไฟล์แนบนี้หรือไม่" }, "deletedAttachment": { "message": "ลบไฟล์แนบแล้ว" @@ -1458,58 +1468,58 @@ "message": "บันทึกไฟล์แนบแล้ว" }, "fixEncryption": { - "message": "Fix encryption" + "message": "ซ่อมแซมการเข้ารหัส" }, "fixEncryptionTooltip": { - "message": "This file is using an outdated encryption method." + "message": "ไฟล์นี้ใช้วิธีการเข้ารหัสที่ล้าสมัย" }, "attachmentUpdated": { - "message": "Attachment updated" + "message": "อัปเดตไฟล์แนบแล้ว" }, "file": { "message": "ไฟล์" }, "fileToShare": { - "message": "File to share" + "message": "ไฟล์ที่จะแชร์" }, "selectFile": { "message": "เลือกไฟล์" }, "itemsTransferred": { - "message": "Items transferred" + "message": "รายการที่โอนย้าย" }, "maxFileSize": { - "message": "ขนาดไฟล์สูงสุด คือ 500 MB" + "message": "ขนาดไฟล์สูงสุดคือ 500 MB" }, "featureUnavailable": { - "message": "Feature Unavailable" + "message": "ฟีเจอร์ไม่พร้อมใช้งาน" }, "legacyEncryptionUnsupported": { - "message": "Legacy encryption is no longer supported. Please contact support to recover your account." + "message": "ไม่รองรับการเข้ารหัสแบบเก่าอีกต่อไป โปรดติดต่อฝ่ายสนับสนุนเพื่อกู้คืนบัญชีของคุณ" }, "premiumMembership": { - "message": "Premium Membership" + "message": "สมาชิกพรีเมียม" }, "premiumManage": { - "message": "Manage Membership" + "message": "จัดการการเป็นสมาชิก" }, "premiumManageAlert": { - "message": "คุณสามารถจัดการการเป็นสมาชิกของคุณได้ที่ bitwarden.com web vault คุณต้องการเข้าชมเว็บไซต์ตอนนี้หรือไม่?" + "message": "คุณสามารถจัดการการเป็นสมาชิกได้ที่เว็บตู้นิรภัย bitwarden.com ต้องการไปที่เว็บไซต์ตอนนี้หรือไม่" }, "premiumRefresh": { - "message": "Refresh Membership" + "message": "รีเฟรชสถานะสมาชิก" }, "premiumNotCurrentMember": { - "message": "คุณยังไม่ได้เป็นสมาชิกพรีเมียม" + "message": "ปัจจุบันคุณไม่ได้เป็นสมาชิกพรีเมียม" }, "premiumSignUpAndGet": { - "message": "สมัครสมาชิกพรีเมี่ยมและรับ:" + "message": "สมัครสมาชิกพรีเมียมแล้วรับ:" }, "ppremiumSignUpStorage": { - "message": "1 GB of encrypted file storage." + "message": "พื้นที่จัดเก็บไฟล์แนบเข้ารหัสขนาด 1 GB" }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "พื้นที่จัดเก็บไฟล์แนบเข้ารหัสขนาด $SIZE$", "placeholders": { "size": { "content": "$1", @@ -1518,40 +1528,40 @@ } }, "premiumSignUpEmergency": { - "message": "Emergency access." + "message": "การเข้าถึงฉุกเฉิน" }, "premiumSignUpTwoStepOptions": { - "message": "Proprietary two-step login options such as YubiKey and Duo." + "message": "ตัวเลือกการเข้าสู่ระบบ 2 ขั้นตอนแบบพิเศษ เช่น YubiKey และ Duo" }, "ppremiumSignUpReports": { - "message": "สุขอนามัยของรหัสผ่าน ความสมบูรณ์ของบัญชี และรายงานการละเมิดข้อมูลเพื่อให้ตู้นิรภัยของคุณปลอดภัย" + "message": "รายงานความปลอดภัยของรหัสผ่าน สุขภาพบัญชี และข้อมูลรั่วไหล เพื่อรักษาตู้นิรภัยให้ปลอดภัย" }, "ppremiumSignUpTotp": { - "message": "ตัวสร้างรหัสยืนยัน TOTP (2FA) สำหรับการเข้าสู่ระบบในตู้นิรภัยของคุณ" + "message": "ตัวสร้างรหัสยืนยัน TOTP (2FA) สำหรับข้อมูลเข้าสู่ระบบในตู้นิรภัย" }, "ppremiumSignUpSupport": { - "message": "Priority customer support." + "message": "บริการลูกค้าสัมพันธ์ระดับพรีเมียม" }, "ppremiumSignUpFuture": { - "message": "All future Premium features. More coming soon!" + "message": "ฟีเจอร์พรีเมียมในอนาคตทั้งหมด และอื่น ๆ ที่กำลังจะมาเร็ว ๆ นี้!" }, "premiumPurchase": { - "message": "Purchase Premium" + "message": "ซื้อพรีเมียม" }, "premiumPurchaseAlertV2": { - "message": "You can purchase Premium from your account settings on the Bitwarden web app." + "message": "คุณสามารถซื้อพรีเมียมได้จากการตั้งค่าบัญชีในเว็บแอป Bitwarden" }, "premiumCurrentMember": { - "message": "You are a Premium member!" + "message": "คุณเป็นสมาชิกพรีเมียมแล้ว!" }, "premiumCurrentMemberThanks": { - "message": "Thank you for supporting bitwarden." + "message": "ขอบคุณที่สนับสนุน Bitwarden" }, "premiumFeatures": { - "message": "Upgrade to Premium and receive:" + "message": "อัปเกรดเป็นพรีเมียมเพื่อรับ:" }, "premiumPrice": { - "message": "All for just $PRICE$ /year!", + "message": "ทั้งหมดนี้เพียง $PRICE$ /ปี!", "placeholders": { "price": { "content": "$1", @@ -1560,7 +1570,7 @@ } }, "premiumPriceV2": { - "message": "All for just $PRICE$ per year!", + "message": "ทั้งหมดนี้เพียง $PRICE$ ต่อปี!", "placeholders": { "price": { "content": "$1", @@ -1569,25 +1579,25 @@ } }, "refreshComplete": { - "message": "Refresh complete" + "message": "รีเฟรชเสร็จสมบูรณ์" }, "enableAutoTotpCopy": { - "message": "Copy TOTP automatically" + "message": "คัดลอก TOTP อัตโนมัติ" }, "disableAutoTotpCopyDesc": { - "message": "If a login has an authenticator key, copy the TOTP verification code to your clip-board when you autofill the login." + "message": "หากข้อมูลเข้าสู่ระบบมีคีย์ยืนยันตัวตน ให้คัดลอกรหัสยืนยัน TOTP ไปยังคลิปบอร์ดเมื่อคุณป้อนข้อมูลเข้าสู่ระบบอัตโนมัติ" }, "enableAutoBiometricsPrompt": { - "message": "Ask for biometrics on launch" + "message": "ถามหาไบโอเมตริกเมื่อเปิดแอป" }, "authenticationTimeout": { - "message": "Authentication timeout" + "message": "การยืนยันตัวตนหมดเวลา" }, "authenticationSessionTimedOut": { - "message": "The authentication session timed out. Please restart the login process." + "message": "เซสชันการยืนยันตัวตนหมดเวลา โปรดเริ่มกระบวนการเข้าสู่ระบบใหม่" }, "verificationCodeEmailSent": { - "message": "ส่งโค้ดยืนยันไปยังอีเมล $EMAIL$ แล้ว", + "message": "ส่งอีเมลยืนยันไปที่ $EMAIL$ แล้ว", "placeholders": { "email": { "content": "$1", @@ -1596,148 +1606,148 @@ } }, "dontAskAgainOnThisDeviceFor30Days": { - "message": "Don't ask again on this device for 30 days" + "message": "ไม่ต้องถามอีกบนอุปกรณ์นี้เป็นเวลา 30 วัน" }, "selectAnotherMethod": { - "message": "Select another method", + "message": "เลือกวิธีอื่น", "description": "Select another two-step login method" }, "useYourRecoveryCode": { - "message": "Use your recovery code" + "message": "ใช้รหัสกู้คืนของคุณ" }, "insertU2f": { - "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + "message": "เสียบคีย์ความปลอดภัยเข้ากับพอร์ต USB ของคอมพิวเตอร์ หากมีปุ่มให้แตะที่ปุ่ม" }, "openInNewTab": { - "message": "Open in new tab" + "message": "เปิดในแท็บใหม่" }, "webAuthnAuthenticate": { - "message": "Authenticate WebAuthn" + "message": "ยืนยันตัวตน WebAuthn" }, "readSecurityKey": { - "message": "Read security key" + "message": "อ่านคีย์ความปลอดภัย" }, "readingPasskeyLoading": { - "message": "Reading passkey..." + "message": "กำลังอ่านพาสคีย์..." }, "passkeyAuthenticationFailed": { - "message": "Passkey authentication failed" + "message": "การยืนยันตัวตนด้วยพาสคีย์ล้มเหลว" }, "useADifferentLogInMethod": { - "message": "Use a different log in method" + "message": "ใช้วิธีเข้าสู่ระบบอื่น" }, "awaitingSecurityKeyInteraction": { - "message": "Awaiting security key interaction..." + "message": "กำลังรอการตอบสนองจากคีย์ความปลอดภัย..." }, "loginUnavailable": { - "message": "Login Unavailable" + "message": "ไม่สามารถเข้าสู่ระบบได้" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + "message": "บัญชีนี้ตั้งค่าการเข้าสู่ระบบ 2 ขั้นตอนไว้ แต่เว็บเบราว์เซอร์นี้ไม่รองรับผู้ให้บริการ 2 ขั้นตอนใด ๆ ที่กำหนดค่าไว้" }, "noTwoStepProviders2": { - "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + "message": "โปรดใช้เว็บเบราว์เซอร์ที่รองรับ (เช่น Chrome) และ/หรือเพิ่มผู้ให้บริการอื่นที่รองรับบนเว็บเบราว์เซอร์ได้ดีกว่า (เช่น แอปยืนยันตัวตน)" }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "ตัวเลือกการเข้าสู่ระบบ 2 ขั้นตอน" }, "selectTwoStepLoginMethod": { - "message": "Select two-step login method" + "message": "เลือกวิธีการเข้าสู่ระบบ 2 ขั้นตอน" }, "recoveryCodeTitle": { - "message": "Recovery Code" + "message": "รหัสกู้คืน" }, "authenticatorAppTitle": { - "message": "Authenticator App" + "message": "แอปยืนยันตัวตน" }, "authenticatorAppDescV2": { - "message": "Enter a code generated by an authenticator app like Bitwarden Authenticator.", + "message": "ป้อนรหัสที่สร้างโดยแอปยืนยันตัวตน เช่น Bitwarden Authenticator", "description": "'Bitwarden Authenticator' is a product name and should not be translated." }, "yubiKeyTitleV2": { - "message": "Yubico OTP Security Key" + "message": "คีย์ความปลอดภัย Yubico OTP" }, "yubiKeyDesc": { - "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + "message": "ใช้ YubiKey เพื่อเข้าถึงบัญชีของคุณ ใช้งานได้กับอุปกรณ์ YubiKey 4, 4 Nano, 4C และ NEO" }, "duoDescV2": { - "message": "Enter a code generated by Duo Security.", + "message": "ป้อนรหัสที่สร้างโดย Duo Security", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "duoOrganizationDesc": { - "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "message": "ยืนยันตัวตนกับ Duo Security สำหรับองค์กรของคุณโดยใช้แอป Duo Mobile, SMS, โทรศัพท์ หรือคีย์ความปลอดภัย U2F", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "webAuthnTitle": { "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "ใช้กุญแจความปลอดภัยที่รองรับ WebAuthn ใดก็ได้เพื่อเข้าถึงบัญชีของคุณ" + "message": "ใช้คีย์ความปลอดภัยที่รองรับ WebAuthn เพื่อเข้าถึงบัญชีของคุณ" }, "emailTitle": { "message": "อีเมล" }, "emailDescV2": { - "message": "Enter a code sent to your email." + "message": "ป้อนรหัสที่ส่งไปยังอีเมลของคุณ" }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "สภาพแวดล้อมโฮสต์เอง" }, "selfHostedBaseUrlHint": { - "message": "Specify the base URL of your on-premises hosted Bitwarden installation. Example: https://bitwarden.company.com" + "message": "ระบุ URL เซิร์ฟเวอร์ของการติดตั้ง Bitwarden ที่คุณโฮสต์เอง ตัวอย่าง: https://bitwarden.company.com" }, "selfHostedCustomEnvHeader": { - "message": "For advanced configuration, you can specify the base URL of each service independently." + "message": "สำหรับการกำหนดค่าขั้นสูง คุณสามารถระบุ URL ของแต่ละบริการได้อย่างอิสระ" }, "selfHostedEnvFormInvalid": { - "message": "You must add either the base Server URL or at least one custom environment." + "message": "คุณต้องเพิ่ม URL เซิร์ฟเวอร์หลัก หรือสภาพแวดล้อมที่กำหนดเองอย่างน้อยหนึ่งรายการ" }, "selfHostedEnvMustUseHttps": { - "message": "URLs must use HTTPS." + "message": "URL ต้องใช้ HTTPS" }, "customEnvironment": { - "message": "Custom Environment" + "message": "สภาพแวดล้อมที่กำหนดเอง" }, "baseUrl": { - "message": "URL ของเซิร์ฟเวอร์" + "message": "URL เซิร์ฟเวอร์" }, "selfHostBaseUrl": { - "message": "Self-host server URL", + "message": "URL เซิร์ฟเวอร์โฮสต์เอง", "description": "Label for field requesting a self-hosted integration service URL" }, "apiUrl": { - "message": "API Server URL" + "message": "URL เซิร์ฟเวอร์ API" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "URL เซิร์ฟเวอร์เว็บตู้นิรภัย" }, "identityUrl": { - "message": "Identity Server URL" + "message": "URL เซิร์ฟเวอร์ข้อมูลระบุตัวตน" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "URL เซิร์ฟเวอร์การแจ้งเตือน" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "URL เซิร์ฟเวอร์ไอคอน" }, "environmentSaved": { - "message": "Environment URLs saved" + "message": "บันทึก URL สภาพแวดล้อมแล้ว" }, "showAutoFillMenuOnFormFields": { - "message": "Show autofill menu on form fields", + "message": "แสดงเมนูป้อนอัตโนมัติบนช่องกรอกข้อมูล", "description": "Represents the message for allowing the user to enable the autofill overlay" }, "autofillSuggestionsSectionTitle": { - "message": "คำแนะนำการกรอกข้อมูลอัตโนมัติ" + "message": "คำแนะนำการป้อนอัตโนมัติ" }, "autofillSpotlightTitle": { - "message": "Easily find autofill suggestions" + "message": "ค้นหาคำแนะนำการป้อนอัตโนมัติได้ง่ายขึ้น" }, "autofillSpotlightDesc": { - "message": "Turn off your browser's autofill settings, so they don't conflict with Bitwarden." + "message": "ปิดการตั้งค่าป้อนอัตโนมัติของเบราว์เซอร์ เพื่อไม่ให้ขัดแย้งกับ Bitwarden" }, "turnOffBrowserAutofill": { - "message": "Turn off $BROWSER$ autofill", + "message": "ปิดการป้อนอัตโนมัติของ $BROWSER$", "placeholders": { "browser": { "content": "$1", @@ -1746,162 +1756,162 @@ } }, "turnOffAutofill": { - "message": "Turn off autofill" + "message": "ปิดการป้อนอัตโนมัติ" }, "confirmAutofill": { - "message": "Confirm autofill" + "message": "ยืนยันการป้อนอัตโนมัติ" }, "confirmAutofillDesc": { - "message": "This site doesn't match your saved login details. Before you fill in your login credentials, make sure it's a trusted site." + "message": "เว็บไซต์นี้ไม่ตรงกับรายละเอียดการเข้าสู่ระบบที่คุณบันทึกไว้ ก่อนป้อนข้อมูล โปรดตรวจสอบให้แน่ใจว่าเป็นเว็บไซต์ที่เชื่อถือได้" }, "showInlineMenuLabel": { - "message": "Show autofill suggestions on form fields" + "message": "แสดงคำแนะนำการป้อนอัตโนมัติบนช่องกรอกข้อมูล" }, "howDoesBitwardenProtectFromPhishing": { - "message": "How does Bitwarden protect your data from phishing?" + "message": "Bitwarden ปกป้องข้อมูลของคุณจากการฟิชชิงได้อย่างไร" }, "currentWebsite": { - "message": "Current website" + "message": "เว็บไซต์ปัจจุบัน" }, "autofillAndAddWebsite": { - "message": "Autofill and add this website" + "message": "ป้อนอัตโนมัติและเพิ่มเว็บไซต์นี้" }, "autofillWithoutAdding": { - "message": "Autofill without adding" + "message": "ป้อนอัตโนมัติโดยไม่เพิ่ม" }, "doNotAutofill": { - "message": "Do not autofill" + "message": "ไม่ต้องป้อนอัตโนมัติ" }, "showInlineMenuIdentitiesLabel": { - "message": "Display identities as suggestions" + "message": "แสดงข้อมูลระบุตัวตนเป็นคำแนะนำ" }, "showInlineMenuCardsLabel": { - "message": "Display cards as suggestions" + "message": "แสดงบัตรเป็นคำแนะนำ" }, "showInlineMenuOnIconSelectionLabel": { - "message": "Display suggestions when icon is selected" + "message": "แสดงคำแนะนำเมื่อเลือกไอคอน" }, "showInlineMenuOnFormFieldsDescAlt": { - "message": "Applies to all logged in accounts." + "message": "สำหรับทุกบัญชีที่เข้าสู่ระบบ" }, "turnOffBrowserBuiltInPasswordManagerSettings": { - "message": "Turn off your browser's built in password manager settings to avoid conflicts." + "message": "ปิดการตั้งค่าตัวจัดการรหัสผ่านในตัวของเบราว์เซอร์เพื่อหลีกเลี่ยงความขัดแย้ง" }, "turnOffBrowserBuiltInPasswordManagerSettingsLink": { - "message": "Edit browser settings." + "message": "แก้ไขการตั้งค่าเบราว์เซอร์" }, "autofillOverlayVisibilityOff": { - "message": "Off", + "message": "ปิด", "description": "Overlay setting select option for disabling autofill overlay" }, "autofillOverlayVisibilityOnFieldFocus": { - "message": "When field is selected (on focus)", + "message": "เมื่อเลือกช่อง (โฟกัส)", "description": "Overlay appearance select option for showing the field on focus of the input element" }, "autofillOverlayVisibilityOnButtonClick": { - "message": "When autofill icon is selected", + "message": "เมื่อเลือกไอคอนป้อนอัตโนมัติ", "description": "Overlay appearance select option for showing the field on click of the overlay icon" }, "enableAutoFillOnPageLoadSectionTitle": { - "message": "Autofill on page load" + "message": "ป้อนอัตโนมัติเมื่อโหลดหน้าเว็บ" }, "enableAutoFillOnPageLoad": { - "message": "Enable Auto-fill On Page Load." + "message": "ป้อนอัตโนมัติเมื่อโหลดหน้าเว็บ" }, "enableAutoFillOnPageLoadDesc": { - "message": "If a login form is detected, autofill when the web page loads." + "message": "หากตรวจพบแบบฟอร์มเข้าสู่ระบบ ให้ป้อนข้อมูลอัตโนมัติเมื่อหน้าเว็บโหลดเสร็จ" }, "experimentalFeature": { - "message": "Compromised or untrusted websites can exploit autofill on page load." + "message": "เว็บไซต์ที่ไม่น่าเชื่อถือหรือถูกแฮ็กอาจใช้ประโยชน์จากการป้อนอัตโนมัติเมื่อโหลดหน้าเว็บได้" }, "learnMoreAboutAutofillOnPageLoadLinkText": { - "message": "Learn more about risks" + "message": "เรียนรู้เพิ่มเติมเกี่ยวกับความเสี่ยง" }, "learnMoreAboutAutofill": { - "message": "Learn more about autofill" + "message": "เรียนรู้เพิ่มเติมเกี่ยวกับการป้อนอัตโนมัติ" }, "defaultAutoFillOnPageLoad": { - "message": "Default autofill setting for login items" + "message": "การตั้งค่าเริ่มต้นสำหรับการป้อนข้อมูลเข้าสู่ระบบอัตโนมัติ" }, "defaultAutoFillOnPageLoadDesc": { - "message": "You can turn off autofill on page load for individual login items from the item's Edit view." + "message": "คุณสามารถปิดการป้อนอัตโนมัติเมื่อโหลดหน้าเว็บสำหรับแต่ละรายการได้จากหน้าแก้ไขรายการ" }, "autoFillOnPageLoadUseDefault": { - "message": "Use default setting" + "message": "ใช้การตั้งค่าเริ่มต้น" }, "autoFillOnPageLoadYes": { - "message": "Autofill on page load" + "message": "ป้อนอัตโนมัติเมื่อโหลดหน้าเว็บ" }, "autoFillOnPageLoadNo": { - "message": "Do not autofill on page load" + "message": "ไม่ป้อนอัตโนมัติเมื่อโหลดหน้าเว็บ" }, "commandOpenPopup": { - "message": "Open vault popup" + "message": "เปิดป๊อปอัปตู้นิรภัย" }, "commandOpenSidebar": { - "message": "Open vault in sidebar" + "message": "เปิดตู้นิรภัยในแถบด้านข้าง" }, "commandAutofillLoginDesc": { - "message": "Autofill the last used login for the current website" + "message": "ป้อนข้อมูลเข้าสู่ระบบที่ใช้ล่าสุดสำหรับเว็บไซต์ปัจจุบันโดยอัตโนมัติ" }, "commandAutofillCardDesc": { - "message": "Autofill the last used card for the current website" + "message": "ป้อนข้อมูลบัตรที่ใช้ล่าสุดสำหรับเว็บไซต์ปัจจุบันโดยอัตโนมัติ" }, "commandAutofillIdentityDesc": { - "message": "Autofill the last used identity for the current website" + "message": "ป้อนข้อมูลระบุตัวตนที่ใช้ล่าสุดสำหรับเว็บไซต์ปัจจุบันโดยอัตโนมัติ" }, "commandGeneratePasswordDesc": { - "message": "Generate and copy a new random password to the clipboard." + "message": "สร้างและคัดลอกรหัสผ่านแบบสุ่มใหม่ไปยังคลิปบอร์ด" }, "commandLockVaultDesc": { - "message": "ล็อกตู้เซฟ" + "message": "ล็อกตู้นิรภัย" }, "customFields": { - "message": "Custom Fields" + "message": "ฟิลด์ที่กำหนดเอง" }, "copyValue": { - "message": "Copy Value" + "message": "คัดลอกค่า" }, "value": { "message": "ค่า" }, "newCustomField": { - "message": "New Custom Field" + "message": "ฟิลด์ที่กำหนดเองใหม่" }, "dragToSort": { - "message": "Drag to sort" + "message": "ลากเพื่อเรียงลำดับ" }, "dragToReorder": { - "message": "Drag to reorder" + "message": "ลากเพื่อจัดลำดับใหม่" }, "cfTypeText": { "message": "ข้อความ" }, "cfTypeHidden": { - "message": "Hidden" + "message": "ซ่อน" }, "cfTypeBoolean": { - "message": "Boolean" + "message": "บูลีน" }, "cfTypeCheckbox": { - "message": "Checkbox" + "message": "ช่องทำเครื่องหมาย" }, "cfTypeLinked": { - "message": "Linked", + "message": "เชื่อมโยง", "description": "This describes a field that is 'linked' (tied) to another field." }, "linkedValue": { - "message": "Linked value", + "message": "ค่าที่เชื่อมโยง", "description": "This describes a value that is 'linked' (tied) to another value." }, "popup2faCloseMessage": { - "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + "message": "การคลิกนอกหน้าต่างป๊อปอัปเพื่อตรวจสอบรหัสยืนยันในอีเมลจะทำให้ป๊อปอัปปิดลง คุณต้องการเปิดป๊อปอัปนี้ในหน้าต่างใหม่เพื่อไม่ให้ปิดหรือไม่" }, "showIconsChangePasswordUrls": { - "message": "Show website icons and retrieve change password URLs" + "message": "แสดงไอคอนเว็บไซต์และดึง URL เปลี่ยนรหัสผ่าน" }, "cardholderName": { - "message": "Cardholder Name" + "message": "ชื่อผู้ถือบัตร" }, "number": { "message": "หมายเลข" @@ -1910,13 +1920,13 @@ "message": "แบรนด์" }, "expirationMonth": { - "message": "Expiration Month" + "message": "เดือนที่หมดอายุ" }, "expirationYear": { - "message": "Expiration Year" + "message": "ปีที่หมดอายุ" }, "monthly": { - "message": "month" + "message": "เดือน" }, "expiration": { "message": "วันหมดอายุ" @@ -1958,13 +1968,13 @@ "message": "ธันวาคม" }, "securityCode": { - "message": "Security Code" + "message": "รหัสความปลอดภัย" }, "cardNumber": { - "message": "card number" + "message": "หมายเลขบัตร" }, "ex": { - "message": "ex." + "message": "ตัวอย่าง" }, "title": { "message": "คำนำหน้า" @@ -1982,22 +1992,22 @@ "message": "ดร." }, "mx": { - "message": "Mx" + "message": "คุณ" }, "firstName": { - "message": "First Name" + "message": "ชื่อจริง" }, "middleName": { - "message": "Middle Name" + "message": "ชื่อกลาง" }, "lastName": { - "message": "Last Name" + "message": "นามสกุล" }, "fullName": { "message": "ชื่อเต็ม" }, "identityName": { - "message": "Identity Name" + "message": "ชื่อข้อมูลระบุตัวตน" }, "company": { "message": "บริษัท" @@ -2009,7 +2019,7 @@ "message": "หมายเลขหนังสือเดินทาง" }, "licenseNumber": { - "message": "หมายเลขใบอนุญาต" + "message": "หมายเลขใบขับขี่" }, "email": { "message": "อีเมล" @@ -2030,7 +2040,7 @@ "message": "ที่อยู่ 3" }, "cityTown": { - "message": "เมือง" + "message": "เมือง / ตำบล" }, "stateProvince": { "message": "รัฐ / จังหวัด" @@ -2042,116 +2052,116 @@ "message": "ประเทศ" }, "type": { - "message": "ชนิด" + "message": "ประเภท" }, "typeLogin": { - "message": "ล็อกอิน" + "message": "ข้อมูลเข้าสู่ระบบ" }, "typeLogins": { - "message": "ล็อกอิน" + "message": "ข้อมูลเข้าสู่ระบบ" }, "typeSecureNote": { - "message": "Secure Note" + "message": "โน้ตความปลอดภัย" }, "typeCard": { - "message": "บัตรเครดิต" + "message": "บัตร" }, "typeIdentity": { "message": "ข้อมูลระบุตัวตน" }, "typeSshKey": { - "message": "SSH key" + "message": "คีย์ SSH" }, "typeNote": { - "message": "Note" + "message": "โน้ต" }, "newItemHeaderLogin": { - "message": "New Login", + "message": "ข้อมูลเข้าสู่ระบบใหม่", "description": "Header for new login item type" }, "newItemHeaderCard": { - "message": "New Card", + "message": "บัตรใหม่", "description": "Header for new card item type" }, "newItemHeaderIdentity": { - "message": "New Identity", + "message": "ข้อมูลระบุตัวตนใหม่", "description": "Header for new identity item type" }, "newItemHeaderNote": { - "message": "New Note", + "message": "โน้ตใหม่", "description": "Header for new note item type" }, "newItemHeaderSshKey": { - "message": "New SSH key", + "message": "คีย์ SSH ใหม่", "description": "Header for new SSH key item type" }, "newItemHeaderTextSend": { - "message": "New Text Send", + "message": "ข้อความ Send ใหม่", "description": "Header for new text send" }, "newItemHeaderFileSend": { - "message": "New File Send", + "message": "ไฟล์ Send ใหม่", "description": "Header for new file send" }, "editItemHeaderLogin": { - "message": "Edit Login", + "message": "แก้ไขข้อมูลเข้าสู่ระบบ", "description": "Header for edit login item type" }, "editItemHeaderCard": { - "message": "Edit Card", + "message": "แก้ไขบัตร", "description": "Header for edit card item type" }, "editItemHeaderIdentity": { - "message": "Edit Identity", + "message": "แก้ไขข้อมูลระบุตัวตน", "description": "Header for edit identity item type" }, "editItemHeaderNote": { - "message": "Edit Note", + "message": "แก้ไขโน้ต", "description": "Header for edit note item type" }, "editItemHeaderSshKey": { - "message": "Edit SSH key", + "message": "แก้ไขคีย์ SSH", "description": "Header for edit SSH key item type" }, "editItemHeaderTextSend": { - "message": "Edit Text Send", + "message": "แก้ไขข้อความ Send", "description": "Header for edit text send" }, "editItemHeaderFileSend": { - "message": "Edit File Send", + "message": "แก้ไขไฟล์ Send", "description": "Header for edit file send" }, "viewItemHeaderLogin": { - "message": "View Login", + "message": "ดูข้อมูลเข้าสู่ระบบ", "description": "Header for view login item type" }, "viewItemHeaderCard": { - "message": "View Card", + "message": "ดูบัตร", "description": "Header for view card item type" }, "viewItemHeaderIdentity": { - "message": "View Identity", + "message": "ดูข้อมูลระบุตัวตน", "description": "Header for view identity item type" }, "viewItemHeaderNote": { - "message": "View Note", + "message": "ดูโน้ต", "description": "Header for view note item type" }, "viewItemHeaderSshKey": { - "message": "View SSH key", + "message": "ดูคีย์ SSH", "description": "Header for view SSH key item type" }, "passwordHistory": { - "message": "ประวัติของรหัสผ่าน" + "message": "ประวัติรหัสผ่าน" }, "generatorHistory": { - "message": "Generator history" + "message": "ประวัติตัวสร้างรหัสผ่าน" }, "clearGeneratorHistoryTitle": { - "message": "Clear generator history" + "message": "ล้างประวัติตัวสร้างรหัสผ่าน" }, "cleargGeneratorHistoryDescription": { - "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + "message": "หากดำเนินการต่อ รายการทั้งหมดจะถูกลบออกจากประวัติของตัวสร้างอย่างถาวร ยืนยันที่จะดำเนินการต่อหรือไม่" }, "back": { "message": "ย้อนกลับ" @@ -2160,7 +2170,7 @@ "message": "คอลเลกชัน" }, "nCollections": { - "message": "$COUNT$ collections", + "message": "$COUNT$ คอลเลกชัน", "placeholders": { "count": { "content": "$1", @@ -2172,7 +2182,7 @@ "message": "รายการโปรด" }, "popOutNewWindow": { - "message": "เปิดหน้าต่างใหม่" + "message": "แยกหน้าต่างใหม่" }, "refresh": { "message": "รีเฟรช" @@ -2184,23 +2194,23 @@ "message": "ข้อมูลระบุตัวตน" }, "logins": { - "message": "เข้าสู่ระบบ" + "message": "ข้อมูลเข้าสู่ระบบ" }, "secureNotes": { - "message": "Secure Notes" + "message": "โน้ตความปลอดภัย" }, "sshKeys": { - "message": "SSH Keys" + "message": "คีย์ SSH" }, "clear": { - "message": "ลบทิ้ง", + "message": "ล้าง", "description": "To clear something out. example: To clear browser history." }, "checkPassword": { - "message": "ตรวจสอบว่ารหัสผ่านถูกเปิดเผยหรือไม่" + "message": "ตรวจสอบว่ารหัสผ่านรั่วไหลหรือไม่" }, "passwordExposed": { - "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "message": "รหัสผ่านนี้รั่วไหล $VALUE$ ครั้งในเหตุการณ์ข้อมูลรั่วไหล คุณควรเปลี่ยนรหัสผ่านนี้", "placeholders": { "value": { "content": "$1", @@ -2209,14 +2219,14 @@ } }, "passwordSafe": { - "message": "ไม่พบรหัสผ่านนี้ในการละเมิดข้อมูลที่มี ควรใช้อย่างปลอดภัย" + "message": "ไม่พบรหัสผ่านนี้ในเหตุการณ์ข้อมูลรั่วไหลที่รู้จัก ควรจะปลอดภัยต่อการใช้งาน" }, "baseDomain": { - "message": "โดเมนพื้นฐาน", + "message": "โดเมนฐาน", "description": "Domain name. Ex. website.com" }, "baseDomainOptionRecommended": { - "message": "Base domain (recommended)", + "message": "โดเมนฐาน (แนะนำ)", "description": "Domain name. Ex. website.com" }, "domainName": { @@ -2228,25 +2238,25 @@ "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." }, "exact": { - "message": "ถูกต้อง" + "message": "ตรงกันทุกตัวอักษร" }, "startsWith": { - "message": "เริ่มต้นด้วย" + "message": "ขึ้นต้นด้วย" }, "regEx": { - "message": "นิพจน์ทั่วไป", + "message": "Regular expression", "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "การตรวจสอบการจับคู่", "description": "URI match detection for autofill." }, "defaultMatchDetection": { - "message": "การตรวจจับการจับคู่เริ่มต้น", + "message": "การตรวจสอบการจับคู่เริ่มต้น", "description": "Default URI match detection for autofill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "สลับตัวเลือก" }, "toggleCurrentUris": { "message": "สลับ URI ปัจจุบัน", @@ -2261,7 +2271,7 @@ "description": "An entity of multiple related people (ex. a team or business organization)." }, "types": { - "message": "ชนิด" + "message": "ประเภท" }, "allItems": { "message": "รายการทั้งหมด" @@ -2270,64 +2280,64 @@ "message": "ไม่มีรหัสผ่านที่จะแสดง" }, "clearHistory": { - "message": "Clear history" + "message": "ล้างประวัติ" }, "nothingToShow": { - "message": "Nothing to show" + "message": "ไม่มีข้อมูลที่จะแสดง" }, "nothingGeneratedRecently": { - "message": "You haven't generated anything recently" + "message": "คุณไม่ได้สร้างรหัสผ่านใด ๆ ในช่วงนี้" }, "remove": { - "message": "ลบ" + "message": "เอาออก" }, "default": { "message": "ค่าเริ่มต้น" }, "dateUpdated": { - "message": "อัปเดตแล้ว", + "message": "อัปเดต", "description": "ex. Date this item was updated" }, "dateCreated": { - "message": "สร้างเมื่อ", + "message": "สร้าง", "description": "ex. Date this item was created" }, "datePasswordUpdated": { - "message": "อัปเดต Password แล้ว", + "message": "รหัสผ่านอัปเดต", "description": "ex. Date this password was updated" }, "neverLockWarning": { - "message": "คุณแน่ใจหรือไม่ว่าต้องการใช้ตัวเลือก \"ไม่เคย\" การตั้งค่าตัวเลือกการล็อกเป็น \"ไม่\" จะเก็บคีย์เข้ารหัสของห้องนิรภัยไว้ในอุปกรณ์ของคุณ หากคุณใช้ตัวเลือกนี้ คุณควรตรวจสอบให้แน่ใจว่าคุณปกป้องอุปกรณ์ของคุณอย่างเหมาะสม" + "message": "ยืนยันที่จะใช้ตัวเลือก “ไม่เลย” หรือไม่ การตั้งค่าตัวเลือกการล็อกเป็น “ไม่เลย” จะจัดเก็บกุญแจเข้ารหัสตู้นิรภัยไว้บนอุปกรณ์ หากใช้ตัวเลือกนี้ คุณควรตรวจสอบให้แน่ใจว่าอุปกรณ์ได้รับการปกป้องอย่างเหมาะสม" }, "noOrganizationsList": { - "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + "message": "คุณไม่ได้เป็นสมาชิกขององค์กรใด ๆ องค์กรช่วยให้คุณแชร์รายการกับผู้ใช้อื่นได้อย่างปลอดภัย" }, "noCollectionsInList": { "message": "ไม่มีคอลเลกชันที่จะแสดง" }, "ownership": { - "message": "เจ้าของ" + "message": "ความเป็นเจ้าของ" }, "whoOwnsThisItem": { - "message": "ใครเป็นเจ้าของรายการนี้?" + "message": "ใครเป็นเจ้าของรายการนี้" }, "strong": { - "message": "แข็งแรง", + "message": "รัดกุม", "description": "ex. A strong password. Scale: Weak -> Good -> Strong" }, "good": { - "message": "ไม่เลว", + "message": "ดี", "description": "ex. A good password. Scale: Weak -> Good -> Strong" }, "weak": { - "message": "ง่ายเกินไป", + "message": "อ่อน", "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "รหัสผ่านหลักไม่ปลอดภัย" }, "weakMasterPasswordDesc": { - "message": "รหัสผ่านหลักที่คุณเลือกนั้นไม่รัดกุม คุณควรใช้รหัสผ่านหลักที่รัดกุม (หรือวลีรหัสผ่าน) เพื่อปกป้องบัญชี Bitwarden ของคุณอย่างเหมาะสม คุณแน่ใจหรือไม่ว่าต้องการใช้รหัสผ่านหลักนี้" + "message": "รหัสผ่านหลักที่คุณเลือกไม่ปลอดภัย คุณควรใช้รหัสผ่านหลักที่รัดกุม (หรือวลีรหัสผ่าน) เพื่อปกป้องบัญชี Bitwarden ของคุณอย่างเหมาะสม ยืนยันที่จะใช้รหัสผ่านหลักนี้หรือไม่" }, "pin": { "message": "PIN", @@ -2337,43 +2347,43 @@ "message": "ปลดล็อกด้วย PIN" }, "setYourPinTitle": { - "message": "ตั้ง PIN" + "message": "ตั้งค่า PIN" }, "setYourPinButton": { - "message": "ตั้ง PIN" + "message": "ตั้งค่า PIN" }, "setYourPinCode": { - "message": "ตั้ง PIN เพื่อใช้ปลดล็อก Bitwarden ทั้งนี้ หากคุณล็อกเอาต์ออกจากแอปโดยสมบูรณ์จะเป็นการลบการตั้งค่า PIN ของคุณด้วย" + "message": "ตั้งรหัส PIN สำหรับปลดล็อก Bitwarden การตั้งค่า PIN จะถูกรีเซ็ตหากคุณออกจากระบบแอปพลิเคชันโดยสมบูรณ์" }, "setPinCode": { - "message": "ตั้ง PIN เพื่อใช้ปลดล็อก Bitwarden และหากคุณล็อกเอาต์ออกจากแอปโดยสมบูรณ์จะเป็นการลบการตั้งค่า PIN ของคุณ" + "message": "คุณสามารถใช้ PIN นี้เพื่อปลดล็อก Bitwarden PIN จะถูกรีเซ็ตหากคุณออกจากระบบแอปพลิเคชันโดยสมบูรณ์" }, "pinRequired": { - "message": "ต้องระบุ PIN" + "message": "จำเป็นต้องระบุรหัส PIN" }, "invalidPin": { - "message": "PIN ไม่ถูกต้อง" + "message": "รหัส PIN ไม่ถูกต้อง" }, "tooManyInvalidPinEntryAttemptsLoggingOut": { - "message": "Too many invalid PIN entry attempts. Logging out." + "message": "พยายามป้อน PIN ผิดหลายครั้งเกินไป กำลังออกจากระบบ" }, "unlockWithBiometrics": { "message": "ปลดล็อกด้วยไบโอเมตริก" }, "unlockWithMasterPassword": { - "message": "เข้าสู่ระบบด้วยรหัสผ่านหลัก" + "message": "ปลดล็อกด้วยรหัสผ่านหลัก" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "กำลังรอการยืนยันจากเดสก์ท็อป" }, "awaitDesktopDesc": { - "message": "โปรดยืนยันการใช้ไบโอเมตริกในแอปพลิเคชันเดสก์ท็อป Bitwarden เพื่อตั้งค่าไบโอเมตริกสำหรับเบราว์เซอร์" + "message": "โปรดยืนยันโดยใช้ไบโอเมตริกในแอปพลิเคชัน Bitwarden บนเดสก์ท็อปเพื่อตั้งค่าไบโอเมตริกสำหรับเบราว์เซอร์" }, "lockWithMasterPassOnRestart": { - "message": "ล็อคด้วยรหัสผ่านหลักเมื่อรีสตาร์ทเบราว์เซอร์" + "message": "ล็อกด้วยรหัสผ่านหลักเมื่อรีสตาร์ตเบราว์เซอร์" }, "lockWithMasterPassOnRestart1": { - "message": "กำหนดให้ป้อนรหัสผ่านหลักเมื่อรีสตาร์ทเบราว์เซอร์" + "message": "ต้องใช้รหัสผ่านหลักเมื่อรีสตาร์ตเบราว์เซอร์" }, "selectOneCollection": { "message": "คุณต้องเลือกอย่างน้อยหนึ่งคอลเลกชัน" @@ -2385,42 +2395,42 @@ "message": "โคลน" }, "passwordGenerator": { - "message": "Password generator" + "message": "ตัวสร้างรหัสผ่าน" }, "usernameGenerator": { - "message": "Username generator" + "message": "ตัวสร้างชื่อผู้ใช้" }, "useThisEmail": { - "message": "Use this email" + "message": "ใช้อีเมลนี้" }, "useThisPassword": { - "message": "Use this password" + "message": "ใช้รหัสผ่านนี้" }, "useThisPassphrase": { - "message": "Use this passphrase" + "message": "ใช้วลีรหัสผ่านนี้" }, "useThisUsername": { - "message": "Use this username" + "message": "ใช้ชื่อผู้ใช้นี้" }, "securePasswordGenerated": { - "message": "Secure password generated! Don't forget to also update your password on the website." + "message": "สร้างรหัสผ่านที่รัดกุมแล้ว! อย่าลืมอัปเดตรหัสผ่านบนเว็บไซต์ด้วย" }, "useGeneratorHelpTextPartOne": { - "message": "Use the generator", + "message": "ใช้ตัวสร้าง", "description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'" }, "useGeneratorHelpTextPartTwo": { - "message": "to create a strong unique password", + "message": "เพื่อสร้างรหัสผ่านที่รัดกุมและไม่ซ้ำกัน", "description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'" }, "vaultCustomization": { - "message": "Vault customization" + "message": "การปรับแต่งตู้นิรภัย" }, "vaultTimeoutAction": { - "message": "การดำเนินการหลังหมดเวลาล็อคตู้เซฟ" + "message": "การดำเนินการเมื่อตู้นิรภัยหมดเวลา" }, "vaultTimeoutAction1": { - "message": "Timeout action" + "message": "การดำเนินการเมื่อหมดเวลา" }, "lock": { "message": "ล็อก", @@ -2434,52 +2444,52 @@ "message": "ค้นหาในถังขยะ" }, "permanentlyDeleteItem": { - "message": "ลบรายการอย่างถาวร" + "message": "ลบรายการถาวร" }, "permanentlyDeleteItemConfirmation": { - "message": "คุณแน่ใจหรือไม่ว่าต้องการลบรายการนี้อย่างถาวร?" + "message": "ยืนยันที่จะลบรายการนี้ถาวรหรือไม่" }, "permanentlyDeletedItem": { - "message": "ลบรายการอย่างถาวรแล้ว" + "message": "ลบรายการถาวรแล้ว" }, "restoreItem": { "message": "กู้คืนรายการ" }, "restoredItem": { - "message": "คืนค่ารายการแล้ว" + "message": "กู้คืนรายการแล้ว" }, "alreadyHaveAccount": { - "message": "Already have an account?" + "message": "มีบัญชีอยู่แล้วใช่หรือไม่" }, "vaultTimeoutLogOutConfirmation": { - "message": "การออกจากระบบจะลบการเข้าถึงตู้นิรภัยของคุณทั้งหมด และต้องมีการตรวจสอบสิทธิ์ออนไลน์หลังจากหมดเวลา คุณแน่ใจหรือไม่ว่าต้องการใช้การตั้งค่านี้" + "message": "การออกจากระบบจะทำให้สิทธิ์เข้าถึงตู้นิรภัยทั้งหมดถูกยกเลิก และต้องยืนยันตัวตนออนไลน์ใหม่หลังจากหมดเวลา ยืนยันที่จะใช้การตั้งค่านี้หรือไม่" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "การยืนยันการดำเนินการหมดเวลา" + "message": "ยืนยันการดำเนินการเมื่อหมดเวลา" }, "autoFillAndSave": { - "message": "กรอกอัตโนมัติและบันทึก" + "message": "ป้อนอัตโนมัติและบันทึก" }, "fillAndSave": { - "message": "Fill and save" + "message": "ป้อนและบันทึก" }, "autoFillSuccessAndSavedUri": { - "message": "เติมรายการอัตโนมัติและบันทึก URI แล้ว" + "message": "ป้อนข้อมูลรายการอัตโนมัติและบันทึก URI แล้ว" }, "autoFillSuccess": { - "message": "รายการเติมอัตโนมัติ " + "message": "ป้อนข้อมูลรายการอัตโนมัติแล้ว" }, "insecurePageWarning": { - "message": "Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page." + "message": "คำเตือน: หน้านี้เป็นหน้า HTTP ที่ไม่ปลอดภัย ข้อมูลที่คุณส่งอาจถูกดักจับหรือแก้ไขโดยผู้อื่นได้ ข้อมูลเข้าสู่ระบบนี้ถูกบันทึกไว้บนหน้าเว็บที่ปลอดภัย (HTTPS)" }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "ยังต้องการป้อนข้อมูลเข้าสู่ระบบนี้หรือไม่" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to autofill anyway, or Cancel to stop." + "message": "แบบฟอร์มนี้โฮสต์โดยโดเมนที่ต่างจาก URI ของข้อมูลเข้าสู่ระบบที่คุณบันทึกไว้ เลือก ตกลง เพื่อป้อนข้อมูลอัตโนมัติ หรือ ยกเลิก เพื่อหยุด" }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "เพื่อป้องกันการแจ้งเตือนนี้ในอนาคต ให้บันทึก URI $HOSTNAME$ ลงในรายการข้อมูลเข้าสู่ระบบ Bitwarden สำหรับไซต์นี้", "placeholders": { "hostname": { "content": "$1", @@ -2488,22 +2498,22 @@ } }, "topLayerHijackWarning": { - "message": "This page is interfering with the Bitwarden experience. The Bitwarden inline menu has been temporarily disabled as a safety measure." + "message": "หน้านี้รบกวนการทำงานของ Bitwarden เมนูในบรรทัดของ Bitwarden ถูกปิดใช้งานชั่วคราวเพื่อความปลอดภัย" }, "setMasterPassword": { "message": "ตั้งรหัสผ่านหลัก" }, "currentMasterPass": { - "message": "Current master password" + "message": "รหัสผ่านหลักปัจจุบัน" }, "newMasterPass": { - "message": "New master password" + "message": "รหัสผ่านหลักใหม่" }, "confirmNewMasterPass": { - "message": "Confirm new master password" + "message": "ยืนยันรหัสผ่านหลักใหม่" }, "masterPasswordPolicyInEffect": { - "message": "นโยบายองค์กรอย่างน้อยหนึ่งนโยบายกำหนดให้รหัสผ่านหลักของคุณเป็นไปตามข้อกำหนดต่อไปนี้:" + "message": "นโยบายองค์กรอย่างน้อยหนึ่งรายการกำหนดให้รหัสผ่านหลักของคุณต้องเป็นไปตามข้อกำหนดดังนี้:" }, "policyInEffectMinComplexity": { "message": "คะแนนความซับซ้อนขั้นต่ำ $SCORE$", @@ -2515,7 +2525,7 @@ } }, "policyInEffectMinLength": { - "message": "ความยาวอย่างน้อย $LENGTH$ อักขระ", + "message": "ความยาวขั้นต่ำ $LENGTH$ ตัวอักษร", "placeholders": { "length": { "content": "$1", @@ -2524,16 +2534,16 @@ } }, "policyInEffectUppercase": { - "message": "มีตัวพิมพ์ใหญ่อย่างน้อย 1 ตัว" + "message": "มีตัวอักษรพิมพ์ใหญ่อย่างน้อยหนึ่งตัว" }, "policyInEffectLowercase": { - "message": "มีตัวพิมพ์เล็กอย่างน้อย 1 ตัว" + "message": "มีตัวอักษรพิมพ์เล็กอย่างน้อยหนึ่งตัว" }, "policyInEffectNumbers": { - "message": "มีตัวเลขอย่างน้อย 1 ตัว" + "message": "มีตัวเลขอย่างน้อยหนึ่งตัว" }, "policyInEffectSpecial": { - "message": "มีอักขระพิเศษต่อไปนี้อย่างน้อย 1 อักขระ: $CHARS$ ", + "message": "มีอักขระพิเศษต่อไปนี้อย่างน้อยหนึ่งตัว $CHARS$", "placeholders": { "chars": { "content": "$1", @@ -2542,186 +2552,186 @@ } }, "masterPasswordPolicyRequirementsNotMet": { - "message": "รหัสผ่านหลักใหม่ของคุณไม่เป็นไปตามข้อกำหนดของนโยบาย" + "message": "รหัสผ่านหลักใหม่ของคุณไม่ตรงตามข้อกำหนดของนโยบาย" }, "receiveMarketingEmailsV2": { - "message": "Get advice, announcements, and research opportunities from Bitwarden in your inbox." + "message": "รับคำแนะนำ ประกาศ และโอกาสในการทำวิจัยจาก Bitwarden ทางอีเมล" }, "unsubscribe": { - "message": "Unsubscribe" + "message": "ยกเลิกการรับข่าวสาร" }, "atAnyTime": { - "message": "at any time." + "message": "ได้ทุกเมื่อ" }, "byContinuingYouAgreeToThe": { - "message": "By continuing, you agree to the" + "message": "เมื่อดำเนินการต่อ ถือว่าคุณยอมรับ" }, "and": { - "message": "and" + "message": "และ" }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "การเลือกช่องนี้หมายความว่าคุณยอมรับสิ่งต่อไปนี้:" }, "acceptPoliciesRequired": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "ยังไม่ได้ยอมรับข้อกำหนดในการให้บริการและนโยบายความเป็นส่วนตัว" }, "termsOfService": { - "message": "Terms of Service" + "message": "ข้อกำหนดในการให้บริการ" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "นโยบายความเป็นส่วนตัว" }, "yourNewPasswordCannotBeTheSameAsYourCurrentPassword": { - "message": "Your new password cannot be the same as your current password." + "message": "รหัสผ่านใหม่ต้องไม่ซ้ำกับรหัสผ่านปัจจุบัน" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "คำใบ้รหัสผ่านต้องไม่เหมือนกับรหัสผ่าน" }, "ok": { "message": "ตกลง" }, "errorRefreshingAccessToken": { - "message": "Access Token Refresh Error" + "message": "เกิดข้อผิดพลาดในการรีเฟรชโทเค็นการเข้าถึง" }, "errorRefreshingAccessTokenDesc": { - "message": "No refresh token or API keys found. Please try logging out and logging back in." + "message": "ไม่พบโทเค็นรีเฟรชหรือคีย์ API โปรดลองออกจากระบบแล้วเข้าสู่ระบบใหม่" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "การยืนยันการซิงค์เดสก์ท็อป" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "โปรดยืนยันว่าแอปพลิเคชันเดสก์ท็อปแสดงลายนิ้วมือนี้: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not set up" + "message": "ยังไม่ได้ตั้งค่าการรวมเบราว์เซอร์" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." + "message": "ยังไม่ได้ตั้งค่าการรวมเบราว์เซอร์ในแอปพลิเคชัน Bitwarden บนเดสก์ท็อป โปรดตั้งค่าในการตั้งค่าภายในแอปพลิเคชันเดสก์ท็อป" }, "startDesktopTitle": { - "message": "Start the Bitwarden desktop application" + "message": "เริ่มแอปพลิเคชัน Bitwarden บนเดสก์ท็อป" }, "startDesktopDesc": { - "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." + "message": "จำเป็นต้องเปิดแอปพลิเคชัน Bitwarden บนเดสก์ท็อปก่อนจึงจะสามารถใช้การปลดล็อกด้วยไบโอเมตริกได้" }, "errorEnableBiometricTitle": { - "message": "Unable to set up biometrics" + "message": "ไม่สามารถตั้งค่าไบโอเมตริกได้" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "การดำเนินการถูกยกเลิกโดยแอปพลิเคชันเดสก์ท็อป" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "แอปพลิเคชันเดสก์ท็อปทำให้ช่องทางการสื่อสารที่ปลอดภัยเป็นโมฆะ โปรดลองดำเนินการนี้อีกครั้ง" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "การสื่อสารกับเดสก์ท็อปถูกขัดจังหวะ" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "แอปพลิเคชันเดสก์ท็อปเข้าสู่ระบบด้วยบัญชีอื่น โปรดตรวจสอบให้แน่ใจว่าทั้งสองแอปพลิเคชันเข้าสู่ระบบด้วยบัญชีเดียวกัน" }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "บัญชีไม่ตรงกัน" }, "nativeMessagingWrongUserKeyTitle": { - "message": "Biometric key missmatch" + "message": "คีย์ไบโอเมตริกไม่ตรงกัน" }, "nativeMessagingWrongUserKeyDesc": { - "message": "Biometric unlock failed. The biometric secret key failed to unlock the vault. Please try to set up biometrics again." + "message": "การปลดล็อกด้วยไบโอเมตริกล้มเหลว คีย์ลับไบโอเมตริกไม่สามารถปลดล็อกตู้นิรภัยได้ โปรดลองตั้งค่าไบโอเมตริกใหม่อีกครั้ง" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not set up" + "message": "ยังไม่ได้ตั้งค่าไบโอเมตริก" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be set up in the settings first." + "message": "ไบโอเมตริกสำหรับเบราว์เซอร์จำเป็นต้องตั้งค่าไบโอเมตริกในแอปเดสก์ท็อปก่อน" }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "ไม่รองรับไบโอเมตริก" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "อุปกรณ์นี้ไม่รองรับไบโอเมตริกสำหรับเบราว์เซอร์" }, "biometricsNotUnlockedTitle": { - "message": "User locked or logged out" + "message": "ผู้ใช้ถูกล็อกหรือออกจากระบบ" }, "biometricsNotUnlockedDesc": { - "message": "Please unlock this user in the desktop application and try again." + "message": "โปรดปลดล็อกผู้ใช้นี้ในแอปพลิเคชันเดสก์ท็อปแล้วลองอีกครั้ง" }, "biometricsNotAvailableTitle": { - "message": "Biometric unlock unavailable" + "message": "การปลดล็อกด้วยไบโอเมตริกไม่พร้อมใช้งาน" }, "biometricsNotAvailableDesc": { - "message": "Biometric unlock is currently unavailable. Please try again later." + "message": "การปลดล็อกด้วยไบโอเมตริกไม่พร้อมใช้งานในขณะนี้ โปรดลองใหม่อีกครั้งในภายหลัง" }, "biometricsFailedTitle": { - "message": "Biometrics failed" + "message": "ไบโอเมตริกล้มเหลว" }, "biometricsFailedDesc": { - "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + "message": "ไม่สามารถดำเนินการไบโอเมตริกให้เสร็จสิ้นได้ โปรดพิจารณาใช้รหัสผ่านหลักหรือออกจากระบบ หากปัญหายังคงอยู่ โปรดติดต่อฝ่ายสนับสนุน Bitwarden" }, "nativeMessaginPermissionErrorTitle": { - "message": "Permission not provided" + "message": "ไม่ได้รับอนุญาต" }, "nativeMessaginPermissionErrorDesc": { - "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + "message": "เราไม่สามารถให้บริการไบโอเมตริกในส่วนขยายเบราว์เซอร์ได้หากไม่ได้รับอนุญาตให้สื่อสารกับแอปพลิเคชัน Bitwarden บนเดสก์ท็อป โปรดลองอีกครั้ง" }, "nativeMessaginPermissionSidebarTitle": { - "message": "Permission request error" + "message": "ข้อผิดพลาดในการขอสิทธิ์" }, "nativeMessaginPermissionSidebarDesc": { - "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + "message": "ไม่สามารถดำเนินการนี้ในแถบด้านข้างได้ โปรดลองดำเนินการอีกครั้งในป๊อปอัปหรือหน้าต่างแยก" }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." + "message": "เนื่องจากนโยบายองค์กร คุณถูกจำกัดไม่ให้บันทึกรายการลงในตู้นิรภัยส่วนตัว เปลี่ยนตัวเลือกความเป็นเจ้าของเป็นองค์กรและเลือกคอลเลกชันที่มีอยู่" }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "นโยบายองค์กรมีผลต่อตัวเลือกความเป็นเจ้าของของคุณ" }, "personalOwnershipPolicyInEffectImports": { - "message": "An organization policy has blocked importing items into your individual vault." + "message": "นโยบายองค์กรระงับการนำเข้ารายการไปยังตู้นิรภัยส่วนตัวของคุณ" }, "restrictCardTypeImport": { - "message": "Cannot import card item types" + "message": "ไม่สามารถนำเข้ารายการประเภทบัตรได้" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "นโยบายที่กำหนดโดยองค์กรอย่างน้อย 1 แห่งป้องกันไม่ให้คุณนำเข้าบัตรไปยังตู้นิรภัย" }, "domainsTitle": { - "message": "Domains", + "message": "โดเมน", "description": "A category title describing the concept of web domains" }, "blockedDomains": { - "message": "Blocked domains" + "message": "โดเมนที่ถูกบล็อก" }, "learnMoreAboutBlockedDomains": { - "message": "Learn more about blocked domains" + "message": "เรียนรู้เพิ่มเติมเกี่ยวกับโดเมนที่ถูกบล็อก" }, "excludedDomains": { - "message": "Excluded domains" + "message": "โดเมนที่ยกเว้น" }, "excludedDomainsDesc": { - "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + "message": "Bitwarden จะไม่ถามให้บันทึกรายละเอียดการเข้าสู่ระบบสำหรับโดเมนเหล่านี้ คุณต้องรีเฟรชหน้าเว็บเพื่อให้การเปลี่ยนแปลงมีผล" }, "excludedDomainsDescAlt": { - "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + "message": "Bitwarden จะไม่ถามให้บันทึกรายละเอียดการเข้าสู่ระบบสำหรับโดเมนเหล่านี้สำหรับทุกบัญชีที่เข้าสู่ระบบ คุณต้องรีเฟรชหน้าเว็บเพื่อให้การเปลี่ยนแปลงมีผล" }, "blockedDomainsDesc": { - "message": "Autofill and other related features will not be offered for these websites. You must refresh the page for changes to take effect." + "message": "การป้อนอัตโนมัติและฟีเจอร์อื่น ๆ ที่เกี่ยวข้องจะไม่พร้อมใช้งานสำหรับเว็บไซต์เหล่านี้ คุณต้องรีเฟรชหน้าเว็บเพื่อให้การเปลี่ยนแปลงมีผล" }, "autofillBlockedNoticeV2": { - "message": "Autofill is blocked for this website." + "message": "การป้อนอัตโนมัติถูกบล็อกสำหรับเว็บไซต์นี้" }, "autofillBlockedNoticeGuidance": { - "message": "Change this in settings" + "message": "เปลี่ยนค่านี้ในการตั้งค่า" }, "change": { - "message": "Change" + "message": "เปลี่ยน" }, "changePassword": { - "message": "Change password", + "message": "เปลี่ยนรหัสผ่าน", "description": "Change password button for browser at risk notification on login." }, "changeButtonTitle": { - "message": "Change password - $ITEMNAME$", + "message": "เปลี่ยนรหัสผ่าน - $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -2730,13 +2740,13 @@ } }, "atRiskPassword": { - "message": "At-risk password" + "message": "รหัสผ่านที่มีความเสี่ยง" }, "atRiskPasswords": { - "message": "At-risk passwords" + "message": "รหัสผ่านที่มีความเสี่ยง" }, "atRiskPasswordDescSingleOrg": { - "message": "$ORGANIZATION$ is requesting you change one password because it is at-risk.", + "message": "$ORGANIZATION$ ร้องขอให้คุณเปลี่ยนรหัสผ่าน 1 รายการเนื่องจากมีความเสี่ยง", "placeholders": { "organization": { "content": "$1", @@ -2745,7 +2755,7 @@ } }, "atRiskPasswordsDescSingleOrgPlural": { - "message": "$ORGANIZATION$ is requesting you change the $COUNT$ passwords because they are at-risk.", + "message": "$ORGANIZATION$ ร้องขอให้คุณเปลี่ยนรหัสผ่าน $COUNT$ รายการเนื่องจากมีความเสี่ยง", "placeholders": { "organization": { "content": "$1", @@ -2758,7 +2768,7 @@ } }, "atRiskPasswordsDescMultiOrgPlural": { - "message": "Your organizations are requesting you change the $COUNT$ passwords because they are at-risk.", + "message": "องค์กรของคุณร้องขอให้คุณเปลี่ยนรหัสผ่าน $COUNT$ รายการเนื่องจากมีความเสี่ยง", "placeholders": { "count": { "content": "$1", @@ -2767,7 +2777,7 @@ } }, "atRiskChangePrompt": { - "message": "Your password for this site is at-risk. $ORGANIZATION$ has requested that you change it.", + "message": "รหัสผ่านของคุณสำหรับเว็บไซต์นี้มีความเสี่ยง $ORGANIZATION$ ได้ร้องขอให้คุณเปลี่ยนรหัสผ่าน", "placeholders": { "organization": { "content": "$1", @@ -2777,7 +2787,7 @@ "description": "Notification body when a login triggers an at-risk password change request and the change password domain is known." }, "atRiskNavigatePrompt": { - "message": "$ORGANIZATION$ wants you to change this password because it is at-risk. Navigate to your account settings to change the password.", + "message": "$ORGANIZATION$ ต้องการให้คุณเปลี่ยนรหัสผ่านนี้เนื่องจากมีความเสี่ยง ไปที่การตั้งค่าบัญชีของคุณเพื่อเปลี่ยนรหัสผ่าน", "placeholders": { "organization": { "content": "$1", @@ -2787,10 +2797,10 @@ "description": "Notification body when a login triggers an at-risk password change request and no change password domain is provided." }, "reviewAndChangeAtRiskPassword": { - "message": "Review and change one at-risk password" + "message": "ตรวจสอบและเปลี่ยนรหัสผ่านที่มีความเสี่ยง 1 รายการ" }, "reviewAndChangeAtRiskPasswordsPlural": { - "message": "Review and change $COUNT$ at-risk passwords", + "message": "ตรวจสอบและเปลี่ยนรหัสผ่านที่มีความเสี่ยง $COUNT$ รายการ", "placeholders": { "count": { "content": "$1", @@ -2799,52 +2809,52 @@ } }, "changeAtRiskPasswordsFaster": { - "message": "Change at-risk passwords faster" + "message": "เปลี่ยนรหัสผ่านที่มีความเสี่ยงได้เร็วยิ่งขึ้น" }, "changeAtRiskPasswordsFasterDesc": { - "message": "Update your settings so you can quickly autofill your passwords and generate new ones" + "message": "อัปเดตการตั้งค่าของคุณเพื่อให้สามารถป้อนรหัสผ่านอัตโนมัติและสร้างรหัสผ่านใหม่ได้อย่างรวดเร็ว" }, "reviewAtRiskLogins": { - "message": "Review at-risk logins" + "message": "ตรวจสอบข้อมูลเข้าสู่ระบบที่มีความเสี่ยง" }, "reviewAtRiskPasswords": { - "message": "Review at-risk passwords" + "message": "ตรวจสอบรหัสผ่านที่มีความเสี่ยง" }, "reviewAtRiskLoginsSlideDesc": { - "message": "Your organization passwords are at-risk because they are weak, reused, and/or exposed.", + "message": "รหัสผ่านองค์กรของคุณมีความเสี่ยงเนื่องจากไม่ปลอดภัย ใช้ซ้ำ และ/หรือรั่วไหล", "description": "Description of the review at-risk login slide on the at-risk password page carousel" }, "reviewAtRiskLoginSlideImgAltPeriod": { - "message": "Illustration of a list of logins that are at-risk." + "message": "ภาพประกอบรายการข้อมูลเข้าสู่ระบบที่มีความเสี่ยง" }, "generatePasswordSlideDesc": { - "message": "Quickly generate a strong, unique password with the Bitwarden autofill menu on the at-risk site.", + "message": "สร้างรหัสผ่านที่รัดกุมและไม่ซ้ำกันอย่างรวดเร็วด้วยเมนูป้อนอัตโนมัติของ Bitwarden บนเว็บไซต์ที่มีความเสี่ยง", "description": "Description of the generate password slide on the at-risk password page carousel" }, "generatePasswordSlideImgAltPeriod": { - "message": "Illustration of the Bitwarden autofill menu displaying a generated password." + "message": "ภาพประกอบเมนูป้อนอัตโนมัติของ Bitwarden แสดงรหัสผ่านที่ถูกสร้าง" }, "updateInBitwarden": { - "message": "Update in Bitwarden" + "message": "อัปเดตใน Bitwarden" }, "updateInBitwardenSlideDesc": { - "message": "Bitwarden will then prompt you to update the password in the password manager.", + "message": "จากนั้น Bitwarden จะแจ้งให้คุณอัปเดตรหัสผ่านในตัวจัดการรหัสผ่าน", "description": "Description of the update in Bitwarden slide on the at-risk password page carousel" }, "updateInBitwardenSlideImgAltPeriod": { - "message": "Illustration of a Bitwarden’s notification prompting the user to update the login." + "message": "ภาพประกอบการแจ้งเตือนของ Bitwarden ที่ให้ผู้ใช้อัปเดตข้อมูลเข้าสู่ระบบ" }, "turnOnAutofill": { - "message": "Turn on autofill" + "message": "เปิดการป้อนอัตโนมัติ" }, "turnedOnAutofill": { - "message": "Turned on autofill" + "message": "เปิดการป้อนอัตโนมัติแล้ว" }, "dismiss": { - "message": "Dismiss" + "message": "ปิด" }, "websiteItemLabel": { - "message": "Website $number$ (URI)", + "message": "เว็บไซต์ $number$ (URI)", "placeholders": { "number": { "content": "$1", @@ -2853,7 +2863,7 @@ } }, "excludedDomainsInvalidDomain": { - "message": "$DOMAIN$ is not a valid domain", + "message": "$DOMAIN$ ไม่ใช่โดเมนที่ถูกต้อง", "placeholders": { "domain": { "content": "$1", @@ -2862,20 +2872,20 @@ } }, "blockedDomainsSavedSuccess": { - "message": "Blocked domain changes saved" + "message": "บันทึกการเปลี่ยนแปลงโดเมนที่ถูกบล็อกแล้ว" }, "excludedDomainsSavedSuccess": { - "message": "Excluded domain changes saved" + "message": "บันทึกการเปลี่ยนแปลงโดเมนที่ยกเว้นแล้ว" }, "limitSendViews": { - "message": "Limit views" + "message": "จำกัดจำนวนการดู" }, "limitSendViewsHint": { - "message": "No one can view this Send after the limit is reached.", + "message": "จะไม่มีใครสามารถดู Send นี้ได้หลังจากครบกำหนด", "description": "Displayed under the limit views field on Send" }, "limitSendViewsCount": { - "message": "$ACCESSCOUNT$ views left", + "message": "ดูได้อีก $ACCESSCOUNT$ ครั้ง", "description": "Displayed under the limit views field on Send", "placeholders": { "accessCount": { @@ -2889,14 +2899,14 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDetails": { - "message": "Send details", + "message": "รายละเอียด Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTypeText": { "message": "ข้อความ" }, "sendTypeTextToShare": { - "message": "Text to share" + "message": "ข้อความที่จะแชร์" }, "sendTypeFile": { "message": "ไฟล์" @@ -2906,36 +2916,36 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "maxAccessCountReached": { - "message": "Max access count reached", + "message": "ถึงจำนวนการเข้าถึงสูงสุดแล้ว", "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "hideTextByDefault": { - "message": "Hide text by default" + "message": "ซ่อนข้อความโดยค่าเริ่มต้น" }, "expired": { - "message": "Expired" + "message": "หมดอายุ" }, "passwordProtected": { - "message": "Password protected" + "message": "มีการป้องกันด้วยรหัสผ่าน" }, "copyLink": { - "message": "Copy link" + "message": "คัดลอกลิงก์" }, "copySendLink": { - "message": "Copy Send link", + "message": "คัดลอกลิงก์ Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "removePassword": { - "message": "ลบรหัสผ่าน" + "message": "เอารหัสผ่านออก" }, "delete": { "message": "ลบ" }, "removedPassword": { - "message": "รหัสผ่านถูกลบแล้ว" + "message": "เอารหัสผ่านออกแล้ว" }, "deletedSend": { - "message": "Send ถูกลบแล้ว", + "message": "ลบ Send แล้ว", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -2943,21 +2953,21 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disabled": { - "message": "Disabled" + "message": "ปิดใช้งาน" }, "removePasswordConfirmation": { - "message": "คุณต้องการลบรหัสผ่านนี้ใช่หรือไม่" + "message": "ยืนยันที่จะเอารหัสผ่านออกหรือไม่" }, "deleteSend": { "message": "ลบ Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendConfirmation": { - "message": "คุณต้องการลบ Send นี้ใช่หรือไม่?", + "message": "ยืนยันที่จะลบ Send นี้หรือไม่", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendPermanentConfirmation": { - "message": "Are you sure you want to permanently delete this Send?", + "message": "ยืนยันที่จะลบ Send นี้ถาวรหรือไม่", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -2965,14 +2975,14 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletionDate": { - "message": "Deletion date" + "message": "วันที่ลบ" }, "deletionDateDescV2": { - "message": "The Send will be permanently deleted on this date.", + "message": "Send จะถูกลบถาวรในวันนี้", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration date" + "message": "วันที่หมดอายุ" }, "oneDay": { "message": "1 วัน" @@ -2987,41 +2997,41 @@ } }, "custom": { - "message": "Custom" + "message": "กำหนดเอง" }, "sendPasswordDescV3": { - "message": "Add an optional password for recipients to access this Send.", + "message": "เพิ่มรหัสผ่าน (ไม่บังคับ) เพื่อให้ผู้รับใช้เข้าถึง Send นี้", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createSend": { - "message": "New Send", + "message": "Send ใหม่", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New password" + "message": "รหัสผ่านใหม่" }, "sendDisabled": { - "message": "Send removed", + "message": "เอา Send ออกแล้ว", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { - "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "message": "เนื่องจากนโยบายองค์กร คุณสามารถลบ Send ที่มีอยู่ได้เท่านั้น", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Send created", + "message": "สร้าง Send แล้ว", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSendSuccessfully": { - "message": "Send created successfully!", + "message": "สร้าง Send สำเร็จแล้ว!", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHoursSingle": { - "message": "The Send will be available to anyone with the link for the next 1 hour.", + "message": "Send จะพร้อมใช้งานสำหรับทุกคนที่มีลิงก์ในอีก 1 ชั่วโมงข้างหน้า", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHours": { - "message": "The Send will be available to anyone with the link for the next $HOURS$ hours.", + "message": "Send จะพร้อมใช้งานสำหรับทุกคนที่มีลิงก์ในอีก $HOURS$ ชั่วโมงข้างหน้า", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "hours": { @@ -3031,11 +3041,11 @@ } }, "sendExpiresInDaysSingle": { - "message": "The Send will be available to anyone with the link for the next 1 day.", + "message": "Send จะพร้อมใช้งานสำหรับทุกคนที่มีลิงก์ในอีก 1 วันข้างหน้า", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInDays": { - "message": "The Send will be available to anyone with the link for the next $DAYS$ days.", + "message": "Send จะพร้อมใช้งานสำหรับทุกคนที่มีลิงก์ในอีก $DAYS$ วันข้างหน้า", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "days": { @@ -3045,113 +3055,113 @@ } }, "sendLinkCopied": { - "message": "Send link copied", + "message": "คัดลอกลิงก์ Send แล้ว", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send saved", + "message": "บันทึก Send แล้ว", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFilePopoutDialogText": { - "message": "Pop out extension?", + "message": "แยกหน้าต่างส่วนขยายหรือไม่", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFilePopoutDialogDesc": { - "message": "To create a file Send, you need to pop out the extension to a new window.", + "message": "หากต้องการสร้างไฟล์ Send คุณต้องแยกส่วนขยายออกมาเป็นหน้าต่างใหม่", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { - "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + "message": "หากต้องการเลือกไฟล์ ให้เปิดส่วนขยายในแถบด้านข้าง (ถ้าทำได้) หรือแยกเป็นหน้าต่างใหม่โดยคลิกที่แบนเนอร์นี้" }, "sendFirefoxFileWarning": { - "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + "message": "หากต้องการเลือกไฟล์โดยใช้ Firefox ให้เปิดส่วนขยายในแถบด้านข้างหรือแยกเป็นหน้าต่างใหม่โดยคลิกที่แบนเนอร์นี้" }, "sendSafariFileWarning": { - "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + "message": "หากต้องการเลือกไฟล์โดยใช้ Safari ให้แยกเป็นหน้าต่างใหม่โดยคลิกที่แบนเนอร์นี้" }, "popOut": { - "message": "Pop out" + "message": "แยกหน้าต่าง" }, "sendFileCalloutHeader": { - "message": "Before you start" + "message": "ก่อนที่คุณจะเริ่ม" }, "expirationDateIsInvalid": { - "message": "The expiration date provided is not valid." + "message": "วันที่หมดอายุที่ระบุไม่ถูกต้อง" }, "deletionDateIsInvalid": { - "message": "The deletion date provided is not valid." + "message": "วันที่ลบที่ระบุไม่ถูกต้อง" }, "expirationDateAndTimeRequired": { - "message": "An expiration date and time are required." + "message": "จำเป็นต้องระบุวันที่และเวลาหมดอายุ" }, "deletionDateAndTimeRequired": { - "message": "A deletion date and time are required." + "message": "จำเป็นต้องระบุวันที่และเวลาที่จะลบ" }, "dateParsingError": { - "message": "There was an error saving your deletion and expiration dates." + "message": "เกิดข้อผิดพลาดในการบันทึกวันที่ลบและวันที่หมดอายุ" }, "hideYourEmail": { - "message": "Hide your email address from viewers." + "message": "ซ่อนที่อยู่อีเมลของคุณจากผู้ชม" }, "passwordPrompt": { - "message": "การยืนยันให้ป้อนรหัสผ่านหลักอีกครั้ง" + "message": "แจ้งเตือนให้ป้อนรหัสผ่านหลักซ้ำ" }, "passwordConfirmation": { - "message": "Master password confirmation" + "message": "การยืนยันรหัสผ่านหลัก" }, "passwordConfirmationDesc": { - "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + "message": "การดำเนินการนี้ได้รับการป้องกัน หากต้องการดำเนินการต่อ โปรดป้อนรหัสผ่านหลักอีกครั้งเพื่อยืนยันตัวตน" }, "emailVerificationRequired": { - "message": "Email verification required" + "message": "จำเป็นต้องยืนยันอีเมล" }, "emailVerifiedV2": { - "message": "Email verified" + "message": "ยืนยันอีเมลแล้ว" }, "emailVerificationRequiredDesc": { - "message": "You must verify your email to use this feature. You can verify your email in the web vault." + "message": "คุณต้องยืนยันอีเมลเพื่อใช้งานฟีเจอร์นี้ คุณสามารถยืนยันอีเมลได้ในเว็บตู้นิรภัย" }, "masterPasswordSuccessfullySet": { - "message": "Master password successfully set" + "message": "ตั้งรหัสผ่านหลักสำเร็จแล้ว" }, "updatedMasterPassword": { - "message": "Updated master password" + "message": "อัปเดตรหัสผ่านหลักแล้ว" }, "updateMasterPassword": { - "message": "Update master password" + "message": "อัปเดตรหัสผ่านหลัก" }, "updateMasterPasswordWarning": { - "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "รหัสผ่านหลักของคุณเพิ่งถูกเปลี่ยนโดยผู้ดูแลระบบในองค์กร หากต้องการเข้าถึงตู้นิรภัย คุณต้องอัปเดตรหัสผ่านทันที การดำเนินการนี้จะทำให้คุณออกจากระบบเซสชันปัจจุบัน และต้องเข้าสู่ระบบใหม่ เซสชันที่ใช้งานอยู่บนอุปกรณ์อื่นอาจยังคงใช้งานได้นานสูงสุด 1 ชั่วโมง" }, "updateWeakMasterPasswordWarning": { - "message": "Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "รหัสผ่านหลักของคุณไม่ตรงตามนโยบายองค์กรอย่างน้อยหนึ่งข้อ หากต้องการเข้าถึงตู้นิรภัย คุณต้องอัปเดตรหัสผ่านหลักทันที การดำเนินการนี้จะทำให้คุณออกจากระบบเซสชันปัจจุบัน และต้องเข้าสู่ระบบใหม่ เซสชันที่ใช้งานอยู่บนอุปกรณ์อื่นอาจยังคงใช้งานได้นานสูงสุด 1 ชั่วโมง" }, "tdeDisabledMasterPasswordRequired": { - "message": "Your organization has disabled trusted device encryption. Please set a master password to access your vault." + "message": "องค์กรของคุณปิดใช้งานการเข้ารหัสอุปกรณ์ที่เชื่อถือได้ โปรดตั้งรหัสผ่านหลักเพื่อเข้าถึงตู้นิรภัยของคุณ" }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic enrollment" + "message": "การลงทะเบียนอัตโนมัติ" }, "resetPasswordAutoEnrollInviteWarning": { - "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + "message": "องค์กรนี้มีนโยบายองค์กรที่จะลงทะเบียนคุณในการรีเซ็ตรหัสผ่านโดยอัตโนมัติ การลงทะเบียนจะอนุญาตให้ผู้ดูแลระบบขององค์กรเปลี่ยนรหัสผ่านหลักของคุณได้" }, "selectFolder": { - "message": "Select folder..." + "message": "เลือกโฟลเดอร์..." }, "noFoldersFound": { - "message": "No folders found", + "message": "ไม่พบโฟลเดอร์", "description": "Used as a message within the notification bar when no folders are found" }, "orgPermissionsUpdatedMustSetPassword": { - "message": "Your organization permissions were updated, requiring you to set a master password.", + "message": "สิทธิ์ในองค์กรของคุณได้รับการอัปเดต ซึ่งกำหนดให้คุณต้องตั้งรหัสผ่านหลัก", "description": "Used as a card title description on the set password page to explain why the user is there" }, "orgRequiresYouToSetPassword": { - "message": "Your organization requires you to set a master password.", + "message": "องค์กรของคุณกำหนดให้คุณต้องตั้งรหัสผ่านหลัก", "description": "Used as a card title description on the set password page to explain why the user is there" }, "cardMetrics": { - "message": "out of $TOTAL$", + "message": "จาก $TOTAL$", "placeholders": { "total": { "content": "$1", @@ -3160,20 +3170,20 @@ } }, "verificationRequired": { - "message": "Verification required", + "message": "จำเป็นต้องยืนยันตัวตน", "description": "Default title for the user verification dialog." }, "hours": { - "message": "Hours" + "message": "ชั่วโมง" }, "minutes": { - "message": "Minutes" + "message": "นาที" }, "vaultTimeoutPolicyAffectingOptions": { - "message": "Enterprise policy requirements have been applied to your timeout options" + "message": "ข้อกำหนดนโยบายองค์กรถูกนำไปใช้กับตัวเลือกเวลาหมดเวลาของคุณแล้ว" }, "vaultTimeoutPolicyInEffect": { - "message": "Your organization policies have set your maximum allowed vault timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "message": "นโยบายองค์กรกำหนดระยะเวลาหมดเวลาของตู้นิรภัยสูงสุดไว้ที่ $HOURS$ ชั่วโมง $MINUTES$ นาที", "placeholders": { "hours": { "content": "$1", @@ -3186,7 +3196,7 @@ } }, "vaultTimeoutPolicyInEffect1": { - "message": "$HOURS$ hour(s) and $MINUTES$ minute(s) maximum.", + "message": "สูงสุด $HOURS$ ชั่วโมง $MINUTES$ นาที", "placeholders": { "hours": { "content": "$1", @@ -3199,7 +3209,7 @@ } }, "vaultTimeoutPolicyMaximumError": { - "message": "Timeout exceeds the restriction set by your organization: $HOURS$ hour(s) and $MINUTES$ minute(s) maximum", + "message": "เวลาหมดเวลาเกินข้อจำกัดที่องค์กรกำหนด: สูงสุด $HOURS$ ชั่วโมง $MINUTES$ นาที", "placeholders": { "hours": { "content": "$1", @@ -3212,7 +3222,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", + "message": "นโยบายองค์กรมีผลต่อเวลาหมดเวลาของตู้นิรภัย อนุญาตให้หมดเวลาสูงสุด $HOURS$ ชั่วโมง $MINUTES$ นาที การดำเนินการเมื่อตู้นิรภัยหมดเวลาตั้งค่าไว้ที่ $ACTION$", "placeholders": { "hours": { "content": "$1", @@ -3229,7 +3239,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Your organization policies have set your vault timeout action to $ACTION$.", + "message": "นโยบายองค์กรกำหนดการดำเนินการเมื่อตู้นิรภัยหมดเวลาเป็น $ACTION$", "placeholders": { "action": { "content": "$1", @@ -3238,52 +3248,52 @@ } }, "vaultTimeoutTooLarge": { - "message": "Your vault timeout exceeds the restrictions set by your organization." + "message": "เวลาหมดเวลาของตู้นิรภัยเกินข้อจำกัดที่องค์กรกำหนด" }, "vaultExportDisabled": { - "message": "Vault export unavailable" + "message": "ไม่สามารถส่งออกตู้นิรภัยได้" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your individual vault." + "message": "นโยบายองค์กรอย่างน้อยหนึ่งรายการป้องกันไม่ให้คุณส่งออกตู้นิรภัยส่วนตัว" }, "copyCustomFieldNameInvalidElement": { - "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + "message": "ไม่สามารถระบุองค์ประกอบแบบฟอร์มที่ถูกต้องได้ ลองตรวจสอบ HTML แทน" }, "copyCustomFieldNameNotUnique": { - "message": "No unique identifier found." + "message": "ไม่พบตัวระบุที่ไม่ซ้ำกัน" }, "organizationName": { - "message": "Organization name" + "message": "ชื่อองค์กร" }, "keyConnectorDomain": { - "message": "Key Connector domain" + "message": "โดเมน Key Connector" }, "leaveOrganization": { - "message": "Leave organization" + "message": "ออกจากองค์กร" }, "removeMasterPassword": { - "message": "Remove master password" + "message": "เอารหัสผ่านหลักออก" }, "removedMasterPassword": { - "message": "Master password removed" + "message": "เอารหัสผ่านหลักออกแล้ว" }, "leaveOrganizationConfirmation": { - "message": "Are you sure you want to leave this organization?" + "message": "ยืนยันที่จะออกจากองค์กรนี้หรือไม่" }, "leftOrganization": { - "message": "You have left the organization." + "message": "คุณออกจากองค์กรแล้ว" }, "toggleCharacterCount": { - "message": "Toggle character count" + "message": "สลับการนับตัวอักษร" }, "sessionTimeout": { - "message": "Your session has timed out. Please go back and try logging in again." + "message": "เซสชันของคุณหมดเวลาแล้ว โปรดย้อนกลับและลองเข้าสู่ระบบอีกครั้ง" }, "exportingPersonalVaultTitle": { - "message": "Exporting individual vault" + "message": "กำลังส่งออกตู้นิรภัยส่วนตัว" }, "exportingIndividualVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", + "message": "เฉพาะรายการในตู้นิรภัยส่วนตัวที่เชื่อมโยงกับ $EMAIL$ เท่านั้นที่จะถูกส่งออก รายการในตู้นิรภัยองค์กรจะไม่รวมอยู่ด้วย ระบบจะส่งออกเฉพาะข้อมูลรายการในตู้นิรภัยและไม่รวมไฟล์แนบที่เกี่ยวข้อง", "placeholders": { "email": { "content": "$1", @@ -3292,7 +3302,7 @@ } }, "exportingIndividualVaultWithAttachmentsDescription": { - "message": "Only the individual vault items including attachments associated with $EMAIL$ will be exported. Organization vault items will not be included", + "message": "เฉพาะรายการในตู้นิรภัยส่วนตัวและไฟล์แนบที่เชื่อมโยงกับ $EMAIL$ เท่านั้นที่จะถูกส่งออก รายการในตู้นิรภัยองค์กรจะไม่รวมอยู่ด้วย", "placeholders": { "email": { "content": "$1", @@ -3301,10 +3311,10 @@ } }, "exportingOrganizationVaultTitle": { - "message": "Exporting organization vault" + "message": "กำลังส่งออกตู้นิรภัยองค์กร" }, "exportingOrganizationVaultDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Items in individual vaults or other organizations will not be included.", + "message": "เฉพาะตู้นิรภัยองค์กรที่เชื่อมโยงกับ $ORGANIZATION$ เท่านั้นที่จะถูกส่งออก รายการในตู้นิรภัยส่วนตัวหรือองค์กรอื่นจะไม่รวมอยู่ด้วย", "placeholders": { "organization": { "content": "$1", @@ -3313,7 +3323,7 @@ } }, "exportingOrganizationVaultFromPasswordManagerWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported.", + "message": "เฉพาะตู้นิรภัยองค์กรที่เชื่อมโยงกับ $ORGANIZATION$ เท่านั้นที่จะถูกส่งออก", "placeholders": { "organization": { "content": "$1", @@ -3322,7 +3332,7 @@ } }, "exportingOrganizationVaultFromAdminConsoleWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. My items collections will not be included.", + "message": "เฉพาะตู้นิรภัยองค์กรที่เชื่อมโยงกับ $ORGANIZATION$ เท่านั้นที่จะถูกส่งออก คอลเลกชันรายการของฉันจะไม่รวมอยู่ด้วย", "placeholders": { "organization": { "content": "$1", @@ -3331,33 +3341,33 @@ } }, "error": { - "message": "Error" + "message": "ข้อผิดพลาด" }, "decryptionError": { - "message": "Decryption error" + "message": "ข้อผิดพลาดในการถอดรหัส" }, "errorGettingAutoFillData": { - "message": "Error getting autofill data" + "message": "เกิดข้อผิดพลาดในการดึงข้อมูลป้อนอัตโนมัติ" }, "couldNotDecryptVaultItemsBelow": { - "message": "Bitwarden could not decrypt the vault item(s) listed below." + "message": "Bitwarden ไม่สามารถถอดรหัสรายการตู้นิรภัยที่ระบุไว้ด้านล่าง" }, "contactCSToAvoidDataLossPart1": { - "message": "Contact customer success", + "message": "ติดต่อทีม Customer Success", "description": "This is part of a larger sentence. The full sentence will read 'Contact customer success to avoid additional data loss.'" }, "contactCSToAvoidDataLossPart2": { - "message": "to avoid additional data loss.", + "message": "เพื่อหลีกเลี่ยงการสูญหายของข้อมูลเพิ่มเติม", "description": "This is part of a larger sentence. The full sentence will read 'Contact customer success to avoid additional data loss.'" }, "generateUsername": { - "message": "Generate username" + "message": "สร้างชื่อผู้ใช้" }, "generateEmail": { - "message": "Generate email" + "message": "สร้างอีเมล" }, "spinboxBoundariesHint": { - "message": "Value must be between $MIN$ and $MAX$.", + "message": "ค่าต้องอยู่ระหว่าง $MIN$ ถึง $MAX$", "description": "Explains spin box minimum and maximum values to the user", "placeholders": { "min": { @@ -3371,7 +3381,7 @@ } }, "passwordLengthRecommendationHint": { - "message": " Use $RECOMMENDED$ characters or more to generate a strong password.", + "message": " ใช้ $RECOMMENDED$ ตัวอักษรขึ้นไปเพื่อสร้างรหัสผ่านที่รัดกุม", "description": "Appended to `spinboxBoundariesHint` to recommend a length to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).", "placeholders": { "recommended": { @@ -3381,7 +3391,7 @@ } }, "passphraseNumWordsRecommendationHint": { - "message": " Use $RECOMMENDED$ words or more to generate a strong passphrase.", + "message": " ใช้ $RECOMMENDED$ คำขึ้นไปเพื่อสร้างวลีรหัสผ่านที่รัดกุม", "description": "Appended to `spinboxBoundariesHint` to recommend a number of words to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).", "placeholders": { "recommended": { @@ -3391,46 +3401,46 @@ } }, "plusAddressedEmail": { - "message": "Plus addressed email", + "message": "อีเมลแบบ Plus addressing", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { - "message": "Use your email provider's sub-addressing capabilities." + "message": "ใช้ความสามารถ sub-addressing ของผู้ให้บริการอีเมลของคุณ" }, "catchallEmail": { - "message": "Catch-all email" + "message": "อีเมลแบบ Catch-all" }, "catchallEmailDesc": { - "message": "Use your domain's configured catch-all inbox." + "message": "ใช้อินบ็อกซ์แบบ Catch-all ที่กำหนดค่าไว้สำหรับโดเมนของคุณ" }, "random": { - "message": "Random" + "message": "สุ่ม" }, "randomWord": { - "message": "Random word" + "message": "คำสุ่ม" }, "websiteName": { - "message": "Website name" + "message": "ชื่อเว็บไซต์" }, "service": { - "message": "Service" + "message": "บริการ" }, "forwardedEmail": { - "message": "Forwarded email alias" + "message": "นามแฝงอีเมลแบบส่งต่อ" }, "forwardedEmailDesc": { - "message": "Generate an email alias with an external forwarding service." + "message": "สร้างนามแฝงอีเมลด้วยบริการส่งต่อภายนอก" }, "forwarderDomainName": { - "message": "Email domain", + "message": "โดเมนอีเมล", "description": "Labels the domain name email forwarder service option" }, "forwarderDomainNameHint": { - "message": "Choose a domain that is supported by the selected service", + "message": "เลือกโดเมนที่บริการที่เลือกไว้รองรับ", "description": "Guidance provided for email forwarding services that support multiple email domains." }, "forwarderError": { - "message": "$SERVICENAME$ error: $ERRORMESSAGE$", + "message": "ข้อผิดพลาด $SERVICENAME$: $ERRORMESSAGE$", "description": "Reports an error returned by a forwarding service to the user.", "placeholders": { "servicename": { @@ -3444,11 +3454,11 @@ } }, "forwarderGeneratedBy": { - "message": "Generated by Bitwarden.", + "message": "สร้างโดย Bitwarden", "description": "Displayed with the address on the forwarding service's configuration screen." }, "forwarderGeneratedByWithWebsite": { - "message": "Website: $WEBSITE$. Generated by Bitwarden.", + "message": "เว็บไซต์: $WEBSITE$ สร้างโดย Bitwarden", "description": "Displayed with the address on the forwarding service's configuration screen.", "placeholders": { "WEBSITE": { @@ -3458,7 +3468,7 @@ } }, "forwaderInvalidToken": { - "message": "Invalid $SERVICENAME$ API token", + "message": "โทเค็น API ของ $SERVICENAME$ ไม่ถูกต้อง", "description": "Displayed when the user's API token is empty or rejected by the forwarding service.", "placeholders": { "servicename": { @@ -3468,7 +3478,7 @@ } }, "forwaderInvalidTokenWithMessage": { - "message": "Invalid $SERVICENAME$ API token: $ERRORMESSAGE$", + "message": "โทเค็น API ของ $SERVICENAME$ ไม่ถูกต้อง: $ERRORMESSAGE$", "description": "Displayed when the user's API token is rejected by the forwarding service with an error message.", "placeholders": { "servicename": { @@ -3482,7 +3492,7 @@ } }, "forwaderInvalidOperation": { - "message": "$SERVICENAME$ refused your request. Please contact your service provider for assistance.", + "message": "$SERVICENAME$ ปฏิเสธคำขอของคุณ โปรดติดต่อผู้ให้บริการเพื่อขอความช่วยเหลือ", "description": "Displayed when the user is forbidden from using the API by the forwarding service.", "placeholders": { "servicename": { @@ -3492,7 +3502,7 @@ } }, "forwaderInvalidOperationWithMessage": { - "message": "$SERVICENAME$ refused your request: $ERRORMESSAGE$", + "message": "$SERVICENAME$ ปฏิเสธคำขอของคุณ: $ERRORMESSAGE$", "description": "Displayed when the user is forbidden from using the API by the forwarding service with an error message.", "placeholders": { "servicename": { @@ -3506,7 +3516,7 @@ } }, "forwarderNoAccountId": { - "message": "Unable to obtain $SERVICENAME$ masked email account ID.", + "message": "ไม่สามารถรับ ID บัญชีอีเมลแบบปิดบังตัวตนของ $SERVICENAME$", "description": "Displayed when the forwarding service fails to return an account ID.", "placeholders": { "servicename": { @@ -3516,7 +3526,7 @@ } }, "forwarderNoDomain": { - "message": "Invalid $SERVICENAME$ domain.", + "message": "โดเมน $SERVICENAME$ ไม่ถูกต้อง", "description": "Displayed when the domain is empty or domain authorization failed at the forwarding service.", "placeholders": { "servicename": { @@ -3526,7 +3536,7 @@ } }, "forwarderNoUrl": { - "message": "Invalid $SERVICENAME$ url.", + "message": "URL ของ $SERVICENAME$ ไม่ถูกต้อง", "description": "Displayed when the url of the forwarding service wasn't supplied.", "placeholders": { "servicename": { @@ -3536,7 +3546,7 @@ } }, "forwarderUnknownError": { - "message": "Unknown $SERVICENAME$ error occurred.", + "message": "เกิดข้อผิดพลาด $SERVICENAME$ ที่ไม่รู้จัก", "description": "Displayed when the forwarding service failed due to an unknown error.", "placeholders": { "servicename": { @@ -3546,7 +3556,7 @@ } }, "forwarderUnknownForwarder": { - "message": "Unknown forwarder: '$SERVICENAME$'.", + "message": "ไม่รู้จักบริการส่งต่อ: '$SERVICENAME$'", "description": "Displayed when the forwarding service is not supported.", "placeholders": { "servicename": { @@ -3556,29 +3566,29 @@ } }, "hostname": { - "message": "Hostname", + "message": "ชื่อโฮสต์", "description": "Part of a URL." }, "apiAccessToken": { - "message": "API Access Token" + "message": "โทเค็นการเข้าถึง API" }, "apiKey": { - "message": "API Key" + "message": "คีย์ API" }, "ssoKeyConnectorError": { - "message": "Key connector error: make sure key connector is available and working correctly." + "message": "ข้อผิดพลาด Key Connector: ตรวจสอบให้แน่ใจว่า Key Connector พร้อมใช้งานและทำงานอย่างถูกต้อง" }, "premiumSubcriptionRequired": { - "message": "Premium subscription required" + "message": "จำเป็นต้องสมัครสมาชิกพรีเมียม" }, "organizationIsDisabled": { - "message": "Organization suspended." + "message": "องค์กรถูกระงับ" }, "disabledOrganizationFilterError": { - "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "ไม่สามารถเข้าถึงรายการในองค์กรที่ถูกระงับได้ ติดต่อเจ้าขององค์กรเพื่อขอความช่วยเหลือ" }, "loggingInTo": { - "message": "Logging in to $DOMAIN$", + "message": "กำลังเข้าสู่ระบบ $DOMAIN$", "placeholders": { "domain": { "content": "$1", @@ -3587,16 +3597,16 @@ } }, "serverVersion": { - "message": "Server version" + "message": "เวอร์ชันเซิร์ฟเวอร์" }, "selfHostedServer": { - "message": "self-hosted" + "message": "โฮสต์เอง" }, "thirdParty": { - "message": "Third-party" + "message": "บุคคลที่สาม" }, "thirdPartyServerMessage": { - "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", + "message": "เชื่อมต่อกับเซิร์ฟเวอร์บุคคลที่สาม $SERVERNAME$ แล้ว โปรดตรวจสอบข้อผิดพลาดโดยใช้เซิร์ฟเวอร์อย่างเป็นทางการ หรือรายงานข้อผิดพลาดไปยังเซิร์ฟเวอร์บุคคลที่สาม", "placeholders": { "servername": { "content": "$1", @@ -3605,7 +3615,7 @@ } }, "lastSeenOn": { - "message": "last seen on: $DATE$", + "message": "ใช้งานล่าสุดเมื่อ: $DATE$", "placeholders": { "date": { "content": "$1", @@ -3614,58 +3624,58 @@ } }, "loginWithMasterPassword": { - "message": "Log in with master password" + "message": "เข้าสู่ระบบด้วยรหัสผ่านหลัก" }, "newAroundHere": { - "message": "New around here?" + "message": "เพิ่งเคยใช้งานใช่หรือไม่" }, "rememberEmail": { - "message": "Remember email" + "message": "จดจำอีเมล" }, "loginWithDevice": { - "message": "Log in with device" + "message": "เข้าสู่ระบบด้วยอุปกรณ์" }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "วลีลายนิ้วมือ" }, "fingerprintMatchInfo": { - "message": "โปรดตรวจสอบให้แน่ใจว่าห้องนิรภัยของคุณปลดล็อกอยู่ และลายนิ้วมือตรงกันบนอุปกรณ์อื่น" + "message": "โปรดตรวจสอบให้แน่ใจว่าตู้นิรภัยปลดล็อกอยู่ และวลีลายนิ้วมือตรงกับอุปกรณ์อีกเครื่อง" }, "resendNotification": { - "message": "Resend notification" + "message": "ส่งการแจ้งเตือนอีกครั้ง" }, "viewAllLogInOptions": { - "message": "View all log in options" + "message": "ดูตัวเลือกการเข้าสู่ระบบทั้งหมด" }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "ส่งการแจ้งเตือนไปยังอุปกรณ์ของคุณแล้ว" }, "notificationSentDevicePart1": { - "message": "Unlock Bitwarden on your device or on the" + "message": "ปลดล็อก Bitwarden บนอุปกรณ์ของคุณหรือบน" }, "notificationSentDeviceAnchor": { - "message": "web app" + "message": "เว็บแอป" }, "notificationSentDevicePart2": { - "message": "Make sure the Fingerprint phrase matches the one below before approving." + "message": "ตรวจสอบให้แน่ใจว่าวลีลายนิ้วมือตรงกับด้านล่างก่อนอนุมัติ" }, "aNotificationWasSentToYourDevice": { - "message": "A notification was sent to your device" + "message": "ส่งการแจ้งเตือนไปยังอุปกรณ์ของคุณแล้ว" }, "youWillBeNotifiedOnceTheRequestIsApproved": { - "message": "You will be notified once the request is approved" + "message": "คุณจะได้รับแจ้งเมื่อคำขอได้รับการอนุมัติ" }, "needAnotherOptionV1": { - "message": "Need another option?" + "message": "ต้องการตัวเลือกอื่นหรือไม่" }, "loginInitiated": { - "message": "Login initiated" + "message": "เริ่มการเข้าสู่ระบบแล้ว" }, "logInRequestSent": { - "message": "Request sent" + "message": "ส่งคำขอแล้ว" }, "loginRequestApprovedForEmailOnDevice": { - "message": "Login request approved for $EMAIL$ on $DEVICE$", + "message": "อนุมัติคำขอเข้าสู่ระบบสำหรับ $EMAIL$ บน $DEVICE$ แล้ว", "placeholders": { "email": { "content": "$1", @@ -3678,40 +3688,40 @@ } }, "youDeniedLoginAttemptFromAnotherDevice": { - "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + "message": "คุณปฏิเสธความพยายามเข้าสู่ระบบจากอุปกรณ์อื่น หากนี่คือคุณ ให้ลองเข้าสู่ระบบด้วยอุปกรณ์อีกครั้ง" }, "device": { - "message": "Device" + "message": "อุปกรณ์" }, "loginStatus": { - "message": "Login status" + "message": "สถานะการเข้าสู่ระบบ" }, "masterPasswordChanged": { - "message": "Master password saved" + "message": "บันทึกรหัสผ่านหลักแล้ว" }, "exposedMasterPassword": { - "message": "Exposed Master Password" + "message": "รหัสผ่านหลักรั่วไหล" }, "exposedMasterPasswordDesc": { - "message": "Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?" + "message": "พบรหัสผ่านในเหตุการณ์ข้อมูลรั่วไหล ใช้รหัสผ่านที่ไม่ซ้ำกันเพื่อปกป้องบัญชีของคุณ ยืนยันที่จะใช้รหัสผ่านที่รั่วไหลหรือไม่" }, "weakAndExposedMasterPassword": { - "message": "Weak and Exposed Master Password" + "message": "รหัสผ่านหลักไม่ปลอดภัยและรั่วไหล" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?" + "message": "พบรหัสผ่านที่ไม่ปลอดภัยและอยู่ในเหตุการณ์ข้อมูลรั่วไหล ใช้รหัสผ่านที่รัดกุมและไม่ซ้ำกันเพื่อปกป้องบัญชีของคุณ ยืนยันที่จะใช้รหัสผ่านนี้หรือไม่" }, "checkForBreaches": { - "message": "Check known data breaches for this password" + "message": "ตรวจสอบเหตุการณ์ข้อมูลรั่วไหลสำหรับรหัสผ่านนี้" }, "important": { - "message": "Important:" + "message": "สำคัญ:" }, "masterPasswordHint": { - "message": "Your master password cannot be recovered if you forget it!" + "message": "รหัสผ่านหลักไม่สามารถกู้คืนได้หากคุณลืม!" }, "characterMinimum": { - "message": "$LENGTH$ character minimum", + "message": "ขั้นต่ำ $LENGTH$ ตัวอักษร", "placeholders": { "length": { "content": "$1", @@ -3720,10 +3730,10 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Your organization policies have turned on autofill on page load." + "message": "นโยบายองค์กรของคุณเปิดใช้งานการป้อนอัตโนมัติเมื่อโหลดหน้าเว็บ" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", + "message": "เลือกรายการจากหน้านี้ ใช้ทางลัด $COMMAND$ หรือสำรวจตัวเลือกอื่น ๆ ในการตั้งค่า", "placeholders": { "command": { "content": "$1", @@ -3732,31 +3742,31 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this screen, or explore other options in settings." + "message": "เลือกรายการจากหน้านี้ หรือสำรวจตัวเลือกอื่น ๆ ในการตั้งค่า" }, "gotIt": { - "message": "Got it" + "message": "เข้าใจแล้ว" }, "autofillSettings": { - "message": "Autofill settings" + "message": "การตั้งค่าการป้อนอัตโนมัติ" }, "autofillKeyboardShortcutSectionTitle": { - "message": "Autofill shortcut" + "message": "ทางลัดการป้อนอัตโนมัติ" }, "autofillKeyboardShortcutUpdateLabel": { - "message": "Change shortcut" + "message": "เปลี่ยนทางลัด" }, "autofillKeyboardManagerShortcutsLabel": { - "message": "Manage shortcuts" + "message": "จัดการทางลัด" }, "autofillShortcut": { - "message": "Autofill keyboard shortcut" + "message": "คีย์ลัดการป้อนอัตโนมัติ" }, "autofillLoginShortcutNotSet": { - "message": "The autofill login shortcut is not set. Change this in the browser's settings." + "message": "ยังไม่ได้ตั้งค่าทางลัดการป้อนข้อมูลเข้าสู่ระบบ เปลี่ยนค่านี้ได้ในการตั้งค่าของเบราว์เซอร์" }, "autofillLoginShortcutText": { - "message": "The autofill login shortcut is $COMMAND$. Manage all shortcuts in the browser's settings.", + "message": "ทางลัดการป้อนข้อมูลเข้าสู่ระบบคือ $COMMAND$ จัดการทางลัดทั้งหมดได้ในการตั้งค่าของเบราว์เซอร์", "placeholders": { "command": { "content": "$1", @@ -3765,7 +3775,7 @@ } }, "autofillShortcutTextSafari": { - "message": "Default autofill shortcut: $COMMAND$.", + "message": "ทางลัดการป้อนอัตโนมัติเริ่มต้น: $COMMAND$", "placeholders": { "command": { "content": "$1", @@ -3774,34 +3784,34 @@ } }, "opensInANewWindow": { - "message": "Opens in a new window" + "message": "เปิดในหน้าต่างใหม่" }, "rememberThisDeviceToMakeFutureLoginsSeamless": { - "message": "Remember this device to make future logins seamless" + "message": "จดจำอุปกรณ์นี้เพื่อให้การเข้าสู่ระบบในอนาคตราบรื่นยิ่งขึ้น" }, "manageDevices": { - "message": "Manage devices" + "message": "จัดการอุปกรณ์" }, "currentSession": { - "message": "Current session" + "message": "เซสชันปัจจุบัน" }, "mobile": { - "message": "Mobile", + "message": "มือถือ", "description": "Mobile app" }, "extension": { - "message": "Extension", + "message": "ส่วนขยาย", "description": "Browser extension/addon" }, "desktop": { - "message": "Desktop", + "message": "เดสก์ท็อป", "description": "Desktop app" }, "webVault": { - "message": "Web vault" + "message": "เว็บตู้นิรภัย" }, "webApp": { - "message": "Web app" + "message": "เว็บแอป" }, "cli": { "message": "CLI" @@ -3811,22 +3821,22 @@ "description": "Software Development Kit" }, "requestPending": { - "message": "Request pending" + "message": "คำขอรอดำเนินการ" }, "firstLogin": { - "message": "First login" + "message": "เข้าสู่ระบบครั้งแรก" }, "trusted": { - "message": "Trusted" + "message": "เชื่อถือได้" }, "needsApproval": { - "message": "Needs approval" + "message": "รอการอนุมัติ" }, "devices": { - "message": "Devices" + "message": "อุปกรณ์" }, "accessAttemptBy": { - "message": "Access attempt by $EMAIL$", + "message": "ความพยายามเข้าถึงโดย $EMAIL$", "placeholders": { "email": { "content": "$1", @@ -3835,31 +3845,31 @@ } }, "confirmAccess": { - "message": "Confirm access" + "message": "ยืนยันการเข้าถึง" }, "denyAccess": { - "message": "Deny access" + "message": "ปฏิเสธการเข้าถึง" }, "time": { - "message": "Time" + "message": "เวลา" }, "deviceType": { - "message": "Device Type" + "message": "ประเภทอุปกรณ์" }, "loginRequest": { - "message": "Login request" + "message": "คำขอเข้าสู่ระบบ" }, "thisRequestIsNoLongerValid": { - "message": "This request is no longer valid." + "message": "คำขอนี้ใช้ไม่ได้อีกต่อไป" }, "loginRequestHasAlreadyExpired": { - "message": "Login request has already expired." + "message": "คำขอเข้าสู่ระบบหมดอายุแล้ว" }, "justNow": { - "message": "Just now" + "message": "เมื่อสักครู่" }, "requestedXMinutesAgo": { - "message": "Requested $MINUTES$ minutes ago", + "message": "ร้องขอเมื่อ $MINUTES$ นาทีที่แล้ว", "placeholders": { "minutes": { "content": "$1", @@ -3868,136 +3878,136 @@ } }, "deviceApprovalRequired": { - "message": "Device approval required. Select an approval option below:" + "message": "จำเป็นต้องอนุมัติอุปกรณ์ เลือกตัวเลือกการอนุมัติด้านล่าง:" }, "deviceApprovalRequiredV2": { - "message": "Device approval required" + "message": "จำเป็นต้องอนุมัติอุปกรณ์" }, "selectAnApprovalOptionBelow": { - "message": "Select an approval option below" + "message": "เลือกตัวเลือกการอนุมัติด้านล่าง" }, "rememberThisDevice": { - "message": "Remember this device" + "message": "จดจำอุปกรณ์นี้" }, "uncheckIfPublicDevice": { - "message": "Uncheck if using a public device" + "message": "ไม่ต้องเลือกหากใช้อุปกรณ์สาธารณะ" }, "approveFromYourOtherDevice": { - "message": "Approve from your other device" + "message": "อนุมัติจากอุปกรณ์อื่นของคุณ" }, "requestAdminApproval": { - "message": "Request admin approval" + "message": "ขอการอนุมัติจากผู้ดูแลระบบ" }, "unableToCompleteLogin": { - "message": "Unable to complete login" + "message": "ไม่สามารถเข้าสู่ระบบให้เสร็จสมบูรณ์ได้" }, "loginOnTrustedDeviceOrAskAdminToAssignPassword": { - "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + "message": "คุณต้องเข้าสู่ระบบบนอุปกรณ์ที่เชื่อถือได้ หรือขอให้ผู้ดูแลระบบกำหนดรหัสผ่านให้คุณ" }, "ssoIdentifierRequired": { - "message": "Organization SSO identifier is required." + "message": "จำเป็นต้องระบุตัวระบุ SSO ขององค์กร" }, "creatingAccountOn": { - "message": "Creating account on" + "message": "กำลังสร้างบัญชีบน" }, "checkYourEmail": { - "message": "Check your email" + "message": "ตรวจสอบอีเมลของคุณ" }, "followTheLinkInTheEmailSentTo": { - "message": "Follow the link in the email sent to" + "message": "คลิกลิงก์ในอีเมลที่ส่งไปที่" }, "andContinueCreatingYourAccount": { - "message": "and continue creating your account." + "message": "และดำเนินการสร้างบัญชีต่อ" }, "noEmail": { - "message": "No email?" + "message": "ไม่ได้รับอีเมลใช่ไหม" }, "goBack": { - "message": "Go back" + "message": "ย้อนกลับ" }, "toEditYourEmailAddress": { - "message": "to edit your email address." + "message": "เพื่อแก้ไขที่อยู่อีเมลของคุณ" }, "eu": { "message": "EU", "description": "European Union" }, "accessDenied": { - "message": "Access denied. You do not have permission to view this page." + "message": "การเข้าถึงถูกปฏิเสธ คุณไม่มีสิทธิ์ดูหน้านี้" }, "general": { - "message": "General" + "message": "ทั่วไป" }, "display": { - "message": "Display" + "message": "การแสดงผล" }, "accountSuccessfullyCreated": { - "message": "Account successfully created!" + "message": "สร้างบัญชีสำเร็จแล้ว!" }, "adminApprovalRequested": { - "message": "Admin approval requested" + "message": "ส่งคำขออนุมัติจากผู้ดูแลระบบแล้ว" }, "adminApprovalRequestSentToAdmins": { - "message": "Your request has been sent to your admin." + "message": "ส่งคำขอของคุณไปยังผู้ดูแลระบบแล้ว" }, "troubleLoggingIn": { - "message": "Trouble logging in?" + "message": "มีปัญหาในการเข้าสู่ระบบใช่หรือไม่" }, "loginApproved": { - "message": "Login approved" + "message": "อนุมัติการเข้าสู่ระบบแล้ว" }, "userEmailMissing": { - "message": "User email missing" + "message": "ไม่พบอีเมลผู้ใช้" }, "activeUserEmailNotFoundLoggingYouOut": { - "message": "Active user email not found. Logging you out." + "message": "ไม่พบอีเมลผู้ใช้ที่ใช้งานอยู่ กำลังออกจากระบบ" }, "deviceTrusted": { - "message": "Device trusted" + "message": "อุปกรณ์ที่เชื่อถือได้" }, "trustOrganization": { - "message": "Trust organization" + "message": "เชื่อถือองค์กร" }, "trust": { - "message": "Trust" + "message": "เชื่อถือ" }, "doNotTrust": { - "message": "Do not trust" + "message": "ไม่เชื่อถือ" }, "organizationNotTrusted": { - "message": "Organization is not trusted" + "message": "องค์กรไม่น่าเชื่อถือ" }, "emergencyAccessTrustWarning": { - "message": "เพื่อความปลอดภัยของบัญชีของคุณ โปรดยืนยันว่าคุณได้ให้สิทธิ์การเข้าถึงในกรณีฉุกเฉินแก่ผู้ใช้นี้ และลายนิ้วมือของผู้ใช้ตรงกับที่แสดงในบัญชีของพวกเขาเท่านั้น" + "message": "เพื่อความปลอดภัยของบัญชี โปรดยืนยันเฉพาะเมื่อคุณได้ให้สิทธิ์การเข้าถึงฉุกเฉินแก่ผู้ใช้นี้ และลายนิ้วมือของพวกเขาตรงกับที่แสดงในบัญชีของพวกเขา" }, "orgTrustWarning": { - "message": "เพื่อความปลอดภัยของบัญชีของคุณ ให้ดำเนินการต่อเมื่อคุณเป็นสมาชิกขององค์กรนี้, ได้เปิดใช้งานการกู้คืนบัญชี, และลายนิ้วมือที่แสดงด้านล่างตรงกับลายนิ้วมือขององค์กรเท่านั้น" + "message": "เพื่อความปลอดภัยของบัญชี โปรดดำเนินการต่อเฉพาะเมื่อคุณเป็นสมาชิกขององค์กรนี้ เปิดใช้งานการกู้คืนบัญชี และลายนิ้วมือที่แสดงด้านล่างตรงกับลายนิ้วมือขององค์กร" }, "orgTrustWarning1": { - "message": "This organization has an Enterprise policy that will enroll you in account recovery. Enrollment will allow organization administrators to change your password. Only proceed if you recognize this organization and the fingerprint phrase displayed below matches the organization's fingerprint." + "message": "องค์กรนี้มีนโยบายองค์กรที่จะลงทะเบียนคุณในการกู้คืนบัญชี การลงทะเบียนจะอนุญาตให้ผู้ดูแลระบบองค์กรเปลี่ยนรหัสผ่านของคุณได้ โปรดดำเนินการต่อเฉพาะเมื่อคุณรู้จักองค์กรนี้ และวลีลายนิ้วมือที่แสดงด้านล่างตรงกับลายนิ้วมือขององค์กร" }, "trustUser": { - "message": "Trust user" + "message": "เชื่อถือผู้ใช้" }, "sendsTitleNoItems": { - "message": "Send sensitive information safely", + "message": "ส่งข้อมูลสำคัญอย่างปลอดภัยด้วย Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendsBodyNoItems": { - "message": "Share files and data securely with anyone, on any platform. Your information will remain end-to-end encrypted while limiting exposure.", + "message": "แชร์ไฟล์และข้อมูลอย่างปลอดภัยกับทุกคน บนทุกแพลตฟอร์ม ข้อมูลของคุณจะได้รับการเข้ารหัสแบบ End-to-end และจำกัดการเข้าถึง", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "inputRequired": { - "message": "Input is required." + "message": "จำเป็นต้องระบุข้อมูล" }, "required": { - "message": "required" + "message": "จำเป็น" }, "search": { - "message": "Search" + "message": "ค้นหา" }, "inputMinLength": { - "message": "Input must be at least $COUNT$ characters long.", + "message": "ข้อมูลต้องมีความยาวอย่างน้อย $COUNT$ ตัวอักษร", "placeholders": { "count": { "content": "$1", @@ -4006,7 +4016,7 @@ } }, "inputMaxLength": { - "message": "Input must not exceed $COUNT$ characters in length.", + "message": "ข้อมูลต้องมีความยาวไม่เกิน $COUNT$ ตัวอักษร", "placeholders": { "count": { "content": "$1", @@ -4015,7 +4025,7 @@ } }, "inputForbiddenCharacters": { - "message": "The following characters are not allowed: $CHARACTERS$", + "message": "ไม่อนุญาตให้ใช้อักขระต่อไปนี้: $CHARACTERS$", "placeholders": { "characters": { "content": "$1", @@ -4024,7 +4034,7 @@ } }, "inputMinValue": { - "message": "Input value must be at least $MIN$.", + "message": "ค่าที่ป้อนต้องมีค่าอย่างน้อย $MIN$", "placeholders": { "min": { "content": "$1", @@ -4033,7 +4043,7 @@ } }, "inputMaxValue": { - "message": "Input value must not exceed $MAX$.", + "message": "ค่าที่ป้อนต้องมีค่าไม่เกิน $MAX$", "placeholders": { "max": { "content": "$1", @@ -4042,17 +4052,17 @@ } }, "multipleInputEmails": { - "message": "1 or more emails are invalid" + "message": "อีเมลอย่างน้อย 1 รายการไม่ถูกต้อง" }, "inputTrimValidator": { - "message": "Input must not contain only whitespace.", + "message": "ข้อมูลต้องไม่ประกอบด้วยช่องว่างเพียงอย่างเดียว", "description": "Notification to inform the user that a form's input can't contain only whitespace." }, "inputEmail": { - "message": "Input is not an email address." + "message": "ข้อมูลไม่ใช่ที่อยู่อีเมล" }, "fieldsNeedAttention": { - "message": "$COUNT$ field(s) above need your attention.", + "message": "ฟิลด์ด้านบน $COUNT$ รายการต้องการการตรวจสอบ", "placeholders": { "count": { "content": "$1", @@ -4061,10 +4071,10 @@ } }, "singleFieldNeedsAttention": { - "message": "1 field needs your attention." + "message": "1 ฟิลด์ต้องการการตรวจสอบ" }, "multipleFieldsNeedAttention": { - "message": "$COUNT$ fields need your attention.", + "message": "$COUNT$ ฟิลด์ต้องการการตรวจสอบ", "placeholders": { "count": { "content": "$1", @@ -4073,22 +4083,22 @@ } }, "selectPlaceholder": { - "message": "-- Select --" + "message": "-- เลือก --" }, "multiSelectPlaceholder": { - "message": "-- Type to filter --" + "message": "-- พิมพ์เพื่อกรอง --" }, "multiSelectLoading": { - "message": "Retrieving options..." + "message": "กำลังดึงตัวเลือก..." }, "multiSelectNotFound": { - "message": "No items found" + "message": "ไม่พบรายการ" }, "multiSelectClearAll": { - "message": "Clear all" + "message": "ล้างทั้งหมด" }, "plusNMore": { - "message": "+ $QUANTITY$ more", + "message": "+ อีก $QUANTITY$ รายการ", "placeholders": { "quantity": { "content": "$1", @@ -4097,141 +4107,141 @@ } }, "submenu": { - "message": "Submenu" + "message": "เมนูย่อย" }, "toggleCollapse": { - "message": "Toggle collapse", + "message": "ย่อ/ขยาย", "description": "Toggling an expand/collapse state." }, "aliasDomain": { - "message": "Alias domain" + "message": "โดเมนนามแฝง" }, "autofillOnPageLoadSetToDefault": { - "message": "Autofill on page load set to use default setting.", + "message": "ตั้งค่าการป้อนอัตโนมัติเมื่อโหลดหน้าเว็บเป็นค่าเริ่มต้นแล้ว", "description": "Toast message for informing the user that autofill on page load has been set to the default setting." }, "cannotAutofill": { - "message": "Cannot autofill" + "message": "ไม่สามารถป้อนอัตโนมัติได้" }, "cannotAutofillExactMatch": { - "message": "Default matching is set to 'Exact Match'. The current website does not exactly match the saved login details for this item." + "message": "การจับคู่เริ่มต้นตั้งค่าไว้ที่ 'ตรงกันทุกตัวอักษร' เว็บไซต์ปัจจุบันไม่ตรงกับรายละเอียดข้อมูลเข้าสู่ระบบที่บันทึกไว้สำหรับรายการนี้อย่างถูกต้อง" }, "okay": { - "message": "Okay" + "message": "ตกลง" }, "toggleSideNavigation": { - "message": "Toggle side navigation" + "message": "สลับแถบนำทางด้านข้าง" }, "skipToContent": { - "message": "Skip to content" + "message": "ข้ามไปที่เนื้อหา" }, "bitwardenOverlayButton": { - "message": "Bitwarden autofill menu button", + "message": "ปุ่มเมนูป้อนอัตโนมัติ Bitwarden", "description": "Page title for the iframe containing the overlay button" }, "toggleBitwardenVaultOverlay": { - "message": "Toggle Bitwarden autofill menu", + "message": "สลับเมนูป้อนอัตโนมัติ Bitwarden", "description": "Screen reader and tool tip label for the overlay button" }, "bitwardenVault": { - "message": "Bitwarden autofill menu", + "message": "เมนูป้อนอัตโนมัติ Bitwarden", "description": "Page title in overlay" }, "unlockYourAccountToViewMatchingLogins": { - "message": "Unlock your account to view matching logins", + "message": "ปลดล็อกบัญชีเพื่อดูข้อมูลเข้าสู่ระบบที่ตรงกัน", "description": "Text to display in overlay when the account is locked." }, "unlockYourAccountToViewAutofillSuggestions": { - "message": "Unlock your account to view autofill suggestions", + "message": "ปลดล็อกบัญชีเพื่อดูคำแนะนำการป้อนอัตโนมัติ", "description": "Text to display in overlay when the account is locked." }, "unlockAccount": { - "message": "Unlock account", + "message": "ปลดล็อกบัญชี", "description": "Button text to display in overlay when the account is locked." }, "unlockAccountAria": { - "message": "Unlock your account, opens in a new window", + "message": "ปลดล็อกบัญชี เปิดในหน้าต่างใหม่", "description": "Screen reader text (aria-label) for unlock account button in overlay" }, "totpCodeAria": { - "message": "Time-based One-Time Password Verification Code", + "message": "รหัสยืนยันรหัสผ่านใช้ครั้งเดียวตามเวลา", "description": "Aria label for the totp code displayed in the inline menu for autofill" }, "totpSecondsSpanAria": { - "message": "Time remaining before current TOTP expires", + "message": "เวลาที่เหลือก่อน TOTP ปัจจุบันหมดอายุ", "description": "Aria label for the totp seconds displayed in the inline menu for autofill" }, "fillCredentialsFor": { - "message": "Fill credentials for", + "message": "ป้อนข้อมูลประจำตัวสำหรับ", "description": "Screen reader text for when overlay item is in focused" }, "partialUsername": { - "message": "Partial username", + "message": "ชื่อผู้ใช้บางส่วน", "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" }, "noItemsToShow": { - "message": "No items to show", + "message": "ไม่มีรายการที่จะแสดง", "description": "Text to show in overlay if there are no matching items" }, "newItem": { - "message": "New item", + "message": "รายการใหม่", "description": "Button text to display in overlay when there are no matching items" }, "addNewVaultItem": { - "message": "Add new vault item", + "message": "เพิ่มรายการตู้นิรภัยใหม่", "description": "Screen reader text (aria-label) for new item button in overlay" }, "newLogin": { - "message": "New login", + "message": "ข้อมูลเข้าสู่ระบบใหม่", "description": "Button text to display within inline menu when there are no matching items on a login field" }, "addNewLoginItemAria": { - "message": "Add new vault login item, opens in a new window", + "message": "เพิ่มข้อมูลเข้าสู่ระบบตู้นิรภัยใหม่ เปิดในหน้าต่างใหม่", "description": "Screen reader text (aria-label) for new login button within inline menu" }, "newCard": { - "message": "New card", + "message": "บัตรใหม่", "description": "Button text to display within inline menu when there are no matching items on a credit card field" }, "addNewCardItemAria": { - "message": "Add new vault card item, opens in a new window", + "message": "เพิ่มรายการบัตรตู้นิรภัยใหม่ เปิดในหน้าต่างใหม่", "description": "Screen reader text (aria-label) for new card button within inline menu" }, "newIdentity": { - "message": "New identity", + "message": "ข้อมูลระบุตัวตนใหม่", "description": "Button text to display within inline menu when there are no matching items on an identity field" }, "addNewIdentityItemAria": { - "message": "Add new vault identity item, opens in a new window", + "message": "เพิ่มข้อมูลระบุตัวตนตู้นิรภัยใหม่ เปิดในหน้าต่างใหม่", "description": "Screen reader text (aria-label) for new identity button within inline menu" }, "bitwardenOverlayMenuAvailable": { - "message": "Bitwarden autofill menu available. Press the down arrow key to select.", + "message": "เมนูป้อนอัตโนมัติ Bitwarden พร้อมใช้งาน กดปุ่มลูกศรลงเพื่อเลือก", "description": "Screen reader text for announcing when the overlay opens on the page" }, "turnOn": { - "message": "Turn on" + "message": "เปิด" }, "ignore": { - "message": "Ignore" + "message": "เพิกเฉย" }, "importError": { - "message": "Import error" + "message": "ข้อผิดพลาดในการนำเข้า" }, "importErrorDesc": { - "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + "message": "เกิดปัญหากับข้อมูลที่คุณพยายามนำเข้า โปรดแก้ไขข้อผิดพลาดที่ระบุด้านล่างในไฟล์ต้นฉบับแล้วลองอีกครั้ง" }, "resolveTheErrorsBelowAndTryAgain": { - "message": "Resolve the errors below and try again." + "message": "แก้ไขข้อผิดพลาดด้านล่างแล้วลองอีกครั้ง" }, "description": { - "message": "Description" + "message": "คำอธิบาย" }, "importSuccess": { - "message": "Data successfully imported" + "message": "นำเข้าข้อมูลสำเร็จแล้ว" }, "importSuccessNumberOfItems": { - "message": "A total of $AMOUNT$ items were imported.", + "message": "นำเข้าข้อมูลทั้งหมด $AMOUNT$ รายการ", "placeholders": { "amount": { "content": "$1", @@ -4240,46 +4250,46 @@ } }, "tryAgain": { - "message": "Try again" + "message": "ลองอีกครั้ง" }, "verificationRequiredForActionSetPinToContinue": { - "message": "Verification required for this action. Set a PIN to continue." + "message": "จำเป็นต้องยืนยันตัวตนสำหรับการดำเนินการนี้ ตั้งค่า PIN เพื่อดำเนินการต่อ" }, "setPin": { - "message": "ตั้ง PIN" + "message": "ตั้งค่า PIN" }, "verifyWithBiometrics": { - "message": "Verify with biometrics" + "message": "ยืนยันด้วยไบโอเมตริก" }, "awaitingConfirmation": { - "message": "Awaiting confirmation" + "message": "รอการยืนยัน" }, "couldNotCompleteBiometrics": { - "message": "Could not complete biometrics." + "message": "ไม่สามารถดำเนินการไบโอเมตริกให้เสร็จสิ้นได้" }, "needADifferentMethod": { - "message": "Need a different method?" + "message": "ต้องการวิธีอื่นหรือไม่" }, "useMasterPassword": { - "message": "Use master password" + "message": "ใช้รหัสผ่านหลัก" }, "usePin": { - "message": "Use PIN" + "message": "ใช้ PIN" }, "useBiometrics": { - "message": "Use biometrics" + "message": "ใช้ไบโอเมตริก" }, "enterVerificationCodeSentToEmail": { - "message": "Enter the verification code that was sent to your email." + "message": "ป้อนรหัสยืนยันที่ส่งไปที่อีเมลของคุณ" }, "resendCode": { - "message": "Resend code" + "message": "ส่งรหัสอีกครั้ง" }, "total": { - "message": "Total" + "message": "รวม" }, "importWarning": { - "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "message": "คุณกำลังนำเข้าข้อมูลไปยัง $ORGANIZATION$ ข้อมูลของคุณอาจถูกแชร์กับสมาชิกขององค์กรนี้ ต้องการดำเนินการต่อหรือไม่", "placeholders": { "organization": { "content": "$1", @@ -4288,67 +4298,67 @@ } }, "duoHealthCheckResultsInNullAuthUrlError": { - "message": "Error connecting with the Duo service. Use a different two-step login method or contact Duo for assistance." + "message": "เกิดข้อผิดพลาดในการเชื่อมต่อกับบริการ Duo ใช้วิธีการเข้าสู่ระบบ 2 ขั้นตอนอื่น หรือติดต่อ Duo เพื่อขอความช่วยเหลือ" }, "duoRequiredForAccount": { - "message": "Duo two-step login is required for your account." + "message": "บัญชีของคุณจำเป็นต้องใช้การเข้าสู่ระบบ 2 ขั้นตอนผ่าน Duo" }, "popoutExtension": { - "message": "Popout extension" + "message": "แยกหน้าต่างส่วนขยาย" }, "launchDuo": { - "message": "Launch Duo" + "message": "เปิดใช้งาน Duo" }, "importFormatError": { - "message": "Data is not formatted correctly. Please check your import file and try again." + "message": "รูปแบบข้อมูลไม่ถูกต้อง โปรดตรวจสอบไฟล์นำเข้าแล้วลองอีกครั้ง" }, "importNothingError": { - "message": "Nothing was imported." + "message": "ไม่มีการนำเข้าข้อมูล" }, "importEncKeyError": { - "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + "message": "เกิดข้อผิดพลาดในการถอดรหัสไฟล์ที่ส่งออก กุญแจเข้ารหัสของคุณไม่ตรงกับกุญแจเข้ารหัสที่ใช้ส่งออกข้อมูล" }, "invalidFilePassword": { - "message": "Invalid file password, please use the password you entered when you created the export file." + "message": "รหัสผ่านไฟล์ไม่ถูกต้อง โปรดใช้รหัสผ่านที่คุณป้อนตอนสร้างไฟล์ส่งออก" }, "destination": { - "message": "Destination" + "message": "ปลายทาง" }, "learnAboutImportOptions": { - "message": "Learn about your import options" + "message": "เรียนรู้เกี่ยวกับตัวเลือกการนำเข้า" }, "selectImportFolder": { - "message": "Select a folder" + "message": "เลือกโฟลเดอร์" }, "selectImportCollection": { - "message": "Select a collection" + "message": "เลือกคอลเลกชัน" }, "importTargetHintCollection": { - "message": "Select this option if you want the imported file contents moved to a collection" + "message": "เลือกตัวเลือกนี้หากต้องการย้ายเนื้อหาไฟล์ที่นำเข้าไปยังคอลเลกชัน" }, "importTargetHintFolder": { - "message": "Select this option if you want the imported file contents moved to a folder" + "message": "เลือกตัวเลือกนี้หากต้องการย้ายเนื้อหาไฟล์ที่นำเข้าไปยังโฟลเดอร์" }, "importUnassignedItemsError": { - "message": "File contains unassigned items." + "message": "ไฟล์มีรายการที่ไม่ได้มอบหมาย" }, "selectFormat": { - "message": "Select the format of the import file" + "message": "เลือกรูปแบบของไฟล์นำเข้า" }, "selectImportFile": { - "message": "Select the import file" + "message": "เลือกไฟล์นำเข้า" }, "chooseFile": { "message": "เลือกไฟล์" }, "noFileChosen": { - "message": "ไม่มีไฟล์ที่เลือก" + "message": "ไม่ได้เลือกไฟล์" }, "orCopyPasteFileContents": { - "message": "or copy/paste the import file contents" + "message": "หรือคัดลอก/วางเนื้อหาไฟล์นำเข้า" }, "instructionsFor": { - "message": "$NAME$ Instructions", + "message": "คำแนะนำสำหรับ $NAME$", "description": "The title for the import tool instructions.", "placeholders": { "name": { @@ -4358,200 +4368,200 @@ } }, "confirmVaultImport": { - "message": "Confirm vault import" + "message": "ยืนยันการนำเข้าตู้นิรภัย" }, "confirmVaultImportDesc": { - "message": "This file is password-protected. Please enter the file password to import data." + "message": "ไฟล์นี้มีการป้องกันด้วยรหัสผ่าน โปรดป้อนรหัสผ่านไฟล์เพื่อนำเข้าข้อมูล" }, "confirmFilePassword": { - "message": "Confirm file password" + "message": "ยืนยันรหัสผ่านไฟล์" }, "exportSuccess": { - "message": "Vault data exported" + "message": "ส่งออกข้อมูลตู้นิรภัยแล้ว" }, "typePasskey": { - "message": "Passkey" + "message": "พาสคีย์" }, "accessing": { "message": "กำลังเข้าถึง" }, "loggedInExclamation": { - "message": "Logged in!" + "message": "เข้าสู่ระบบแล้ว!" }, "passkeyNotCopied": { - "message": "Passkey will not be copied" + "message": "จะไม่คัดลอกพาสคีย์" }, "passkeyNotCopiedAlert": { - "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + "message": "พาสคีย์จะไม่ถูกคัดลอกไปยังรายการที่โคลน ต้องการโคลนรายการนี้ต่อหรือไม่" }, "logInWithPasskeyQuestion": { - "message": "Log in with passkey?" + "message": "เข้าสู่ระบบด้วยพาสคีย์หรือไม่" }, "passkeyAlreadyExists": { - "message": "A passkey already exists for this application." + "message": "มีพาสคีย์สำหรับแอปพลิเคชันนี้อยู่แล้ว" }, "noPasskeysFoundForThisApplication": { - "message": "No passkeys found for this application." + "message": "ไม่พบพาสคีย์สำหรับแอปพลิเคชันนี้" }, "noMatchingPasskeyLogin": { - "message": "You do not have a matching login for this site." + "message": "คุณไม่มีข้อมูลเข้าสู่ระบบที่ตรงกันสำหรับไซต์นี้" }, "noMatchingLoginsForSite": { - "message": "No matching logins for this site" + "message": "ไม่มีข้อมูลเข้าสู่ระบบที่ตรงกันสำหรับไซต์นี้" }, "searchSavePasskeyNewLogin": { - "message": "Search or save passkey as new login" + "message": "ค้นหาหรือบันทึกพาสคีย์เป็นข้อมูลเข้าสู่ระบบใหม่" }, "confirm": { - "message": "Confirm" + "message": "ยืนยัน" }, "savePasskey": { - "message": "Save passkey" + "message": "บันทึกพาสคีย์" }, "savePasskeyNewLogin": { - "message": "Save passkey as new login" + "message": "บันทึกพาสคีย์เป็นข้อมูลเข้าสู่ระบบใหม่" }, "chooseCipherForPasskeySave": { - "message": "Choose a login to save this passkey to" + "message": "เลือกข้อมูลเข้าสู่ระบบเพื่อบันทึกพาสคีย์นี้" }, "chooseCipherForPasskeyAuth": { - "message": "Choose a passkey to log in with" + "message": "เลือกพาสคีย์เพื่อเข้าสู่ระบบ" }, "passkeyItem": { - "message": "Passkey Item" + "message": "รายการพาสคีย์" }, "overwritePasskey": { - "message": "Overwrite passkey?" + "message": "เขียนทับพาสคีย์หรือไม่" }, "overwritePasskeyAlert": { - "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + "message": "รายการนี้มีพาสคีย์อยู่แล้ว ยืนยันที่จะเขียนทับพาสคีย์ปัจจุบันหรือไม่" }, "featureNotSupported": { - "message": "Feature not yet supported" + "message": "ยังไม่รองรับฟีเจอร์นี้" }, "yourPasskeyIsLocked": { - "message": "Authentication required to use passkey. Verify your identity to continue." + "message": "จำเป็นต้องยืนยันตัวตนเพื่อใช้พาสคีย์ ยืนยันตัวตนของคุณเพื่อดำเนินการต่อ" }, "multifactorAuthenticationCancelled": { - "message": "Multifactor authentication cancelled" + "message": "ยกเลิกการยืนยันตัวตนแบบหลายปัจจัยแล้ว" }, "noLastPassDataFound": { - "message": "No LastPass data found" + "message": "ไม่พบข้อมูล LastPass" }, "incorrectUsernameOrPassword": { - "message": "Incorrect username or password" + "message": "ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง" }, "incorrectPassword": { - "message": "Incorrect password" + "message": "รหัสผ่านไม่ถูกต้อง" }, "incorrectCode": { - "message": "Incorrect code" + "message": "รหัสไม่ถูกต้อง" }, "incorrectPin": { - "message": "Incorrect PIN" + "message": "รหัส PIN ไม่ถูกต้อง" }, "multifactorAuthenticationFailed": { - "message": "Multifactor authentication failed" + "message": "การยืนยันตัวตนแบบหลายปัจจัยล้มเหลว" }, "includeSharedFolders": { - "message": "Include shared folders" + "message": "รวมโฟลเดอร์ที่แชร์" }, "lastPassEmail": { - "message": "LastPass Email" + "message": "อีเมล LastPass" }, "importingYourAccount": { - "message": "Importing your account..." + "message": "กำลังนำเข้าบัญชีของคุณ..." }, "lastPassMFARequired": { - "message": "LastPass multifactor authentication required" + "message": "จำเป็นต้องยืนยันตัวตนแบบหลายปัจจัยของ LastPass" }, "lastPassMFADesc": { - "message": "Enter your one-time passcode from your authentication app" + "message": "ป้อนรหัสผ่านใช้ครั้งเดียวจากแอปยืนยันตัวตนของคุณ" }, "lastPassOOBDesc": { - "message": "Approve the login request in your authentication app or enter a one-time passcode." + "message": "อนุมัติคำขอเข้าสู่ระบบในแอปยืนยันตัวตนของคุณ หรือป้อนรหัสผ่านใช้ครั้งเดียว" }, "passcode": { - "message": "Passcode" + "message": "รหัสผ่าน" }, "lastPassMasterPassword": { - "message": "LastPass master password" + "message": "รหัสผ่านหลัก LastPass" }, "lastPassAuthRequired": { - "message": "LastPass authentication required" + "message": "จำเป็นต้องยืนยันตัวตน LastPass" }, "awaitingSSO": { - "message": "Awaiting SSO authentication" + "message": "กำลังรอการยืนยันตัวตน SSO" }, "awaitingSSODesc": { - "message": "Please continue to log in using your company credentials." + "message": "โปรดดำเนินการเข้าสู่ระบบโดยใช้ข้อมูลประจำตัวของบริษัทของคุณ" }, "seeDetailedInstructions": { - "message": "See detailed instructions on our help site at", + "message": "ดูคำแนะนำโดยละเอียดบนเว็บไซต์ช่วยเหลือของเราที่", "description": "This is followed a by a hyperlink to the help website." }, "importDirectlyFromLastPass": { - "message": "Import directly from LastPass" + "message": "นำเข้าจาก LastPass โดยตรง" }, "importFromCSV": { - "message": "Import from CSV" + "message": "นำเข้าจาก CSV" }, "lastPassTryAgainCheckEmail": { - "message": "Try again or look for an email from LastPass to verify it's you." + "message": "ลองอีกครั้งหรือตรวจสอบอีเมลจาก LastPass เพื่อยืนยันว่าเป็นคุณ" }, "collection": { - "message": "Collection" + "message": "คอลเลกชัน" }, "lastPassYubikeyDesc": { - "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + "message": "เสียบ YubiKey ที่เชื่อมโยงกับบัญชี LastPass เข้ากับพอร์ต USB ของคอมพิวเตอร์ แล้วแตะที่ปุ่ม" }, "switchAccount": { - "message": "Switch account" + "message": "สลับบัญชี" }, "switchAccounts": { - "message": "Switch accounts" + "message": "สลับบัญชี" }, "switchToAccount": { - "message": "Switch to account" + "message": "สลับไปที่บัญชี" }, "activeAccount": { - "message": "Active account" + "message": "บัญชีที่ใช้งานอยู่" }, "bitwardenAccount": { - "message": "Bitwarden account" + "message": "บัญชี Bitwarden" }, "availableAccounts": { - "message": "Available accounts" + "message": "บัญชีที่มีอยู่" }, "accountLimitReached": { - "message": "ถึงขีดจำกัดของบัญชีแล้ว กรุณาออกจากระบบบัญชีอื่นเพื่อเพิ่มบัญชีใหม่" + "message": "ถึงขีดจำกัดจำนวนบัญชีแล้ว ออกจากระบบบัญชีหนึ่งเพื่อเพิ่มบัญชีอื่น" }, "active": { - "message": "active" + "message": "ใช้งานอยู่" }, "locked": { - "message": "locked" + "message": "ล็อกอยู่" }, "unlocked": { - "message": "unlocked" + "message": "ปลดล็อกแล้ว" }, "server": { - "message": "server" + "message": "เซิร์ฟเวอร์" }, "hostedAt": { - "message": "hosted at" + "message": "โฮสต์ที่" }, "useDeviceOrHardwareKey": { - "message": "Use your device or hardware key" + "message": "ใช้อุปกรณ์หรือคีย์ฮาร์ดแวร์ของคุณ" }, "justOnce": { - "message": "Just once" + "message": "เพียงครั้งเดียว" }, "alwaysForThisSite": { - "message": "Always for this site" + "message": "เสมอสำหรับไซต์นี้" }, "domainAddedToExcludedDomains": { - "message": "$DOMAIN$ added to excluded domains.", + "message": "เพิ่ม $DOMAIN$ ในโดเมนที่ยกเว้นแล้ว", "placeholders": { "domain": { "content": "$1", @@ -4560,126 +4570,126 @@ } }, "commonImportFormats": { - "message": "Common formats", + "message": "รูปแบบทั่วไป", "description": "Label indicating the most common import formats" }, "uriMatchDefaultStrategyHint": { - "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "message": "การตรวจสอบการจับคู่ URI คือวิธีที่ Bitwarden ระบุคำแนะนำการป้อนอัตโนมัติ", "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." }, "regExAdvancedOptionWarning": { - "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "message": "\"Regular expression\" เป็นตัวเลือกขั้นสูงที่มีความเสี่ยงสูงในการเปิดเผยข้อมูลเข้าสู่ระบบ", "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" }, "startsWithAdvancedOptionWarning": { - "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "message": "\"ขึ้นต้นด้วย\" เป็นตัวเลือกขั้นสูงที่มีความเสี่ยงสูงในการเปิดเผยข้อมูลเข้าสู่ระบบ", "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" }, "uriMatchWarningDialogLink": { - "message": "More about match detection", + "message": "เพิ่มเติมเกี่ยวกับการตรวจสอบการจับคู่", "description": "Link to match detection docs on warning dialog for advance match strategy" }, "uriAdvancedOption": { - "message": "Advanced options", + "message": "ตัวเลือกขั้นสูง", "description": "Advanced option placeholder for uri option component" }, "confirmContinueToBrowserSettingsTitle": { - "message": "Continue to browser settings?", + "message": "ไปที่การตั้งค่าเบราว์เซอร์หรือไม่", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" }, "confirmContinueToHelpCenter": { - "message": "Continue to Help Center?", + "message": "ไปที่ศูนย์ช่วยเหลือหรือไม่", "description": "Title for dialog which asks if the user wants to proceed to a relevant Help Center page" }, "confirmContinueToHelpCenterPasswordManagementContent": { - "message": "Change your browser's autofill and password management settings.", + "message": "เปลี่ยนการตั้งค่าการป้อนอัตโนมัติและการจัดการรหัสผ่านของเบราว์เซอร์", "description": "Body content for dialog which asks if the user wants to proceed to the Help Center's page about browser password management settings" }, "confirmContinueToHelpCenterKeyboardShortcutsContent": { - "message": "You can view and set extension shortcuts in your browser's settings.", + "message": "คุณสามารถดูและตั้งค่าทางลัดส่วนขยายได้ในการตั้งค่าของเบราว์เซอร์", "description": "Body content for dialog which asks if the user wants to proceed to the Help Center's page about browser keyboard shortcut settings" }, "confirmContinueToBrowserPasswordManagementSettingsContent": { - "message": "Change your browser's autofill and password management settings.", + "message": "เปลี่ยนการตั้งค่าการป้อนอัตโนมัติและการจัดการรหัสผ่านของเบราว์เซอร์", "description": "Body content for dialog which asks if the user wants to proceed to the browser's password management settings page" }, "confirmContinueToBrowserKeyboardShortcutSettingsContent": { - "message": "You can view and set extension shortcuts in your browser's settings.", + "message": "คุณสามารถดูและตั้งค่าทางลัดส่วนขยายได้ในการตั้งค่าของเบราว์เซอร์", "description": "Body content for dialog which asks if the user wants to proceed to the browser's keyboard shortcut settings page" }, "overrideDefaultBrowserAutofillTitle": { - "message": "Make Bitwarden your default password manager?", + "message": "ตั้งให้ Bitwarden เป็นตัวจัดการรหัสผ่านเริ่มต้นหรือไม่", "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" }, "overrideDefaultBrowserAutofillDescription": { - "message": "Ignoring this option may cause conflicts between Bitwarden autofill suggestions and your browser's.", + "message": "การเพิกเฉยตัวเลือกนี้อาจทำให้เกิดความขัดแย้งระหว่างคำแนะนำการป้อนอัตโนมัติของ Bitwarden กับของเบราว์เซอร์", "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" }, "overrideDefaultBrowserAutoFillSettings": { - "message": "Make Bitwarden your default password manager", + "message": "ตั้งให้ Bitwarden เป็นตัวจัดการรหัสผ่านเริ่มต้น", "description": "Label for the setting that allows overriding the default browser autofill settings" }, "privacyPermissionAdditionNotGrantedTitle": { - "message": "Unable to set Bitwarden as the default password manager", + "message": "ไม่สามารถตั้งค่า Bitwarden เป็นตัวจัดการรหัสผ่านเริ่มต้นได้", "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" }, "privacyPermissionAdditionNotGrantedDescription": { - "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "message": "คุณต้องอนุญาตสิทธิ์ความเป็นส่วนตัวของเบราว์เซอร์ให้ Bitwarden เพื่อตั้งค่าเป็นตัวจัดการรหัสผ่านเริ่มต้น", "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" }, "makeDefault": { - "message": "Make default", + "message": "ตั้งเป็นค่าเริ่มต้น", "description": "Button text for the setting that allows overriding the default browser autofill settings" }, "saveCipherAttemptSuccess": { - "message": "Credentials saved successfully!", + "message": "บันทึกข้อมูลเข้าสู่ระบบสำเร็จแล้ว!", "description": "Notification message for when saving credentials has succeeded." }, "passwordSaved": { - "message": "Password saved!", + "message": "บันทึกรหัสผ่านแล้ว!", "description": "Notification message for when saving credentials has succeeded." }, "updateCipherAttemptSuccess": { - "message": "Credentials updated successfully!", + "message": "อัปเดตข้อมูลเข้าสู่ระบบสำเร็จแล้ว!", "description": "Notification message for when updating credentials has succeeded." }, "passwordUpdated": { - "message": "Password updated!", + "message": "อัปเดตรหัสผ่านแล้ว!", "description": "Notification message for when updating credentials has succeeded." }, "saveCipherAttemptFailed": { - "message": "Error saving credentials. Check console for details.", + "message": "เกิดข้อผิดพลาดในการบันทึกข้อมูลเข้าสู่ระบบ ตรวจสอบรายละเอียดในคอนโซล", "description": "Notification message for when saving credentials has failed." }, "success": { - "message": "Success" + "message": "สำเร็จ" }, "removePasskey": { - "message": "Remove passkey" + "message": "เอาพาสคีย์ออก" }, "passkeyRemoved": { - "message": "Passkey removed" + "message": "เอาพาสคีย์ออกแล้ว" }, "autofillSuggestions": { - "message": "Autofill suggestions" + "message": "คำแนะนำการป้อนอัตโนมัติ" }, "itemSuggestions": { - "message": "Suggested items" + "message": "รายการที่แนะนำ" }, "autofillSuggestionsTip": { - "message": "Save a login item for this site to autofill" + "message": "บันทึกข้อมูลเข้าสู่ระบบสำหรับไซต์นี้เพื่อป้อนอัตโนมัติ" }, "yourVaultIsEmpty": { - "message": "Your vault is empty" + "message": "ตู้นิรภัยของคุณว่างเปล่า" }, "noItemsMatchSearch": { - "message": "No items match your search" + "message": "ไม่พบรายการที่ตรงกับการค้นหา" }, "clearFiltersOrTryAnother": { - "message": "Clear filters or try another search term" + "message": "ล้างตัวกรองหรือลองค้นหาด้วยคำอื่น" }, "copyInfoTitle": { - "message": "Copy info - $ITEMNAME$", + "message": "คัดลอกข้อมูล - $ITEMNAME$", "description": "Title for a button that opens a menu with options to copy information from an item.", "placeholders": { "itemname": { @@ -4689,7 +4699,7 @@ } }, "copyNoteTitle": { - "message": "Copy Note - $ITEMNAME$", + "message": "คัดลอกโน้ต - $ITEMNAME$", "description": "Title for a button copies a note to the clipboard.", "placeholders": { "itemname": { @@ -4699,7 +4709,7 @@ } }, "moreOptionsLabel": { - "message": "More options, $ITEMNAME$", + "message": "ตัวเลือกเพิ่มเติม $ITEMNAME$", "description": "Aria label for a button that opens a menu with more options for an item.", "placeholders": { "itemname": { @@ -4709,7 +4719,7 @@ } }, "moreOptionsTitle": { - "message": "More options - $ITEMNAME$", + "message": "ตัวเลือกเพิ่มเติม - $ITEMNAME$", "description": "Title for a button that opens a menu with more options for an item.", "placeholders": { "itemname": { @@ -4719,7 +4729,7 @@ } }, "viewItemTitle": { - "message": "View item - $ITEMNAME$", + "message": "ดูรายการ - $ITEMNAME$", "description": "Title for a link that opens a view for an item.", "placeholders": { "itemname": { @@ -4729,7 +4739,7 @@ } }, "viewItemTitleWithField": { - "message": "View item - $ITEMNAME$ - $FIELD$", + "message": "ดูรายการ - $ITEMNAME$ - $FIELD$", "description": "Title for a link that opens a view for an item.", "placeholders": { "itemname": { @@ -4743,7 +4753,7 @@ } }, "autofillTitle": { - "message": "Autofill - $ITEMNAME$", + "message": "ป้อนอัตโนมัติ - $ITEMNAME$", "description": "Title for a button that autofills a login item.", "placeholders": { "itemname": { @@ -4753,7 +4763,7 @@ } }, "autofillTitleWithField": { - "message": "Autofill - $ITEMNAME$ - $FIELD$", + "message": "ป้อนอัตโนมัติ - $ITEMNAME$ - $FIELD$", "description": "Title for a button that autofills a login item.", "placeholders": { "itemname": { @@ -4767,7 +4777,7 @@ } }, "copyFieldCipherName": { - "message": "Copy $FIELD$, $CIPHERNAME$", + "message": "คัดลอก $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { @@ -4781,49 +4791,49 @@ } }, "noValuesToCopy": { - "message": "No values to copy" + "message": "ไม่มีค่าให้คัดลอก" }, "assignToCollections": { - "message": "Assign to collections" + "message": "มอบหมายให้คอลเลกชัน" }, "copyEmail": { - "message": "Copy email" + "message": "คัดลอกอีเมล" }, "copyPhone": { - "message": "Copy phone" + "message": "คัดลอกเบอร์โทรศัพท์" }, "copyAddress": { - "message": "Copy address" + "message": "คัดลอกที่อยู่" }, "adminConsole": { - "message": "Admin Console" + "message": "คอนโซลผู้ดูแลระบบ" }, "accountSecurity": { "message": "ความปลอดภัยของบัญชี" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "ตัวบล็อกฟิชชิง" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "การตรวจจับฟิชชิง" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "แสดงคำเตือนก่อนเข้าถึงไซต์ที่ต้องสงสัยว่าเป็นฟิชชิง" }, "notifications": { - "message": "Notifications" + "message": "การแจ้งเตือน" }, "appearance": { - "message": "Appearance" + "message": "รูปลักษณ์" }, "errorAssigningTargetCollection": { - "message": "Error assigning target collection." + "message": "เกิดข้อผิดพลาดในการมอบหมายคอลเลกชันปลายทาง" }, "errorAssigningTargetFolder": { - "message": "Error assigning target folder." + "message": "เกิดข้อผิดพลาดในการมอบหมายโฟลเดอร์ปลายทาง" }, "viewItemsIn": { - "message": "View items in $NAME$", + "message": "ดูรายการใน $NAME$", "description": "Button to view the contents of a folder or collection", "placeholders": { "name": { @@ -4833,7 +4843,7 @@ } }, "backTo": { - "message": "Back to $NAME$", + "message": "กลับไปที่ $NAME$", "description": "Navigate back to a previous folder or collection", "placeholders": { "name": { @@ -4843,10 +4853,10 @@ } }, "new": { - "message": "New" + "message": "ใหม่" }, "removeItem": { - "message": "Remove $NAME$", + "message": "เอา $NAME$ ออก", "description": "Remove a selected option, such as a folder or collection", "placeholders": { "name": { @@ -4856,44 +4866,44 @@ } }, "itemsWithNoFolder": { - "message": "Items with no folder" + "message": "รายการที่ไม่มีโฟลเดอร์" }, "itemDetails": { - "message": "Item details" + "message": "รายละเอียดรายการ" }, "itemName": { - "message": "Item name" + "message": "ชื่อรายการ" }, "organizationIsDeactivated": { - "message": "Organization is deactivated" + "message": "องค์กรถูกปิดใช้งาน" }, "owner": { - "message": "Owner" + "message": "เจ้าของ" }, "selfOwnershipLabel": { - "message": "You", + "message": "คุณ", "description": "Used as a label to indicate that the user is the owner of an item." }, "contactYourOrgAdmin": { - "message": "Items in deactivated organizations cannot be accessed. Contact your organization owner for assistance." + "message": "ไม่สามารถเข้าถึงรายการในองค์กรที่ถูกปิดใช้งาน ติดต่อเจ้าขององค์กรเพื่อขอความช่วยเหลือ" }, "additionalInformation": { - "message": "Additional information" + "message": "ข้อมูลเพิ่มเติม" }, "itemHistory": { - "message": "ประวัติการแก้ไขรายการ" + "message": "ประวัติรายการ" }, "lastEdited": { - "message": "แก้ไขล่าสุดเมื่อ" + "message": "แก้ไขล่าสุด" }, "ownerYou": { - "message": "Owner: You" + "message": "เจ้าของ: คุณ" }, "linked": { - "message": "Linked" + "message": "เชื่อมโยง" }, "copySuccessful": { - "message": "Copy Successful" + "message": "คัดลอกสำเร็จ" }, "upload": { "message": "อัปโหลด" @@ -4902,10 +4912,10 @@ "message": "เพิ่มไฟล์แนบ" }, "maxFileSizeSansPunctuation": { - "message": "ขนาดไฟล์สูงสุด คือ 500 MB" + "message": "ขนาดไฟล์สูงสุดคือ 500 MB" }, "deleteAttachmentName": { - "message": "Delete attachment $NAME$", + "message": "ลบไฟล์แนบ $NAME$", "placeholders": { "name": { "content": "$1", @@ -4914,7 +4924,7 @@ } }, "downloadAttachmentName": { - "message": "Download $NAME$", + "message": "ดาวน์โหลด $NAME$", "placeholders": { "name": { "content": "$1", @@ -4923,55 +4933,55 @@ } }, "downloadBitwarden": { - "message": "Download Bitwarden" + "message": "ดาวน์โหลด Bitwarden" }, "downloadBitwardenOnAllDevices": { - "message": "Download Bitwarden on all devices" + "message": "ดาวน์โหลด Bitwarden บนทุกอุปกรณ์" }, "getTheMobileApp": { - "message": "Get the mobile app" + "message": "รับแอปมือถือ" }, "getTheMobileAppDesc": { - "message": "Access your passwords on the go with the Bitwarden mobile app." + "message": "เข้าถึงรหัสผ่านของคุณได้ทุกที่ด้วยแอปมือถือ Bitwarden" }, "getTheDesktopApp": { - "message": "Get the desktop app" + "message": "รับแอปเดสก์ท็อป" }, "getTheDesktopAppDesc": { - "message": "Access your vault without a browser, then set up unlock with biometrics to expedite unlocking in both the desktop app and browser extension." + "message": "เข้าถึงตู้นิรภัยโดยไม่ต้องใช้เบราว์เซอร์ จากนั้นตั้งค่าการปลดล็อกด้วยไบโอเมตริกเพื่อเร่งการปลดล็อกทั้งในแอปเดสก์ท็อปและส่วนขยายเบราว์เซอร์" }, "downloadFromBitwardenNow": { - "message": "Download from bitwarden.com now" + "message": "ดาวน์โหลดจาก bitwarden.com เลย" }, "getItOnGooglePlay": { - "message": "Get it on Google Play" + "message": "ดาวน์โหลดได้จาก Google Play" }, "downloadOnTheAppStore": { - "message": "Download on the App Store" + "message": "ดาวน์โหลดได้จาก App Store" }, "permanentlyDeleteAttachmentConfirmation": { - "message": "Are you sure you want to permanently delete this attachment?" + "message": "ยืนยันที่จะลบไฟล์แนบนี้ถาวรหรือไม่" }, "premium": { - "message": "Premium" + "message": "พรีเมียม" }, "unlockFeaturesWithPremium": { - "message": "Unlock reporting, emergency access, and more security features with Premium." + "message": "ปลดล็อกการรายงาน การเข้าถึงฉุกเฉิน และฟีเจอร์ความปลอดภัยเพิ่มเติมด้วยพรีเมียม" }, "freeOrgsCannotUseAttachments": { - "message": "Free organizations cannot use attachments" + "message": "องค์กรฟรีไม่สามารถใช้ไฟล์แนบได้" }, "filters": { - "message": "Filters" + "message": "ตัวกรอง" }, "filterVault": { - "message": "Filter vault" + "message": "กรองตู้นิรภัย" }, "filterApplied": { - "message": "One filter applied" + "message": "ใช้ตัวกรอง 1 รายการ" }, "filterAppliedPlural": { - "message": "$COUNT$ filters applied", + "message": "ใช้ตัวกรอง $COUNT$ รายการ", "placeholders": { "count": { "content": "$1", @@ -4980,16 +4990,16 @@ } }, "personalDetails": { - "message": "Personal details" + "message": "ข้อมูลส่วนตัว" }, "identification": { - "message": "Identification" + "message": "เอกสารระบุตัวตน" }, "contactInfo": { - "message": "Contact info" + "message": "ข้อมูลติดต่อ" }, "downloadAttachment": { - "message": "Download - $ITEMNAME$", + "message": "ดาวน์โหลด - $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -4998,23 +5008,23 @@ } }, "cardNumberEndsWith": { - "message": "card number ends with", + "message": "หมายเลขบัตรลงท้ายด้วย", "description": "Used within the inline menu to provide an aria description when users are attempting to fill a card cipher." }, "loginCredentials": { - "message": "Login credentials" + "message": "ข้อมูลเข้าสู่ระบบ" }, "authenticatorKey": { - "message": "Authenticator key" + "message": "คีย์ยืนยันตัวตน" }, "autofillOptions": { - "message": "ตัวเลือกในการป้อนอัตโนมัติ" + "message": "ตัวเลือกการป้อนอัตโนมัติ" }, "websiteUri": { - "message": "Website (URI)" + "message": "เว็บไซต์ (URI)" }, "websiteUriCount": { - "message": "Website (URI) $COUNT$", + "message": "เว็บไซต์ (URI) $COUNT$", "description": "Label for an input field that contains a website URI. The input field is part of a list of fields, and the count indicates the position of the field in the list.", "placeholders": { "count": { @@ -5024,16 +5034,16 @@ } }, "websiteAdded": { - "message": "Website added" + "message": "เพิ่มเว็บไซต์แล้ว" }, "addWebsite": { - "message": "Add website" + "message": "เพิ่มเว็บไซต์" }, "deleteWebsite": { - "message": "Delete website" + "message": "ลบเว็บไซต์" }, "defaultLabel": { - "message": "Default ($VALUE$)", + "message": "ค่าเริ่มต้น ($VALUE$)", "description": "A label that indicates the default value for a field with the current default value in parentheses.", "placeholders": { "value": { @@ -5043,7 +5053,7 @@ } }, "defaultLabelWithValue": { - "message": "Default ( $VALUE$ )", + "message": "ค่าเริ่มต้น ( $VALUE$ )", "description": "A label that indicates the default value for a field with the current default value in parentheses.", "placeholders": { "value": { @@ -5053,7 +5063,7 @@ } }, "showMatchDetection": { - "message": "Show match detection $WEBSITE$", + "message": "แสดงการตรวจสอบการจับคู่ $WEBSITE$", "placeholders": { "website": { "content": "$1", @@ -5062,7 +5072,7 @@ } }, "hideMatchDetection": { - "message": "Hide match detection $WEBSITE$", + "message": "ซ่อนการตรวจสอบการจับคู่ $WEBSITE$", "placeholders": { "website": { "content": "$1", @@ -5071,19 +5081,19 @@ } }, "autoFillOnPageLoad": { - "message": "Autofill on page load?" + "message": "ป้อนอัตโนมัติเมื่อโหลดหน้าเว็บหรือไม่" }, "cardExpiredTitle": { - "message": "Expired card" + "message": "บัตรหมดอายุ" }, "cardExpiredMessage": { - "message": "If you've renewed it, update the card's information" + "message": "หากคุณต่ออายุแล้ว ให้อัปเดตข้อมูลบัตร" }, "cardDetails": { - "message": "Card details" + "message": "รายละเอียดบัตร" }, "cardBrandDetails": { - "message": "$BRAND$ details", + "message": "รายละเอียด $BRAND$", "placeholders": { "brand": { "content": "$1", @@ -5092,40 +5102,40 @@ } }, "showAnimations": { - "message": "Show animations" + "message": "แสดงภาพเคลื่อนไหว" }, "addAccount": { "message": "เพิ่มบัญชี" }, "loading": { - "message": "Loading" + "message": "กำลังโหลด" }, "data": { - "message": "Data" + "message": "ข้อมูล" }, "passkeys": { - "message": "Passkeys", + "message": "พาสคีย์", "description": "A section header for a list of passkeys." }, "passwords": { - "message": "Passwords", + "message": "รหัสผ่าน", "description": "A section header for a list of passwords." }, "logInWithPasskeyAriaLabel": { - "message": "Log in with passkey", + "message": "เข้าสู่ระบบด้วยพาสคีย์", "description": "ARIA label for the inline menu button that logs in with a passkey." }, "assign": { - "message": "Assign" + "message": "มอบหมาย" }, "bulkCollectionAssignmentDialogDescriptionSingular": { - "message": "Only organization members with access to these collections will be able to see the item." + "message": "เฉพาะสมาชิกองค์กรที่มีสิทธิ์เข้าถึงคอลเลกชันเหล่านี้เท่านั้นที่จะเห็นรายการนี้" }, "bulkCollectionAssignmentDialogDescriptionPlural": { - "message": "Only organization members with access to these collections will be able to see the items." + "message": "เฉพาะสมาชิกองค์กรที่มีสิทธิ์เข้าถึงคอลเลกชันเหล่านี้เท่านั้นที่จะเห็นรายการเหล่านี้" }, "bulkCollectionAssignmentWarning": { - "message": "You have selected $TOTAL_COUNT$ items. You cannot update $READONLY_COUNT$ of the items because you do not have edit permissions.", + "message": "คุณเลือก $TOTAL_COUNT$ รายการ คุณไม่สามารถอัปเดต $READONLY_COUNT$ รายการได้เนื่องจากคุณไม่มีสิทธิ์แก้ไข", "placeholders": { "total_count": { "content": "$1", @@ -5140,34 +5150,34 @@ "message": "เพิ่มฟิลด์" }, "add": { - "message": "Add" + "message": "เพิ่ม" }, "fieldType": { - "message": "Field type" + "message": "ประเภทฟิลด์" }, "fieldLabel": { - "message": "Field label" + "message": "ป้ายกำกับฟิลด์" }, "textHelpText": { - "message": "ใช้ช่องข้อความสำหรับเก็บข้อมูล เช่น คำถามเพื่อความปลอดภัย" + "message": "ใช้ฟิลด์ข้อความสำหรับข้อมูลเช่นคำถามความปลอดภัย" }, "hiddenHelpText": { - "message": "Use hidden fields for sensitive data like a password" + "message": "ใช้ฟิลด์ซ่อนสำหรับข้อมูลที่ละเอียดอ่อนเช่นรหัสผ่าน" }, "checkBoxHelpText": { - "message": "Use checkboxes if you'd like to autofill a form's checkbox, like a remember email" + "message": "ใช้ช่องทำเครื่องหมายหากคุณต้องการป้อนข้อมูลลงในช่องทำเครื่องหมายของแบบฟอร์มโดยอัตโนมัติ เช่น การจดจำอีเมล" }, "linkedHelpText": { - "message": "Use a linked field when you are experiencing autofill issues for a specific website." + "message": "ใช้ฟิลด์เชื่อมโยงเมื่อคุณประสบปัญหาการป้อนอัตโนมัติสำหรับเว็บไซต์ใดเว็บไซต์หนึ่งโดยเฉพาะ" }, "linkedLabelHelpText": { - "message": "Enter the the field's html id, name, aria-label, or placeholder." + "message": "ป้อน html id, name, aria-label หรือ placeholder ของฟิลด์" }, "editField": { - "message": "Edit field" + "message": "แก้ไขฟิลด์" }, "editFieldLabel": { - "message": "Edit $LABEL$", + "message": "แก้ไข $LABEL$", "placeholders": { "label": { "content": "$1", @@ -5176,7 +5186,7 @@ } }, "deleteCustomField": { - "message": "Delete $LABEL$", + "message": "ลบ $LABEL$", "placeholders": { "label": { "content": "$1", @@ -5194,7 +5204,7 @@ } }, "reorderToggleButton": { - "message": "Reorder $LABEL$. Use arrow key to move item up or down.", + "message": "จัดลำดับ $LABEL$ ใหม่ ใช้ปุ่มลูกศรเพื่อเลื่อนรายการขึ้นหรือลง", "placeholders": { "label": { "content": "$1", @@ -5203,10 +5213,10 @@ } }, "reorderWebsiteUriButton": { - "message": "Reorder website URI. Use arrow key to move item up or down." + "message": "จัดลำดับ URI เว็บไซต์ใหม่ ใช้ปุ่มลูกศรเพื่อเลื่อนรายการขึ้นหรือลง" }, "reorderFieldUp": { - "message": "$LABEL$ moved up, position $INDEX$ of $LENGTH$", + "message": "เลื่อน $LABEL$ ขึ้น ตำแหน่งที่ $INDEX$ จาก $LENGTH$", "placeholders": { "label": { "content": "$1", @@ -5223,13 +5233,13 @@ } }, "selectCollectionsToAssign": { - "message": "Select collections to assign" + "message": "เลือกคอลเลกชันที่จะมอบหมาย" }, "personalItemTransferWarningSingular": { - "message": "1 item will be permanently transferred to the selected organization. You will no longer own this item." + "message": "1 รายการจะถูกโอนย้ายไปยังองค์กรที่เลือกอย่างถาวร คุณจะไม่ได้เป็นเจ้าของรายการนี้อีกต่อไป" }, "personalItemsTransferWarningPlural": { - "message": "$PERSONAL_ITEMS_COUNT$ items will be permanently transferred to the selected organization. You will no longer own these items.", + "message": "$PERSONAL_ITEMS_COUNT$ รายการจะถูกโอนย้ายไปยังองค์กรที่เลือกอย่างถาวร คุณจะไม่ได้เป็นเจ้าของรายการเหล่านี้อีกต่อไป", "placeholders": { "personal_items_count": { "content": "$1", @@ -5238,7 +5248,7 @@ } }, "personalItemWithOrgTransferWarningSingular": { - "message": "1 item will be permanently transferred to $ORG$. You will no longer own this item.", + "message": "1 รายการจะถูกโอนย้ายไปยัง $ORG$ อย่างถาวร คุณจะไม่ได้เป็นเจ้าของรายการนี้อีกต่อไป", "placeholders": { "org": { "content": "$1", @@ -5247,7 +5257,7 @@ } }, "personalItemsWithOrgTransferWarningPlural": { - "message": "$PERSONAL_ITEMS_COUNT$ items will be permanently transferred to $ORG$. You will no longer own these items.", + "message": "$PERSONAL_ITEMS_COUNT$ รายการจะถูกโอนย้ายไปยัง $ORG$ อย่างถาวร คุณจะไม่ได้เป็นเจ้าของรายการเหล่านี้อีกต่อไป", "placeholders": { "personal_items_count": { "content": "$1", @@ -5260,13 +5270,13 @@ } }, "successfullyAssignedCollections": { - "message": "Successfully assigned collections" + "message": "มอบหมายคอลเลกชันสำเร็จแล้ว" }, "nothingSelected": { - "message": "You have not selected anything." + "message": "คุณไม่ได้เลือกสิ่งใดเลย" }, "itemsMovedToOrg": { - "message": "Items moved to $ORGNAME$", + "message": "ย้ายรายการไปที่ $ORGNAME$ แล้ว", "placeholders": { "orgname": { "content": "$1", @@ -5275,7 +5285,7 @@ } }, "itemMovedToOrg": { - "message": "Item moved to $ORGNAME$", + "message": "ย้ายรายการไปที่ $ORGNAME$ แล้ว", "placeholders": { "orgname": { "content": "$1", @@ -5284,7 +5294,7 @@ } }, "reorderFieldDown": { - "message": "$LABEL$ moved down, position $INDEX$ of $LENGTH$", + "message": "เลื่อน $LABEL$ ลง ตำแหน่งที่ $INDEX$ จาก $LENGTH$", "placeholders": { "label": { "content": "$1", @@ -5301,25 +5311,25 @@ } }, "itemLocation": { - "message": "Item Location" + "message": "ตำแหน่งรายการ" }, "fileSends": { - "message": "File Sends" + "message": "ไฟล์ Send" }, "textSends": { - "message": "Text Sends" + "message": "ข้อความ Send" }, "accountActions": { - "message": "การจัดการบัญชี" + "message": "การดำเนินการกับบัญชี" }, "showNumberOfAutofillSuggestions": { - "message": "Show number of login autofill suggestions on extension icon" + "message": "แสดงจำนวนคำแนะนำการป้อนข้อมูลเข้าสู่ระบบอัตโนมัติบนไอคอนส่วนขยาย" }, "accountAccessRequested": { - "message": "Account access requested" + "message": "ร้องขอการเข้าถึงบัญชีแล้ว" }, "confirmAccessAttempt": { - "message": "Confirm access attempt for $EMAIL$", + "message": "ยืนยันความพยายามเข้าถึงสำหรับ $EMAIL$", "placeholders": { "email": { "content": "$1", @@ -5328,25 +5338,25 @@ } }, "showQuickCopyActions": { - "message": "Show quick copy actions on Vault" + "message": "แสดงการดำเนินการคัดลอกด่วนบนตู้นิรภัย" }, "systemDefault": { - "message": "System default" + "message": "ค่าเริ่มต้นของระบบ" }, "enterprisePolicyRequirementsApplied": { - "message": "Enterprise policy requirements have been applied to this setting" + "message": "ข้อกำหนดนโยบายองค์กรถูกนำมาใช้กับการตั้งค่านี้นี้" }, "sshPrivateKey": { - "message": "Private key" + "message": "กุญแจส่วนตัว" }, "sshPublicKey": { - "message": "Public key" + "message": "กุญแจสาธารณะ" }, "sshFingerprint": { - "message": "Fingerprint" + "message": "ลายนิ้วมือ" }, "sshKeyAlgorithm": { - "message": "Key type" + "message": "ประเภทคีย์" }, "sshKeyAlgorithmED25519": { "message": "ED25519" @@ -5361,58 +5371,58 @@ "message": "RSA 4096-Bit" }, "retry": { - "message": "Retry" + "message": "ลองใหม่" }, "vaultCustomTimeoutMinimum": { - "message": "Minimum custom timeout is 1 minute." + "message": "เวลาหมดเวลาที่กำหนดเองขั้นต่ำคือ 1 นาที" }, "fileSavedToDevice": { - "message": "File saved to device. Manage from your device downloads." + "message": "บันทึกไฟล์ลงในอุปกรณ์แล้ว จัดการได้จากการดาวน์โหลดของอุปกรณ์" }, "showCharacterCount": { - "message": "Show character count" + "message": "แสดงจำนวนตัวอักษร" }, "hideCharacterCount": { - "message": "Hide character count" + "message": "ซ่อนจำนวนตัวอักษร" }, "itemsInTrash": { - "message": "Items in trash" + "message": "รายการในถังขยะ" }, "noItemsInTrash": { - "message": "No items in trash" + "message": "ไม่มีรายการในถังขยะ" }, "noItemsInTrashDesc": { - "message": "Items you delete will appear here and be permanently deleted after 30 days" + "message": "รายการที่คุณลบจะปรากฏที่นี่และจะถูกลบถาวรหลังจาก 30 วัน" }, "trashWarning": { - "message": "Items that have been in trash more than 30 days will automatically be deleted" + "message": "รายการที่อยู่ในถังขยะนานกว่า 30 วันจะถูกลบโดยอัตโนมัติ" }, "restore": { - "message": "Restore" + "message": "กู้คืน" }, "deleteForever": { - "message": "Delete forever" + "message": "ลบถาวร" }, "noEditPermissions": { - "message": "You don't have permission to edit this item" + "message": "คุณไม่มีสิทธิ์แก้ไขรายการนี้" }, "biometricsStatusHelptextUnlockNeeded": { - "message": "Biometric unlock is unavailable because PIN or password unlock is required first." + "message": "การปลดล็อกด้วยไบโอเมตริกไม่พร้อมใช้งาน เนื่องจากต้องปลดล็อกด้วย PIN หรือรหัสผ่านก่อน" }, "biometricsStatusHelptextHardwareUnavailable": { - "message": "Biometric unlock is currently unavailable." + "message": "การปลดล็อกด้วยไบโอเมตริกไม่พร้อมใช้งานในขณะนี้" }, "biometricsStatusHelptextAutoSetupNeeded": { - "message": "Biometric unlock is unavailable due to misconfigured system files." + "message": "การปลดล็อกด้วยไบโอเมตริกไม่พร้อมใช้งานเนื่องจากการกำหนดค่าไฟล์ระบบไม่ถูกต้อง" }, "biometricsStatusHelptextManualSetupNeeded": { - "message": "Biometric unlock is unavailable due to misconfigured system files." + "message": "การปลดล็อกด้วยไบโอเมตริกไม่พร้อมใช้งานเนื่องจากการกำหนดค่าไฟล์ระบบไม่ถูกต้อง" }, "biometricsStatusHelptextDesktopDisconnected": { - "message": "Biometric unlock is unavailable because the Bitwarden desktop app is closed." + "message": "การปลดล็อกด้วยไบโอเมตริกไม่พร้อมใช้งาน เนื่องจากแอป Bitwarden บนเดสก์ท็อปปิดอยู่" }, "biometricsStatusHelptextNotEnabledInDesktop": { - "message": "Biometric unlock is unavailable because it is not enabled for $EMAIL$ in the Bitwarden desktop app.", + "message": "การปลดล็อกด้วยไบโอเมตริกไม่พร้อมใช้งาน เนื่องจากยังไม่ได้เปิดใช้งานสำหรับ $EMAIL$ ในแอป Bitwarden บนเดสก์ท็อป", "placeholders": { "email": { "content": "$1", @@ -5421,41 +5431,41 @@ } }, "biometricsStatusHelptextUnavailableReasonUnknown": { - "message": "Biometric unlock is currently unavailable for an unknown reason." + "message": "การปลดล็อกด้วยไบโอเมตริกไม่พร้อมใช้งานในขณะนี้โดยไม่ทราบสาเหตุ" }, "unlockVault": { - "message": "Unlock your vault in seconds" + "message": "ปลดล็อกตู้นิรภัยของคุณในไม่กี่วินาที" }, "unlockVaultDesc": { - "message": "You can customize your unlock and timeout settings to more quickly access your vault." + "message": "คุณสามารถปรับแต่งการตั้งค่าการปลดล็อกและเวลาหมดเวลาเพื่อเข้าถึงตู้นิรภัยได้รวดเร็วยิ่งขึ้น" }, "unlockPinSet": { - "message": "ตั้งค่า PIN สำหรับปลดล็อกแล้ว" + "message": "ตั้งค่า PIN ปลดล็อกแล้ว" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "ตั้งค่าการปลดล็อกด้วยไบโอเมตริกแล้ว" }, "authenticating": { - "message": "Authenticating" + "message": "กำลังยืนยันตัวตน" }, "fillGeneratedPassword": { - "message": "Fill generated password", + "message": "ป้อนรหัสผ่านที่สร้างขึ้น", "description": "Heading for the password generator within the inline menu" }, "passwordRegenerated": { - "message": "Password regenerated", + "message": "สร้างรหัสผ่านใหม่แล้ว", "description": "Notification message for when a password has been regenerated" }, "saveToBitwarden": { - "message": "Save to Bitwarden", + "message": "บันทึกลง Bitwarden", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "เว้นวรรค", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { - "message": "Tilde", + "message": "ตัวหนอน", "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { @@ -5463,23 +5473,23 @@ "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { - "message": "Exclamation mark", + "message": "เครื่องหมายตกใจ", "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "เครื่องหมาย @", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "เครื่องหมาย #", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "เครื่องหมาย $", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "เครื่องหมาย %", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { @@ -5487,154 +5497,154 @@ "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { - "message": "Ampersand", + "message": "เครื่องหมาย &", "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { - "message": "Asterisk", + "message": "ดอกจัน", "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Left parenthesis", + "message": "วงเล็บเปิด", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Right parenthesis", + "message": "วงเล็บปิด", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "ขีดล่าง", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { - "message": "Hyphen", + "message": "ขีดกลาง", "description": "Represents the - key in screen reader content as a readable word" }, "plusCharacterDescriptor": { - "message": "Plus", + "message": "เครื่องหมาย +", "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Equals", + "message": "เครื่องหมาย =", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "ปีกกาเปิด", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "ปีกกาปิด", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "วงเล็บเหลี่ยมเปิด", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "วงเล็บเหลี่ยมปิด", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { - "message": "Pipe", + "message": "ขีดตั้ง", "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { - "message": "Back slash", + "message": "แบคสแลช", "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { - "message": "Colon", + "message": "โคลอน", "description": "Represents the : key in screen reader content as a readable word" }, "semicolonCharacterDescriptor": { - "message": "Semicolon", + "message": "เซมิโคลอน", "description": "Represents the ; key in screen reader content as a readable word" }, "doubleQuoteCharacterDescriptor": { - "message": "Double quote", + "message": "ฟันหนู", "description": "Represents the double quote key in screen reader content as a readable word" }, "singleQuoteCharacterDescriptor": { - "message": "Single quote", + "message": "ฝนทอง", "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Less than", + "message": "น้อยกว่า", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Greater than", + "message": "มากกว่า", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { - "message": "Comma", + "message": "จุลภาค", "description": "Represents the , key in screen reader content as a readable word" }, "periodCharacterDescriptor": { - "message": "Period", + "message": "จุด", "description": "Represents the . key in screen reader content as a readable word" }, "questionCharacterDescriptor": { - "message": "Question mark", + "message": "เครื่องหมายคำถาม", "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { - "message": "Forward slash", + "message": "ทับ", "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { - "message": "Lowercase" + "message": "ตัวพิมพ์เล็ก" }, "uppercaseAriaLabel": { - "message": "Uppercase" + "message": "ตัวพิมพ์ใหญ่" }, "generatedPassword": { - "message": "Generated password" + "message": "รหัสผ่านที่สร้างขึ้น" }, "compactMode": { - "message": "Compact mode" + "message": "โหมดกะทัดรัด" }, "beta": { - "message": "Beta" + "message": "เบต้า" }, "extensionWidth": { - "message": "Extension width" + "message": "ความกว้างส่วนขยาย" }, "wide": { - "message": "Wide" + "message": "กว้าง" }, "extraWide": { - "message": "Extra wide" + "message": "กว้างพิเศษ" }, "sshKeyWrongPassword": { - "message": "The password you entered is incorrect." + "message": "รหัสผ่านที่คุณป้อนไม่ถูกต้อง" }, "importSshKey": { - "message": "Import" + "message": "นำเข้า" }, "confirmSshKeyPassword": { - "message": "Confirm password" + "message": "ยืนยันรหัสผ่าน" }, "enterSshKeyPasswordDesc": { - "message": "Enter the password for the SSH key." + "message": "ป้อนรหัสผ่านสำหรับคีย์ SSH" }, "enterSshKeyPassword": { - "message": "Enter password" + "message": "ป้อนรหัสผ่าน" }, "invalidSshKey": { - "message": "The SSH key is invalid" + "message": "คีย์ SSH ไม่ถูกต้อง" }, "sshKeyTypeUnsupported": { - "message": "The SSH key type is not supported" + "message": "ไม่รองรับประเภทคีย์ SSH" }, "importSshKeyFromClipboard": { - "message": "Import key from clipboard" + "message": "นำเข้าคีย์จากคลิปบอร์ด" }, "sshKeyImported": { - "message": "SSH key imported successfully" + "message": "นำเข้าคีย์ SSH สำเร็จแล้ว" }, "cannotRemoveViewOnlyCollections": { - "message": "You cannot remove collections with View only permissions: $COLLECTIONS$", + "message": "คุณไม่สามารถลบคอลเลกชันที่มีสิทธิ์ดูอย่างเดียวได้: $COLLECTIONS$", "placeholders": { "collections": { "content": "$1", @@ -5643,93 +5653,93 @@ } }, "updateDesktopAppOrDisableFingerprintDialogTitle": { - "message": "Please update your desktop application" + "message": "โปรดอัปเดตแอปพลิเคชันเดสก์ท็อปของคุณ" }, "updateDesktopAppOrDisableFingerprintDialogMessage": { - "message": "To use biometric unlock, please update your desktop application, or disable fingerprint unlock in the desktop settings." + "message": "หากต้องการใช้การปลดล็อกด้วยไบโอเมตริก โปรดอัปเดตแอปพลิเคชันเดสก์ท็อป หรือปิดใช้งานการปลดล็อกด้วยลายนิ้วมือในการตั้งค่าเดสก์ท็อป" }, "changeAtRiskPassword": { - "message": "Change at-risk password" + "message": "เปลี่ยนรหัสผ่านที่มีความเสี่ยง" }, "changeAtRiskPasswordAndAddWebsite": { - "message": "This login is at-risk and missing a website. Add a website and change the password for stronger security." + "message": "ข้อมูลเข้าสู่ระบบนี้มีความเสี่ยงและไม่มีเว็บไซต์ เพิ่มเว็บไซต์และเปลี่ยนรหัสผ่านเพื่อความปลอดภัยที่รัดกุมยิ่งขึ้น" }, "missingWebsite": { - "message": "Missing website" + "message": "ไม่มีเว็บไซต์" }, "settingsVaultOptions": { - "message": "Vault options" + "message": "ตัวเลือกตู้นิรภัย" }, "emptyVaultDescription": { - "message": "The vault protects more than just your passwords. Store secure logins, IDs, cards and notes securely here." + "message": "ตู้นิรภัยปกป้องมากกว่าแค่รหัสผ่าน จัดเก็บข้อมูลเข้าสู่ระบบ เอกสารระบุตัวตน บัตร และโน้ตอย่างปลอดภัยที่นี่" }, "introCarouselLabel": { - "message": "Welcome to Bitwarden" + "message": "ยินดีต้อนรับสู่ Bitwarden" }, "securityPrioritized": { - "message": "Security, prioritized" + "message": "ให้ความสำคัญกับความปลอดภัย" }, "securityPrioritizedBody": { - "message": "Save logins, cards, and identities to your secure vault. Bitwarden uses zero-knowledge, end-to-end encryption to protect what’s important to you." + "message": "บันทึกข้อมูลเข้าสู่ระบบ บัตร และข้อมูลระบุตัวตนลงในตู้นิรภัยที่ปลอดภัย Bitwarden ใช้การเข้ารหัสแบบ End-to-end แบบ Zero-knowledge เพื่อปกป้องสิ่งที่สำคัญสำหรับคุณ" }, "quickLogin": { - "message": "Quick and easy login" + "message": "เข้าสู่ระบบที่รวดเร็วและง่ายดาย" }, "quickLoginBody": { - "message": "ตั้งค่าการปลดล็อกด้วยไบโอเมตริกซ์และการกรอกข้อมูลอัตโนมัติ เพื่อลงชื่อเข้าใช้บัญชีของคุณโดยไม่ต้องพิมพ์แม้แต่ตัวอักษรเดียว" + "message": "ตั้งค่าการปลดล็อกด้วยไบโอเมตริกและการป้อนอัตโนมัติเพื่อเข้าสู่ระบบบัญชีโดยไม่ต้องพิมพ์แม้แต่ตัวอักษรเดียว" }, "secureUser": { - "message": "Level up your logins" + "message": "ยกระดับการเข้าสู่ระบบของคุณ" }, "secureUserBody": { - "message": "Use the generator to create and save strong, unique passwords for all your accounts." + "message": "ใช้ตัวสร้างเพื่อสร้างและบันทึกรหัสผ่านที่รัดกุมและไม่ซ้ำกันสำหรับทุกบัญชีของคุณ" }, "secureDevices": { - "message": "Your data, when and where you need it" + "message": "ข้อมูลของคุณ ทุกที่ทุกเวลาที่คุณต้องการ" }, "secureDevicesBody": { - "message": "Save unlimited passwords across unlimited devices with Bitwarden mobile, browser, and desktop apps." + "message": "บันทึกรหัสผ่านได้ไม่จำกัดบนอุปกรณ์ไม่จำกัดด้วยแอป Bitwarden บนมือถือ เบราว์เซอร์ และเดสก์ท็อป" }, "nudgeBadgeAria": { - "message": "1 notification" + "message": "1 การแจ้งเตือน" }, "emptyVaultNudgeTitle": { - "message": "Import existing passwords" + "message": "นำเข้ารหัสผ่านที่มีอยู่" }, "emptyVaultNudgeBody": { - "message": "Use the importer to quickly transfer logins to Bitwarden without manually adding them." + "message": "ใช้ตัวนำเข้าเพื่อโอนย้ายข้อมูลเข้าสู่ระบบไปยัง Bitwarden อย่างรวดเร็วโดยไม่ต้องเพิ่มด้วยตนเอง" }, "emptyVaultNudgeButton": { - "message": "Import now" + "message": "นำเข้าเลย" }, "hasItemsVaultNudgeTitle": { - "message": "Welcome to your vault!" + "message": "ยินดีต้อนรับสู่ตู้นิรภัยของคุณ!" }, "phishingPageTitleV2": { - "message": "Phishing attempt detected" + "message": "ตรวจพบความพยายามฟิชชิง" }, "phishingPageSummary": { - "message": "The site you are attempting to visit is a known malicious site and a security risk." + "message": "ไซต์ที่คุณพยายามเข้าชมเป็นไซต์อันตรายที่รู้จักและมีความเสี่ยงด้านความปลอดภัย" }, "phishingPageCloseTabV2": { - "message": "Close this tab" + "message": "ปิดแท็บนี้" }, "phishingPageContinueV2": { - "message": "Continue to this site (not recommended)" + "message": "ไปที่ไซต์นี้ต่อ (ไม่แนะนำ)" }, "phishingPageExplanation1": { - "message": "This site was found in ", + "message": "พบไซต์นี้ใน ", "description": "This is in multiple parts to allow for bold text in the middle of the sentence. A proper name follows this." }, "phishingPageExplanation2": { - "message": ", an open-source list of known phishing sites used for stealing personal and sensitive information.", + "message": " ซึ่งเป็นรายการโอเพนซอร์สของไซต์ฟิชชิงที่รู้จักที่ใช้ขโมยข้อมูลส่วนบุคคลและข้อมูลสำคัญ", "description": "This is in multiple parts to allow for bold text in the middle of the sentence. A proper name precedes this." }, "phishingPageLearnMore": { - "message": "Learn more about phishing detection" + "message": "เรียนรู้เพิ่มเติมเกี่ยวกับการตรวจจับฟิชชิง" }, "protectedBy": { - "message": "Protected by $PRODUCT$", + "message": "ปกป้องโดย $PRODUCT$", "placeholders": { "product": { "content": "$1", @@ -5738,208 +5748,208 @@ } }, "hasItemsVaultNudgeBodyOne": { - "message": "Autofill items for the current page" + "message": "ป้อนข้อมูลรายการอัตโนมัติสำหรับหน้าปัจจุบัน" }, "hasItemsVaultNudgeBodyTwo": { - "message": "Favorite items for easy access" + "message": "ตั้งรายการโปรดเพื่อการเข้าถึงที่ง่ายดาย" }, "hasItemsVaultNudgeBodyThree": { - "message": "Search your vault for something else" + "message": "ค้นหาสิ่งอื่นในตู้นิรภัยของคุณ" }, "newLoginNudgeTitle": { - "message": "Save time with autofill" + "message": "ประหยัดเวลาด้วยการป้อนอัตโนมัติ" }, "newLoginNudgeBodyOne": { - "message": "Include a", + "message": "ระบุ", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyBold": { - "message": "Website", + "message": "เว็บไซต์", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyTwo": { - "message": "so this login appears as an autofill suggestion.", + "message": "เพื่อให้ข้อมูลเข้าสู่ระบบนี้ปรากฏเป็นคำแนะนำการป้อนอัตโนมัติ", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newCardNudgeTitle": { - "message": "Seamless online checkout" + "message": "ชำระเงินออนไลน์ได้อย่างราบรื่น" }, "newCardNudgeBody": { - "message": "With cards, easily autofill payment forms securely and accurately." + "message": "ด้วยบัตร คุณสามารถป้อนแบบฟอร์มการชำระเงินอัตโนมัติได้อย่างปลอดภัยและแม่นยำ" }, "newIdentityNudgeTitle": { - "message": "Simplify creating accounts" + "message": "สร้างบัญชีได้ง่ายขึ้น" }, "newIdentityNudgeBody": { - "message": "With identities, quickly autofill long registration or contact forms." + "message": "ด้วยข้อมูลระบุตัวตน คุณสามารถป้อนแบบฟอร์มลงทะเบียนหรือข้อมูลติดต่อยาว ๆ ได้อย่างรวดเร็ว" }, "newNoteNudgeTitle": { - "message": "Keep your sensitive data safe" + "message": "เก็บรักษาข้อมูลสำคัญของคุณให้ปลอดภัย" }, "newNoteNudgeBody": { - "message": "With notes, securely store sensitive data like banking or insurance details." + "message": "ด้วยโน้ต คุณสามารถจัดเก็บข้อมูลสำคัญ เช่น รายละเอียดธนาคารหรือประกันภัยได้อย่างปลอดภัย" }, "newSshNudgeTitle": { - "message": "Developer-friendly SSH access" + "message": "การเข้าถึง SSH ที่เป็นมิตรกับนักพัฒนา" }, "newSshNudgeBodyOne": { - "message": "Store your keys and connect with the SSH agent for fast, encrypted authentication.", + "message": "จัดเก็บคีย์ของคุณและเชื่อมต่อกับ SSH Agent เพื่อการยืนยันตัวตนที่รวดเร็วและเข้ารหัส", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "newSshNudgeBodyTwo": { - "message": "Learn more about SSH agent", + "message": "เรียนรู้เพิ่มเติมเกี่ยวกับ SSH Agent", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "generatorNudgeTitle": { - "message": "Quickly create passwords" + "message": "สร้างรหัสผ่านอย่างรวดเร็ว" }, "generatorNudgeBodyOne": { - "message": "Easily create strong and unique passwords by clicking on", + "message": "สร้างรหัสผ่านที่รัดกุมและไม่ซ้ำกันได้ง่าย ๆ โดยคลิกที่", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyTwo": { - "message": "to help you keep your logins secure.", + "message": "เพื่อช่วยรักษาความปลอดภัยข้อมูลเข้าสู่ระบบของคุณ", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyAria": { - "message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.", + "message": "สร้างรหัสผ่านที่รัดกุมและไม่ซ้ำกันได้ง่าย ๆ โดยคลิกที่ปุ่มสร้างรหัสผ่าน เพื่อช่วยรักษาความปลอดภัยข้อมูลเข้าสู่ระบบของคุณ", "description": "Aria label for the body content of the generator nudge" }, "aboutThisSetting": { - "message": "About this setting" + "message": "เกี่ยวกับการตั้งค่านี้" }, "permitCipherDetailsDescription": { - "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service." + "message": "Bitwarden จะใช้ URI ข้อมูลเข้าสู่ระบบที่บันทึกไว้เพื่อระบุว่าควรใช้ไอคอนหรือ URL เปลี่ยนรหัสผ่านใดเพื่อปรับปรุงประสบการณ์ของคุณ ไม่มีการรวบรวมหรือบันทึกข้อมูลเมื่อคุณใช้บริการนี้" }, "noPermissionsViewPage": { - "message": "You do not have permissions to view this page. Try logging in with a different account." + "message": "คุณไม่มีสิทธิ์ดูหน้านี้ ลองเข้าสู่ระบบด้วยบัญชีอื่น" }, "wasmNotSupported": { - "message": "WebAssembly is not supported on your browser or is not enabled. WebAssembly is required to use the Bitwarden app.", + "message": "เบราว์เซอร์ของคุณไม่รองรับ WebAssembly หรือไม่ได้เปิดใช้งาน จำเป็นต้องมี WebAssembly เพื่อใช้งานแอป Bitwarden", "description": "'WebAssembly' is a technical term and should not be translated." }, "showMore": { - "message": "Show more" + "message": "แสดงเพิ่มเติม" }, "showLess": { - "message": "Show less" + "message": "แสดงน้อยลง" }, "next": { - "message": "Next" + "message": "ถัดไป" }, "moreBreadcrumbs": { - "message": "More breadcrumbs", + "message": "Breadcrumbs เพิ่มเติม", "description": "This is used in the context of a breadcrumb navigation, indicating that there are more items in the breadcrumb trail that are not currently displayed." }, "confirmKeyConnectorDomain": { - "message": "Confirm Key Connector domain" + "message": "ยืนยันโดเมน Key Connector" }, "atRiskLoginsSecured": { - "message": "Great job securing your at-risk logins!" + "message": "เยี่ยมมาก คุณจัดการความปลอดภัยข้อมูลเข้าสู่ระบบที่มีความเสี่ยงแล้ว!" }, "upgradeNow": { - "message": "Upgrade now" + "message": "อัปเกรดตอนนี้" }, "builtInAuthenticator": { - "message": "Built-in authenticator" + "message": "ตัวยืนยันตัวตนในตัว" }, "secureFileStorage": { - "message": "Secure file storage" + "message": "พื้นที่จัดเก็บไฟล์ที่ปลอดภัย" }, "emergencyAccess": { - "message": "Emergency access" + "message": "การเข้าถึงฉุกเฉิน" }, "breachMonitoring": { - "message": "Breach monitoring" + "message": "การตรวจสอบข้อมูลรั่วไหล" }, "andMoreFeatures": { - "message": "And more!" + "message": "และอื่น ๆ!" }, "advancedOnlineSecurity": { - "message": "Advanced online security" + "message": "ความปลอดภัยออนไลน์ขั้นสูง" }, "upgradeToPremium": { - "message": "Upgrade to Premium" + "message": "อัปเกรดเป็นพรีเมียม" }, "unlockAdvancedSecurity": { - "message": "Unlock advanced security features" + "message": "ปลดล็อกฟีเจอร์ความปลอดภัยขั้นสูง" }, "unlockAdvancedSecurityDesc": { - "message": "A Premium subscription gives you more tools to stay secure and in control" + "message": "การสมัครสมาชิกพรีเมียมมอบเครื่องมือเพิ่มเติมเพื่อให้คุณปลอดภัยและควบคุมได้" }, "explorePremium": { - "message": "Explore Premium" + "message": "สำรวจพรีเมียม" }, "loadingVault": { - "message": "Loading vault" + "message": "กำลังโหลดตู้นิรภัย" }, "vaultLoaded": { - "message": "Vault loaded" + "message": "โหลดตู้นิรภัยแล้ว" }, "settingDisabledByPolicy": { - "message": "This setting is disabled by your organization's policy.", + "message": "การตั้งค่านี้ถูกปิดใช้งานโดยนโยบายองค์กรของคุณ", "description": "This hint text is displayed when a user setting is disabled due to an organization policy." }, "zipPostalCodeLabel": { - "message": "ZIP / Postal code" + "message": "รหัสไปรษณีย์" }, "cardNumberLabel": { - "message": "Card number" + "message": "หมายเลขบัตร" }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "องค์กรของคุณไม่ใช้รหัสผ่านหลักในการเข้าสู่ระบบ Bitwarden อีกต่อไป หากต้องการดำเนินการต่อ ให้ยืนยันองค์กรและโดเมน" }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "ดำเนินการเข้าสู่ระบบต่อ" }, "doNotContinue": { - "message": "Do not continue" + "message": "ไม่ดำเนินการต่อ" }, "domain": { - "message": "Domain" + "message": "โดเมน" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "โดเมนนี้จะจัดเก็บกุญแจเข้ารหัสบัญชีของคุณ ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณเชื่อถือ หากไม่แน่ใจ ให้ตรวจสอบกับผู้ดูแลระบบ" }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "ยืนยันองค์กรของคุณเพื่อเข้าสู่ระบบ" }, "organizationVerified": { - "message": "Organization verified" + "message": "ยืนยันองค์กรแล้ว" }, "domainVerified": { - "message": "Domain verified" + "message": "ยืนยันโดเมนแล้ว" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "หากคุณไม่ยืนยันองค์กร สิทธิ์การเข้าถึงองค์กรของคุณจะถูกเพิกถอน" }, "leaveNow": { - "message": "Leave now" + "message": "ออกตอนนี้" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "ยืนยันโดเมนของคุณเพื่อเข้าสู่ระบบ" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "หากต้องการดำเนินการเข้าสู่ระบบต่อ ให้ยืนยันโดเมนนี้" }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "หากต้องการดำเนินการเข้าสู่ระบบต่อ ให้ยืนยันองค์กรและโดเมน" }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "การดำเนินการเมื่อหมดเวลา" }, "sessionTimeoutSettingsManagedByOrganization": { - "message": "This setting is managed by your organization." + "message": "การตั้งค่านี้ได้รับการจัดการโดยองค์กรของคุณ" }, "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { - "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "message": "องค์กรของคุณกำหนดเวลาหมดเวลาเซสชันสูงสุดไว้ที่ $HOURS$ ชั่วโมง $MINUTES$ นาที", "placeholders": { "hours": { "content": "$1", @@ -5952,16 +5962,16 @@ } }, "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { - "message": "Your organization has set the default session timeout to Immediately." + "message": "องค์กรของคุณกำหนดเวลาหมดเวลาเซสชันเริ่มต้นเป็น ทันที" }, "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { - "message": "Your organization has set the default session timeout to On system lock." + "message": "องค์กรของคุณกำหนดเวลาหมดเวลาเซสชันเริ่มต้นเป็น เมื่อล็อกระบบ" }, "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { - "message": "Your organization has set the default session timeout to On browser restart." + "message": "องค์กรของคุณกำหนดเวลาหมดเวลาเซสชันเริ่มต้นเป็น เมื่อรีสตาร์ตเบราว์เซอร์" }, "sessionTimeoutSettingsPolicyMaximumError": { - "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "message": "เวลาหมดเวลาสูงสุดต้องไม่เกิน $HOURS$ ชั่วโมง $MINUTES$ นาที", "placeholders": { "hours": { "content": "$1", @@ -5974,25 +5984,25 @@ } }, "sessionTimeoutOnRestart": { - "message": "On browser restart" + "message": "เมื่อรีสตาร์ตเบราว์เซอร์" }, "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { - "message": "Set an unlock method to change your timeout action" + "message": "ตั้งค่าวิธีการปลดล็อกเพื่อเปลี่ยนการดำเนินการเมื่อหมดเวลา" }, "upgrade": { - "message": "Upgrade" + "message": "อัปเกรด" }, "leaveConfirmationDialogTitle": { - "message": "Are you sure you want to leave?" + "message": "ยืนยันที่จะออกหรือไม่" }, "leaveConfirmationDialogContentOne": { - "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + "message": "หากปฏิเสธ รายการส่วนตัวจะยังคงอยู่ในบัญชีของคุณ แต่คุณจะเสียสิทธิ์เข้าถึงรายการที่แชร์และฟีเจอร์ขององค์กร" }, "leaveConfirmationDialogContentTwo": { - "message": "Contact your admin to regain access." + "message": "ติดต่อผู้ดูแลระบบเพื่อขอรับสิทธิ์เข้าถึงอีกครั้ง" }, "leaveConfirmationDialogConfirmButton": { - "message": "Leave $ORGANIZATION$", + "message": "ออกจาก $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -6001,10 +6011,10 @@ } }, "howToManageMyVault": { - "message": "How do I manage my vault?" + "message": "ฉันจะจัดการตู้นิรภัยได้อย่างไร" }, "transferItemsToOrganizationTitle": { - "message": "Transfer items to $ORGANIZATION$", + "message": "โอนย้ายรายการไปยัง $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -6013,7 +6023,7 @@ } }, "transferItemsToOrganizationContent": { - "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "message": "$ORGANIZATION$ กำหนดให้รายการทั้งหมดต้องเป็นขององค์กรเพื่อความปลอดภัยและการปฏิบัติตามข้อกำหนด คลิกยอมรับเพื่อโอนกรรมสิทธิ์รายการของคุณ", "placeholders": { "organization": { "content": "$1", @@ -6022,12 +6032,12 @@ } }, "acceptTransfer": { - "message": "Accept transfer" + "message": "ยอมรับการโอนย้าย" }, "declineAndLeave": { - "message": "Decline and leave" + "message": "ปฏิเสธและออก" }, "whyAmISeeingThis": { - "message": "Why am I seeing this?" + "message": "ทำไมฉันจึงเห็นสิ่งนี้" } } diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json index 70e9a5c0afe..e6a787716a4 100644 --- a/apps/browser/src/_locales/tr/messages.json +++ b/apps/browser/src/_locales/tr/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Dışa aktarılacak konum" }, - "export": { - "message": "Dışa aktar" + "exportVerb": { + "message": "Dışa aktar", + "description": "The verb form of the word Export" }, - "import": { - "message": "İçe aktar" + "exportNoun": { + "message": "Dışa aktar", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "İçe aktar", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "İçe aktar", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Dosya biçimi" diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json index 8d040513d67..d777dee1472 100644 --- a/apps/browser/src/_locales/uk/messages.json +++ b/apps/browser/src/_locales/uk/messages.json @@ -437,7 +437,7 @@ "message": "Синхронізація" }, "syncNow": { - "message": "Sync now" + "message": "Синхронізувати" }, "lastSync": { "message": "Остання синхронізація:" @@ -583,7 +583,7 @@ "message": "Архівовані записи виключаються з результатів звичайного пошуку та пропозицій автозаповнення. Ви дійсно хочете архівувати цей запис?" }, "upgradeToUseArchive": { - "message": "A premium membership is required to use Archive." + "message": "Для використання архіву необхідна передплата Premium." }, "edit": { "message": "Змінити" @@ -595,10 +595,10 @@ "message": "Переглянути все" }, "showAll": { - "message": "Show all" + "message": "Показати все" }, "viewLess": { - "message": "View less" + "message": "Показати менше" }, "viewLogin": { "message": "Переглянути запис" @@ -803,10 +803,10 @@ "message": "З блокуванням системи" }, "onIdle": { - "message": "On system idle" + "message": "Бездіяльність системи" }, "onSleep": { - "message": "On system sleep" + "message": "Режим сну" }, "onRestart": { "message": "З перезапуском браузера" @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Експортувати з" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Формат файлу" @@ -1407,25 +1417,25 @@ "message": "Докладніше" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Сталася помилка під час оновлення налаштувань шифрування." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Оновіть свої налаштування шифрування" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Нові рекомендовані налаштування шифрування покращать безпеку вашого облікового запису. Щоб оновити їх, введіть свій головний пароль." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Щоб продовжити, підтвердьте свої облікові дані" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Введіть головний пароль" }, "updateSettings": { - "message": "Update settings" + "message": "Оновити налаштування" }, "later": { - "message": "Later" + "message": "Пізніше" }, "authenticatorKeyTotp": { "message": "Ключ автентифікації (TOTP)" @@ -1458,13 +1468,13 @@ "message": "Вкладення збережено" }, "fixEncryption": { - "message": "Fix encryption" + "message": "Виправити шифрування" }, "fixEncryptionTooltip": { - "message": "This file is using an outdated encryption method." + "message": "Для цього файлу використовується застарілий метод шифрування." }, "attachmentUpdated": { - "message": "Attachment updated" + "message": "Вкладення оновлено" }, "file": { "message": "Файл" @@ -1476,7 +1486,7 @@ "message": "Оберіть файл" }, "itemsTransferred": { - "message": "Items transferred" + "message": "Записи переміщено" }, "maxFileSize": { "message": "Максимальний розмір файлу 500 МБ." @@ -1509,7 +1519,7 @@ "message": "1 ГБ зашифрованого сховища для файлів." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ зашифрованого сховища для вкладених файлів.", "placeholders": { "size": { "content": "$1", @@ -1916,7 +1926,7 @@ "message": "Рік завершення" }, "monthly": { - "message": "month" + "message": "місяць" }, "expiration": { "message": "Термін дії" @@ -2488,7 +2498,7 @@ } }, "topLayerHijackWarning": { - "message": "This page is interfering with the Bitwarden experience. The Bitwarden inline menu has been temporarily disabled as a safety measure." + "message": "Ця сторінка заважає роботі Bitwarden. Задля безпеки вбудоване меню Bitwarden тимчасово вимкнено." }, "setMasterPassword": { "message": "Встановити головний пароль" @@ -4802,13 +4812,13 @@ "message": "Безпека облікового запису" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "Блокувальник шахрайства" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "Виявлення шахрайства" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "Показувати попередження перед відвідуванням підозрюваних шахрайських сайтів" }, "notifications": { "message": "Сповіщення" @@ -4956,7 +4966,7 @@ "message": "Premium" }, "unlockFeaturesWithPremium": { - "message": "Unlock reporting, emergency access, and more security features with Premium." + "message": "Розблокуйте звіти, екстрений доступ та інші функції безпеки, передплативши Premium." }, "freeOrgsCannotUseAttachments": { "message": "Організації без передплати не можуть використовувати вкладення" @@ -5043,7 +5053,7 @@ } }, "defaultLabelWithValue": { - "message": "Default ( $VALUE$ )", + "message": "Типово ( $VALUE$ )", "description": "A label that indicates the default value for a field with the current default value in parentheses.", "placeholders": { "value": { @@ -5863,25 +5873,25 @@ "message": "Інші можливості!" }, "advancedOnlineSecurity": { - "message": "Advanced online security" + "message": "Розширена онлайн-безпека" }, "upgradeToPremium": { "message": "Покращити до Premium" }, "unlockAdvancedSecurity": { - "message": "Unlock advanced security features" + "message": "Розблокуйте розширені функції безпеки" }, "unlockAdvancedSecurityDesc": { - "message": "A Premium subscription gives you more tools to stay secure and in control" + "message": "З передплатою Premium ви матимете більше інструментів безпеки та контролю" }, "explorePremium": { - "message": "Explore Premium" + "message": "Ознайомитися з Premium" }, "loadingVault": { - "message": "Loading vault" + "message": "Завантаження сховища" }, "vaultLoaded": { - "message": "Vault loaded" + "message": "Сховище завантажено" }, "settingDisabledByPolicy": { "message": "Цей параметр вимкнено політикою вашої організації.", @@ -5894,52 +5904,52 @@ "message": "Номер картки" }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "Ваша організація більше не використовує головні паролі для входу в Bitwarden. Щоб продовжити, підтвердіть організацію та домен." }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "Перейти до входу" }, "doNotContinue": { - "message": "Do not continue" + "message": "Не продовжувати" }, "domain": { - "message": "Domain" + "message": "Домен" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "Цей домен зберігатиме ключі шифрування вашого облікового запису, тому переконайтеся в його надійності. Якщо ви не впевнені, зверніться до свого адміністратора." }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "Підтвердьте свою організацію, щоб увійти" }, "organizationVerified": { - "message": "Organization verified" + "message": "Організацію підтверджено" }, "domainVerified": { - "message": "Domain verified" + "message": "Домен підтверджено" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "Якщо ви не підтвердите свою організацію, ваш доступ до неї буде відкликаний." }, "leaveNow": { - "message": "Leave now" + "message": "Покинути" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "Підтвердьте свій домен, щоб увійти" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "Щоб перейти до входу, підтвердьте цей домен." }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "Щоб перейти до входу, підтвердьте організацію і домен." }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "Дія після часу очікування" }, "sessionTimeoutSettingsManagedByOrganization": { - "message": "This setting is managed by your organization." + "message": "Цим параметром керує ваша організація." }, "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { - "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "message": "Ваша організація встановила максимальний час очікування сеансу $HOURS$ год і $MINUTES$ хв.", "placeholders": { "hours": { "content": "$1", @@ -5952,16 +5962,16 @@ } }, "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { - "message": "Your organization has set the default session timeout to Immediately." + "message": "Ваша організація встановила максимальний час очікування сеансу \"Негайно\"." }, "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { - "message": "Your organization has set the default session timeout to On system lock." + "message": "Ваша організація встановила максимальний час очікування сеансу \"Блокування системи\"." }, "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { - "message": "Your organization has set the default session timeout to On browser restart." + "message": "Ваша організація встановила максимальний час очікування сеансу \"З перезапуском браузера\"." }, "sessionTimeoutSettingsPolicyMaximumError": { - "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "message": "Максимальний час очікування не може перевищувати $HOURS$ год і $MINUTES$ хв", "placeholders": { "hours": { "content": "$1", @@ -5974,25 +5984,25 @@ } }, "sessionTimeoutOnRestart": { - "message": "On browser restart" + "message": "З перезапуском браузера" }, "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { - "message": "Set an unlock method to change your timeout action" + "message": "Встановіть спосіб розблокування, щоб змінити дію під час очікування" }, "upgrade": { - "message": "Upgrade" + "message": "Оновити" }, "leaveConfirmationDialogTitle": { - "message": "Are you sure you want to leave?" + "message": "Ви дійсно хочете покинути?" }, "leaveConfirmationDialogContentOne": { - "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + "message": "Відхиливши, ваші особисті записи залишаться у вашому обліковому записі, але ви втратите доступ до спільних записів та функцій організації." }, "leaveConfirmationDialogContentTwo": { - "message": "Contact your admin to regain access." + "message": "Зверніться до свого адміністратора, щоб відновити доступ." }, "leaveConfirmationDialogConfirmButton": { - "message": "Leave $ORGANIZATION$", + "message": "Покинути $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -6001,10 +6011,10 @@ } }, "howToManageMyVault": { - "message": "How do I manage my vault?" + "message": "Як керувати своїм сховищем?" }, "transferItemsToOrganizationTitle": { - "message": "Transfer items to $ORGANIZATION$", + "message": "Перемістити записи до $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -6013,7 +6023,7 @@ } }, "transferItemsToOrganizationContent": { - "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "message": "З міркувань безпеки та для забезпечення відповідності $ORGANIZATION$ вимагає, щоб власником всіх елементів була організація. Натисніть кнопку \"прийняти\", щоб передати права власності на ваші елементи.", "placeholders": { "organization": { "content": "$1", @@ -6022,12 +6032,12 @@ } }, "acceptTransfer": { - "message": "Accept transfer" + "message": "Схвалити переміщення" }, "declineAndLeave": { - "message": "Decline and leave" + "message": "Відхилити і покинути" }, "whyAmISeeingThis": { - "message": "Why am I seeing this?" + "message": "Чому я це бачу?" } } diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json index 4049af21e06..cd8ad7cbc91 100644 --- a/apps/browser/src/_locales/vi/messages.json +++ b/apps/browser/src/_locales/vi/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "Xuất từ" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "Định dạng tập tin" diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index 4ebfaca7ef8..53d51a8e16f 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "导出自" }, - "export": { - "message": "导出" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "导入" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "文件格式" @@ -2355,7 +2365,7 @@ "message": "无效 PIN 码。" }, "tooManyInvalidPinEntryAttemptsLoggingOut": { - "message": "无效的 PIN 输入尝试次数过多,正在注销。" + "message": "无效的 PIN 输入尝试次数过多。正在注销。" }, "unlockWithBiometrics": { "message": "使用生物识别解锁" @@ -4802,13 +4812,13 @@ "message": "账户安全" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "网络钓鱼拦截器" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "网络钓鱼检测" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "在访问疑似钓鱼网站前显示警告" }, "notifications": { "message": "通知" @@ -5726,7 +5736,7 @@ "description": "This is in multiple parts to allow for bold text in the middle of the sentence. A proper name precedes this." }, "phishingPageLearnMore": { - "message": "进一步了解钓鱼检测" + "message": "进一步了解网络钓鱼检测" }, "protectedBy": { "message": "受 $PRODUCT$ 保护", diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json index e0b69c212b5..b36ba76f0a1 100644 --- a/apps/browser/src/_locales/zh_TW/messages.json +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -1322,11 +1322,21 @@ "exportFrom": { "message": "匯出自" }, - "export": { - "message": "Export" + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, - "import": { - "message": "Import" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "fileFormat": { "message": "檔案格式" diff --git a/apps/browser/store/locales/th/copy.resx b/apps/browser/store/locales/th/copy.resx index 1473e24d92e..5ffab9e41fe 100644 --- a/apps/browser/store/locales/th/copy.resx +++ b/apps/browser/store/locales/th/copy.resx @@ -118,58 +118,57 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Bitwarden - จัดการรหัสผ่าน + Bitwarden Password Manager - At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information. + ไม่ว่าจะที่บ้าน ที่ทำงาน หรือระหว่างเดินทาง Bitwarden ช่วยปกป้องรหัสผ่าน พาสคีย์ และข้อมูลสำคัญของคุณได้อย่างง่ายดาย - Recognized as the best password manager by PCMag, WIRED, The Verge, CNET, G2, and more! + ได้รับการยอมรับว่าเป็นตัวจัดการรหัสผ่านที่ดีที่สุดโดย PCMag, WIRED, The Verge, CNET, G2 และอีกมากมาย! -SECURE YOUR DIGITAL LIFE -Secure your digital life and protect against data breaches by generating and saving unique, strong passwords for every account. Maintain everything in an end-to-end encrypted password vault that only you can access. +ปกป้องชีวิตดิจิทัลของคุณ +ปกป้องชีวิตดิจิทัลและป้องกันข้อมูลรั่วไหลโดยการสร้างและบันทึกรหัสผ่านที่รัดกุมและไม่ซ้ำกันสำหรับทุกบัญชี ดูแลจัดการทุกอย่างในตู้นิรภัยรหัสผ่านที่เข้ารหัสแบบต้นทางถึงปลายทาง ซึ่งมีเพียงคุณเท่านั้นที่เข้าถึงได้ -ACCESS YOUR DATA, ANYWHERE, ANYTIME, ON ANY DEVICE -Easily manage, store, secure, and share unlimited passwords across unlimited devices without restrictions. +เข้าถึงข้อมูลของคุณได้ทุกที่ ทุกเวลา บนทุกอุปกรณ์ +จัดการ จัดเก็บ ปกป้อง และแชร์รหัสผ่านได้ไม่จำกัดบนอุปกรณ์ไม่จำกัดจำนวนได้อย่างง่ายดายโดยไม่มีข้อจำกัด -EVERYONE SHOULD HAVE THE TOOLS TO STAY SAFE ONLINE -Utilize Bitwarden for free with no ads or selling data. Bitwarden believes everyone should have the ability to stay safe online. Premium plans offer access to advanced features. +ทุกคนควรมีเครื่องมือเพื่อความปลอดภัยบนโลกออนไลน์ +ใช้งาน Bitwarden ได้ฟรีโดยไม่มีโฆษณาหรือการขายข้อมูล Bitwarden เชื่อว่าทุกคนควรมีความสามารถในการอยู่อย่างปลอดภัยบนโลกออนไลน์ แผนพรีเมียมจะมอบการเข้าถึงฟีเจอร์ขั้นสูง -EMPOWER YOUR TEAMS WITH BITWARDEN -Plans for Teams and Enterprise come with professional business features. Some examples include SSO integration, self-hosting, directory integration and SCIM provisioning, global policies, API access, event logs, and more. +เสริมศักยภาพทีมของคุณด้วย BITWARDEN +แผนสำหรับ Teams และ Enterprise มาพร้อมกับฟีเจอร์ทางธุรกิจระดับมืออาชีพ ตัวอย่างเช่น การรวม SSO, การโฮสต์เอง (Self-hosting), การรวมไดเรกทอรีและการจัดเตรียม SCIM, นโยบายระดับองค์กร, การเข้าถึง API, บันทึกเหตุการณ์ และอื่น ๆ -Use Bitwarden to secure your workforce and share sensitive information with colleagues. +ใช้ Bitwarden เพื่อปกป้องบุคลากรของคุณและแชร์ข้อมูลสำคัญกับเพื่อนร่วมงาน +เหตุผลเพิ่มเติมที่ควรเลือก Bitwarden: -More reasons to choose Bitwarden: +การเข้ารหัสระดับโลก +รหัสผ่านได้รับการปกป้องด้วยการเข้ารหัสแบบต้นทางถึงปลายทาง ขั้นสูง (AES-256 bit, salted hashing และ PBKDF2 SHA-256) ข้อมูลของคุณจึงปลอดภัยและเป็นส่วนตัว -World-Class Encryption -Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. +การตรวจสอบโดยบุคคลที่สาม +Bitwarden ดำเนินการตรวจสอบความปลอดภัยโดยบุคคลที่สามอย่างครอบคลุมกับบริษัทความปลอดภัยที่มีชื่อเสียงอย่างสม่ำเสมอ การตรวจสอบประจำปีเหล่านี้รวมถึงการประเมินซอร์สโค้ดและการทดสอบเจาะระบบครอบคลุมทั้ง IP, เซิร์ฟเวอร์ และเว็บแอปพลิเคชันของ Bitwarden -3rd-party Audits -Bitwarden regularly conducts comprehensive third-party security audits with notable security firms. These annual audits include source code assessments and penetration testing across Bitwarden IPs, servers, and web applications. - -Advanced 2FA -Secure your login with a third-party authenticator, emailed codes, or FIDO2 WebAuthn credentials such as a hardware security key or passkey. +2FA ขั้นสูง +ปกป้องการเข้าสู่ระบบของคุณด้วยแอปยืนยันตัวตนของบุคคลที่สาม, รหัสทางอีเมล หรือข้อมูลประจำตัว FIDO2 WebAuthn เช่น คีย์ความปลอดภัยฮาร์ดแวร์หรือพาสคีย์ Bitwarden Send -Transmit data directly to others while maintaining end-to-end encrypted security and limiting exposure. +ส่งข้อมูลโดยตรงถึงผู้อื่นในขณะที่ยังคงรักษาความปลอดภัยด้วยการเข้ารหัสแบบต้นทางถึงปลายทาง และจำกัดการเปิดเผยข้อมูล -Built-in Generator -Create long, complex, and distinct passwords and unique usernames for every site you visit. Integrate with email alias providers for additional privacy. +ตัวสร้างในตัว +สร้างรหัสผ่านที่ยาว ซับซ้อน และแตกต่างกัน รวมถึงชื่อผู้ใช้ที่ไม่ซ้ำกันสำหรับทุกเว็บไซต์ที่คุณเยี่ยมชม ผสานรวมกับผู้ให้บริการนามแฝงอีเมลเพื่อความเป็นส่วนตัวเพิ่มเติม -Global Translations -Bitwarden translations exist for more than 60 languages, translated by the global community though Crowdin. +การแปลภาษาทั่วโลก +Bitwarden มีการแปลภาษามากกว่า 60 ภาษา โดยชุมชนทั่วโลกผ่าน Crowdin -Cross-Platform Applications -Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. +แอปพลิเคชันข้ามแพลตฟอร์ม +ปกป้องและแชร์ข้อมูลสำคัญภายในตู้นิรภัย Bitwarden ของคุณจากเบราว์เซอร์ อุปกรณ์มือถือ หรือระบบปฏิบัติการเดสก์ท็อปใดก็ได้ และอื่น ๆ -Bitwarden secures more than just passwords -End-to-end encrypted credential management solutions from Bitwarden empower organizations to secure everything, including developer secrets and passkey experiences. Visit Bitwarden.com to learn more about Bitwarden Secrets Manager and Bitwarden Passwordless.dev! +Bitwarden ปกป้องมากกว่าแค่รหัสผ่าน +โซลูชันการจัดการข้อมูลประจำตัวที่เข้ารหัสแบบ End-to-end จาก Bitwarden ช่วยให้องค์กรปกป้องทุกสิ่ง รวมถึงความลับของนักพัฒนาและประสบการณ์พาสคีย์ เยี่ยมชม Bitwarden.com เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Bitwarden Secrets Manager และ Bitwarden Passwordless.dev! - At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information. + ไม่ว่าจะที่บ้าน ที่ทำงาน หรือระหว่างเดินทาง Bitwarden ช่วยปกป้องรหัสผ่าน พาสคีย์ และข้อมูลสำคัญของคุณได้อย่างง่ายดาย ซิงค์และเข้าถึงตู้นิรภัยของคุณจากหลายอุปกรณ์ @@ -178,15 +177,15 @@ End-to-end encrypted credential management solutions from Bitwarden empower orga จัดการล็อกอินและรหัสผ่านทั้งหมดของคุณจากตู้นิรภัยที่ปลอดภัย - กรอกข้อมูลล็อกอินโดยอัตโนมัติบนทุกเว็บไซต์ที่คุณใช้งานได้อย่างรวดเร็ว + ป้อนข้อมูลเข้าสู่ระบบของคุณลงในเว็บไซต์ที่คุณเยี่ยมชมอย่างรวดเร็วโดยอัตโนมัติ - ตู้เซฟของคุณยังสามารถเข้าถึงได้โดยสะดวกผ่านเมนูคลิกขวา + เข้าถึงตู้นิรภัยของคุณได้อย่างสะดวกจากเมนูคลิกขวา - ส่มสร้างรหัสผ่านที่แข็งแกร่งและปลอดภัยโดยอัตโนมัติ + สร้างรหัสผ่านที่รัดกุม แบบสุ่ม และปลอดภัยโดยอัตโนมัติ - ข้อมูลของคุณได้รับการจัดการอย่างปลอดภัยโดยใช้การเข้ารหัส AES 256 บิต + ข้อมูลของคุณได้รับการจัดการอย่างปลอดภัยโดยใช้การเข้ารหัส AES-256 bit From 21157f71e70e1731659ce1cdfbc447e31c070402 Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 12:24:41 +0100 Subject: [PATCH 03/81] Autosync the updated translations (#18046) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/web/src/locales/af/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ar/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/az/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/be/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/bg/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/bn/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/bs/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ca/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/cs/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/cy/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/da/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/de/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/el/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/en_GB/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/en_IN/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/eo/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/es/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/et/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/eu/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/fa/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/fi/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/fil/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/fr/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/gl/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/he/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/hi/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/hr/messages.json | 91 ++++++++++++++++++++---- apps/web/src/locales/hu/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/id/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/it/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ja/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ka/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/km/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/kn/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ko/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/lv/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ml/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/mr/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/my/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/nb/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ne/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/nl/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/nn/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/or/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/pl/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/pt_BR/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/pt_PT/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ro/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ru/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/si/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/sk/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/sl/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/sr_CS/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/sr_CY/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/sv/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/ta/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/te/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/th/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/tr/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/uk/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/vi/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/zh_CN/messages.json | 75 +++++++++++++++++-- apps/web/src/locales/zh_TW/messages.json | 75 +++++++++++++++++-- 63 files changed, 4481 insertions(+), 260 deletions(-) diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json index 0961a8dd5e2..76f130bc4d5 100644 --- a/apps/web/src/locales/af/messages.json +++ b/apps/web/src/locales/af/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Rekeningenkripsiesleutels is uniek tot elke Bitwarden-gebruikersrekening, daarom kan u nie ’n geënkripteerde uitstuur in ’n ander rekening invoer nie." }, - "export": { - "message": "Uitstuur" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Nutsmiddels" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Voer data in" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Berging" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Gebruiker $ID$ genooi.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/ar/messages.json b/apps/web/src/locales/ar/messages.json index 311490950b6..c794d8f48a0 100644 --- a/apps/web/src/locales/ar/messages.json +++ b/apps/web/src/locales/ar/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "تصدير" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "التصدير من" @@ -2297,8 +2302,13 @@ "tools": { "message": "الأدوات" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "استيراد البيانات" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "مساحة التخزين" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json index 580bb3beed1..1b6593578a6 100644 --- a/apps/web/src/locales/az/messages.json +++ b/apps/web/src/locales/az/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Hesab şifrələmə açarları, hər Bitwarden istifadəçi hesabı üçün unikaldır, buna görə də şifrələnmiş bir ixracı, fərqli bir hesaba idxal edə bilməzsiniz." }, - "export": { - "message": "İxrac et" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Buradan xaricə köçür" @@ -2297,8 +2302,13 @@ "tools": { "message": "Alətlər" }, - "import": { - "message": "Daxilə köçür" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Veriləri daxilə köçür" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Bulud Abunəliyini Başlat" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Saxlama" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "$ID$ istifadəçisi dəvət edildi.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Bunu niyə görürəm?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json index 3bfaeea871c..f0f595e9b63 100644 --- a/apps/web/src/locales/be/messages.json +++ b/apps/web/src/locales/be/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Ключы шыфравання з'яўляюцца ўнікальнымі для кожнага ўліковага запісу Bitwarden, таму нельга імпартаваць зашыфраванае сховішча ў іншы ўліковы запіс." }, - "export": { - "message": "Экспартаваць" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Інструменты" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Імпартаванне даных" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Запусціць воблачную падпіску" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Сховішча" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Запрошаны карыстальнік $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/bg/messages.json b/apps/web/src/locales/bg/messages.json index 7ec68a1f962..31a91a195ad 100644 --- a/apps/web/src/locales/bg/messages.json +++ b/apps/web/src/locales/bg/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Ключовете за шифриране са уникални за всеки потребител, затова не може да внесете шифрирани данни от един потребител в регистрацията на друг." }, - "export": { - "message": "Изнасяне" + "exportNoun": { + "message": "Изнасяне", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Изнасяне", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Изнасяне от" @@ -2297,8 +2302,13 @@ "tools": { "message": "Инструменти" }, - "import": { - "message": "Внасяне" + "importNoun": { + "message": "Внасяне", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Внасяне", + "description": "The verb form of the word Import" }, "importData": { "message": "Внасяне на данни" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Стартиране на облачния абонамент" + }, "storage": { "message": "Съхранение на данни" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Прието прехвърляне на собствеността към организацията." + }, + "userDeclinedTransfer": { + "message": "Премахнато, поради отказ от прехвърляне на собствеността към организацията." + }, "invitedUserId": { "message": "Потребител № $ID$ е поканен.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Защо виждам това?" + }, + "youHaveBitwardenPremium": { + "message": "Вие имате платен абонамент за Битуорден" + }, + "viewAndManagePremiumSubscription": { + "message": "Прегледайте и управлявайте своя платен абонамент" + }, + "youNeedToUpdateLicenseFile": { + "message": "Ще трябва да обновите лицензния си файл" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Качване на лицензен файл" + }, + "uploadYourLicenseFile": { + "message": "Качете своя лицензен файл" + }, + "uploadYourPremiumLicenseFile": { + "message": "Качете своя лицензен файл за платения абонамент" + }, + "uploadLicenseFileDesc": { + "message": "Името на Вашия лицензен файл ще бъде подобно на: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Имате ли вече абонамент?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Отворете страницата за абонаменти в облачния си акаунт за Битуорден и свалете лицензния си файл. След това се върнете на този екран и го качете по-долу." + }, + "viewAllPlans": { + "message": "Преглед на всички планове" + }, + "planDescPremium": { + "message": "Пълна сигурност в Интернет" } } diff --git a/apps/web/src/locales/bn/messages.json b/apps/web/src/locales/bn/messages.json index f6ea3edb275..a7558a78856 100644 --- a/apps/web/src/locales/bn/messages.json +++ b/apps/web/src/locales/bn/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/bs/messages.json b/apps/web/src/locales/bs/messages.json index 7cd48d3c6ed..f287b526aa2 100644 --- a/apps/web/src/locales/bs/messages.json +++ b/apps/web/src/locales/bs/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/ca/messages.json b/apps/web/src/locales/ca/messages.json index 4f9d5e635dc..47cd621647a 100644 --- a/apps/web/src/locales/ca/messages.json +++ b/apps/web/src/locales/ca/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Les claus de xifratge són exclusives de cada compte d'usuari Bitwarden, de manera que no podeu importar una exportació xifrada a un compte diferent." }, - "export": { - "message": "Exporta" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exporta des de" @@ -2297,8 +2302,13 @@ "tools": { "message": "Eines" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Importa dades" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Inicia la subscripció al núvol" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Emmagatzematge" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "S'ha convidat a l'usuari $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/cs/messages.json b/apps/web/src/locales/cs/messages.json index 7cc37f70371..2cb6547205d 100644 --- a/apps/web/src/locales/cs/messages.json +++ b/apps/web/src/locales/cs/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Šifrovací klíče účtu jsou pro každý uživatelský účet Bitwardenu jedinečné, takže nelze importovat šifrovaný export do jiného účtu." }, - "export": { - "message": "Exportovat" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Exportovat", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exportovat z" @@ -2297,8 +2302,13 @@ "tools": { "message": "Nástroje" }, - "import": { - "message": "Importovat" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importovat", + "description": "The verb form of the word Import" }, "importData": { "message": "Importovat data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Spustit předplatné Cloud" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Spustit předplatné Cloud" + }, "storage": { "message": "Úložiště" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Převod do vlastnictví organizace byl přijat." + }, + "userDeclinedTransfer": { + "message": "Zrušeno z důvodu odmítnutí převodu do vlastnictví organizace." + }, "invitedUserId": { "message": "Byl pozván uživatel $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Proč se mi toto zobrazuje?" + }, + "youHaveBitwardenPremium": { + "message": "Máte Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "Zobrazit a spravovat předplatné Premium" + }, + "youNeedToUpdateLicenseFile": { + "message": "Budete muset aktualizovat svůj licenční soubor" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Nahrát licenční soubor" + }, + "uploadYourLicenseFile": { + "message": "Nahrajte Váš licenční soubor" + }, + "uploadYourPremiumLicenseFile": { + "message": "Nahrajte Váš licenční soubor Premium" + }, + "uploadLicenseFileDesc": { + "message": "Název Vašeho licenčního souboru bude podobný názvu $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Již máte předplatné?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Otevřete stránku s předplatným na Vašem účtu Bitwarden a stáhněte si licenční soubor. Poté se vraťte na tuto obrazovku a nahrajte jej níže." + }, + "viewAllPlans": { + "message": "Zobraz všechny plány" + }, + "planDescPremium": { + "message": "Dokončit online zabezpečení" } } diff --git a/apps/web/src/locales/cy/messages.json b/apps/web/src/locales/cy/messages.json index 2fe0598ef20..087d353b3a4 100644 --- a/apps/web/src/locales/cy/messages.json +++ b/apps/web/src/locales/cy/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json index 1d6b5e8df42..53f20b8a8f7 100644 --- a/apps/web/src/locales/da/messages.json +++ b/apps/web/src/locales/da/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Kontokrypteringsnøgler er unikke for hver Bitwarden-brugerkonto, så man kan ikke importere en krypteret eksport til en anden konto." }, - "export": { - "message": "Eksportér" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Eksportér fra" @@ -2297,8 +2302,13 @@ "tools": { "message": "Værktøjer" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Importér data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Start Cloud Abonnement" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Lager" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Inviterede bruger $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index d3dd0f712f8..608421ef132 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Die Verschlüsselungscodes eines Kontos sind für jedes Bitwarden-Benutzerkonto einzigartig, deshalb kannst du keinen verschlüsselten Export in ein anderes Konto importieren." }, - "export": { - "message": "Exportieren" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Exportieren", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exportieren ab" @@ -2297,8 +2302,13 @@ "tools": { "message": "Werkzeuge" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importieren", + "description": "The verb form of the word Import" }, "importData": { "message": "Daten importieren" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Cloud-Abonnement starten" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Speicher" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Benutzer $ID$ eingeladen.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Warum wird mir das angezeigt?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Lizenzdatei hochladen" + }, + "uploadYourLicenseFile": { + "message": "Lade deine Lizenzdatei hoch" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Umfassende Online-Sicherheit" } } diff --git a/apps/web/src/locales/el/messages.json b/apps/web/src/locales/el/messages.json index 04d28c866cc..9232935b33c 100644 --- a/apps/web/src/locales/el/messages.json +++ b/apps/web/src/locales/el/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Τα κλειδιά κρυπτογράφησης λογαριασμού είναι μοναδικά για κάθε λογαριασμό χρήστη Bitwarden, οπότε δεν μπορείτε να εισάγετε μια κρυπτογραφημένη εξαγωγή σε διαφορετικό λογαριασμό." }, - "export": { - "message": "Εξαγωγή" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Εξαγωγή από" @@ -2297,8 +2302,13 @@ "tools": { "message": "Εργαλεία" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Εισαγωγή Δεδομένων" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Εκκίνηση Συνδρομής Cloud" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Αποθήκευση" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Προσκεκλημένος χρήστης $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json index 9c77e913e3e..3e25235b9a8 100644 --- a/apps/web/src/locales/en_GB/messages.json +++ b/apps/web/src/locales/en_GB/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organisation ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organisation ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your licence file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload licence file" + }, + "uploadYourLicenseFile": { + "message": "Upload your licence file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium licence file" + }, + "uploadLicenseFileDesc": { + "message": "Your licence file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your licence file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/en_IN/messages.json b/apps/web/src/locales/en_IN/messages.json index cdd59507064..b65b8d40622 100644 --- a/apps/web/src/locales/en_IN/messages.json +++ b/apps/web/src/locales/en_IN/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organisation ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organisation ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your licence file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload licence file" + }, + "uploadYourLicenseFile": { + "message": "Upload your licence file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium licence file" + }, + "uploadLicenseFileDesc": { + "message": "Your licence file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your licence file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/eo/messages.json b/apps/web/src/locales/eo/messages.json index a9ba4d042f0..7ee4e504035 100644 --- a/apps/web/src/locales/eo/messages.json +++ b/apps/web/src/locales/eo/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Kontaj ĉifraj ŝlosiloj estas unikaj por ĉiu Bitwarden-uzanto-konto, do vi ne povas importi ĉifritan eksportadon en alian konton." }, - "export": { - "message": "Elporti" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Elporti el" @@ -2297,8 +2302,13 @@ "tools": { "message": "Iloj" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Importi Datumojn" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Stokado" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json index f93bbc02cd4..68141386a0e 100644 --- a/apps/web/src/locales/es/messages.json +++ b/apps/web/src/locales/es/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Las claves de cifrado de cuenta son únicas para cada cuenta de usuario de Bitwarden, por lo que no puede importar una exportación cifrada a una cuenta diferente." }, - "export": { - "message": "Exportar" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exportar desde" @@ -2297,8 +2302,13 @@ "tools": { "message": "Herramientas" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Importar datos" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Iniciar suscripción en la nube" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Almacenamiento" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Usuario $ID$ invitado.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/et/messages.json b/apps/web/src/locales/et/messages.json index 83fa92c6985..d05ba09dfbd 100644 --- a/apps/web/src/locales/et/messages.json +++ b/apps/web/src/locales/et/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Iga Bitwardeni kasutaja krüpteerimisvõti on unikaalne. Eksporditud andmeid ei saa importida teise Bitwardeni kasutajakontosse." }, - "export": { - "message": "Ekspordi" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Ekspordi asukohast" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tööriistad" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Andmete importimine" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Ühenda Tasuline Tellimus" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Salvestusruum" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Kutsus kasutaja $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json index 9d3ba92bec9..39473dbc75c 100644 --- a/apps/web/src/locales/eu/messages.json +++ b/apps/web/src/locales/eu/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Kontua zifratzeko gakoak Bitwarden erabiltzaile bakoitzarentzako bakarrik dira; beraz, ezin da inportatu beste kontu batean zifratutako esportazio bat." }, - "export": { - "message": "Esportatu" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tresnak" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Inportatu datuak" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Biltegia" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "$ID$ erabiltzailea gonbidatua.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/fa/messages.json b/apps/web/src/locales/fa/messages.json index be630d5c9f7..b85c692e1fe 100644 --- a/apps/web/src/locales/fa/messages.json +++ b/apps/web/src/locales/fa/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "کلیدهای رمزگذاری حساب برای هر حساب کاربری Bitwarden منحصر به فرد است، بنابراین نمی‌توانید برون ریزی رمزگذاری شده را به حساب دیگری وارد کنید." }, - "export": { - "message": "برون ریزی" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "برون ریزی از" @@ -2297,8 +2302,13 @@ "tools": { "message": "ابزار" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "درون ریزی داده" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "اشتراک Cloud را راه اندازی کنید" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "حافظه" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "کاربر $ID$ دعوت شد.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json index f9e6ea2f4c6..871b256877a 100644 --- a/apps/web/src/locales/fi/messages.json +++ b/apps/web/src/locales/fi/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Tilin salausavaimet ovat ainutlaatuisia jokaiselle Bitwarden-käyttäjätilille, joten et voi tuoda salattua vientitiedostoa toiselle tilille." }, - "export": { - "message": "Vie" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Vie lähteestä" @@ -2297,8 +2302,13 @@ "tools": { "message": "Työkalut" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Tuo tietoja" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Käynnistä pilvitilaus" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Tallennustila" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Kutsui käyttäjän \"$ID$\".", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/fil/messages.json b/apps/web/src/locales/fil/messages.json index 539059d79cf..a12aa97341f 100644 --- a/apps/web/src/locales/fil/messages.json +++ b/apps/web/src/locales/fil/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Magkaiba ang encryption key ng bawat Bitwarden user account, kaya hindi ka makakapag-import ng encrypted export sa iba pang account." }, - "export": { - "message": "I-export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Mga Kagamitan" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Mag-import ng data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Ilunsad ang Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Imbakan" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Inimbitahang gumagamit $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/fr/messages.json b/apps/web/src/locales/fr/messages.json index df617a0bff2..582d3492a42 100644 --- a/apps/web/src/locales/fr/messages.json +++ b/apps/web/src/locales/fr/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Les clés de chiffrement du compte sont spécifiques à chaque utilisateur Bitwarden. Vous ne pouvez donc pas importer d'export chiffré dans un compte différent." }, - "export": { - "message": "Exporter" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Exporter", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exporter à partir de" @@ -2297,8 +2302,13 @@ "tools": { "message": "Outils" }, - "import": { - "message": "Importer" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importer", + "description": "The verb form of the word Import" }, "importData": { "message": "Importer des données" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Démarrer l'Abonnement Cloud" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Démarrer l'Abonnement Cloud" + }, "storage": { "message": "Stockage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Transfert accepté à la propriété de l'organisation." + }, + "userDeclinedTransfer": { + "message": "Révoqué pour le refus du transfert vers la propriété de l'organisation." + }, "invitedUserId": { "message": "Utilisateur $ID$ invité.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Pourquoi est-ce que je vois ça ?" + }, + "youHaveBitwardenPremium": { + "message": "Vous avez Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "Afficher et gérer votre abonnement Premium" + }, + "youNeedToUpdateLicenseFile": { + "message": "Vous devrez mettre à jour votre fichier de licence" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Téléverser le fichier de licence" + }, + "uploadYourLicenseFile": { + "message": "Téléverser votre fichier de licence" + }, + "uploadYourPremiumLicenseFile": { + "message": "Téléversez votre fichier de licence Premium" + }, + "uploadLicenseFileDesc": { + "message": "Votre nom de fichier de licence sera similaire à : $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Vous avez déjà un abonnement ?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Ouvrez la page d'abonnement sur votre compte cloud Bitwarden et téléchargez votre fichier de licence. Puis revenez à cet écran et téléversez-le ci-dessous." + }, + "viewAllPlans": { + "message": "Afficher tous les forfaits" + }, + "planDescPremium": { + "message": "Sécurité en ligne complète" } } diff --git a/apps/web/src/locales/gl/messages.json b/apps/web/src/locales/gl/messages.json index 996aa0e899e..7c555a3f142 100644 --- a/apps/web/src/locales/gl/messages.json +++ b/apps/web/src/locales/gl/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/he/messages.json b/apps/web/src/locales/he/messages.json index 6f3049535f9..c0e1995289e 100644 --- a/apps/web/src/locales/he/messages.json +++ b/apps/web/src/locales/he/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "מפתחות הצפנת חשבון הם ייחודים לכל חשבון משתמש של Bitwarden, לכן אינך יכול לייבא ייצוא מוצפן אל תוך חשבון אחר." }, - "export": { - "message": "ייצוא" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "ייצא מ־" @@ -2297,8 +2302,13 @@ "tools": { "message": "כלים" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "ייבא נתונים" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "הפעל מנוי ענן" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "אחסון" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "משתמש שהוזמן $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/hi/messages.json b/apps/web/src/locales/hi/messages.json index 8c0f47f487c..4b578f69e5c 100644 --- a/apps/web/src/locales/hi/messages.json +++ b/apps/web/src/locales/hi/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/hr/messages.json b/apps/web/src/locales/hr/messages.json index 09cf0d78a06..92f0d020812 100644 --- a/apps/web/src/locales/hr/messages.json +++ b/apps/web/src/locales/hr/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Ključ za šifriranje jedinstven je za svakog Bitwarden korisnika, kako bi se šifrirani izvoz mogao uvesti u drugi korisnički račun." }, - "export": { - "message": "Izvoz" + "exportNoun": { + "message": "Izvoz", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Izvoz", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Izvezi iz" @@ -2297,8 +2302,13 @@ "tools": { "message": "Alati" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Uvoz", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Uvoz", + "description": "The verb form of the word Import" }, "importData": { "message": "Uvezi podatke" @@ -3057,7 +3067,7 @@ "message": "1 GB šifriranog prostora za pohranu podataka." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ šifriranog prostora za privitke.", "placeholders": { "size": { "content": "$1", @@ -3128,13 +3138,13 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "Toja Premium pretplata je završila" }, "premiumSubscriptionEndedDesc": { - "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." + "message": "Za ponovni pristup svojoj arhivi, ponovno pokreni Premium pretplatu. Ako urediš detalje arhivirane stavke prije ponovnog pokretanja, ona će biti vraćena u tvoj trezor." }, "restartPremium": { - "message": "Restart Premium" + "message": "Ponovno Pokreni Premium" }, "additionalStorageGb": { "message": "Dodatni prostor za pohranu (GB)" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Pokreni Cloud pretplatu" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Pokreni Cloud pretplatu" + }, "storage": { "message": "Prostor za pohranu" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Pozvan korisnik $ID$.", "placeholders": { @@ -4621,19 +4640,19 @@ "message": "Saznaj više" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Dogodila se greška pri ažuriranju postavki šifriranja." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Ažuriraj svoje postakve šifriranja" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Nove preporučene postavke šifriranja poboljšat će sigurnost tvojeg računa. Za ažuriranje, unesi svoju glavnu lozinku." }, "confirmIdentityToContinue": { "message": "Confirm your identity to continue" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Unesi svoju glavnu lozinku" }, "updateSettings": { "message": "Ažuriraj postavke" @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json index 395a87e4544..7e296cd7092 100644 --- a/apps/web/src/locales/hu/messages.json +++ b/apps/web/src/locales/hu/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "A fiók titkosítási kulcsai minden Bitwarden felhasználói fiókhoz egyediek, ezért nem importálhatunk titkosított exportálást egy másik fiókba." }, - "export": { - "message": "Exportálás" + "exportNoun": { + "message": "Exportálás", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Exportálás", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exportálás innen:" @@ -2297,8 +2302,13 @@ "tools": { "message": "Eszközök" }, - "import": { - "message": "Importálás" + "importNoun": { + "message": "Importálás", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importálás", + "description": "The verb form of the word Import" }, "importData": { "message": "Adatok importálása" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Felhő előfizetés indítása" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Felhő előfizetés indítása" + }, "storage": { "message": "Tárhely" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "$ID$ azonosítójú felhasználó meghívásra került.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Miért látható ez?" + }, + "youHaveBitwardenPremium": { + "message": "Bitwarden Prémium verzió van használatban." + }, + "viewAndManagePremiumSubscription": { + "message": "Tekintsük meg és kezeljük a Prémium előfizetést." + }, + "youNeedToUpdateLicenseFile": { + "message": "Frissíteni kell a licensz fájlt." + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Licensz fájl feltöltése" + }, + "uploadYourLicenseFile": { + "message": "Licensz fájl feltöltése" + }, + "uploadYourPremiumLicenseFile": { + "message": "Licensz fájl feltöltése" + }, + "uploadLicenseFileDesc": { + "message": "A licensz fájl neve hasonló lesz: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Már van előfizetés?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Nyissuk meg az előfizetési oldalt Bitwarden felhőfiókjában és töltsük le licensz fájlt. Ezután térjünk vissza erre a képernyőre és töltsük fel lentebb." + }, + "viewAllPlans": { + "message": "Összes csomag megtekintése" + }, + "planDescPremium": { + "message": "Teljes körű online biztonság" } } diff --git a/apps/web/src/locales/id/messages.json b/apps/web/src/locales/id/messages.json index 98bf8edf291..e349f4180b9 100644 --- a/apps/web/src/locales/id/messages.json +++ b/apps/web/src/locales/id/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Kunci enkripsi akun adalah unik untuk setiap akun pengguna Bitwarden, sehingga Anda tidak dapat mengimpor ekspor terenkripsi ke akun yang berbeda." }, - "export": { - "message": "Ekspor" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Ekspor dari" @@ -2297,8 +2302,13 @@ "tools": { "message": "Alat" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Impor Data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Luncurkan Langganan Cloud" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Penyimpanan" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "$ID$ pengguna yang diundang.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json index 34d17398c3e..0b98058ae82 100644 --- a/apps/web/src/locales/it/messages.json +++ b/apps/web/src/locales/it/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Le chiavi di cifratura dell'account sono uniche per ogni account utente Bitwarden, quindi non è possibile importare un'esportazione cifrata in un account diverso." }, - "export": { - "message": "Esporta" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Esporta da" @@ -2297,8 +2302,13 @@ "tools": { "message": "Strumenti" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Importa dati" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Avvia abbonamento cloud" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Spazio di archiviazione" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Utente $ID$ invitato.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Perché vedo questo avviso?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json index 0a79c1903e4..20fa1137002 100644 --- a/apps/web/src/locales/ja/messages.json +++ b/apps/web/src/locales/ja/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "アカウント暗号化キーは各 Bitwarden ユーザーアカウントに固有であるため、暗号化されたエクスポートを別のアカウントにインポートすることはできません。" }, - "export": { - "message": "エクスポート" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "エクスポート元" @@ -2297,8 +2302,13 @@ "tools": { "message": "ツール" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "データをインポート" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "クラウドサブスクリプションを起動" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "ストレージ" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "ユーザー「$ID$」の招待", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/ka/messages.json b/apps/web/src/locales/ka/messages.json index 3fb27024064..4a6927d9f3a 100644 --- a/apps/web/src/locales/ka/messages.json +++ b/apps/web/src/locales/ka/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "ექსპორტი" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/km/messages.json b/apps/web/src/locales/km/messages.json index d84c2ae7b30..f570d355369 100644 --- a/apps/web/src/locales/km/messages.json +++ b/apps/web/src/locales/km/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/kn/messages.json b/apps/web/src/locales/kn/messages.json index a90cde5f540..94237cb1028 100644 --- a/apps/web/src/locales/kn/messages.json +++ b/apps/web/src/locales/kn/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "ಖಾತೆ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಗಳು ಪ್ರತಿ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಬಳಕೆದಾರ ಖಾತೆಗೆ ಅನನ್ಯವಾಗಿವೆ, ಆದ್ದರಿಂದ ನೀವು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ರಫ್ತು ಬೇರೆ ಖಾತೆಗೆ ಆಮದು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ." }, - "export": { - "message": "ರಫ್ತು" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "ಉಪಕರಣ" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "ಡೇಟಾವನ್ನು ಆಮದು ಮಾಡಿ" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "ಸಂಗ್ರಹಣೆ" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "ಆಹ್ವಾನಿತ ಬಳಕೆದಾರ $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/ko/messages.json b/apps/web/src/locales/ko/messages.json index 3b86738b797..c0471507369 100644 --- a/apps/web/src/locales/ko/messages.json +++ b/apps/web/src/locales/ko/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "모든 Bitwarden 사용자 계정은 고유한 계정 암호화 키를 가지고 있습니다. 따라서, 다른 계정에서는 암호화된 내보내기를 가져올 수 없습니다." }, - "export": { - "message": "내보내기" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "도구" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "데이터 가져오기" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "저장소" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "$ID$ 사용자를 초대했습니다.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json index 7e232de913f..6cb8e0a4a6b 100644 --- a/apps/web/src/locales/lv/messages.json +++ b/apps/web/src/locales/lv/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Katram Bitwarden kontam ir neatkārtojamas šifrēšanas atslēgas, tādēļ nav iespējams ievietot šifrētu izguvi citā kontā." }, - "export": { - "message": "Izgūšana" + "exportNoun": { + "message": "Izgūšana", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Izgūt", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Izgūt no" @@ -2297,8 +2302,13 @@ "tools": { "message": "Rīki" }, - "import": { - "message": "Ievietot" + "importNoun": { + "message": "Ievietošana", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Ievietot", + "description": "The verb form of the word Import" }, "importData": { "message": "Ievietot datus" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Uzsākt mākoņa abonēšanu" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Uzsākt mākoņa abonēšanu" + }, "storage": { "message": "Krātuve" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Uzaicināts lietotājs $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "Tev ir Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "Apskatīt un pārvaldīt savu Premium abonementu" + }, + "youNeedToUpdateLicenseFile": { + "message": "Būs nepieciešams atjaunināt savu licences datni" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Augšupielādēt licences datni" + }, + "uploadYourLicenseFile": { + "message": "Jāaugšupielādē sava licences datne" + }, + "uploadYourPremiumLicenseFile": { + "message": "Jāaugšupielādē sava Premium licences datne" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/ml/messages.json b/apps/web/src/locales/ml/messages.json index 01cc78f20e7..1dc40cce28b 100644 --- a/apps/web/src/locales/ml/messages.json +++ b/apps/web/src/locales/ml/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "ഉപകരണങ്ങൾ" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import Data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "സ്റ്റോറേജ്" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/mr/messages.json b/apps/web/src/locales/mr/messages.json index 2ead65c89bd..b51c66468c3 100644 --- a/apps/web/src/locales/mr/messages.json +++ b/apps/web/src/locales/mr/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/my/messages.json b/apps/web/src/locales/my/messages.json index d84c2ae7b30..f570d355369 100644 --- a/apps/web/src/locales/my/messages.json +++ b/apps/web/src/locales/my/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/nb/messages.json b/apps/web/src/locales/nb/messages.json index 34521b2f58c..dd76b11f8be 100644 --- a/apps/web/src/locales/nb/messages.json +++ b/apps/web/src/locales/nb/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Kontokrypteringsnøkler er unike for hver Bitwarden sin brukerkonto, og du kan ikke importere en kryptert eksport til en annen konto." }, - "export": { - "message": "Eksporter" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Eksport fra" @@ -2297,8 +2302,13 @@ "tools": { "message": "Verktøy" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Importer data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Start Sky-abonnement" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Lagring" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Inviterte brukeren $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/ne/messages.json b/apps/web/src/locales/ne/messages.json index 17118cef29b..cfd5c682a99 100644 --- a/apps/web/src/locales/ne/messages.json +++ b/apps/web/src/locales/ne/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json index d339f1887e7..61538a1bb2a 100644 --- a/apps/web/src/locales/nl/messages.json +++ b/apps/web/src/locales/nl/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Encryptiesleutels zijn uniek voor elk Bitwarden-gebruikersaccount, je kun kunt een versleutelde niet in een ander account importeren." }, - "export": { - "message": "Exporteren" + "exportNoun": { + "message": "Exporteren", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Exporteren", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exporteren vanuit" @@ -2297,8 +2302,13 @@ "tools": { "message": "Hulpmiddelen" }, - "import": { - "message": "Importeren" + "importNoun": { + "message": "Importeren", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importeren", + "description": "The verb form of the word Import" }, "importData": { "message": "Gegevens importeren" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Cloudabonnement starten" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Cloudabonnement starten" + }, "storage": { "message": "Opslagruimte" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Overdracht naar organisatie-eigendom geaccepteerd." + }, + "userDeclinedTransfer": { + "message": "Ingetrokken wegens afwijzen van overdracht naar organisatie-eigendom." + }, "invitedUserId": { "message": "Gebruiker uitgenodigd $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "Je hebt Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "Premium-abonnement bekijken en beheren" + }, + "youNeedToUpdateLicenseFile": { + "message": "Je moet je licentiebestand bijwerken" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Licentiebestand uploaden" + }, + "uploadYourLicenseFile": { + "message": "Uploadt je licentiebestand" + }, + "uploadYourPremiumLicenseFile": { + "message": "Uploadt je Premium-licentiebestand" + }, + "uploadLicenseFileDesc": { + "message": "De naam van je licensiebestand lijkt op: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Heb je al een abonnement?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open de abonnementspagina op je Bitwarden-cloudaccount en download je licentiebestand. Ga daarna terug naar dit scherm en upload het hieronder." + }, + "viewAllPlans": { + "message": "Alle abonnementen bekijken" + }, + "planDescPremium": { + "message": "Online beveiliging voltooien" } } diff --git a/apps/web/src/locales/nn/messages.json b/apps/web/src/locales/nn/messages.json index 0fba039741e..d7cfdd21d2f 100644 --- a/apps/web/src/locales/nn/messages.json +++ b/apps/web/src/locales/nn/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/or/messages.json b/apps/web/src/locales/or/messages.json index d84c2ae7b30..f570d355369 100644 --- a/apps/web/src/locales/or/messages.json +++ b/apps/web/src/locales/or/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/pl/messages.json b/apps/web/src/locales/pl/messages.json index ca0aee0f039..93843ca45b7 100644 --- a/apps/web/src/locales/pl/messages.json +++ b/apps/web/src/locales/pl/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Klucze szyfrowania konta są unikalne dla każdego użytkownika Bitwarden, więc nie możesz zaimportować zaszyfrowanego pliku eksportu na inne konto." }, - "export": { - "message": "Eksportuj" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Eksportuj z" @@ -2297,8 +2302,13 @@ "tools": { "message": "Narzędzia" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Importuj dane" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Uruchom subskrypcję chmury" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Przestrzeń" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Użytkownik $ID$ został zaproszony.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json index 959de6d0f2a..4ca2020c7b1 100644 --- a/apps/web/src/locales/pt_BR/messages.json +++ b/apps/web/src/locales/pt_BR/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Chaves de criptografia da conta são únicas para cada conta de usuário do Bitwarden, então você não pode importar uma exportação criptografada para uma conta diferente." }, - "export": { - "message": "Exportar" + "exportNoun": { + "message": "Exportação", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Exportar", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exportar de" @@ -2297,8 +2302,13 @@ "tools": { "message": "Ferramentas" }, - "import": { - "message": "Importar" + "importNoun": { + "message": "Importação", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importar", + "description": "The verb form of the word Import" }, "importData": { "message": "Importar dados" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Iniciar Assinatura na Nuvem" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Armazenamento" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Convidou o usuário $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Por que estou vendo isso?" + }, + "youHaveBitwardenPremium": { + "message": "Você tem o Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "Veja e gerencie sua assinatura Premium" + }, + "youNeedToUpdateLicenseFile": { + "message": "Você precisará atualizar seu arquivo de licença" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Enviar arquivo de licença" + }, + "uploadYourLicenseFile": { + "message": "Envie seu arquivo de licença" + }, + "uploadYourPremiumLicenseFile": { + "message": "Envie seu arquivo de licença Premium" + }, + "uploadLicenseFileDesc": { + "message": "O nome do seu arquivo de licença será parecido com: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Já possui uma assinatura?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Abra a página de assinatura na sua conta da nuvem do Bitwarden e baixe o arquivo da sua licença. E então, volte nesta tela e o envie abaixo." + }, + "viewAllPlans": { + "message": "Ver todos os planos" + }, + "planDescPremium": { + "message": "Segurança on-line completa" } } diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json index 0810368879c..ae80280caed 100644 --- a/apps/web/src/locales/pt_PT/messages.json +++ b/apps/web/src/locales/pt_PT/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "As chaves de encriptação da conta são únicas para cada conta de utilizador Bitwarden, pelo que não é possível importar uma exportação encriptada para uma conta diferente." }, - "export": { - "message": "Exportar" + "exportNoun": { + "message": "Exportação", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Exportar", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exportar de" @@ -2297,8 +2302,13 @@ "tools": { "message": "Ferramentas" }, - "import": { - "message": "Importar" + "importNoun": { + "message": "Importação", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importar", + "description": "The verb form of the word Import" }, "importData": { "message": "Importar dados" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Iniciar subscrição na nuvem" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Iniciar subscrição na nuvem" + }, "storage": { "message": "Armazenamento" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Utilizador $ID$ convidado.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Porque é que estou a ver isto?" + }, + "youHaveBitwardenPremium": { + "message": "Tem o Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "Ver e gerir a sua subscrição Premium" + }, + "youNeedToUpdateLicenseFile": { + "message": "Terá de atualizar o seu ficheiro de licença" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Carregar ficheiro de licença" + }, + "uploadYourLicenseFile": { + "message": "Carregue o seu ficheiro de licença" + }, + "uploadYourPremiumLicenseFile": { + "message": "Carregue o seu ficheiro de licença Premium" + }, + "uploadLicenseFileDesc": { + "message": "O nome do seu ficheiro de licença será semelhante a: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Já tem uma subscrição?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Abra a página de subscrição da sua conta Bitwarden na cloud e transfira o ficheiro de licença. Depois, regresse a este ecrã e carregue-o abaixo." + }, + "viewAllPlans": { + "message": "Ver todos os planos" + }, + "planDescPremium": { + "message": "Segurança total online" } } diff --git a/apps/web/src/locales/ro/messages.json b/apps/web/src/locales/ro/messages.json index 2738efe1169..80ee2d5e9b6 100644 --- a/apps/web/src/locales/ro/messages.json +++ b/apps/web/src/locales/ro/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Cheile de criptare a contului sunt unice fiecărui cont de utilizator Bitwarden, astfel încât nu puteți importa un export criptat într-un cont diferit." }, - "export": { - "message": "Exportați" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Unelte" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Importare date" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Stocare" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Utilizatorul $ID$ a fost invitat.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/ru/messages.json b/apps/web/src/locales/ru/messages.json index e62657ee432..f82aa6d4417 100644 --- a/apps/web/src/locales/ru/messages.json +++ b/apps/web/src/locales/ru/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Ключи шифрования уникальны для каждой учетной записи Bitwarden, поэтому нельзя импортировать зашифрованное хранилище в другой аккаунт." }, - "export": { - "message": "Экспорт" + "exportNoun": { + "message": "Экспорт", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Экспортировать", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Экспорт из" @@ -2297,8 +2302,13 @@ "tools": { "message": "Инструменты" }, - "import": { - "message": "Импорт" + "importNoun": { + "message": "Импорт", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Импортировать", + "description": "The verb form of the word Import" }, "importData": { "message": "Импорт данных" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Запустить облачную подписку" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Запустить облачную подписку" + }, "storage": { "message": "Хранилище" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Принятая передача в собственность организации." + }, + "userDeclinedTransfer": { + "message": "Отозван в связи с отказом в передаче в собственность организации." + }, "invitedUserId": { "message": "Приглашен пользователь $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Почему я это вижу?" + }, + "youHaveBitwardenPremium": { + "message": "У вас Bitwarden Премиум" + }, + "viewAndManagePremiumSubscription": { + "message": "Просматривайте свою премиум-подписку и управляйте ею" + }, + "youNeedToUpdateLicenseFile": { + "message": "Вам нужно будет обновить свой файл лицензии" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Загрузить файл лицензии" + }, + "uploadYourLicenseFile": { + "message": "Загрузите ваш файл лицензии" + }, + "uploadYourPremiumLicenseFile": { + "message": "Загрузите ваш файл лицензии Премиум" + }, + "uploadLicenseFileDesc": { + "message": "Название вашего файла лицензии будет похоже на $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Уже есть подписка?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Откройте страницу подписки в своем аккаунте Bitwarden cloud и скачайте файл лицензии. Затем вернитесь на этот экран и загрузите его ниже." + }, + "viewAllPlans": { + "message": "Посмотреть все планы" + }, + "planDescPremium": { + "message": "Полная онлайн-защищенность" } } diff --git a/apps/web/src/locales/si/messages.json b/apps/web/src/locales/si/messages.json index e9ed3f035d3..e4166c07db2 100644 --- a/apps/web/src/locales/si/messages.json +++ b/apps/web/src/locales/si/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json index fc71b3caf00..6e36b52a098 100644 --- a/apps/web/src/locales/sk/messages.json +++ b/apps/web/src/locales/sk/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Šifrovacie kľúče účtu sú jedinečné pre každý používateľský účet Bitwarden, takže nemôžete importovať šifrovaný export do iného účtu." }, - "export": { - "message": "Exportovať" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exportovať z" @@ -2297,8 +2302,13 @@ "tools": { "message": "Nástroje" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import dát" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Ukladací priestor" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Používateľ $ID$ pozvaný.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/sl/messages.json b/apps/web/src/locales/sl/messages.json index 0ff309c5e0e..1f880d87412 100644 --- a/apps/web/src/locales/sl/messages.json +++ b/apps/web/src/locales/sl/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Šifrirni ključ je vezan na posamezen Bitwardnov račun, zato šifriranega izvoza ne boste mogli uvoziti v drug račun." }, - "export": { - "message": "Izvozi" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Orodja" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Uvozi podatke" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Hramba" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/sr_CS/messages.json b/apps/web/src/locales/sr_CS/messages.json index aa5436ed321..3ebf0057bb9 100644 --- a/apps/web/src/locales/sr_CS/messages.json +++ b/apps/web/src/locales/sr_CS/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Alati" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Uvezi podatke" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/sr_CY/messages.json b/apps/web/src/locales/sr_CY/messages.json index 152ec208e16..b7934ec62fb 100644 --- a/apps/web/src/locales/sr_CY/messages.json +++ b/apps/web/src/locales/sr_CY/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Кључеви за шифровање налога су јединствени за сваки Bitwarden кориснички налог, тако да не можете да увезете шифровани извоз на други налог." }, - "export": { - "message": "Извези" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Извоз од" @@ -2297,8 +2302,13 @@ "tools": { "message": "Алатке" }, - "import": { - "message": "Увоз" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Увези податке" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Покренути Cloud претплату" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Складиште" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Корисник $ID$ позван.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json index db44953b83f..c428b1561ed 100644 --- a/apps/web/src/locales/sv/messages.json +++ b/apps/web/src/locales/sv/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Kypteringsnycklar är unika för varje Bitwarden-konto, så du kan inte importera en krypterad export till ett annat konto." }, - "export": { - "message": "Exportera" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Exportera", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Exportera från" @@ -2297,8 +2302,13 @@ "tools": { "message": "Verktyg" }, - "import": { - "message": "Importera" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Importera", + "description": "The verb form of the word Import" }, "importData": { "message": "Importera data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Starta molnprenumeration" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Starta molnprenumeration" + }, "storage": { "message": "Lagring" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Godkände överföring till organisationens ägarskap." + }, + "userDeclinedTransfer": { + "message": "Återkallad för att överföring till organisationens ägarskap avböjdes." + }, "invitedUserId": { "message": "Bjöd in användaren $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Varför ser jag det här?" + }, + "youHaveBitwardenPremium": { + "message": "Du har Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "Visa och hantera ditt Premium-abonnemang" + }, + "youNeedToUpdateLicenseFile": { + "message": "Du måste uppdatera din licensfil" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Ladda upp licensfil" + }, + "uploadYourLicenseFile": { + "message": "Ladda upp din licensfil" + }, + "uploadYourPremiumLicenseFile": { + "message": "Ladda upp din Premium-licensfil" + }, + "uploadLicenseFileDesc": { + "message": "Ditt licensfilnamn kommer att likna $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Har du redan ett abonnemang?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Öppna prenumerationssidan på ditt Bitwarden-molnkonto och ladda ner din licensfil. Återvänd sedan till den här skärmen och ladda upp den nedan." + }, + "viewAllPlans": { + "message": "Visa alla planer" + }, + "planDescPremium": { + "message": "Komplett säkerhet online" } } diff --git a/apps/web/src/locales/ta/messages.json b/apps/web/src/locales/ta/messages.json index 5e1441bc316..5ad16f4e27e 100644 --- a/apps/web/src/locales/ta/messages.json +++ b/apps/web/src/locales/ta/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "கணக்கு என்க்ரிப்ஷன் சாவிகள் ஒவ்வொரு Bitwarden பயனர் கணக்கிற்கும் தனித்துவமானவை, எனவே நீங்கள் என்க்ரிப்ட் செய்யப்பட்ட ஏற்றுமதியை வேறு கணக்கில் இறக்குமதி செய்ய முடியாது." }, - "export": { - "message": "ஏற்றுமதி" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "இதிலிருந்து ஏற்றுமதி" @@ -2297,8 +2302,13 @@ "tools": { "message": "கருவிகள்" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "தரவை இம்போர்ட் செய்யவும்" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "கிளவுட் சந்தாவைத் தொடங்கவும்" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "சேமிப்பகம்" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "பயனர் $ID$ அழைக்கப்பட்டார்.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/te/messages.json b/apps/web/src/locales/te/messages.json index d84c2ae7b30..f570d355369 100644 --- a/apps/web/src/locales/te/messages.json +++ b/apps/web/src/locales/te/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." }, - "export": { - "message": "Export" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/th/messages.json b/apps/web/src/locales/th/messages.json index a8b00018d8c..8efc54bf052 100644 --- a/apps/web/src/locales/th/messages.json +++ b/apps/web/src/locales/th/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "คีย์การเข้ารหัสบัญชีจะไม่ซ้ำกันสำหรับบัญชีผู้ใช้ Bitwarden แต่ละบัญชี ดังนั้นคุณจึงไม่สามารถนำเข้าการส่งออกที่เข้ารหัสไปยังบัญชีอื่นได้" }, - "export": { - "message": "ส่งออก" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Export from" @@ -2297,8 +2302,13 @@ "tools": { "message": "Tools" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Import data" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Launch Cloud Subscription" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Storage" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Invited user $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json index 079557adf81..27e1740fca7 100644 --- a/apps/web/src/locales/tr/messages.json +++ b/apps/web/src/locales/tr/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Hesap şifreleme anahtarları her Bitwarden kullanıcı hesabı için farklıdır. Dolayısıyla şifrelenmiş bir dışa aktarmayı başka bir hesapta içe aktaramazsınız." }, - "export": { - "message": "Dışarı aktar" + "exportNoun": { + "message": "Dışa aktar", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Dışa aktar", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Dışa aktarılacak konum" @@ -2297,8 +2302,13 @@ "tools": { "message": "Araçlar" }, - "import": { - "message": "İçe aktar" + "importNoun": { + "message": "İçe aktar", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "İçe aktar", + "description": "The verb form of the word Import" }, "importData": { "message": "Verileri içe aktar" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Bulut aboneliğini aç" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Bulut aboneliğini aç" + }, "storage": { "message": "Depolama" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Kullanıcı davet edildi: $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "Bitwarden Premium abonesisiniz" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Eksiksiz çevrimiçi güvenlik" } } diff --git a/apps/web/src/locales/uk/messages.json b/apps/web/src/locales/uk/messages.json index bcb7818fdbd..f604d38059f 100644 --- a/apps/web/src/locales/uk/messages.json +++ b/apps/web/src/locales/uk/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Ключі шифрування унікальні для кожного облікового запису користувача Bitwarden, тому ви не можете імпортувати зашифрований експорт до іншого облікового запису." }, - "export": { - "message": "Експорт" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Експортувати з" @@ -2297,8 +2302,13 @@ "tools": { "message": "Інструменти" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Імпортувати дані" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Запустити хмарну передплату" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Сховище" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Запрошено користувача $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/vi/messages.json b/apps/web/src/locales/vi/messages.json index 83c31ac0471..1fb9e911225 100644 --- a/apps/web/src/locales/vi/messages.json +++ b/apps/web/src/locales/vi/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "Khóa mã hóa tài khoản là duy nhất cho mỗi tài khoản Bitwarden, vì vậy bạn không thể nhập tệp xuất được mã hóa vào một tài khoản khác." }, - "export": { - "message": "Xuất" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "Xuất từ" @@ -2297,8 +2302,13 @@ "tools": { "message": "Công cụ" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "Nhập dữ liệu" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "Bắt đầu đăng ký Đám Mây" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "Lưu trữ" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "Đã mời người dùng $ID$.", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Tại sao tôi thấy điều này?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index f60ad672ced..cc6e71b1f08 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "每个 Bitwarden 用户账户的账户加密密钥都是唯一的,因此您无法将加密的导出导入到另一个账户。" }, - "export": { - "message": "导出" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "导出自" @@ -2297,8 +2302,13 @@ "tools": { "message": "工具" }, - "import": { - "message": "导入" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "导入数据" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "启动云订阅" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "存储" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "邀请了用户 $ID$。", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "为什么我会看到这个?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json index 7608d8f6b86..b1cda1343d4 100644 --- a/apps/web/src/locales/zh_TW/messages.json +++ b/apps/web/src/locales/zh_TW/messages.json @@ -1969,8 +1969,13 @@ "encExportAccountWarningDesc": { "message": "每個 Bitwarden 使用者帳戶的帳戶加密金鑰都不相同,因此無法將已加密匯出的檔案匯入至不同帳戶中。" }, - "export": { - "message": "匯出" + "exportNoun": { + "message": "Export", + "description": "The noun form of the word Export" + }, + "exportVerb": { + "message": "Export", + "description": "The verb form of the word Export" }, "exportFrom": { "message": "匯出自" @@ -2297,8 +2302,13 @@ "tools": { "message": "工具" }, - "import": { - "message": "Import" + "importNoun": { + "message": "Import", + "description": "The noun form of the word Import" + }, + "importVerb": { + "message": "Import", + "description": "The verb form of the word Import" }, "importData": { "message": "匯入資料" @@ -3283,6 +3293,9 @@ "launchCloudSubscription": { "message": "啟動雲端訂閱" }, + "launchCloudSubscriptionSentenceCase": { + "message": "Launch cloud subscription" + }, "storage": { "message": "儲存空間" }, @@ -4198,6 +4211,12 @@ } } }, + "userAcceptedTransfer": { + "message": "Accepted transfer to organization ownership." + }, + "userDeclinedTransfer": { + "message": "Revoked for declining transfer to organization ownership." + }, "invitedUserId": { "message": "已邀請使用者 $ID$。", "placeholders": { @@ -12412,5 +12431,53 @@ }, "whyAmISeeingThis": { "message": "Why am I seeing this?" + }, + "youHaveBitwardenPremium": { + "message": "You have Bitwarden Premium" + }, + "viewAndManagePremiumSubscription": { + "message": "View and manage your Premium subscription" + }, + "youNeedToUpdateLicenseFile": { + "message": "You'll need to update your license file" + }, + "youNeedToUpdateLicenseFileDate": { + "message": "$DATE$.", + "placeholders": { + "date": { + "content": "$1", + "example": "June 12, 2026" + } + } + }, + "uploadLicenseFile": { + "message": "Upload license file" + }, + "uploadYourLicenseFile": { + "message": "Upload your license file" + }, + "uploadYourPremiumLicenseFile": { + "message": "Upload your Premium license file" + }, + "uploadLicenseFileDesc": { + "message": "Your license file name will be similar to: $FILE_NAME$", + "placeholders": { + "file_name": { + "content": "$1", + "example": "bitwarden_license.json" + } + } + }, + "alreadyHaveSubscriptionQuestion": { + "message": "Already have a subscription?" + }, + "alreadyHaveSubscriptionSelfHostedMessage": { + "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + }, + "viewAllPlans": { + "message": "View all plans" + }, + "planDescPremium": { + "message": "Complete online security" } } From 6ed60823ccdcc35a56baa7ee867943e5035e504d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 08:47:50 -0500 Subject: [PATCH 04/81] [deps] UI Foundation: Update storybook to v9.1.17 [SECURITY] (#18052) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Bryan Cunningham --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index dab01bdb56a..373cc4b0876 100644 --- a/package-lock.json +++ b/package-lock.json @@ -167,7 +167,7 @@ "rimraf": "6.1.2", "sass": "1.95.1", "sass-loader": "16.0.6", - "storybook": "9.1.16", + "storybook": "9.1.17", "style-loader": "4.0.0", "tailwindcss": "3.4.18", "ts-jest": "29.4.5", @@ -39204,9 +39204,9 @@ } }, "node_modules/storybook": { - "version": "9.1.16", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.1.16.tgz", - "integrity": "sha512-339U14K6l46EFyRvaPS2ZlL7v7Pb+LlcXT8KAETrGPxq8v1sAjj2HAOB6zrlAK3M+0+ricssfAwsLCwt7Eg8TQ==", + "version": "9.1.17", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.1.17.tgz", + "integrity": "sha512-kfr6kxQAjA96ADlH6FMALJwJ+eM80UqXy106yVHNgdsAP/CdzkkicglRAhZAvUycXK9AeadF6KZ00CWLtVMN4w==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 555ed0d5de8..9276b94286e 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "rimraf": "6.1.2", "sass": "1.95.1", "sass-loader": "16.0.6", - "storybook": "9.1.16", + "storybook": "9.1.17", "style-loader": "4.0.0", "tailwindcss": "3.4.18", "ts-jest": "29.4.5", From 44b31fdadeb7ccc3e282c1cd893eaa1c384d7a02 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Fri, 19 Dec 2025 16:00:37 +0100 Subject: [PATCH 05/81] [PM-29448] Consume the new send table in web (#17923) 2nd part of PM-29448. Consumes the new send table in the web vault. Also updates the send table to contain the responsive behaviour. --- apps/desktop/tailwind.config.js | 1 + .../src/app/tools/send/send.component.html | 122 +--------- apps/web/src/app/tools/send/send.component.ts | 10 +- apps/web/tailwind.config.js | 1 + .../src/send-table/send-table.component.html | 212 +++++++++--------- 5 files changed, 133 insertions(+), 213 deletions(-) diff --git a/apps/desktop/tailwind.config.js b/apps/desktop/tailwind.config.js index e67c0c38010..0c4ed8c5a7e 100644 --- a/apps/desktop/tailwind.config.js +++ b/apps/desktop/tailwind.config.js @@ -10,6 +10,7 @@ config.content = [ "../../libs/angular/src/**/*.{html,ts}", "../../libs/vault/src/**/*.{html,ts,mdx}", "../../libs/pricing/src/**/*.{html,ts}", + "../../libs/tools/send/send-ui/src/**/*.{html,ts}", ]; module.exports = config; diff --git a/apps/web/src/app/tools/send/send.component.html b/apps/web/src/app/tools/send/send.component.html index e593f5c1176..6418744a727 100644 --- a/apps/web/src/app/tools/send/send.component.html +++ b/apps/web/src/app/tools/send/send.component.html @@ -80,117 +80,17 @@ -
- - - - - {{ "name" | i18n }} - - {{ "deletionDate" | i18n }} - - {{ "options" | i18n }} - - - - - -
- - - - - {{ "disabled" | i18n }} - - - - {{ "password" | i18n }} - - - - {{ "maxAccessCountReached" | i18n }} - - - - {{ "expired" | i18n }} - - - - {{ "pendingDeletion" | i18n }} - -
- - - - {{ s.deletionDate | date: "medium" }} - - - - - - - - - - - -
-
+
+ +
- - - {{ "name" | i18n }} - {{ "deletionDate" | i18n }} - {{ "options" | i18n }} - - - - - -
- - - @if (s.disabled) { - - {{ "disabled" | i18n }} - } - @if (s.password) { - - {{ "password" | i18n }} - } - @if (s.maxAccessCountReached) { - - {{ "maxAccessCountReached" | i18n }} - } - @if (s.expired) { - - {{ "expired" | i18n }} - } - @if (s.pendingDelete) { - - {{ "pendingDeletion" | i18n }} - } -
- - - {{ s.deletionDate | date: "medium" }} - - - - - - @if (s.password && !disableSend()) { - - } - - - - -
- + + @if (s.disabled) { + + {{ "disabled" | i18n }} + } + @if (s.password) { + + {{ "password" | i18n }} + } + @if (s.maxAccessCountReached) { + + {{ "maxAccessCountReached" | i18n }} + } + @if (s.expired) { + + {{ "expired" | i18n }} + } + @if (s.pendingDelete) { + + {{ "pendingDeletion" | i18n }} + } +
+ + + + {{ s.deletionDate | date: "medium" }} + + + + + + + @if (s.password && !disableSend()) { + + } + + + + + + +
From 3bd9ee19258aa8745bcdb7674e4def2a4763685c Mon Sep 17 00:00:00 2001 From: Daniel James Smith <2670567+djsmith85@users.noreply.github.com> Date: Fri, 19 Dec 2025 16:33:40 +0100 Subject: [PATCH 06/81] Delete unused models (#18063) These were used prior to the extension refresh work. Co-authored-by: Daniel James Smith --- .github/whitelist-capital-letters.txt | 2 - .../src/models/browserComponentState.ts | 16 ------- .../models/browserGroupingsComponentState.ts | 46 ------------------- 3 files changed, 64 deletions(-) delete mode 100644 apps/browser/src/models/browserComponentState.ts delete mode 100644 apps/browser/src/models/browserGroupingsComponentState.ts diff --git a/.github/whitelist-capital-letters.txt b/.github/whitelist-capital-letters.txt index db5097e5268..b9f904d7613 100644 --- a/.github/whitelist-capital-letters.txt +++ b/.github/whitelist-capital-letters.txt @@ -19,8 +19,6 @@ ./apps/cli/stores/chocolatey/tools/VERIFICATION.txt ./apps/browser/store/windows/AppxManifest.xml ./apps/browser/src/background/nativeMessaging.background.ts -./apps/browser/src/models/browserComponentState.ts -./apps/browser/src/models/browserGroupingsComponentState.ts ./apps/browser/src/models/biometricErrors.ts ./apps/browser/src/browser/safariApp.ts ./apps/browser/src/safari/desktop/ViewController.swift diff --git a/apps/browser/src/models/browserComponentState.ts b/apps/browser/src/models/browserComponentState.ts deleted file mode 100644 index 50ee9fe34d4..00000000000 --- a/apps/browser/src/models/browserComponentState.ts +++ /dev/null @@ -1,16 +0,0 @@ -// FIXME: Update this file to be type safe and remove this and next line -// @ts-strict-ignore -import { Jsonify } from "type-fest"; - -export class BrowserComponentState { - scrollY: number; - searchText: string; - - static fromJSON(json: Jsonify) { - if (json == null) { - return null; - } - - return Object.assign(new BrowserComponentState(), json); - } -} diff --git a/apps/browser/src/models/browserGroupingsComponentState.ts b/apps/browser/src/models/browserGroupingsComponentState.ts deleted file mode 100644 index 364f4beb6bf..00000000000 --- a/apps/browser/src/models/browserGroupingsComponentState.ts +++ /dev/null @@ -1,46 +0,0 @@ -// FIXME: Update this file to be type safe and remove this and next line -// @ts-strict-ignore -import { CollectionView } from "@bitwarden/admin-console/common"; -import { Utils } from "@bitwarden/common/platform/misc/utils"; -import { DeepJsonify } from "@bitwarden/common/types/deep-jsonify"; -import { CipherType } from "@bitwarden/common/vault/enums"; -import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; -import { FolderView } from "@bitwarden/common/vault/models/view/folder.view"; - -import { BrowserComponentState } from "./browserComponentState"; - -export class BrowserGroupingsComponentState extends BrowserComponentState { - favoriteCiphers: CipherView[]; - noFolderCiphers: CipherView[]; - ciphers: CipherView[]; - collectionCounts: Map; - folderCounts: Map; - typeCounts: Map; - folders: FolderView[]; - collections: CollectionView[]; - deletedCount: number; - - toJSON() { - return Utils.merge(this, { - collectionCounts: Utils.mapToRecord(this.collectionCounts), - folderCounts: Utils.mapToRecord(this.folderCounts), - typeCounts: Utils.mapToRecord(this.typeCounts), - }); - } - - static fromJSON(json: DeepJsonify) { - if (json == null) { - return null; - } - - return Object.assign(new BrowserGroupingsComponentState(), json, { - favoriteCiphers: json.favoriteCiphers?.map((c) => CipherView.fromJSON(c)), - noFolderCiphers: json.noFolderCiphers?.map((c) => CipherView.fromJSON(c)), - ciphers: json.ciphers?.map((c) => CipherView.fromJSON(c)), - collectionCounts: Utils.recordToMap(json.collectionCounts), - folderCounts: Utils.recordToMap(json.folderCounts), - typeCounts: Utils.recordToMap(json.typeCounts), - folders: json.folders?.map((f) => FolderView.fromJSON(f)), - }); - } -} From f4037f404ebfcd68207d87b93c61a6d614b20a63 Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Fri, 19 Dec 2025 17:34:34 +0100 Subject: [PATCH 07/81] [PM-29419] Fix ssh account switching (#18060) * Fix ssh account switching * Npx prettier --- apps/desktop/src/autofill/services/ssh-agent.service.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/desktop/src/autofill/services/ssh-agent.service.ts b/apps/desktop/src/autofill/services/ssh-agent.service.ts index a61903a5c82..8339f635c1b 100644 --- a/apps/desktop/src/autofill/services/ssh-agent.service.ts +++ b/apps/desktop/src/autofill/services/ssh-agent.service.ts @@ -89,7 +89,6 @@ export class SshAgentService implements OnDestroy { filter(({ enabled }) => enabled), map(({ message }) => message), withLatestFrom(this.authService.activeAccountStatus$, this.accountService.activeAccount$), - filter(([, , account]) => account != null), // This switchMap handles unlocking the vault if it is locked: // - If the vault is locked, we will wait for it to be unlocked. // - If the vault is not unlocked within the timeout, we will abort the flow. @@ -97,7 +96,7 @@ export class SshAgentService implements OnDestroy { // switchMap is used here to prevent multiple requests from being processed at the same time, // and will cancel the previous request if a new one is received. switchMap(([message, status, account]) => { - if (status !== AuthenticationStatus.Unlocked) { + if (status !== AuthenticationStatus.Unlocked || account == null) { ipc.platform.focusWindow(); this.toastService.showToast({ variant: "info", From 60b84361d24578df921e601f095c3ccb10ccd491 Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Fri, 19 Dec 2025 17:47:14 +0100 Subject: [PATCH 08/81] Follow-up comment fix (#18067) * Fix ssh account switching * Npx prettier * Follow-up comment fix --- apps/desktop/src/autofill/services/ssh-agent.service.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/desktop/src/autofill/services/ssh-agent.service.ts b/apps/desktop/src/autofill/services/ssh-agent.service.ts index 8339f635c1b..7e289720ec8 100644 --- a/apps/desktop/src/autofill/services/ssh-agent.service.ts +++ b/apps/desktop/src/autofill/services/ssh-agent.service.ts @@ -89,9 +89,9 @@ export class SshAgentService implements OnDestroy { filter(({ enabled }) => enabled), map(({ message }) => message), withLatestFrom(this.authService.activeAccountStatus$, this.accountService.activeAccount$), - // This switchMap handles unlocking the vault if it is locked: - // - If the vault is locked, we will wait for it to be unlocked. - // - If the vault is not unlocked within the timeout, we will abort the flow. + // This switchMap handles unlocking the vault if it is not unlocked: + // - If the vault is locked or logged out, we will wait for it to be unlocked: + // - If the vault is not unlocked in within the timeout, we will abort the flow. // - If the vault is unlocked, we will continue with the flow. // switchMap is used here to prevent multiple requests from being processed at the same time, // and will cancel the previous request if a new one is received. From ea4666e3c1f70d3bcada332ab301627c1a58ac2c Mon Sep 17 00:00:00 2001 From: Leslie Tilton <23057410+Banrion@users.noreply.github.com> Date: Fri, 19 Dec 2025 11:58:14 -0600 Subject: [PATCH 09/81] [PM-25884] Move Phishing Detection Safari check to PhishingDetectionSettingsService (#18042) * Move safari check to phishing detection settings to expose to all places using phishing detection * Remove duplicate comment --- apps/browser/src/background/main.background.ts | 1 + .../services/phishing-detection.service.ts | 13 +------------ apps/browser/src/popup/services/services.module.ts | 1 + .../phishing-detection-settings.service.spec.ts | 5 +++++ .../phishing-detection-settings.service.ts | 7 +++++++ 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index c224dcf581e..2d1da8510c1 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -1490,6 +1490,7 @@ export default class MainBackground { this.billingAccountProfileStateService, this.configService, this.organizationService, + this.platformUtilsService, this.stateProvider, ); diff --git a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts index 501dfbf7a50..e04d08559ab 100644 --- a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts +++ b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts @@ -5,7 +5,6 @@ import { filter, map, merge, - of, Subject, switchMap, tap, @@ -112,17 +111,7 @@ export class PhishingDetectionService { .messages$(PHISHING_DETECTION_CANCEL_COMMAND) .pipe(switchMap((message) => BrowserApi.closeTab(message.tabId))); - // Phishing detection is unavailable on Safari due to platform limitations - if (BrowserApi.isSafariApi) { - logService.debug( - "[PhishingDetectionService] Disabling phishing detection service for Safari.", - ); - } - - // Watching for settings changes to enable/disable phishing detection - const phishingDetectionActive$ = BrowserApi.isSafariApi - ? of(false) - : phishingDetectionSettingsService.on$; + const phishingDetectionActive$ = phishingDetectionSettingsService.on$; const initSub = phishingDetectionActive$ .pipe( diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts index 39c53b7da56..739166ff6f8 100644 --- a/apps/browser/src/popup/services/services.module.ts +++ b/apps/browser/src/popup/services/services.module.ts @@ -523,6 +523,7 @@ const safeProviders: SafeProvider[] = [ BillingAccountProfileStateService, ConfigService, OrganizationService, + PlatformUtilsService, StateProvider, ], }), diff --git a/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.spec.ts b/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.spec.ts index 23e311d9445..e6363b490cb 100644 --- a/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.spec.ts +++ b/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.spec.ts @@ -7,6 +7,7 @@ import { Account, AccountService } from "@bitwarden/common/auth/abstractions/acc import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions"; import { ProductTierType } from "@bitwarden/common/billing/enums"; import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; +import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { FakeAccountService, FakeStateProvider, mockAccountServiceWith } from "../../../../spec"; import { UserId } from "../../../types/guid"; @@ -19,6 +20,7 @@ describe("PhishingDetectionSettingsService", () => { let mockBillingService: MockProxy; let mockConfigService: MockProxy; let mockOrganizationService: MockProxy; + let mockPlatformService: MockProxy; // RxJS Subjects we control in the tests let activeAccountSubject: BehaviorSubject; @@ -76,12 +78,15 @@ describe("PhishingDetectionSettingsService", () => { mockOrganizationService = mock(); mockOrganizationService.organizations$.mockReturnValue(organizationsSubject.asObservable()); + mockPlatformService = mock(); + stateProvider = new FakeStateProvider(accountService); service = new PhishingDetectionSettingsService( mockAccountService, mockBillingService, mockConfigService, mockOrganizationService, + mockPlatformService, stateProvider, ); }); diff --git a/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.ts b/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.ts index 36d50f60de7..e30592b2f68 100644 --- a/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.ts +++ b/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.ts @@ -8,6 +8,7 @@ import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abs import { ProductTierType } from "@bitwarden/common/billing/enums"; import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; +import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { UserId } from "@bitwarden/user-core"; import { PHISHING_DETECTION_DISK, StateProvider, UserKeyDefinition } from "../../../platform/state"; @@ -32,6 +33,7 @@ export class PhishingDetectionSettingsService implements PhishingDetectionSettin private billingService: BillingAccountProfileStateService, private configService: ConfigService, private organizationService: OrganizationService, + private platformService: PlatformUtilsService, private stateProvider: StateProvider, ) { this.available$ = this.buildAvailablePipeline$().pipe( @@ -60,6 +62,11 @@ export class PhishingDetectionSettingsService implements PhishingDetectionSettin * @returns An observable pipeline that determines if phishing detection is available */ private buildAvailablePipeline$(): Observable { + // Phishing detection is unavailable on Safari due to platform limitations. + if (this.platformService.isSafari()) { + return of(false); + } + return combineLatest([ this.accountService.activeAccount$, this.configService.getFeatureFlag$(FeatureFlag.PhishingDetection), From 481386218a62b3d18288f3be3ade88bde50cfe5d Mon Sep 17 00:00:00 2001 From: bmbitwarden Date: Fri, 19 Dec 2025 13:26:40 -0500 Subject: [PATCH 10/81] PM-24189 improved screen reader parsing for special character checkbox (#17361) * PM-24189 improved screen reader parsing for special character checkbox * PM-24189 resolved voiceOver issue * PM-24189 resolved voiceOver issue * PM-27628 resolved pr comment re id and aria labels and comments * PM-24189 resolved pr comment --- .../src/password-settings.component.html | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/libs/tools/generator/components/src/password-settings.component.html b/libs/tools/generator/components/src/password-settings.component.html index b435a13fe4c..33958f0c169 100644 --- a/libs/tools/generator/components/src/password-settings.component.html +++ b/libs/tools/generator/components/src/password-settings.component.html @@ -52,11 +52,7 @@ {{ "numbersLabel" | i18n }} - + - {{ "!@#$%^&*" }} + + + + {{ "specialCharactersDescription" | i18n }} + +
From 0064f18ccd415f852b4639ba346470a882d80260 Mon Sep 17 00:00:00 2001 From: Dave <3836813+enmande@users.noreply.github.com> Date: Fri, 19 Dec 2025 14:56:13 -0500 Subject: [PATCH 11/81] fix(set-initial-password) [PM-28494]: Newly created master password not accepted on unlock until after re-login on browser extension (#17930) * fix(set-initial-password-service) [PM-28494]: Update MP data and decryption property sets to accommodate legacy and new paths for service. * fix(set-initial-password-component) [PM-28494]: Add salt and mp data to credentials object. * refactor(set-initial-password-service) [PM-28494]: Additional comments. * test(set-initial-password-service) [PM-28494]: Update tests for added credential members. --- ...initial-password.service.implementation.ts | 48 +++++++++++++ ...fault-set-initial-password.service.spec.ts | 72 +++++++++++++++++++ .../set-initial-password.component.ts | 4 ++ ...et-initial-password.service.abstraction.ts | 3 + 4 files changed, 127 insertions(+) diff --git a/libs/angular/src/auth/password-management/set-initial-password/default-set-initial-password.service.implementation.ts b/libs/angular/src/auth/password-management/set-initial-password/default-set-initial-password.service.implementation.ts index bd3f78b9290..2f5c43e2db9 100644 --- a/libs/angular/src/auth/password-management/set-initial-password/default-set-initial-password.service.implementation.ts +++ b/libs/angular/src/auth/password-management/set-initial-password/default-set-initial-password.service.implementation.ts @@ -19,6 +19,7 @@ import { AccountCryptographicStateService } from "@bitwarden/common/key-manageme import { EncryptService } from "@bitwarden/common/key-management/crypto/abstractions/encrypt.service"; import { EncString } from "@bitwarden/common/key-management/crypto/models/enc-string"; import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/key-management/master-password/abstractions/master-password.service.abstraction"; +import { MasterPasswordSalt } from "@bitwarden/common/key-management/master-password/types/master-password.types"; import { KeysRequest } from "@bitwarden/common/models/request/keys.request"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; @@ -62,6 +63,8 @@ export class DefaultSetInitialPasswordService implements SetInitialPasswordServi orgSsoIdentifier, orgId, resetPasswordAutoEnroll, + newPassword, + salt, } = credentials; for (const [key, value] of Object.entries(credentials)) { @@ -155,6 +158,20 @@ export class DefaultSetInitialPasswordService implements SetInitialPasswordServi userId, ); + // Set master password unlock data for unlock path pointed to with + // MasterPasswordUnlockData feature development + // (requires: password, salt, kdf, userKey). + // As migration to this strategy continues, both unlock paths need supported. + // Several invocations in this file become redundant and can be removed once + // the feature is enshrined/unwound. These are marked with [PM-23246] below. + await this.setMasterPasswordUnlockData( + newPassword, + salt, + kdfConfig, + masterKeyEncryptedUserKey[0], + userId, + ); + /** * Set the private key only for new JIT provisioned users in MP encryption orgs. * (Existing TDE users will have their private key set on sync or on login.) @@ -174,6 +191,7 @@ export class DefaultSetInitialPasswordService implements SetInitialPasswordServi ); } + // [PM-23246] "Legacy" master key setting path - to be removed once unlock path migration is complete await this.masterPasswordService.setMasterKeyHash(newLocalMasterKeyHash, userId); if (resetPasswordAutoEnroll) { @@ -216,10 +234,40 @@ export class DefaultSetInitialPasswordService implements SetInitialPasswordServi userDecryptionOpts, ); await this.kdfConfigService.setKdfConfig(userId, kdfConfig); + // [PM-23246] "Legacy" master key setting path - to be removed once unlock path migration is complete await this.masterPasswordService.setMasterKey(masterKey, userId); + // [PM-23246] "Legacy" master key setting path - to be removed once unlock path migration is complete + await this.masterPasswordService.setMasterKeyEncryptedUserKey( + masterKeyEncryptedUserKey[1], + userId, + ); await this.keyService.setUserKey(masterKeyEncryptedUserKey[0], userId); } + /** + * As part of [PM-28494], adding this setting path to accommodate the changes that are + * emerging with pm-23246-unlock-with-master-password-unlock-data. + * Without this, immediately locking/unlocking the vault with the new password _may_ still fail + * if sync has not completed. Sync will eventually set this data, but we want to ensure it's + * set right away here to prevent a race condition UX issue that prevents immediate unlock. + */ + private async setMasterPasswordUnlockData( + password: string, + salt: MasterPasswordSalt, + kdfConfig: KdfConfig, + userKey: UserKey, + userId: UserId, + ): Promise { + const masterPasswordUnlockData = await this.masterPasswordService.makeMasterPasswordUnlockData( + password, + kdfConfig, + salt, + userKey, + ); + + await this.masterPasswordService.setMasterPasswordUnlockData(masterPasswordUnlockData, userId); + } + private async handleResetPasswordAutoEnroll( masterKeyHash: string, orgId: string, diff --git a/libs/angular/src/auth/password-management/set-initial-password/default-set-initial-password.service.spec.ts b/libs/angular/src/auth/password-management/set-initial-password/default-set-initial-password.service.spec.ts index cfea011d0d9..af4505371d3 100644 --- a/libs/angular/src/auth/password-management/set-initial-password/default-set-initial-password.service.spec.ts +++ b/libs/angular/src/auth/password-management/set-initial-password/default-set-initial-password.service.spec.ts @@ -134,6 +134,8 @@ describe("DefaultSetInitialPasswordService", () => { orgSsoIdentifier: "orgSsoIdentifier", orgId: "orgId", resetPasswordAutoEnroll: false, + newPassword: "Test@Password123!", + salt: "user@example.com" as any, }; userType = SetInitialPasswordUserType.JIT_PROVISIONED_MP_ORG_USER; @@ -226,6 +228,8 @@ describe("DefaultSetInitialPasswordService", () => { "orgSsoIdentifier", "orgId", "resetPasswordAutoEnroll", + "newPassword", + "salt", ].forEach((key) => { it(`should throw if ${key} is not provided on the SetInitialPasswordCredentials object`, async () => { // Arrange @@ -357,6 +361,10 @@ describe("DefaultSetInitialPasswordService", () => { ForceSetPasswordReason.None, userId, ); + expect(masterPasswordService.setMasterKeyEncryptedUserKey).toHaveBeenCalledWith( + masterKeyEncryptedUserKey[1], + userId, + ); }); it("should update account decryption properties", async () => { @@ -417,6 +425,36 @@ describe("DefaultSetInitialPasswordService", () => { ); }); + it("should create and set master password unlock data to prevent race condition with sync", async () => { + // Arrange + setupMocks(); + + const mockUnlockData = { + salt: credentials.salt, + kdf: credentials.kdfConfig, + masterKeyWrappedUserKey: "wrapped_key_string", + }; + + masterPasswordService.makeMasterPasswordUnlockData.mockResolvedValue( + mockUnlockData as any, + ); + + // Act + await sut.setInitialPassword(credentials, userType, userId); + + // Assert + expect(masterPasswordService.makeMasterPasswordUnlockData).toHaveBeenCalledWith( + credentials.newPassword, + credentials.kdfConfig, + credentials.salt, + masterKeyEncryptedUserKey[0], + ); + expect(masterPasswordService.setMasterPasswordUnlockData).toHaveBeenCalledWith( + mockUnlockData, + userId, + ); + }); + describe("given resetPasswordAutoEnroll is true", () => { it(`should handle reset password (account recovery) auto enroll`, async () => { // Arrange @@ -586,6 +624,10 @@ describe("DefaultSetInitialPasswordService", () => { credentials.newMasterKey, userId, ); + expect(masterPasswordService.setMasterKeyEncryptedUserKey).toHaveBeenCalledWith( + masterKeyEncryptedUserKey[1], + userId, + ); expect(keyService.setUserKey).toHaveBeenCalledWith(masterKeyEncryptedUserKey[0], userId); }); @@ -616,6 +658,36 @@ describe("DefaultSetInitialPasswordService", () => { ); }); + it("should create and set master password unlock data to prevent race condition with sync", async () => { + // Arrange + setupMocks({ ...defaultMockConfig, userType }); + + const mockUnlockData = { + salt: credentials.salt, + kdf: credentials.kdfConfig, + masterKeyWrappedUserKey: "wrapped_key_string", + }; + + masterPasswordService.makeMasterPasswordUnlockData.mockResolvedValue( + mockUnlockData as any, + ); + + // Act + await sut.setInitialPassword(credentials, userType, userId); + + // Assert + expect(masterPasswordService.makeMasterPasswordUnlockData).toHaveBeenCalledWith( + credentials.newPassword, + credentials.kdfConfig, + credentials.salt, + masterKeyEncryptedUserKey[0], + ); + expect(masterPasswordService.setMasterPasswordUnlockData).toHaveBeenCalledWith( + mockUnlockData, + userId, + ); + }); + describe("given resetPasswordAutoEnroll is true", () => { it(`should handle reset password (account recovery) auto enroll`, async () => { // Arrange diff --git a/libs/angular/src/auth/password-management/set-initial-password/set-initial-password.component.ts b/libs/angular/src/auth/password-management/set-initial-password/set-initial-password.component.ts index 805fe3c0173..0e0bae62b9a 100644 --- a/libs/angular/src/auth/password-management/set-initial-password/set-initial-password.component.ts +++ b/libs/angular/src/auth/password-management/set-initial-password/set-initial-password.component.ts @@ -214,6 +214,8 @@ export class SetInitialPasswordComponent implements OnInit { assertTruthy(passwordInputResult.newServerMasterKeyHash, "newServerMasterKeyHash", ctx); assertTruthy(passwordInputResult.newLocalMasterKeyHash, "newLocalMasterKeyHash", ctx); assertTruthy(passwordInputResult.kdfConfig, "kdfConfig", ctx); + assertTruthy(passwordInputResult.newPassword, "newPassword", ctx); + assertTruthy(passwordInputResult.salt, "salt", ctx); assertTruthy(this.orgSsoIdentifier, "orgSsoIdentifier", ctx); assertTruthy(this.orgId, "orgId", ctx); assertTruthy(this.userType, "userType", ctx); @@ -231,6 +233,8 @@ export class SetInitialPasswordComponent implements OnInit { orgSsoIdentifier: this.orgSsoIdentifier, orgId: this.orgId, resetPasswordAutoEnroll: this.resetPasswordAutoEnroll, + newPassword: passwordInputResult.newPassword, + salt: passwordInputResult.salt, }; await this.setInitialPasswordService.setInitialPassword( diff --git a/libs/angular/src/auth/password-management/set-initial-password/set-initial-password.service.abstraction.ts b/libs/angular/src/auth/password-management/set-initial-password/set-initial-password.service.abstraction.ts index c1f6ba1a5ec..5620194e1bb 100644 --- a/libs/angular/src/auth/password-management/set-initial-password/set-initial-password.service.abstraction.ts +++ b/libs/angular/src/auth/password-management/set-initial-password/set-initial-password.service.abstraction.ts @@ -1,3 +1,4 @@ +import { MasterPasswordSalt } from "@bitwarden/common/key-management/master-password/types/master-password.types"; import { UserId } from "@bitwarden/common/types/guid"; import { MasterKey } from "@bitwarden/common/types/key"; import { KdfConfig } from "@bitwarden/key-management"; @@ -50,6 +51,8 @@ export interface SetInitialPasswordCredentials { orgSsoIdentifier: string; orgId: string; resetPasswordAutoEnroll: boolean; + newPassword: string; + salt: MasterPasswordSalt; } export interface SetInitialPasswordTdeOffboardingCredentials { From ea975610e6cc77d8b2257dbd7edd35fdfe9a6a60 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 17:39:59 -0500 Subject: [PATCH 12/81] [deps] Platform: Update electron to v39 (#17301) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [deps] Platform: Update electron to v39 * Update and change builder --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Daniel García --- apps/desktop/electron-builder.json | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/desktop/electron-builder.json b/apps/desktop/electron-builder.json index 6e89799e9c4..f979df81fd0 100644 --- a/apps/desktop/electron-builder.json +++ b/apps/desktop/electron-builder.json @@ -20,7 +20,7 @@ "**/node_modules/@bitwarden/desktop-napi/index.js", "**/node_modules/@bitwarden/desktop-napi/desktop_napi.${platform}-${arch}*.node" ], - "electronVersion": "37.7.0", + "electronVersion": "39.2.6", "generateUpdatesFilesForAllChannels": true, "publish": { "provider": "generic", diff --git a/package-lock.json b/package-lock.json index 373cc4b0876..c24e8cc45a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -131,7 +131,7 @@ "copy-webpack-plugin": "13.0.1", "cross-env": "10.1.0", "css-loader": "7.1.2", - "electron": "37.7.0", + "electron": "39.2.6", "electron-builder": "26.0.12", "electron-log": "5.4.3", "electron-reload": "2.0.0-alpha.1", @@ -21928,9 +21928,9 @@ } }, "node_modules/electron": { - "version": "37.7.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-37.7.0.tgz", - "integrity": "sha512-LBzvfrS0aalynOsnC11AD7zeoU8eOois090mzLpQM3K8yZ2N04i2ZW9qmHOTFLrXlKvrwRc7EbyQf1u8XHMl6Q==", + "version": "39.2.6", + "resolved": "https://registry.npmjs.org/electron/-/electron-39.2.6.tgz", + "integrity": "sha512-dHBgTodWBZd+tL1Dt0PSh/CFLHeDkFCTKCTXu1dgPhlE9Z3k2zzlBQ9B2oW55CFsKanBDHiUomHJNw0XaSdQpA==", "dev": true, "hasInstallScript": true, "license": "MIT", diff --git a/package.json b/package.json index 9276b94286e..7b2b3701fdf 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "copy-webpack-plugin": "13.0.1", "cross-env": "10.1.0", "css-loader": "7.1.2", - "electron": "37.7.0", + "electron": "39.2.6", "electron-builder": "26.0.12", "electron-log": "5.4.3", "electron-reload": "2.0.0-alpha.1", From 2d6d1dfe5341738b54d2749024e454e51aae166f Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Sun, 21 Dec 2025 21:46:18 +0100 Subject: [PATCH 13/81] [PM-29929] Exclude organization vault items in data recovery tool (#18044) * Exclude organization vault items in data recovery tool * Allow undefined organization id --- .../data-recovery/steps/cipher-step.spec.ts | 241 ++++++++++++++++++ .../data-recovery/steps/cipher-step.ts | 6 +- 2 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 apps/web/src/app/key-management/data-recovery/steps/cipher-step.spec.ts diff --git a/apps/web/src/app/key-management/data-recovery/steps/cipher-step.spec.ts b/apps/web/src/app/key-management/data-recovery/steps/cipher-step.spec.ts new file mode 100644 index 00000000000..a894fce0c41 --- /dev/null +++ b/apps/web/src/app/key-management/data-recovery/steps/cipher-step.spec.ts @@ -0,0 +1,241 @@ +import { mock, MockProxy } from "jest-mock-extended"; + +import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { CipherEncryptionService } from "@bitwarden/common/vault/abstractions/cipher-encryption.service"; +import { Cipher } from "@bitwarden/common/vault/models/domain/cipher"; +import { DialogService } from "@bitwarden/components"; +import { UserId } from "@bitwarden/user-core"; + +import { LogRecorder } from "../log-recorder"; + +import { CipherStep } from "./cipher-step"; +import { RecoveryWorkingData } from "./recovery-step"; + +describe("CipherStep", () => { + let cipherStep: CipherStep; + let apiService: MockProxy; + let cipherEncryptionService: MockProxy; + let dialogService: MockProxy; + let logger: MockProxy; + + beforeEach(() => { + apiService = mock(); + cipherEncryptionService = mock(); + dialogService = mock(); + logger = mock(); + + cipherStep = new CipherStep(apiService, cipherEncryptionService, dialogService); + }); + + describe("runDiagnostics", () => { + it("returns false and logs error when userId is missing", async () => { + const workingData: RecoveryWorkingData = { + userId: null, + userKey: null, + encryptedPrivateKey: null, + isPrivateKeyCorrupt: false, + ciphers: [], + folders: [], + }; + + const result = await cipherStep.runDiagnostics(workingData, logger); + + expect(result).toBe(false); + expect(logger.record).toHaveBeenCalledWith("Missing user ID"); + }); + + it("returns true when all user ciphers are decryptable", async () => { + const userId = "user-id" as UserId; + const cipher1 = { id: "cipher-1", organizationId: null } as Cipher; + const cipher2 = { id: "cipher-2", organizationId: null } as Cipher; + + const workingData: RecoveryWorkingData = { + userId, + userKey: null, + encryptedPrivateKey: null, + isPrivateKeyCorrupt: false, + ciphers: [cipher1, cipher2], + folders: [], + }; + + cipherEncryptionService.decrypt.mockResolvedValue({} as any); + + const result = await cipherStep.runDiagnostics(workingData, logger); + + expect(result).toBe(true); + expect(cipherEncryptionService.decrypt).toHaveBeenCalledWith(cipher1, userId); + expect(cipherEncryptionService.decrypt).toHaveBeenCalledWith(cipher2, userId); + }); + + it("filters out organization ciphers (organizationId !== null) and only processes user ciphers", async () => { + const userId = "user-id" as UserId; + const userCipher = { id: "user-cipher", organizationId: null } as Cipher; + const orgCipher1 = { id: "org-cipher-1", organizationId: "org-1" } as Cipher; + const orgCipher2 = { id: "org-cipher-2", organizationId: "org-2" } as Cipher; + + const workingData: RecoveryWorkingData = { + userId, + userKey: null, + encryptedPrivateKey: null, + isPrivateKeyCorrupt: false, + ciphers: [userCipher, orgCipher1, orgCipher2], + folders: [], + }; + + cipherEncryptionService.decrypt.mockResolvedValue({} as any); + + const result = await cipherStep.runDiagnostics(workingData, logger); + + expect(result).toBe(true); + // Only user cipher should be processed + expect(cipherEncryptionService.decrypt).toHaveBeenCalledTimes(1); + expect(cipherEncryptionService.decrypt).toHaveBeenCalledWith(userCipher, userId); + // Organization ciphers should not be processed + expect(cipherEncryptionService.decrypt).not.toHaveBeenCalledWith(orgCipher1, userId); + expect(cipherEncryptionService.decrypt).not.toHaveBeenCalledWith(orgCipher2, userId); + }); + + it("returns false and records undecryptable user ciphers", async () => { + const userId = "user-id" as UserId; + const cipher1 = { id: "cipher-1", organizationId: null } as Cipher; + const cipher2 = { id: "cipher-2", organizationId: null } as Cipher; + const cipher3 = { id: "cipher-3", organizationId: null } as Cipher; + + const workingData: RecoveryWorkingData = { + userId, + userKey: null, + encryptedPrivateKey: null, + isPrivateKeyCorrupt: false, + ciphers: [cipher1, cipher2, cipher3], + folders: [], + }; + + cipherEncryptionService.decrypt + .mockResolvedValueOnce({} as any) // cipher1 succeeds + .mockRejectedValueOnce(new Error("Decryption failed")) // cipher2 fails + .mockRejectedValueOnce(new Error("Decryption failed")); // cipher3 fails + + const result = await cipherStep.runDiagnostics(workingData, logger); + + expect(result).toBe(false); + expect(logger.record).toHaveBeenCalledWith("Cipher ID cipher-2 was undecryptable"); + expect(logger.record).toHaveBeenCalledWith("Cipher ID cipher-3 was undecryptable"); + expect(logger.record).toHaveBeenCalledWith("Found 2 undecryptable ciphers"); + }); + }); + + describe("canRecover", () => { + it("returns false when there are no undecryptable ciphers", async () => { + const userId = "user-id" as UserId; + const workingData: RecoveryWorkingData = { + userId, + userKey: null, + encryptedPrivateKey: null, + isPrivateKeyCorrupt: false, + ciphers: [{ id: "cipher-1", organizationId: null } as Cipher], + folders: [], + }; + + cipherEncryptionService.decrypt.mockResolvedValue({} as any); + + await cipherStep.runDiagnostics(workingData, logger); + const result = cipherStep.canRecover(workingData); + + expect(result).toBe(false); + }); + + it("returns true when there are undecryptable ciphers", async () => { + const userId = "user-id" as UserId; + const workingData: RecoveryWorkingData = { + userId, + userKey: null, + encryptedPrivateKey: null, + isPrivateKeyCorrupt: false, + ciphers: [{ id: "cipher-1", organizationId: null } as Cipher], + folders: [], + }; + + cipherEncryptionService.decrypt.mockRejectedValue(new Error("Decryption failed")); + + await cipherStep.runDiagnostics(workingData, logger); + const result = cipherStep.canRecover(workingData); + + expect(result).toBe(true); + }); + }); + + describe("runRecovery", () => { + it("logs and returns early when there are no undecryptable ciphers", async () => { + const workingData: RecoveryWorkingData = { + userId: "user-id" as UserId, + userKey: null, + encryptedPrivateKey: null, + isPrivateKeyCorrupt: false, + ciphers: [], + folders: [], + }; + + await cipherStep.runRecovery(workingData, logger); + + expect(logger.record).toHaveBeenCalledWith("No undecryptable ciphers to recover"); + expect(dialogService.openSimpleDialog).not.toHaveBeenCalled(); + expect(apiService.deleteCipher).not.toHaveBeenCalled(); + }); + + it("throws error when user cancels deletion", async () => { + const userId = "user-id" as UserId; + const workingData: RecoveryWorkingData = { + userId, + userKey: null, + encryptedPrivateKey: null, + isPrivateKeyCorrupt: false, + ciphers: [{ id: "cipher-1", organizationId: null } as Cipher], + folders: [], + }; + + cipherEncryptionService.decrypt.mockRejectedValue(new Error("Decryption failed")); + await cipherStep.runDiagnostics(workingData, logger); + + dialogService.openSimpleDialog.mockResolvedValue(false); + + await expect(cipherStep.runRecovery(workingData, logger)).rejects.toThrow( + "Cipher recovery cancelled by user", + ); + + expect(logger.record).toHaveBeenCalledWith("Showing confirmation dialog for 1 ciphers"); + expect(logger.record).toHaveBeenCalledWith("User cancelled cipher deletion"); + expect(apiService.deleteCipher).not.toHaveBeenCalled(); + }); + + it("deletes undecryptable ciphers when user confirms", async () => { + const userId = "user-id" as UserId; + const cipher1 = { id: "cipher-1", organizationId: null } as Cipher; + const cipher2 = { id: "cipher-2", organizationId: null } as Cipher; + + const workingData: RecoveryWorkingData = { + userId, + userKey: null, + encryptedPrivateKey: null, + isPrivateKeyCorrupt: false, + ciphers: [cipher1, cipher2], + folders: [], + }; + + cipherEncryptionService.decrypt.mockRejectedValue(new Error("Decryption failed")); + await cipherStep.runDiagnostics(workingData, logger); + + dialogService.openSimpleDialog.mockResolvedValue(true); + apiService.deleteCipher.mockResolvedValue(undefined); + + await cipherStep.runRecovery(workingData, logger); + + expect(logger.record).toHaveBeenCalledWith("Showing confirmation dialog for 2 ciphers"); + expect(logger.record).toHaveBeenCalledWith("Deleting 2 ciphers"); + expect(apiService.deleteCipher).toHaveBeenCalledWith("cipher-1"); + expect(apiService.deleteCipher).toHaveBeenCalledWith("cipher-2"); + expect(logger.record).toHaveBeenCalledWith("Deleted cipher cipher-1"); + expect(logger.record).toHaveBeenCalledWith("Deleted cipher cipher-2"); + expect(logger.record).toHaveBeenCalledWith("Successfully deleted 2 ciphers"); + }); + }); +}); diff --git a/apps/web/src/app/key-management/data-recovery/steps/cipher-step.ts b/apps/web/src/app/key-management/data-recovery/steps/cipher-step.ts index 34e8cbdc9f3..b44e8afc54d 100644 --- a/apps/web/src/app/key-management/data-recovery/steps/cipher-step.ts +++ b/apps/web/src/app/key-management/data-recovery/steps/cipher-step.ts @@ -24,7 +24,11 @@ export class CipherStep implements RecoveryStep { } this.undecryptableCipherIds = []; - for (const cipher of workingData.ciphers) { + // The tool is currently only implemented to handle ciphers that are corrupt for a user. For an organization, the case of + // local user not having access to the organization key is not properly handled here, and should be implemented separately. + // For now, this just filters out and does not consider corrupt organization ciphers. + const userCiphers = workingData.ciphers.filter((c) => c.organizationId == null); + for (const cipher of userCiphers) { try { await this.cipherService.decrypt(cipher, workingData.userId); } catch { From 5c2cfee8dfe279f57376240cb4857d1581152816 Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 07:42:07 +0000 Subject: [PATCH 14/81] Autosync the updated translations (#18087) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/desktop/src/locales/az/messages.json | 8 +-- apps/desktop/src/locales/sk/messages.json | 6 +- apps/desktop/src/locales/zh_CN/messages.json | 8 +-- apps/desktop/src/locales/zh_TW/messages.json | 60 ++++++++++---------- 4 files changed, 41 insertions(+), 41 deletions(-) diff --git a/apps/desktop/src/locales/az/messages.json b/apps/desktop/src/locales/az/messages.json index a031860334d..ba6cad30e4f 100644 --- a/apps/desktop/src/locales/az/messages.json +++ b/apps/desktop/src/locales/az/messages.json @@ -1776,19 +1776,19 @@ "message": "Buradan xaricə köçür" }, "exportNoun": { - "message": "Export", + "message": "Xaricə köçürmə", "description": "The noun form of the word Export" }, "exportVerb": { - "message": "Export", + "message": "Xaricə köçür", "description": "The verb form of the word Export" }, "importNoun": { - "message": "Import", + "message": "Daxilə köçürmə", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "Daxilə köçür", "description": "The verb form of the word Import" }, "fileFormat": { diff --git a/apps/desktop/src/locales/sk/messages.json b/apps/desktop/src/locales/sk/messages.json index 6e76a04a9fa..23c3d3ae3d0 100644 --- a/apps/desktop/src/locales/sk/messages.json +++ b/apps/desktop/src/locales/sk/messages.json @@ -1414,7 +1414,7 @@ "message": "Zobraziť Bitwarden v Docku aj keď je minimalizovaný na panel úloh." }, "confirmTrayTitle": { - "message": "Potvrdiť vypnutie systémovej lišty" + "message": "Potvrdiť skrývanie systémovej lišty" }, "confirmTrayDesc": { "message": "Vypnutím tohto nastavenia vypnete aj ostatné nastavenia súvisiace so systémovou lištou." @@ -2849,10 +2849,10 @@ "message": "Použiť možnosti subadresovania svojho poskytovateľa e-mailu." }, "catchallEmail": { - "message": "E-mail Catch-all" + "message": "Doménový kôš" }, "catchallEmailDesc": { - "message": "Použiť doručenú poštu typu catch-all nastavenú na doméne." + "message": "Použiť nastavený doménový kôš." }, "useThisEmail": { "message": "Použiť tento e-mail" diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json index f4640ea9d00..7d1c1648bb6 100644 --- a/apps/desktop/src/locales/zh_CN/messages.json +++ b/apps/desktop/src/locales/zh_CN/messages.json @@ -1776,19 +1776,19 @@ "message": "导出自" }, "exportNoun": { - "message": "Export", + "message": "导出", "description": "The noun form of the word Export" }, "exportVerb": { - "message": "Export", + "message": "导出", "description": "The verb form of the word Export" }, "importNoun": { - "message": "Import", + "message": "导入", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "导入", "description": "The verb form of the word Import" }, "fileFormat": { diff --git a/apps/desktop/src/locales/zh_TW/messages.json b/apps/desktop/src/locales/zh_TW/messages.json index ea4d8cbc1b0..7b5b352d5cb 100644 --- a/apps/desktop/src/locales/zh_TW/messages.json +++ b/apps/desktop/src/locales/zh_TW/messages.json @@ -709,7 +709,7 @@ "message": "新增附件" }, "itemsTransferred": { - "message": "Items transferred" + "message": "項目已轉移" }, "fixEncryption": { "message": "修正加密" @@ -1199,7 +1199,7 @@ "message": "關注我們" }, "syncNow": { - "message": "Sync now" + "message": "立即同步" }, "changeMasterPass": { "message": "變更主密碼" @@ -1776,19 +1776,19 @@ "message": "匯出自" }, "exportNoun": { - "message": "Export", + "message": "匯出", "description": "The noun form of the word Export" }, "exportVerb": { - "message": "Export", + "message": "匯出", "description": "The verb form of the word Export" }, "importNoun": { - "message": "Import", + "message": "匯入", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "匯入", "description": "The verb form of the word Import" }, "fileFormat": { @@ -4344,43 +4344,43 @@ "message": "升級到 Premium" }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "您的組織已不再使用主密碼登入 Bitwarden。若要繼續,請驗證組織與網域。" }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "繼續登入" }, "doNotContinue": { - "message": "Do not continue" + "message": "不要繼續" }, "domain": { - "message": "Domain" + "message": "網域" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "此網域將儲存您帳號的加密金鑰,請確認您信任它。若不確定,請洽詢您的管理員。" }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "驗證您的組織以登入" }, "organizationVerified": { - "message": "Organization verified" + "message": "組織已驗證" }, "domainVerified": { - "message": "Domain verified" + "message": "已驗證網域" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "若您未驗證組織,將會被撤銷對該組織的存取權限。" }, "leaveNow": { - "message": "Leave now" + "message": "立即離開" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "驗證您的網域以登入" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "若要繼續登入,請驗證此網域。" }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "若要繼續登入,請驗證組織與網域。" }, "sessionTimeoutSettingsAction": { "message": "逾時後動作" @@ -4430,19 +4430,19 @@ "message": "設定一個解鎖方式來變更您的密碼庫逾時動作。" }, "upgrade": { - "message": "Upgrade" + "message": "升級" }, "leaveConfirmationDialogTitle": { - "message": "Are you sure you want to leave?" + "message": "確定要離開嗎?" }, "leaveConfirmationDialogContentOne": { - "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + "message": "若選擇拒絕,您的個人項目將保留在帳號中,但您將失去對共用項目與組織功能的存取權。" }, "leaveConfirmationDialogContentTwo": { - "message": "Contact your admin to regain access." + "message": "請聯絡您的管理員以重新取得存取權限。" }, "leaveConfirmationDialogConfirmButton": { - "message": "Leave $ORGANIZATION$", + "message": "離開 $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -4451,10 +4451,10 @@ } }, "howToManageMyVault": { - "message": "How do I manage my vault?" + "message": "我要如何管理我的密碼庫?" }, "transferItemsToOrganizationTitle": { - "message": "Transfer items to $ORGANIZATION$", + "message": "將項目轉移至 $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -4463,7 +4463,7 @@ } }, "transferItemsToOrganizationContent": { - "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "message": "$ORGANIZATION$ 為了安全性與合規性,要求所有項目皆由組織擁有。點擊接受即可轉移您項目的擁有權。", "placeholders": { "organization": { "content": "$1", @@ -4472,12 +4472,12 @@ } }, "acceptTransfer": { - "message": "Accept transfer" + "message": "同意轉移" }, "declineAndLeave": { - "message": "Decline and leave" + "message": "拒絕並離開" }, "whyAmISeeingThis": { - "message": "Why am I seeing this?" + "message": "為什麼我會看到此訊息?" } } From e73d5770d338cdffd7a50f9cd2ba5cf2a7a718fc Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 07:42:26 +0000 Subject: [PATCH 15/81] Autosync the updated translations (#18088) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/browser/src/_locales/az/messages.json | 8 +-- apps/browser/src/_locales/sk/messages.json | 6 +- apps/browser/src/_locales/th/messages.json | 8 +-- apps/browser/src/_locales/zh_CN/messages.json | 8 +-- apps/browser/src/_locales/zh_TW/messages.json | 66 +++++++++---------- 5 files changed, 48 insertions(+), 48 deletions(-) diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json index 3efc2627018..3f98313c2b8 100644 --- a/apps/browser/src/_locales/az/messages.json +++ b/apps/browser/src/_locales/az/messages.json @@ -1323,19 +1323,19 @@ "message": "Buradan xaricə köçür" }, "exportVerb": { - "message": "Export", + "message": "Xaricə köçür", "description": "The verb form of the word Export" }, "exportNoun": { - "message": "Export", + "message": "Xaricə köçürmə", "description": "The noun form of the word Export" }, "importNoun": { - "message": "Import", + "message": "Daxilə köçürmə", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "Daxilə köçür", "description": "The verb form of the word Import" }, "fileFormat": { diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json index 343f16a921b..ffda610b8f0 100644 --- a/apps/browser/src/_locales/sk/messages.json +++ b/apps/browser/src/_locales/sk/messages.json @@ -1486,7 +1486,7 @@ "message": "Vyberte súbor" }, "itemsTransferred": { - "message": "Items transferred" + "message": "Položky boli prenesené" }, "maxFileSize": { "message": "Maximálna veľkosť súboru je 500 MB." @@ -3408,10 +3408,10 @@ "message": "Použiť možnosti subadresovania svojho poskytovateľa e-mailu." }, "catchallEmail": { - "message": "Catch-all e-mail" + "message": "Doménový kôš" }, "catchallEmailDesc": { - "message": "Použiť doručenú poštu typu catch-all nastavenú na doméne." + "message": "Použiť nastavený doménový kôš." }, "random": { "message": "Náhodné" diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json index 50bac4d6a44..49bda58b558 100644 --- a/apps/browser/src/_locales/th/messages.json +++ b/apps/browser/src/_locales/th/messages.json @@ -1323,19 +1323,19 @@ "message": "ส่งออกจาก" }, "exportVerb": { - "message": "Export", + "message": "ส่งออก", "description": "The verb form of the word Export" }, "exportNoun": { - "message": "Export", + "message": "ส่งออก", "description": "The noun form of the word Export" }, "importNoun": { - "message": "Import", + "message": "นำเข้า", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "นำเข้า", "description": "The verb form of the word Import" }, "fileFormat": { diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index 53d51a8e16f..a699be016eb 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -1323,19 +1323,19 @@ "message": "导出自" }, "exportVerb": { - "message": "Export", + "message": "导出", "description": "The verb form of the word Export" }, "exportNoun": { - "message": "Export", + "message": "导出", "description": "The noun form of the word Export" }, "importNoun": { - "message": "Import", + "message": "导入", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "导入", "description": "The verb form of the word Import" }, "fileFormat": { diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json index b36ba76f0a1..abb25c48b43 100644 --- a/apps/browser/src/_locales/zh_TW/messages.json +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -437,7 +437,7 @@ "message": "同步" }, "syncNow": { - "message": "Sync now" + "message": "立即同步" }, "lastSync": { "message": "上次同步於:" @@ -1323,19 +1323,19 @@ "message": "匯出自" }, "exportVerb": { - "message": "Export", + "message": "匯出", "description": "The verb form of the word Export" }, "exportNoun": { - "message": "Export", + "message": "匯出", "description": "The noun form of the word Export" }, "importNoun": { - "message": "Import", + "message": "匯入", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "匯入", "description": "The verb form of the word Import" }, "fileFormat": { @@ -1486,7 +1486,7 @@ "message": "選取檔案" }, "itemsTransferred": { - "message": "Items transferred" + "message": "項目已轉移" }, "maxFileSize": { "message": "檔案最大為 500MB。" @@ -4812,13 +4812,13 @@ "message": "帳戶安全性" }, "phishingBlocker": { - "message": "Phishing Blocker" + "message": "釣魚封鎖器" }, "enablePhishingDetection": { - "message": "Phishing detection" + "message": "釣魚偵測" }, "enablePhishingDetectionDesc": { - "message": "Display warning before accessing suspected phishing sites" + "message": "在存取疑似釣魚網站前顯示警告" }, "notifications": { "message": "通知" @@ -5904,43 +5904,43 @@ "message": "支付卡號碼" }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "您的組織已不再使用主密碼登入 Bitwarden。若要繼續,請驗證組織與網域。" }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "繼續登入" }, "doNotContinue": { - "message": "Do not continue" + "message": "不要繼續" }, "domain": { - "message": "Domain" + "message": "網域" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "此網域將儲存您帳號的加密金鑰,請確認您信任它。若不確定,請洽詢您的管理員。" }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "驗證您的組織以登入" }, "organizationVerified": { - "message": "Organization verified" + "message": "組織已驗證" }, "domainVerified": { - "message": "Domain verified" + "message": "已驗證網域" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "若您未驗證組織,將會被撤銷對該組織的存取權限。" }, "leaveNow": { - "message": "Leave now" + "message": "立即離開" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "驗證您的網域以登入" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "若要繼續登入,請驗證此網域。" }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "若要繼續登入,請驗證組織與網域。" }, "sessionTimeoutSettingsAction": { "message": "逾時後動作" @@ -5990,19 +5990,19 @@ "message": "設定一個解鎖方式來變更您的密碼庫逾時動作。" }, "upgrade": { - "message": "Upgrade" + "message": "升級" }, "leaveConfirmationDialogTitle": { - "message": "Are you sure you want to leave?" + "message": "確定要離開嗎?" }, "leaveConfirmationDialogContentOne": { - "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + "message": "若選擇拒絕,您的個人項目將保留在帳號中,但您將失去對共用項目與組織功能的存取權。" }, "leaveConfirmationDialogContentTwo": { - "message": "Contact your admin to regain access." + "message": "請聯絡您的管理員以重新取得存取權限。" }, "leaveConfirmationDialogConfirmButton": { - "message": "Leave $ORGANIZATION$", + "message": "離開 $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -6011,10 +6011,10 @@ } }, "howToManageMyVault": { - "message": "How do I manage my vault?" + "message": "我要如何管理我的密碼庫?" }, "transferItemsToOrganizationTitle": { - "message": "Transfer items to $ORGANIZATION$", + "message": "將項目轉移至 $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -6023,7 +6023,7 @@ } }, "transferItemsToOrganizationContent": { - "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "message": "$ORGANIZATION$ 為了安全性與合規性,要求所有項目皆由組織擁有。點擊接受即可轉移您項目的擁有權。", "placeholders": { "organization": { "content": "$1", @@ -6032,12 +6032,12 @@ } }, "acceptTransfer": { - "message": "Accept transfer" + "message": "同意轉移" }, "declineAndLeave": { - "message": "Decline and leave" + "message": "拒絕並離開" }, "whyAmISeeingThis": { - "message": "Why am I seeing this?" + "message": "為什麼我會看到此訊息?" } } From ec20e5937a2da88e62a9e5d3627901de309d48e2 Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 07:43:04 +0000 Subject: [PATCH 16/81] Autosync the updated translations (#18089) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/web/src/locales/az/messages.json | 54 +++++----- apps/web/src/locales/de/messages.json | 14 +-- apps/web/src/locales/hu/messages.json | 4 +- apps/web/src/locales/lv/messages.json | 14 +-- apps/web/src/locales/pt_BR/messages.json | 4 +- apps/web/src/locales/pt_PT/messages.json | 4 +- apps/web/src/locales/sk/messages.json | 4 +- apps/web/src/locales/zh_CN/messages.json | 34 +++---- apps/web/src/locales/zh_TW/messages.json | 124 +++++++++++------------ 9 files changed, 128 insertions(+), 128 deletions(-) diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json index 1b6593578a6..275ee56dd5c 100644 --- a/apps/web/src/locales/az/messages.json +++ b/apps/web/src/locales/az/messages.json @@ -392,7 +392,7 @@ "message": "Yeni tətbiqlər incələ" }, "reviewNewAppsDescription": { - "message": "Review new applications with vulnerable items and mark those you’d like to monitor closely as critical. Then, you’ll be able to assign security tasks to members to remove risks." + "message": "Həssas elementlərə sahib yeni tətbiqləri incələyin və diqqətlə izləmək istədiklərinizi kritik olaraq işarələyin. Sonra, riskləri xaric etmək üçün üzvlərə təhlükəsizlik tapşırıqları təyin edə biləcəksiniz." }, "clickIconToMarkAppAsCritical": { "message": "Bir tətbiqi kritik olaraq işarələmək üçün ulduz ikonuna klikləyin" @@ -1970,11 +1970,11 @@ "message": "Hesab şifrələmə açarları, hər Bitwarden istifadəçi hesabı üçün unikaldır, buna görə də şifrələnmiş bir ixracı, fərqli bir hesaba idxal edə bilməzsiniz." }, "exportNoun": { - "message": "Export", + "message": "Xaricə köçürmə", "description": "The noun form of the word Export" }, "exportVerb": { - "message": "Export", + "message": "Xaricə köçür", "description": "The verb form of the word Export" }, "exportFrom": { @@ -2303,11 +2303,11 @@ "message": "Alətlər" }, "importNoun": { - "message": "Import", + "message": "Daxilə köçürmə", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "Daxilə köçür", "description": "The verb form of the word Import" }, "importData": { @@ -3294,7 +3294,7 @@ "message": "Bulud Abunəliyini Başlat" }, "launchCloudSubscriptionSentenceCase": { - "message": "Launch cloud subscription" + "message": "Bulud abunəliyini başlat" }, "storage": { "message": "Saxlama" @@ -4212,10 +4212,10 @@ } }, "userAcceptedTransfer": { - "message": "Accepted transfer to organization ownership." + "message": "Təşkilatın sahibliyinə ötürülmə qəbul edildi." }, "userDeclinedTransfer": { - "message": "Revoked for declining transfer to organization ownership." + "message": "Təşkilatın sahibliyinə ötürülməyə rədd cavabı verildiyi üçün ləğv edildi." }, "invitedUserId": { "message": "$ID$ istifadəçisi dəvət edildi.", @@ -6758,10 +6758,10 @@ "message": "Cihaz mühafizəsi barədə daha ətraflı" }, "sessionTimeoutConfirmationOnSystemLockTitle": { - "message": "\"System lock\" will only apply to the browser and desktop app" + "message": "\"Sistem kilidi\", yalnız brauzer və masaüstü tətbiqi üçün qüvvəyə minəcək" }, "sessionTimeoutConfirmationOnSystemLockDescription": { - "message": "The mobile and web app will use \"on app restart\" as their maximum allowed timeout, since the option is not supported." + "message": "Mobil və veb tətbiqi, dəstəklənməyən bir seçim olduğu üçün icazə verilən maksimum bitmə vaxtı olaraq \"tətbiq başladılanda\"nı istifadə edəcək. " }, "vaultTimeoutPolicyInEffect": { "message": "Təşkilatınızın siyasətləri, icazə verilən maksimum seyf bitmə vaxtını $HOURS$ saat $MINUTES$ dəqiqə olaraq ayarladı.", @@ -9905,11 +9905,11 @@ "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "switchToFreePlan": { - "message": "Switching to free plan", + "message": "Ödənişsiz plana keçilir", "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "switchToFreeOrg": { - "message": "Switching to free organization", + "message": "Ödənişsiz təşkilata keçilir", "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "freeForOneYear": { @@ -9943,7 +9943,7 @@ "message": "Tapşırıq təyin et" }, "assignSecurityTasksToMembers": { - "message": "Send notifications to change passwords" + "message": "Parol dəyişdirmə bildirişlərini göndər" }, "assignToCollections": { "message": "Kolleksiyalara təyin et" @@ -12208,13 +12208,13 @@ "message": "Ödənişsiz Ailələr sınağını başlat" }, "blockClaimedDomainAccountCreation": { - "message": "Block account creation for claimed domains" + "message": "Götürülmüş domenlər üçün hesab yaradılmasını əngəllə" }, "blockClaimedDomainAccountCreationDesc": { - "message": "Prevent users from creating accounts outside of your organization using email addresses from claimed domains." + "message": "İstifadəçilərin, götürülmüş domenlərə aid e-poçt ünvanlarını istifadə edərək təşkilatınızın xaricində hesab yaratmasını önləyin." }, "blockClaimedDomainAccountCreationPrerequisite": { - "message": "A domain must be claimed before activating this policy." + "message": "Bu siyasət aktivləşdirilməzdən əvvəl bir domen götürülməlidir." }, "unlockMethodNeededToChangeTimeoutActionDesc": { "message": "Seyf vaxt bitmə əməliyyatınızı dəyişdirmək üçün bir kilid açma üsulu qurun." @@ -12433,13 +12433,13 @@ "message": "Bunu niyə görürəm?" }, "youHaveBitwardenPremium": { - "message": "You have Bitwarden Premium" + "message": "Sizdə Bitwarden Premium var" }, "viewAndManagePremiumSubscription": { - "message": "View and manage your Premium subscription" + "message": "Premium abunəliyinizi görün və idarə edin" }, "youNeedToUpdateLicenseFile": { - "message": "You'll need to update your license file" + "message": "Lisenziya faylınızı güncəlləməlisiniz" }, "youNeedToUpdateLicenseFileDate": { "message": "$DATE$.", @@ -12451,16 +12451,16 @@ } }, "uploadLicenseFile": { - "message": "Upload license file" + "message": "Lisenziya faylını yüklə" }, "uploadYourLicenseFile": { - "message": "Upload your license file" + "message": "Lisenziya faylınızı yükləyin" }, "uploadYourPremiumLicenseFile": { - "message": "Upload your Premium license file" + "message": "Premium lisenziya faylınızı yükləyin" }, "uploadLicenseFileDesc": { - "message": "Your license file name will be similar to: $FILE_NAME$", + "message": "Lisenziya faylınızın adı $FILE_NAME$ faylı ilə oxşardır", "placeholders": { "file_name": { "content": "$1", @@ -12469,15 +12469,15 @@ } }, "alreadyHaveSubscriptionQuestion": { - "message": "Already have a subscription?" + "message": "Artıq abunəliyiniz var?" }, "alreadyHaveSubscriptionSelfHostedMessage": { - "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + "message": "Bitwarden bulud hesabınızdakı abunəlik səhifəsini açın və lisenziya faylınızı endirin. Sonra bu ekrana qayıdın və aşağıda yükləyin." }, "viewAllPlans": { - "message": "View all plans" + "message": "Bütün planlara bax" }, "planDescPremium": { - "message": "Complete online security" + "message": "Tam onlayn təhlükəsizlik" } } diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index 608421ef132..ccde12d8614 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -3294,7 +3294,7 @@ "message": "Cloud-Abonnement starten" }, "launchCloudSubscriptionSentenceCase": { - "message": "Launch cloud subscription" + "message": "Cloud-Abonnement starten" }, "storage": { "message": "Speicher" @@ -12433,13 +12433,13 @@ "message": "Warum wird mir das angezeigt?" }, "youHaveBitwardenPremium": { - "message": "You have Bitwarden Premium" + "message": "Du hast Bitwarden Premium" }, "viewAndManagePremiumSubscription": { "message": "View and manage your Premium subscription" }, "youNeedToUpdateLicenseFile": { - "message": "You'll need to update your license file" + "message": "Du musst deine Lizenzdatei aktualisieren" }, "youNeedToUpdateLicenseFileDate": { "message": "$DATE$.", @@ -12457,10 +12457,10 @@ "message": "Lade deine Lizenzdatei hoch" }, "uploadYourPremiumLicenseFile": { - "message": "Upload your Premium license file" + "message": "Lade deine Premium-Lizenzdatei hoch" }, "uploadLicenseFileDesc": { - "message": "Your license file name will be similar to: $FILE_NAME$", + "message": "Dein Lizenzdateiname wird in etwa so aussehen: $FILE_NAME$", "placeholders": { "file_name": { "content": "$1", @@ -12469,13 +12469,13 @@ } }, "alreadyHaveSubscriptionQuestion": { - "message": "Already have a subscription?" + "message": "Du hast bereits ein Abonnement?" }, "alreadyHaveSubscriptionSelfHostedMessage": { "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." }, "viewAllPlans": { - "message": "View all plans" + "message": "Alle Tarife anzeigen" }, "planDescPremium": { "message": "Umfassende Online-Sicherheit" diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json index 7e296cd7092..dff04ac5b3b 100644 --- a/apps/web/src/locales/hu/messages.json +++ b/apps/web/src/locales/hu/messages.json @@ -4212,10 +4212,10 @@ } }, "userAcceptedTransfer": { - "message": "Accepted transfer to organization ownership." + "message": "Az átruházás a szervezet tulajdonába elfogadásra került." }, "userDeclinedTransfer": { - "message": "Revoked for declining transfer to organization ownership." + "message": "A szervezet tulajdonába átruházás visszavonásra került elutasítás miatt." }, "invitedUserId": { "message": "$ID$ azonosítójú felhasználó meghívásra került.", diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json index 6cb8e0a4a6b..eb39c3b8eee 100644 --- a/apps/web/src/locales/lv/messages.json +++ b/apps/web/src/locales/lv/messages.json @@ -4212,10 +4212,10 @@ } }, "userAcceptedTransfer": { - "message": "Accepted transfer to organization ownership." + "message": "Pieņemta īpašumtiesību nodošana apvienībai." }, "userDeclinedTransfer": { - "message": "Revoked for declining transfer to organization ownership." + "message": "Atsaukts īpašumtiesību nodošanas apvienībai noraidīšanas dēļ." }, "invitedUserId": { "message": "Uzaicināts lietotājs $ID$.", @@ -12460,7 +12460,7 @@ "message": "Jāaugšupielādē sava Premium licences datne" }, "uploadLicenseFileDesc": { - "message": "Your license file name will be similar to: $FILE_NAME$", + "message": "Licences datnes nosaukums būs līdzīgs šim: $FILE_NAME$", "placeholders": { "file_name": { "content": "$1", @@ -12469,15 +12469,15 @@ } }, "alreadyHaveSubscriptionQuestion": { - "message": "Already have a subscription?" + "message": "Jau ir abonements?" }, "alreadyHaveSubscriptionSelfHostedMessage": { - "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + "message": "Jāatver abonementu lapa Bitwarden mākoņa kontā un jālejupielādē licences datne. Tad jāatgriežas šajā skatā un zemāk jāaugšupielādē." }, "viewAllPlans": { - "message": "View all plans" + "message": "Apskatīt visus plānus" }, "planDescPremium": { - "message": "Complete online security" + "message": "Pilnīga drošība tiešsaistē" } } diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json index 4ca2020c7b1..fbfaf08d030 100644 --- a/apps/web/src/locales/pt_BR/messages.json +++ b/apps/web/src/locales/pt_BR/messages.json @@ -4212,10 +4212,10 @@ } }, "userAcceptedTransfer": { - "message": "Accepted transfer to organization ownership." + "message": "Aceitou a transferência da propriedade da organização." }, "userDeclinedTransfer": { - "message": "Revoked for declining transfer to organization ownership." + "message": "Não aceitou a transferência da propriedade da organização." }, "invitedUserId": { "message": "Convidou o usuário $ID$.", diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json index ae80280caed..929be5c7456 100644 --- a/apps/web/src/locales/pt_PT/messages.json +++ b/apps/web/src/locales/pt_PT/messages.json @@ -4212,10 +4212,10 @@ } }, "userAcceptedTransfer": { - "message": "Accepted transfer to organization ownership." + "message": "Transferência para propriedade da organização aceite." }, "userDeclinedTransfer": { - "message": "Revoked for declining transfer to organization ownership." + "message": "Revogado por recusa de transferência para propriedade da organização." }, "invitedUserId": { "message": "Utilizador $ID$ convidado.", diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json index 6e36b52a098..ea2d12bdb2c 100644 --- a/apps/web/src/locales/sk/messages.json +++ b/apps/web/src/locales/sk/messages.json @@ -7583,10 +7583,10 @@ "message": "Použiť možnosti subadresovania svojho poskytovateľa e-mailu." }, "catchallEmail": { - "message": "Catch-all e-mail" + "message": "Doménový kôš" }, "catchallEmailDesc": { - "message": "Použiť doručenú poštu typu catch-all nastavenú na doméne." + "message": "Použiť nastavený doménový kôš." }, "useThisEmail": { "message": "Použiť tento e-mail" diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index cc6e71b1f08..d1ee6e0f659 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -1970,11 +1970,11 @@ "message": "每个 Bitwarden 用户账户的账户加密密钥都是唯一的,因此您无法将加密的导出导入到另一个账户。" }, "exportNoun": { - "message": "Export", + "message": "导出", "description": "The noun form of the word Export" }, "exportVerb": { - "message": "Export", + "message": "导出", "description": "The verb form of the word Export" }, "exportFrom": { @@ -2303,11 +2303,11 @@ "message": "工具" }, "importNoun": { - "message": "Import", + "message": "导入", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "导入", "description": "The verb form of the word Import" }, "importData": { @@ -3294,7 +3294,7 @@ "message": "启动云订阅" }, "launchCloudSubscriptionSentenceCase": { - "message": "Launch cloud subscription" + "message": "启动云订阅" }, "storage": { "message": "存储" @@ -12433,16 +12433,16 @@ "message": "为什么我会看到这个?" }, "youHaveBitwardenPremium": { - "message": "You have Bitwarden Premium" + "message": "您有 Bitwarden 高级版" }, "viewAndManagePremiumSubscription": { - "message": "View and manage your Premium subscription" + "message": "查看和管理您的高级版订阅" }, "youNeedToUpdateLicenseFile": { - "message": "You'll need to update your license file" + "message": "您需要更新您的许可文件" }, "youNeedToUpdateLicenseFileDate": { - "message": "$DATE$.", + "message": "$DATE$。", "placeholders": { "date": { "content": "$1", @@ -12451,16 +12451,16 @@ } }, "uploadLicenseFile": { - "message": "Upload license file" + "message": "上传许可证文件" }, "uploadYourLicenseFile": { - "message": "Upload your license file" + "message": "上传您的许可证文件" }, "uploadYourPremiumLicenseFile": { - "message": "Upload your Premium license file" + "message": "上传您的高级版许可证文件" }, "uploadLicenseFileDesc": { - "message": "Your license file name will be similar to: $FILE_NAME$", + "message": "您的许可证文件名将类似于:$FILE_NAME$", "placeholders": { "file_name": { "content": "$1", @@ -12469,15 +12469,15 @@ } }, "alreadyHaveSubscriptionQuestion": { - "message": "Already have a subscription?" + "message": "已经有一个订阅?" }, "alreadyHaveSubscriptionSelfHostedMessage": { - "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + "message": "打开您的 Bitwarden 云账户上的订阅页面并下载您的许可证文件,然后返回此屏幕并上传。" }, "viewAllPlans": { - "message": "View all plans" + "message": "查看所有套餐" }, "planDescPremium": { - "message": "Complete online security" + "message": "全面的在线安全防护" } } diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json index b1cda1343d4..4fbf08c28a7 100644 --- a/apps/web/src/locales/zh_TW/messages.json +++ b/apps/web/src/locales/zh_TW/messages.json @@ -1970,11 +1970,11 @@ "message": "每個 Bitwarden 使用者帳戶的帳戶加密金鑰都不相同,因此無法將已加密匯出的檔案匯入至不同帳戶中。" }, "exportNoun": { - "message": "Export", + "message": "匯出", "description": "The noun form of the word Export" }, "exportVerb": { - "message": "Export", + "message": "匯出", "description": "The verb form of the word Export" }, "exportFrom": { @@ -2303,11 +2303,11 @@ "message": "工具" }, "importNoun": { - "message": "Import", + "message": "匯入", "description": "The noun form of the word Import" }, "importVerb": { - "message": "Import", + "message": "匯入", "description": "The verb form of the word Import" }, "importData": { @@ -3294,7 +3294,7 @@ "message": "啟動雲端訂閱" }, "launchCloudSubscriptionSentenceCase": { - "message": "Launch cloud subscription" + "message": "啟動雲端訂閱" }, "storage": { "message": "儲存空間" @@ -4212,10 +4212,10 @@ } }, "userAcceptedTransfer": { - "message": "Accepted transfer to organization ownership." + "message": "已接受轉移至組織擁有權。" }, "userDeclinedTransfer": { - "message": "Revoked for declining transfer to organization ownership." + "message": "因拒絕轉移至組織擁有權而遭撤銷。" }, "invitedUserId": { "message": "已邀請使用者 $ID$。", @@ -5195,7 +5195,7 @@ "message": "需要先修正密碼庫中舊的檔案附件,然後才能輪換帳戶的加密金鑰。" }, "itemsTransferred": { - "message": "Items transferred" + "message": "項目已轉移" }, "yourAccountsFingerprint": { "message": "您帳戶的指紋短語", @@ -6825,7 +6825,7 @@ "message": "密碼庫逾時時間不在允許的範圍內。" }, "disableExport": { - "message": "Remove export" + "message": "移除匯出" }, "disablePersonalVaultExportDescription": { "message": "不允許成員從其個人密碼庫匯出資料。" @@ -9494,7 +9494,7 @@ "message": "需要登入 SSO" }, "emailRequiredForSsoLogin": { - "message": "Email is required for SSO" + "message": "使用 SSO 需要電子郵件" }, "selectedRegionFlag": { "message": "選定的區域標記" @@ -11607,7 +11607,7 @@ "message": "取消封存" }, "unArchiveAndSave": { - "message": "Unarchive and save" + "message": "取消封存並儲存" }, "itemsInArchive": { "message": "封存中的項目" @@ -12251,43 +12251,43 @@ } }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "您的組織已不再使用主密碼登入 Bitwarden。若要繼續,請驗證組織與網域。" }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "繼續登入" }, "doNotContinue": { - "message": "Do not continue" + "message": "不要繼續" }, "domain": { - "message": "Domain" + "message": "網域" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "此網域將儲存您帳號的加密金鑰,請確認您信任它。若不確定,請洽詢您的管理員。" }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "驗證您的組織以登入" }, "organizationVerified": { - "message": "Organization verified" + "message": "組織已驗證" }, "domainVerified": { - "message": "Domain verified" + "message": "已驗證網域" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "若您未驗證組織,將會被撤銷對該組織的存取權限。" }, "leaveNow": { - "message": "Leave now" + "message": "立即離開" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "驗證您的網域以登入" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "若要繼續登入,請驗證此網域。" }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "若要繼續登入,請驗證組織與網域。" }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "未選取任何關鍵應用程式" @@ -12299,52 +12299,52 @@ "message": "使用者驗證失敗。" }, "recoveryDeleteCiphersTitle": { - "message": "Delete unrecoverable vault items" + "message": "刪除無法復原的密碼庫項目" }, "recoveryDeleteCiphersDesc": { - "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + "message": "部分密碼庫項目無法復原。是否要從您的密碼庫中刪除這些無法復原的項目?" }, "recoveryDeleteFoldersTitle": { - "message": "Delete unrecoverable folders" + "message": "刪除無法復原的資料夾" }, "recoveryDeleteFoldersDesc": { - "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + "message": "部分資料夾無法復原。是否要從您的密碼庫中刪除這些無法復原的資料夾?" }, "recoveryReplacePrivateKeyTitle": { - "message": "Replace encryption key" + "message": "更換加密金鑰" }, "recoveryReplacePrivateKeyDesc": { - "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + "message": "您的公開金鑰加密金鑰組無法復原。是否要以新的金鑰組取代目前的加密金鑰?這將需要您重新設定現有的緊急存取與組織成員資格。" }, "recoveryStepSyncTitle": { - "message": "Synchronizing data" + "message": "正在同步資料" }, "recoveryStepPrivateKeyTitle": { - "message": "Verifying encryption key integrity" + "message": "正在驗證加密金鑰完整性" }, "recoveryStepUserInfoTitle": { - "message": "Verifying user information" + "message": "正在驗證使用者資訊" }, "recoveryStepCipherTitle": { - "message": "Verifying vault item integrity" + "message": "正在驗證密碼庫項目完整性" }, "recoveryStepFoldersTitle": { - "message": "Verifying folder integrity" + "message": "正在驗證資料夾完整性" }, "dataRecoveryTitle": { - "message": "Data Recovery and Diagnostics" + "message": "資料復原與診斷" }, "dataRecoveryDescription": { - "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + "message": "使用資料復原工具來診斷並修復您帳號的問題。完成診斷後,您可以選擇儲存診斷記錄以供支援使用,並修復任何偵測到的問題。" }, "runDiagnostics": { - "message": "Run Diagnostics" + "message": "執行診斷" }, "repairIssues": { - "message": "Repair Issues" + "message": "修復問題" }, "saveDiagnosticLogs": { - "message": "Save Diagnostic Logs" + "message": "儲存診斷記錄" }, "sessionTimeoutSettingsManagedByOrganization": { "message": "此設定由您的組織管理。" @@ -12385,16 +12385,16 @@ "message": "設定一個解鎖方式來變更您的密碼庫逾時動作。" }, "leaveConfirmationDialogTitle": { - "message": "Are you sure you want to leave?" + "message": "確定要離開嗎?" }, "leaveConfirmationDialogContentOne": { - "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + "message": "若選擇拒絕,您的個人項目將保留在帳號中,但您將失去對共用項目與組織功能的存取權。" }, "leaveConfirmationDialogContentTwo": { - "message": "Contact your admin to regain access." + "message": "請聯絡您的管理員以重新取得存取權限。" }, "leaveConfirmationDialogConfirmButton": { - "message": "Leave $ORGANIZATION$", + "message": "離開 $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -12403,10 +12403,10 @@ } }, "howToManageMyVault": { - "message": "How do I manage my vault?" + "message": "我要如何管理我的密碼庫?" }, "transferItemsToOrganizationTitle": { - "message": "Transfer items to $ORGANIZATION$", + "message": "將項目轉移至 $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -12415,7 +12415,7 @@ } }, "transferItemsToOrganizationContent": { - "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "message": "$ORGANIZATION$ 為了安全性與合規性,要求所有項目皆由組織擁有。點擊接受即可轉移您項目的擁有權。", "placeholders": { "organization": { "content": "$1", @@ -12424,25 +12424,25 @@ } }, "acceptTransfer": { - "message": "Accept transfer" + "message": "同意轉移" }, "declineAndLeave": { - "message": "Decline and leave" + "message": "拒絕並離開" }, "whyAmISeeingThis": { - "message": "Why am I seeing this?" + "message": "為什麼我會看到此訊息?" }, "youHaveBitwardenPremium": { - "message": "You have Bitwarden Premium" + "message": "您已擁有 Bitwarden 進階版" }, "viewAndManagePremiumSubscription": { - "message": "View and manage your Premium subscription" + "message": "檢視並管理您的進階版訂閱" }, "youNeedToUpdateLicenseFile": { - "message": "You'll need to update your license file" + "message": "您需要更新您的授權檔案" }, "youNeedToUpdateLicenseFileDate": { - "message": "$DATE$.", + "message": "$DATE$。", "placeholders": { "date": { "content": "$1", @@ -12451,16 +12451,16 @@ } }, "uploadLicenseFile": { - "message": "Upload license file" + "message": "上傳授權檔案" }, "uploadYourLicenseFile": { - "message": "Upload your license file" + "message": "上傳您的授權檔案" }, "uploadYourPremiumLicenseFile": { - "message": "Upload your Premium license file" + "message": "上傳您的進階版授權檔案" }, "uploadLicenseFileDesc": { - "message": "Your license file name will be similar to: $FILE_NAME$", + "message": "您的授權檔案名稱將類似於:$FILE_NAME$", "placeholders": { "file_name": { "content": "$1", @@ -12469,15 +12469,15 @@ } }, "alreadyHaveSubscriptionQuestion": { - "message": "Already have a subscription?" + "message": "已經有訂閱了嗎?" }, "alreadyHaveSubscriptionSelfHostedMessage": { - "message": "Open the subscription page on your Bitwarden cloud account and download your license file. Then return to this screen and upload it below." + "message": "請在您的 Bitwarden 雲端帳號中開啟訂閱頁面並下載授權檔案,接著返回此畫面並於下方上傳。" }, "viewAllPlans": { - "message": "View all plans" + "message": "查看所有方案" }, "planDescPremium": { - "message": "Complete online security" + "message": "完整的線上安全防護" } } From dfb597c236876e8c7438d4a6dae37d7dde9b7868 Mon Sep 17 00:00:00 2001 From: Mike Amirault Date: Mon, 22 Dec 2025 11:04:14 -0500 Subject: [PATCH 17/81] [PM-24015] Handle Send form empty password field properly (#17911) --- .../options/send-options.component.spec.ts | 67 +++++++++++++++++++ .../options/send-options.component.ts | 32 ++++++--- .../components/send-form.component.ts | 5 -- 3 files changed, 88 insertions(+), 16 deletions(-) create mode 100644 libs/tools/send/send-ui/src/send-form/components/options/send-options.component.spec.ts diff --git a/libs/tools/send/send-ui/src/send-form/components/options/send-options.component.spec.ts b/libs/tools/send/send-ui/src/send-form/components/options/send-options.component.spec.ts new file mode 100644 index 00000000000..6724bb324c3 --- /dev/null +++ b/libs/tools/send/send-ui/src/send-form/components/options/send-options.component.spec.ts @@ -0,0 +1,67 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { mock } from "jest-mock-extended"; +import { of } from "rxjs"; + +import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; +import { Account, AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; +import { SendType } from "@bitwarden/common/tools/send/enums/send-type"; +import { SendView } from "@bitwarden/common/tools/send/models/view/send.view"; +import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service.abstraction"; +import { DialogService, ToastService } from "@bitwarden/components"; +import { CredentialGeneratorService } from "@bitwarden/generator-core"; + +import { SendFormContainer } from "../../send-form-container"; + +import { SendOptionsComponent } from "./send-options.component"; + +describe("SendOptionsComponent", () => { + let component: SendOptionsComponent; + let fixture: ComponentFixture; + const mockSendFormContainer = mock(); + const mockAccountService = mock(); + + beforeAll(() => { + mockAccountService.activeAccount$ = of({ id: "myTestAccount" } as Account); + }); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [SendOptionsComponent], + declarations: [], + providers: [ + { provide: SendFormContainer, useValue: mockSendFormContainer }, + { provide: DialogService, useValue: mock() }, + { provide: SendApiService, useValue: mock() }, + { provide: PolicyService, useValue: mock() }, + { provide: I18nService, useValue: mock() }, + { provide: ToastService, useValue: mock() }, + { provide: CredentialGeneratorService, useValue: mock() }, + { provide: AccountService, useValue: mockAccountService }, + { provide: PlatformUtilsService, useValue: mock() }, + ], + }).compileComponents(); + fixture = TestBed.createComponent(SendOptionsComponent); + component = fixture.componentInstance; + component.config = { areSendsAllowed: true, mode: "add", sendType: SendType.Text }; + fixture.detectChanges(); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); + + it("should emit a null password when password textbox is empty", async () => { + const newSend = {} as SendView; + mockSendFormContainer.patchSend.mockImplementation((updateFn) => updateFn(newSend)); + component.sendOptionsForm.patchValue({ password: "testing" }); + expect(newSend.password).toBe("testing"); + component.sendOptionsForm.patchValue({ password: "" }); + expect(newSend.password).toBe(null); + }); +}); diff --git a/libs/tools/send/send-ui/src/send-form/components/options/send-options.component.ts b/libs/tools/send/send-ui/src/send-form/components/options/send-options.component.ts index 2ddb10dc80b..ae8706a375e 100644 --- a/libs/tools/send/send-ui/src/send-form/components/options/send-options.component.ts +++ b/libs/tools/send/send-ui/src/send-form/components/options/send-options.component.ts @@ -4,7 +4,7 @@ import { CommonModule } from "@angular/common"; import { Component, Input, OnInit } from "@angular/core"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { FormBuilder, ReactiveFormsModule } from "@angular/forms"; -import { BehaviorSubject, firstValueFrom, map, switchMap } from "rxjs"; +import { BehaviorSubject, firstValueFrom, map, switchMap, tap } from "rxjs"; import { JslibModule } from "@bitwarden/angular/jslib.module"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; @@ -12,6 +12,7 @@ import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { Utils } from "@bitwarden/common/platform/misc/utils"; import { pin } from "@bitwarden/common/tools/rx"; import { SendView } from "@bitwarden/common/tools/send/models/view/send.view"; import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service.abstraction"; @@ -112,18 +113,27 @@ export class SendOptionsComponent implements OnInit { this.disableHideEmail = disableHideEmail; }); - this.sendOptionsForm.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => { - this.sendFormContainer.patchSend((send) => { - Object.assign(send, { - maxAccessCount: value.maxAccessCount, - accessCount: value.accessCount, - password: value.password, - hideEmail: value.hideEmail, - notes: value.notes, + this.sendOptionsForm.valueChanges + .pipe( + tap((value) => { + if (Utils.isNullOrWhitespace(value.password)) { + value.password = null; + } + }), + takeUntilDestroyed(), + ) + .subscribe((value) => { + this.sendFormContainer.patchSend((send) => { + Object.assign(send, { + maxAccessCount: value.maxAccessCount, + accessCount: value.accessCount, + password: value.password, + hideEmail: value.hideEmail, + notes: value.notes, + }); + return send; }); - return send; }); - }); } generatePassword = async () => { diff --git a/libs/tools/send/send-ui/src/send-form/components/send-form.component.ts b/libs/tools/send/send-ui/src/send-form/components/send-form.component.ts index fcd3b0cb7ea..0471ed90eef 100644 --- a/libs/tools/send/send-ui/src/send-form/components/send-form.component.ts +++ b/libs/tools/send/send-ui/src/send-form/components/send-form.component.ts @@ -18,7 +18,6 @@ import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { FormBuilder, ReactiveFormsModule } from "@angular/forms"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; -import { Utils } from "@bitwarden/common/platform/misc/utils"; import { SendType } from "@bitwarden/common/tools/send/enums/send-type"; import { SendView } from "@bitwarden/common/tools/send/models/view/send.view"; import { @@ -227,10 +226,6 @@ export class SendFormComponent implements AfterViewInit, OnInit, OnChanges, Send return; } - if (Utils.isNullOrWhitespace(this.updatedSendView.password)) { - this.updatedSendView.password = null; - } - this.toastService.showToast({ variant: "success", title: null, From 5d79d4401534ab460b1f0c583cfe43d91f2e0951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20=C3=85berg?= Date: Mon, 22 Dec 2025 18:13:39 +0100 Subject: [PATCH 18/81] chore: move @nx packages to devDependencies (#18062) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These packages are build/tooling dependencies and should not be in production dependencies. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.5 --- package-lock.json | 999 ++++++++++++++++++++++++++++++++++++++++++++-- package.json | 10 +- 2 files changed, 962 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index c24e8cc45a3..deb3a9f261c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,11 +32,6 @@ "@microsoft/signalr": "8.0.7", "@microsoft/signalr-protocol-msgpack": "8.0.7", "@ng-select/ng-select": "20.7.0", - "@nx/devkit": "21.6.10", - "@nx/eslint": "21.6.10", - "@nx/jest": "21.6.10", - "@nx/js": "21.6.10", - "@nx/webpack": "21.6.10", "big-integer": "1.6.52", "braintree-web-drop-in": "1.46.0", "buffer": "6.0.3", @@ -88,6 +83,11 @@ "@eslint/compat": "2.0.0", "@lit-labs/signals": "0.1.3", "@ngtools/webpack": "20.3.12", + "@nx/devkit": "21.6.10", + "@nx/eslint": "21.6.10", + "@nx/jest": "21.6.10", + "@nx/js": "21.6.10", + "@nx/webpack": "21.6.10", "@storybook/addon-a11y": "9.1.16", "@storybook/addon-designs": "9.0.0-next.3", "@storybook/addon-docs": "9.1.16", @@ -3006,6 +3006,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -3015,6 +3016,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -3045,6 +3047,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.28.5", @@ -3061,12 +3064,14 @@ "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, "license": "MIT" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3076,6 +3081,7 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.28.3", @@ -3092,6 +3098,7 @@ "version": "7.27.3", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.27.3" @@ -3104,6 +3111,7 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.27.2", @@ -3120,6 +3128,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3129,6 +3138,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", @@ -3150,6 +3160,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3159,6 +3170,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", @@ -3176,6 +3188,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3185,6 +3198,7 @@ "version": "0.6.5", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", @@ -3210,6 +3224,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.28.5", @@ -3236,6 +3251,7 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", @@ -3253,6 +3269,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.27.1" @@ -3265,6 +3282,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -3274,6 +3292,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", @@ -3291,6 +3310,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-member-expression-to-functions": "^7.27.1", @@ -3308,6 +3328,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.27.1", @@ -3352,6 +3373,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -3361,6 +3383,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.27.1", @@ -3375,6 +3398,7 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", @@ -3403,6 +3427,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -3419,6 +3444,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3434,6 +3460,7 @@ "version": "7.27.1", "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.27.1.tgz", "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3449,6 +3476,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -3466,6 +3494,7 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -3482,6 +3511,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.27.1.tgz", "integrity": "sha512-DTxe4LBPrtFdsWzgpmbBKevg3e9PBy+dXRt19kSbucbZvL2uqtdqwwpluL1jfxYE0wIDTFp1nTy/q6gNLsxXrg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", @@ -3499,6 +3529,7 @@ "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, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -3511,6 +3542,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -3523,6 +3555,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -3535,6 +3568,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" @@ -3547,6 +3581,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -3562,6 +3597,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3577,6 +3613,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3592,6 +3629,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3607,6 +3645,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -3619,6 +3658,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -3631,6 +3671,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3646,6 +3687,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -3658,6 +3700,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -3670,6 +3713,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -3682,6 +3726,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -3694,6 +3739,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -3706,6 +3752,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -3718,6 +3765,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -3733,6 +3781,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -3748,6 +3797,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3763,6 +3813,7 @@ "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, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -3779,6 +3830,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3794,6 +3846,7 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -3811,6 +3864,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", @@ -3828,6 +3882,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3843,6 +3898,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3858,6 +3914,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", @@ -3874,6 +3931,7 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.3", @@ -3890,6 +3948,7 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", @@ -3910,6 +3969,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -3926,6 +3986,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -3942,6 +4003,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -3958,6 +4020,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3973,6 +4036,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -3989,6 +4053,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4004,6 +4069,7 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -4020,6 +4086,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4035,6 +4102,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4050,6 +4118,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -4066,6 +4135,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", @@ -4083,6 +4153,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4098,6 +4169,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4113,6 +4185,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4128,6 +4201,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4143,6 +4217,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.27.1", @@ -4159,6 +4234,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.27.1", @@ -4175,6 +4251,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.28.3", @@ -4193,6 +4270,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.27.1", @@ -4209,6 +4287,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -4225,6 +4304,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4240,6 +4320,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4255,6 +4336,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4270,6 +4352,7 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", @@ -4289,6 +4372,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -4305,6 +4389,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4320,6 +4405,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -4336,6 +4422,7 @@ "version": "7.27.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4351,6 +4438,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", @@ -4367,6 +4455,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", @@ -4384,6 +4473,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4399,6 +4489,7 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4414,6 +4505,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -4430,6 +4522,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4445,6 +4538,7 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz", "integrity": "sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", @@ -4465,6 +4559,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4474,6 +4569,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4489,6 +4585,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -4505,6 +4602,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4520,6 +4618,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4535,6 +4634,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4550,6 +4650,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", @@ -4569,6 +4670,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -4584,6 +4686,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -4600,6 +4703,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -4616,6 +4720,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -4632,6 +4737,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz", "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.28.5", @@ -4716,6 +4822,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4725,6 +4832,7 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -4739,6 +4847,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -4828,6 +4937,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, "license": "MIT" }, "node_modules/@bitwarden/admin-console": { @@ -5096,6 +5206,7 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.9.0.tgz", "integrity": "sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==", + "dev": true, "license": "(Apache-2.0 AND BSD-3-Clause)" }, "node_modules/@compodoc/compodoc": { @@ -6358,6 +6469,7 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "dev": true, "license": "MIT", "dependencies": { "@emnapi/wasi-threads": "1.1.0", @@ -6368,6 +6480,7 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.4.0" @@ -6377,6 +6490,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.4.0" @@ -6938,6 +7052,7 @@ "version": "4.7.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" @@ -6956,6 +7071,7 @@ "version": "4.12.1", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -6999,6 +7115,7 @@ "version": "0.20.1", "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.6", @@ -7013,6 +7130,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -7023,6 +7141,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -7035,6 +7154,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "dev": true, "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7044,6 +7164,7 @@ "version": "0.13.0", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" @@ -7056,6 +7177,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", @@ -7079,6 +7201,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -7095,6 +7218,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -7105,6 +7229,7 @@ "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -7117,6 +7242,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -7126,6 +7252,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -7138,12 +7265,14 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -7156,6 +7285,7 @@ "version": "9.26.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.26.0.tgz", "integrity": "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==", + "dev": true, "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7165,6 +7295,7 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7174,6 +7305,7 @@ "version": "0.2.8", "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/core": "^0.13.0", @@ -7329,6 +7461,7 @@ "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=18.18.0" @@ -7338,6 +7471,7 @@ "version": "0.16.6", "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", @@ -7351,6 +7485,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=18.18" @@ -7364,6 +7499,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=12.22" @@ -7377,6 +7513,7 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=18.18" @@ -7787,6 +7924,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^5.1.2", @@ -7804,6 +7942,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -7816,6 +7955,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -7828,12 +7968,14 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -7851,6 +7993,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -7866,6 +8009,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", @@ -7896,6 +8040,7 @@ "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, "license": "ISC", "dependencies": { "camelcase": "^5.3.1", @@ -7912,6 +8057,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -7925,6 +8071,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -7937,6 +8084,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -7952,6 +8100,7 @@ "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, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -7964,6 +8113,7 @@ "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, "license": "MIT", "engines": { "node": ">=8" @@ -8087,6 +8237,7 @@ "version": "30.0.1", "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, "license": "MIT", "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -8157,6 +8308,7 @@ "version": "30.1.0", "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, "license": "MIT", "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -8182,6 +8334,7 @@ "version": "30.0.1", "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -8195,6 +8348,7 @@ "version": "30.0.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, "license": "MIT", "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -8294,6 +8448,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -8306,6 +8461,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.2.0", @@ -8321,6 +8477,7 @@ "version": "30.0.5", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.34.0" @@ -8333,6 +8490,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/pattern": "30.0.1", @@ -8351,6 +8509,7 @@ "version": "0.34.41", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, "license": "MIT" }, "node_modules/@jest/source-map": { @@ -8438,6 +8597,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -8465,6 +8625,7 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -8484,6 +8645,7 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -8510,6 +8672,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.0" @@ -8526,6 +8689,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.2.0.tgz", "integrity": "sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/base64": "^1.1.1", @@ -8548,6 +8712,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.6.0.tgz", "integrity": "sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.0" @@ -8592,6 +8757,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true, "license": "MIT" }, "node_modules/@listr2/prompt-adapter-inquirer": { @@ -8878,6 +9044,7 @@ "version": "1.17.3", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.3.tgz", "integrity": "sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==", + "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.6", @@ -8901,6 +9068,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -8917,6 +9085,7 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "dev": true, "license": "MIT", "dependencies": { "eventsource-parser": "^3.0.1" @@ -8929,6 +9098,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, "license": "MIT" }, "node_modules/@msgpack/msgpack": { @@ -10082,6 +10252,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "dev": true, "license": "MIT", "dependencies": { "@emnapi/core": "^1.1.0", @@ -10397,6 +10568,7 @@ "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, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -10410,6 +10582,7 @@ "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, "license": "MIT", "engines": { "node": ">= 8" @@ -10419,6 +10592,7 @@ "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, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -10875,6 +11049,7 @@ "version": "21.6.10", "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-21.6.10.tgz", "integrity": "sha512-h2ZpwhKk9p1kWgokMXP6F4PVakUA3jPbKmjtY+wCsW2VZg72tIVVzs33DGUxTvN6WG6Z4xbLKc0LJkgaOdDTOw==", + "dev": true, "license": "MIT", "dependencies": { "ejs": "^3.1.7", @@ -10893,6 +11068,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -10902,6 +11078,7 @@ "version": "21.6.10", "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-21.6.10.tgz", "integrity": "sha512-cZPXFZsgzGrOBetSdcIR9Kb28H9+lHsaubAGeCAjS8GSvRoQBKLdgtfuB5mpnmOLRqGsiIhZ701DfekLitRnmQ==", + "dev": true, "license": "MIT", "dependencies": { "@nx/devkit": "21.6.10", @@ -10924,6 +11101,7 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -10937,6 +11115,7 @@ "version": "21.6.10", "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-21.6.10.tgz", "integrity": "sha512-JAYMD/RwKP/mgr7R0uC6R7/DGsluajiQsHipbp6JhbwmqxOK+tTdWBHrYzKWXyRZaCSqqmrN55ocVfuynZDP4Q==", + "dev": true, "license": "MIT", "dependencies": { "@jest/reporters": "^30.0.2", @@ -10960,6 +11139,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.2.0", @@ -10977,6 +11157,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "30.2.0", @@ -10992,6 +11173,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", + "dev": true, "license": "MIT", "dependencies": { "expect": "30.2.0", @@ -11005,6 +11187,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0" @@ -11017,6 +11200,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.2.0", @@ -11034,6 +11218,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "30.2.0", @@ -11049,6 +11234,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -11091,6 +11277,7 @@ "version": "30.0.5", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.34.0" @@ -11103,6 +11290,7 @@ "version": "30.0.1", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -11117,6 +11305,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "30.2.0", @@ -11132,6 +11321,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "30.2.0", @@ -11147,6 +11337,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", @@ -11173,6 +11364,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/pattern": "30.0.1", @@ -11191,12 +11383,14 @@ "version": "0.34.41", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, "license": "MIT" }, "node_modules/@nx/jest/node_modules/@sinonjs/fake-timers": { "version": "13.0.5", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1" @@ -11206,6 +11400,7 @@ "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, "license": "MIT", "engines": { "node": ">=10" @@ -11218,6 +11413,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "30.2.0", @@ -11239,6 +11435,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, "license": "BSD-3-Clause", "workspaces": [ "test/babel-8" @@ -11258,6 +11455,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", + "dev": true, "license": "MIT", "dependencies": { "@types/babel__core": "^7.20.5" @@ -11270,6 +11468,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "30.2.0", @@ -11286,6 +11485,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -11298,6 +11498,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, "funding": [ { "type": "github", @@ -11313,18 +11514,21 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz", "integrity": "sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==", + "dev": true, "license": "MIT" }, "node_modules/@nx/jest/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, "license": "MIT" }, "node_modules/@nx/jest/node_modules/expect": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "30.2.0", @@ -11342,6 +11546,7 @@ "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -11362,6 +11567,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -11377,6 +11583,7 @@ "version": "5.0.6", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@jridgewell/trace-mapping": "^0.3.23", @@ -11391,6 +11598,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -11406,6 +11614,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "30.2.0", @@ -11437,6 +11646,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", @@ -11488,6 +11698,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.1.0" @@ -11500,6 +11711,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", @@ -11516,6 +11728,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "30.2.0", @@ -11534,6 +11747,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.2.0", @@ -11558,6 +11772,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", @@ -11571,6 +11786,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", @@ -11586,6 +11802,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -11606,6 +11823,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.2.0", @@ -11620,6 +11838,7 @@ "version": "30.0.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, "license": "MIT", "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -11629,6 +11848,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.2", @@ -11648,6 +11868,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "30.2.0", @@ -11681,6 +11902,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "30.2.0", @@ -11714,6 +11936,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", @@ -11746,6 +11969,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.2.0", @@ -11763,6 +11987,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", @@ -11780,6 +12005,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "30.2.0", @@ -11799,6 +12025,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -11815,12 +12042,14 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, "license": "ISC" }, "node_modules/@nx/jest/node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", @@ -11837,6 +12066,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "30.0.5", @@ -11851,6 +12081,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, "funding": [ { "type": "individual", @@ -11867,12 +12098,14 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, "node_modules/@nx/jest/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -11882,6 +12115,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -11892,6 +12126,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -11907,6 +12142,7 @@ "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, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -11920,6 +12156,7 @@ "version": "21.6.10", "resolved": "https://registry.npmjs.org/@nx/js/-/js-21.6.10.tgz", "integrity": "sha512-8d+Q5v/9/he8mq6aRfhHWORZb/WkJ7OTegF4QX2g+yVkocEKIyuUx/BC9rGBRvlZpB2xcJlU9kNcfrhuoKbehQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", @@ -11965,6 +12202,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" @@ -11977,6 +12215,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -11986,18 +12225,21 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true, "license": "MIT" }, "node_modules/@nx/js/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, "license": "ISC" }, "node_modules/@nx/js/node_modules/npm-package-arg": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, "license": "ISC", "dependencies": { "hosted-git-info": "^7.0.0", @@ -12013,6 +12255,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, "license": "MIT", "dependencies": { "bl": "^4.0.3", @@ -12035,6 +12278,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -12044,6 +12288,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -12053,6 +12298,7 @@ "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -12063,6 +12309,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true, "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -12075,6 +12322,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12088,6 +12336,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12101,6 +12350,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12114,6 +12364,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12127,6 +12378,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12140,6 +12392,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12153,6 +12406,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12166,6 +12420,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12179,6 +12434,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12192,6 +12448,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12202,6 +12459,7 @@ "version": "21.6.10", "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-21.6.10.tgz", "integrity": "sha512-T+eB9c3lflqWuegrsW47zzkZlSQ6YNEucEknUpWyDrKLCihucKe9siuj5s2gPkgdY6DXX4sjZcA5xgnxHNBWag==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", @@ -12246,6 +12504,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -12256,6 +12515,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -12280,6 +12540,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -12292,6 +12553,7 @@ "version": "10.2.4", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, "license": "MIT", "dependencies": { "fast-glob": "^3.2.7", @@ -12316,6 +12578,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", @@ -12332,6 +12595,7 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", @@ -12367,6 +12631,7 @@ "version": "7.2.13", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", @@ -12401,6 +12666,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -12417,6 +12683,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" @@ -12426,6 +12693,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", @@ -12444,6 +12712,7 @@ "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, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -12458,12 +12727,14 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, "license": "MIT" }, "node_modules/@nx/webpack/node_modules/less-loader": { "version": "11.1.4", "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.4.tgz", "integrity": "sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 14.15.0" @@ -12481,6 +12752,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, "license": "MIT", "dependencies": { "big.js": "^5.2.2", @@ -12495,6 +12767,7 @@ "version": "2.4.7", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", + "dev": true, "license": "MIT", "dependencies": { "schema-utils": "^4.0.0" @@ -12514,6 +12787,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -12526,12 +12800,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true, "license": "MIT" }, "node_modules/@nx/webpack/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -12544,6 +12820,7 @@ "version": "14.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", @@ -12561,6 +12838,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", @@ -12583,6 +12861,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -12595,6 +12874,7 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 12.13.0" @@ -12611,6 +12891,7 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, "license": "ISC", "engines": { "node": ">= 6" @@ -12620,6 +12901,7 @@ "version": "21.6.10", "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-21.6.10.tgz", "integrity": "sha512-6OkXs4gAVjDtrfqhJf7lHZX/VlCFLRZpywfgvmije40wrExkJDNEHx3Gf6dvSVwl0vE6Gz8D2t6luO02hGGz4w==", + "dev": true, "license": "MIT", "dependencies": { "@nx/devkit": "21.6.10", @@ -12803,6 +13085,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -12842,6 +13125,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12862,6 +13146,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12882,6 +13167,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12902,6 +13188,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12922,6 +13209,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12942,6 +13230,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12962,6 +13251,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12982,6 +13272,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -13002,6 +13293,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -13022,6 +13314,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -13042,6 +13335,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -13062,6 +13356,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -13082,6 +13377,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -13099,6 +13395,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, "license": "Apache-2.0", "optional": true, "bin": { @@ -13112,6 +13409,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, "license": "MIT", "optional": true }, @@ -13149,6 +13447,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", + "dev": true, "license": "MIT", "dependencies": { "esquery": "^1.4.0" @@ -13161,6 +13460,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, "license": "MIT", "optional": true, "engines": { @@ -13171,6 +13471,7 @@ "version": "0.2.9", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" @@ -13926,6 +14227,7 @@ "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, "license": "MIT" }, "node_modules/@sindresorhus/is": { @@ -13945,6 +14247,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -14828,6 +15131,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, "license": "ISC", "engines": { "node": ">=10.13.0" @@ -14929,6 +15233,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.4.0" @@ -14956,6 +15261,7 @@ "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", @@ -14969,6 +15275,7 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" @@ -14978,6 +15285,7 @@ "version": "7.4.4", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", @@ -14988,6 +15296,7 @@ "version": "7.20.7", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" @@ -14997,6 +15306,7 @@ "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, "license": "MIT", "dependencies": { "@types/connect": "*", @@ -15007,6 +15317,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -15051,6 +15362,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -15060,6 +15372,7 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", @@ -15107,6 +15420,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*", @@ -15117,6 +15431,7 @@ "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, "license": "MIT", "dependencies": { "@types/eslint": "*", @@ -15127,12 +15442,14 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "devOptional": true, "license": "MIT" }, "node_modules/@types/express": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", + "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", @@ -15144,6 +15461,7 @@ "version": "5.0.6", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -15190,7 +15508,7 @@ "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -15215,7 +15533,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@types/http-assert": { @@ -15236,12 +15554,14 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, "license": "MIT" }, "node_modules/@types/http-proxy": { "version": "1.17.16", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -15262,12 +15582,14 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" @@ -15277,6 +15599,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" @@ -15344,6 +15667,7 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, "license": "MIT" }, "node_modules/@types/json5": { @@ -15489,6 +15813,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, "license": "MIT" }, "node_modules/@types/ms": { @@ -15561,6 +15886,7 @@ "version": "1.3.14", "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -15616,12 +15942,14 @@ "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/react": { @@ -15664,6 +15992,7 @@ "version": "0.17.5", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "dev": true, "license": "MIT", "dependencies": { "@types/mime": "^1", @@ -15674,6 +16003,7 @@ "version": "1.9.4", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, "license": "MIT", "dependencies": { "@types/express": "*" @@ -15683,6 +16013,7 @@ "version": "1.15.8", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", @@ -15694,6 +16025,7 @@ "version": "0.3.36", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -15703,6 +16035,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, "license": "MIT" }, "node_modules/@types/through": { @@ -15757,6 +16090,7 @@ "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -15766,6 +16100,7 @@ "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -15775,6 +16110,7 @@ "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/yauzl": { @@ -16318,6 +16654,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, "license": "ISC" }, "node_modules/@unrs/resolver-binding-android-arm-eabi": { @@ -16327,6 +16664,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16340,6 +16678,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16353,6 +16692,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16366,6 +16706,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16379,6 +16720,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16392,6 +16734,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16405,6 +16748,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16418,6 +16762,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16431,6 +16776,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16444,6 +16790,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16457,6 +16804,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16470,6 +16818,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16483,6 +16832,7 @@ "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16496,6 +16846,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16509,6 +16860,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16522,6 +16874,7 @@ "cpu": [ "wasm32" ], + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -16535,6 +16888,7 @@ "version": "0.2.11", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz", "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -16550,6 +16904,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16563,6 +16918,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16576,6 +16932,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -16684,6 +17041,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", @@ -16694,24 +17052,28 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", @@ -16723,12 +17085,14 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -16741,6 +17105,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" @@ -16750,6 +17115,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" @@ -16759,12 +17125,14 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -16781,6 +17149,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -16794,6 +17163,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -16806,6 +17176,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -16820,6 +17191,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -16894,12 +17266,14 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, "license": "Apache-2.0" }, "node_modules/@yao-pkg/pkg": { @@ -17108,12 +17482,14 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, "license": "BSD-2-Clause" }, "node_modules/@yarnpkg/parsers": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "js-yaml": "^3.10.0", @@ -17127,6 +17503,7 @@ "version": "0.0.7", "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -17173,6 +17550,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, "license": "MIT", "dependencies": { "mime-types": "^3.0.0", @@ -17209,6 +17587,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=10.13.0" @@ -17221,6 +17600,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -17242,6 +17622,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" @@ -17316,6 +17697,7 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -17350,6 +17732,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" @@ -17411,6 +17794,7 @@ "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, "license": "MIT", "engines": { "node": ">=6" @@ -17447,6 +17831,7 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, "engines": [ "node >= 0.8.0" ], @@ -17490,6 +17875,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -17503,6 +17889,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -17731,6 +18118,7 @@ "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, "license": "Python-2.0" }, "node_modules/aria-query": { @@ -17764,6 +18152,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, "license": "MIT" }, "node_modules/array-includes": { @@ -17930,6 +18319,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, "license": "MIT" }, "node_modules/async-exit-hook": { @@ -17981,6 +18371,7 @@ "version": "10.4.22", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -18018,6 +18409,7 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, "license": "MIT", "engines": { "node": "*" @@ -18090,6 +18482,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "dev": true, "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -18133,6 +18526,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "dev": true, "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", @@ -18150,6 +18544,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -18264,6 +18659,7 @@ "version": "0.4.14", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.27.7", @@ -18278,6 +18674,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -18287,6 +18684,7 @@ "version": "0.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.5", @@ -18300,6 +18698,7 @@ "version": "0.6.5", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.5" @@ -18312,6 +18711,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" @@ -18321,6 +18721,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -18375,6 +18776,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, "node_modules/base64-js": { @@ -18408,6 +18810,7 @@ "version": "2.9.3", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.3.tgz", "integrity": "sha512-8QdH6czo+G7uBsNo0GiUfouPN1lRzKdJTGnKXwe12gkFbnnOUaUKGN55dMkfy+mnxmvjwl9zcI4VncczcVXDhA==", + "dev": true, "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -18437,6 +18840,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true, "license": "MIT" }, "node_modules/bcryptjs": { @@ -18598,6 +19002,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, "license": "MIT", "engines": { "node": "*" @@ -18607,6 +19012,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18675,6 +19081,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "^3.1.2", @@ -18695,6 +19102,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -18705,6 +19113,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, "license": "ISC" }, "node_modules/boolean": { @@ -18736,6 +19145,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -18745,6 +19155,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -18800,6 +19211,7 @@ "version": "4.28.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -18846,6 +19258,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" @@ -18879,6 +19292,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "dev": true, "license": "MIT/X11" }, "node_modules/buffer-crc32": { @@ -19338,7 +19752,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", @@ -19349,6 +19763,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -19368,6 +19783,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.0.0", @@ -19380,6 +19796,7 @@ "version": "1.0.30001759", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001759.tgz", "integrity": "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==", + "dev": true, "funding": [ { "type": "opencollective", @@ -19470,6 +19887,7 @@ "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, "license": "MIT", "engines": { "node": ">=10" @@ -19550,6 +19968,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, "license": "MIT", "dependencies": { "readdirp": "^4.0.1" @@ -19599,6 +20018,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0" @@ -19615,6 +20035,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -19637,7 +20058,7 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "source-map": "~0.6.0" @@ -19650,7 +20071,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -19738,6 +20159,7 @@ "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, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -19752,6 +20174,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -19819,6 +20242,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", @@ -19922,6 +20346,7 @@ "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, "license": "MIT" }, "node_modules/color-convert": { @@ -19956,18 +20381,21 @@ "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, "license": "MIT" }, "node_modules/colorjs.io": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "dev": true, "license": "MIT" }, "node_modules/colors": { @@ -19984,6 +20412,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, "license": "MIT", "dependencies": { "strip-ansi": "^6.0.1", @@ -20018,6 +20447,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, "license": "ISC" }, "node_modules/common-tags": { @@ -20065,6 +20495,7 @@ "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" @@ -20077,6 +20508,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -20095,6 +20527,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -20104,12 +20537,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, "node_modules/compression/node_modules/negotiator": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -20119,6 +20554,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, "license": "MIT" }, "node_modules/concat-stream": { @@ -20343,6 +20779,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8" @@ -20369,6 +20806,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" @@ -20396,6 +20834,7 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -20405,6 +20844,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.6.0" @@ -20427,6 +20867,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, "license": "MIT", "dependencies": { "is-what": "^3.14.1" @@ -20480,6 +20921,7 @@ "version": "3.43.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.25.0" @@ -20499,6 +20941,7 @@ "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, "license": "MIT", "dependencies": { "object-assign": "^4", @@ -20650,6 +21093,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -20670,6 +21114,7 @@ "version": "7.3.0", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz", "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==", + "dev": true, "license": "ISC", "engines": { "node": "^14 || ^16 || >=18" @@ -20718,6 +21163,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -20762,6 +21208,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -20778,6 +21225,7 @@ "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, "license": "MIT", "dependencies": { "mdn-data": "2.0.30", @@ -20791,6 +21239,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">= 6" @@ -20810,6 +21259,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -20822,6 +21272,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "dev": true, "license": "MIT", "dependencies": { "cssnano-preset-default": "^6.1.2", @@ -20842,6 +21293,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.23.0", @@ -20886,6 +21338,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "dev": true, "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" @@ -20898,6 +21351,7 @@ "version": "5.0.5", "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, "license": "MIT", "dependencies": { "css-tree": "~2.2.0" @@ -20911,6 +21365,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, "license": "MIT", "dependencies": { "mdn-data": "2.0.28", @@ -20925,6 +21380,7 @@ "version": "2.0.28", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, "license": "CC0-1.0" }, "node_modules/cssom": { @@ -21143,6 +21599,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -21183,12 +21640,14 @@ "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, "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -21366,6 +21825,7 @@ "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, "license": "MIT", "engines": { "node": ">=8" @@ -21375,12 +21835,14 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, "license": "MIT" }, "node_modules/detect-port": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "dev": true, "license": "MIT", "dependencies": { "address": "^1.0.1", @@ -21582,6 +22044,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, "license": "MIT", "dependencies": { "path-type": "^4.0.0" @@ -21700,6 +22163,7 @@ "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -21733,7 +22197,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "utila": "~0.4" @@ -21743,6 +22207,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", @@ -21757,6 +22222,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, "funding": [ { "type": "github", @@ -21783,6 +22249,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" @@ -21798,6 +22265,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", @@ -21819,7 +22287,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -21846,6 +22314,7 @@ "version": "16.5.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -21858,6 +22327,7 @@ "version": "11.0.7", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "dotenv": "^16.4.5" @@ -21904,6 +22374,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, "license": "MIT" }, "node_modules/ee-first": { @@ -21916,6 +22387,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" @@ -22134,6 +22606,7 @@ "version": "1.5.266", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.266.tgz", "integrity": "sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg==", + "dev": true, "license": "ISC" }, "node_modules/electron-updater": { @@ -22259,6 +22732,7 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -22292,6 +22766,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -22334,6 +22809,7 @@ "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -22343,6 +22819,7 @@ "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -22356,6 +22833,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" @@ -22368,6 +22846,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -22436,6 +22915,7 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -22545,6 +23025,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { @@ -22676,7 +23157,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.3.4" @@ -22702,6 +23183,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -22762,6 +23244,7 @@ "version": "9.26.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.26.0.tgz", "integrity": "sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==", + "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -23089,6 +23572,7 @@ "version": "8.4.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -23105,6 +23589,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -23117,6 +23602,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -23133,6 +23619,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -23143,6 +23630,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -23155,6 +23643,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -23164,12 +23653,14 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, "license": "MIT" }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -23182,6 +23673,7 @@ "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.15.0", @@ -23199,6 +23691,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -23224,6 +23717,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" @@ -23236,6 +23730,7 @@ "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, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -23248,6 +23743,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -23267,6 +23763,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -23276,6 +23773,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -23310,12 +23808,14 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.x" @@ -23334,6 +23834,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.2.tgz", "integrity": "sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==", + "dev": true, "license": "MIT", "engines": { "node": ">=18.0.0" @@ -23396,6 +23897,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -23459,6 +23961,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dev": true, "license": "MIT", "dependencies": { "accepts": "^2.0.0", @@ -23501,6 +24004,7 @@ "version": "7.5.1", "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 16" @@ -23516,6 +24020,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.4.0", @@ -23640,12 +24145,14 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -23662,6 +24169,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -23674,18 +24182,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, "license": "MIT" }, "node_modules/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, "license": "MIT" }, "node_modules/fast-uri": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, "funding": [ { "type": "github", @@ -23712,6 +24223,7 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -23721,6 +24233,7 @@ "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" @@ -23733,6 +24246,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" @@ -23752,6 +24266,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -23803,6 +24318,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, "license": "MIT", "dependencies": { "flat-cache": "^4.0.0" @@ -23815,6 +24331,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" @@ -23824,6 +24341,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -23836,6 +24354,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -23917,6 +24436,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", @@ -23991,6 +24511,7 @@ "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, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -24007,6 +24528,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, "license": "BSD-3-Clause", "bin": { "flat": "cli.js" @@ -24016,6 +24538,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", @@ -24029,12 +24552,14 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, "funding": [ { "type": "individual", @@ -24071,6 +24596,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", @@ -24336,6 +24862,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -24368,6 +24895,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -24416,6 +24944,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dev": true, "license": "MIT", "dependencies": { "js-yaml": "^3.13.1" @@ -24425,6 +24954,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, "license": "MIT" }, "node_modules/fs-exists-sync": { @@ -24489,18 +25019,21 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "dev": true, "license": "Unlicense" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -24555,6 +25088,7 @@ "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, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -24564,6 +25098,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -24610,6 +25145,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -24710,6 +25246,7 @@ "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, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -24722,6 +25259,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/minimatch": { @@ -24830,6 +25368,7 @@ "version": "12.2.0", "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, "license": "MIT", "dependencies": { "array-union": "^3.0.1", @@ -24850,6 +25389,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -24862,6 +25402,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -24871,6 +25412,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -24940,6 +25482,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true, "license": "MIT" }, "node_modules/handlebars": { @@ -24978,6 +25521,7 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true, "license": "(Apache-2.0 OR MPL-1.1)" }, "node_modules/has-bigints": { @@ -25101,7 +25645,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "he": "bin/he" @@ -25157,6 +25701,7 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -25198,6 +25743,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, "license": "MIT" }, "node_modules/html-loader": { @@ -25264,7 +25810,7 @@ "version": "5.6.5", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.5.tgz", "integrity": "sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -25297,7 +25843,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 12" @@ -25307,7 +25853,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "camel-case": "^4.1.2", @@ -25452,6 +25998,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true, "license": "MIT" }, "node_modules/http-errors": { @@ -25483,12 +26030,14 @@ "version": "0.5.10", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "dev": true, "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", @@ -25597,6 +26146,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, "license": "MIT", "engines": { "node": ">=10.18" @@ -25676,6 +26226,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" @@ -25688,6 +26239,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dev": true, "license": "MIT", "dependencies": { "harmony-reflect": "^1.4.6" @@ -25759,6 +26311,7 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, "license": "MIT", "optional": true, "bin": { @@ -25778,6 +26331,7 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true, "license": "MIT" }, "node_modules/import-fresh": { @@ -25898,6 +26452,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -25934,6 +26489,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -26063,6 +26619,7 @@ "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==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.10" @@ -26149,6 +26706,7 @@ "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, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -26279,6 +26837,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -26313,6 +26872,7 @@ "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, "license": "MIT", "engines": { "node": ">=6" @@ -26341,6 +26901,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -26425,6 +26986,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, "license": "MIT", "engines": { "node": ">=16" @@ -26437,6 +26999,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -26685,6 +27248,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, "license": "MIT" }, "node_modules/is-windows": { @@ -26736,6 +27300,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, "license": "ISC" }, "node_modules/isobject": { @@ -26752,6 +27317,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=8" @@ -26774,6 +27340,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -26894,6 +27461,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -26933,6 +27501,7 @@ "version": "3.1.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -26962,6 +27531,7 @@ "version": "10.9.2", "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", @@ -26980,6 +27550,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -26990,6 +27561,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -27272,6 +27844,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, "license": "MIT", "dependencies": { "@jest/diff-sequences": "30.0.1", @@ -27287,6 +27860,7 @@ "version": "30.0.5", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.34.0" @@ -27299,12 +27873,14 @@ "version": "0.34.41", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -27317,6 +27893,7 @@ "version": "30.2.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "30.0.5", @@ -27331,6 +27908,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, "node_modules/jest-docblock": { @@ -27669,7 +28247,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -27679,7 +28257,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -28026,6 +28604,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -28158,7 +28737,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -28168,7 +28747,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -28430,6 +29009,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -28447,6 +29027,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -28459,7 +29040,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -28477,7 +29058,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -28490,7 +29071,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -28503,7 +29084,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -28518,7 +29099,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-watch-typeahead": { @@ -28662,6 +29243,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -28677,6 +29259,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28692,7 +29275,7 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -28722,6 +29305,7 @@ "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, "license": "MIT", "dependencies": { "argparse": "^1.0.7", @@ -28735,6 +29319,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" @@ -28744,6 +29329,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/jsbn": { @@ -28838,6 +29424,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { @@ -28854,6 +29441,7 @@ "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, "license": "MIT" }, "node_modules/json-schema-typed": { @@ -28867,6 +29455,7 @@ "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, "license": "MIT" }, "node_modules/json-stringify-safe": { @@ -28879,6 +29468,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -29014,6 +29604,7 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, "license": "MIT", "dependencies": { "json-buffer": "3.0.1" @@ -29043,6 +29634,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -29224,6 +29816,7 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", + "dev": true, "license": "MIT", "dependencies": { "picocolors": "^1.0.0", @@ -29241,6 +29834,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/less/-/less-4.4.0.tgz", "integrity": "sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==", + "dev": true, "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", @@ -29294,6 +29888,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -29308,6 +29903,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, "license": "MIT", "optional": true, "bin": { @@ -29321,6 +29917,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, "license": "MIT", "optional": true, "engines": { @@ -29331,6 +29928,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, "license": "ISC", "optional": true, "bin": { @@ -29341,6 +29939,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", "optional": true, "engines": { @@ -29351,6 +29950,7 @@ "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, "license": "MIT", "engines": { "node": ">=6" @@ -29360,6 +29960,7 @@ "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, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", @@ -29373,6 +29974,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, "license": "ISC", "dependencies": { "webpack-sources": "^3.0.0" @@ -29399,6 +30001,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -29411,6 +30014,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -29844,6 +30448,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.11.5" @@ -29867,6 +30472,7 @@ "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, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -29888,6 +30494,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, "license": "MIT" }, "node_modules/lodash.escaperegexp": { @@ -29916,18 +30523,21 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, "license": "MIT" }, "node_modules/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, "license": "MIT" }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, "license": "MIT" }, "node_modules/log-symbols": { @@ -30221,7 +30831,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.0.3" @@ -30241,6 +30851,7 @@ "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, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -30290,6 +30901,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -30421,6 +31033,7 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" @@ -30710,6 +31323,7 @@ "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, "license": "CC0-1.0" }, "node_modules/media-typer": { @@ -30725,6 +31339,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" @@ -30737,6 +31352,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -30749,12 +31365,14 @@ "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, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -30764,6 +31382,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -31364,6 +31983,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -31377,6 +31997,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -31487,12 +32108,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, "license": "ISC" }, "node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -31517,6 +32140,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" @@ -31920,6 +32544,7 @@ "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", @@ -32018,6 +32643,7 @@ "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "devOptional": true, "funding": [ { "type": "github", @@ -32043,6 +32669,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz", "integrity": "sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==", + "dev": true, "license": "MIT", "bin": { "napi-postinstall": "lib/cli.js" @@ -32058,12 +32685,14 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, "license": "MIT" }, "node_modules/needle": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -32081,6 +32710,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -32090,6 +32720,7 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, "license": "MIT" }, "node_modules/neotraverse": { @@ -32120,7 +32751,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "lower-case": "^2.0.2", @@ -32144,6 +32775,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true, "license": "MIT" }, "node_modules/node-addon-api": { @@ -32633,12 +33265,14 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, "license": "MIT" }, "node_modules/node-machine-id": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true, "license": "MIT" }, "node_modules/node-preload": { @@ -32658,6 +33292,7 @@ "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, "license": "MIT" }, "node_modules/nopt": { @@ -32680,6 +33315,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -32689,6 +33325,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -33224,6 +33861,7 @@ "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, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -33236,6 +33874,7 @@ "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==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" @@ -33254,6 +33893,7 @@ "version": "21.6.10", "resolved": "https://registry.npmjs.org/nx/-/nx-21.6.10.tgz", "integrity": "sha512-iKSyAg0VGG1MEOnlyyseMOt4n9J7I955VC+0UPQbNQTLdIUW8ibIHubpQyjd8Qvq4CfrLxzm+iq1AmbZ5vEG4A==", + "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -33326,6 +33966,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -33335,6 +33976,7 @@ "version": "16.4.7", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -33347,6 +33989,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -33356,6 +33999,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, "license": "MIT", "bin": { "is-docker": "cli.js" @@ -33371,6 +34015,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, "license": "MIT", "dependencies": { "is-docker": "^2.0.0" @@ -33383,12 +34028,14 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true, "license": "MIT" }, "node_modules/nx/node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", @@ -33406,6 +34053,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, "license": "MIT", "dependencies": { "bl": "^4.0.3", @@ -33428,6 +34076,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -33437,6 +34086,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, "license": "MIT", "dependencies": { "json5": "^2.2.2", @@ -33900,6 +34550,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true, "license": "MIT" }, "node_modules/oidc-client-ts": { @@ -33931,6 +34582,7 @@ "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==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -33940,6 +34592,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -34019,6 +34672,7 @@ "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, "license": "MIT", "dependencies": { "deep-is": "^0.1.3", @@ -34141,6 +34795,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -34156,6 +34811,7 @@ "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, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -34187,6 +34843,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/retry": "0.12.2", @@ -34204,12 +34861,14 @@ "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, "license": "MIT" }, "node_modules/p-retry/node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -34219,6 +34878,7 @@ "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, "license": "MIT", "engines": { "node": ">=6" @@ -34244,6 +34904,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/pacote": { @@ -34575,7 +35236,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "dot-case": "^3.0.4", @@ -34628,6 +35289,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.10" @@ -34787,7 +35449,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -34805,6 +35467,7 @@ "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, "license": "MIT", "engines": { "node": ">=8" @@ -34814,6 +35477,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -34823,6 +35487,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -34934,6 +35599,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -34968,6 +35634,7 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -34990,6 +35657,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=16.20.0" @@ -34999,6 +35667,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, "license": "MIT", "dependencies": { "find-up": "^6.3.0" @@ -35014,6 +35683,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^7.1.0", @@ -35030,6 +35700,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^6.0.0" @@ -35045,6 +35716,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" @@ -35060,6 +35732,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^4.0.0" @@ -35075,6 +35748,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -35084,6 +35758,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.20" @@ -35258,6 +35933,7 @@ "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "devOptional": true, "funding": [ { "type": "opencollective", @@ -35286,6 +35962,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.11", @@ -35302,6 +35979,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -35315,6 +35993,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.23.0", @@ -35333,6 +36012,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.23.0", @@ -35349,6 +36029,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "dev": true, "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" @@ -35361,6 +36042,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "dev": true, "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" @@ -35373,6 +36055,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "dev": true, "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" @@ -35385,6 +36068,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "dev": true, "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" @@ -35520,6 +36204,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", @@ -35536,6 +36221,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.23.0", @@ -35554,6 +36240,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -35567,6 +36254,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -35582,6 +36270,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "dev": true, "license": "MIT", "dependencies": { "colord": "^2.9.3", @@ -35599,6 +36288,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.23.0", @@ -35616,6 +36306,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "dev": true, "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" @@ -35631,6 +36322,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -35644,6 +36336,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" @@ -35656,6 +36349,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", @@ -35673,6 +36367,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, "license": "ISC", "dependencies": { "postcss-selector-parser": "^7.0.0" @@ -35688,6 +36383,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" @@ -35743,6 +36439,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "dev": true, "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" @@ -35755,6 +36452,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -35770,6 +36468,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -35785,6 +36484,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -35800,6 +36500,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -35815,6 +36516,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -35830,6 +36532,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.23.0", @@ -35846,6 +36549,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -35861,6 +36565,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -35876,6 +36581,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "dev": true, "license": "MIT", "dependencies": { "cssnano-utils": "^4.0.2", @@ -35892,6 +36598,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.23.0", @@ -35908,6 +36615,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -35923,6 +36631,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -35936,6 +36645,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", @@ -35952,6 +36662,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "dev": true, "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" @@ -35967,6 +36678,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -35980,6 +36692,7 @@ "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, "license": "MIT" }, "node_modules/postject": { @@ -36055,6 +36768,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -36159,7 +36873,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "lodash": "^4.17.20", @@ -36317,6 +37031,7 @@ "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==", + "dev": true, "license": "MIT", "dependencies": { "forwarded": "0.2.0", @@ -36330,6 +37045,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, "license": "MIT" }, "node_modules/proxy-middleware": { @@ -36346,6 +37062,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, "license": "MIT", "optional": true }, @@ -36438,6 +37155,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -36471,6 +37189,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" @@ -36480,6 +37199,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -36489,6 +37209,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -36585,6 +37306,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, "license": "MIT", "dependencies": { "pify": "^2.3.0" @@ -36594,6 +37316,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -36630,6 +37353,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 14.18.0" @@ -36727,12 +37451,14 @@ "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, "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2" @@ -36773,6 +37499,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", @@ -36790,12 +37517,14 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, "license": "MIT" }, "node_modules/regjsparser": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "jsesc": "~3.0.2" @@ -36808,6 +37537,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -36820,7 +37550,7 @@ "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.10" @@ -36895,7 +37625,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "css-select": "^4.1.3", @@ -36909,7 +37639,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -36926,7 +37656,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", @@ -36941,7 +37671,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" @@ -36957,7 +37687,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", @@ -36972,7 +37702,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" @@ -36982,7 +37712,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "devOptional": true, + "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -37002,6 +37732,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -37011,6 +37742,7 @@ "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, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -37115,6 +37847,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -37176,6 +37909,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -37241,6 +37975,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -37373,6 +38108,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.4.0", @@ -37389,6 +38125,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, "license": "MIT" }, "node_modules/rrweb-cssom": { @@ -37422,6 +38159,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -37610,6 +38348,7 @@ "version": "1.95.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.95.1.tgz", "integrity": "sha512-uPoDh5NIEZV4Dp5GBodkmNY9tSQfXY02pmCcUo+FR1P+x953HGkpw+vV28D4IqYB6f8webZtwoSaZaiPtpTeMg==", + "dev": true, "license": "MIT", "dependencies": { "chokidar": "^4.0.0", @@ -37630,6 +38369,7 @@ "version": "1.93.2", "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.93.2.tgz", "integrity": "sha512-FvQdkn2dZ8DGiLgi0Uf4zsj7r/BsiLImNa5QJ10eZalY6NfZyjrmWGFcuCN5jNwlDlXFJnftauv+UtvBKLvepQ==", + "dev": true, "license": "MIT", "dependencies": { "@bufbuild/protobuf": "^2.5.0", @@ -37678,6 +38418,7 @@ "!riscv64", "!x64" ], + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -37688,6 +38429,7 @@ "version": "1.93.2", "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz", "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -37712,6 +38454,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37728,6 +38471,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37744,6 +38488,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37760,6 +38505,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37776,6 +38522,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37792,6 +38539,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37808,6 +38556,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37824,6 +38573,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37840,6 +38590,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37856,6 +38607,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37872,6 +38624,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37888,6 +38641,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37904,6 +38658,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37920,6 +38675,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37933,6 +38689,7 @@ "version": "1.93.2", "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.93.2.tgz", "integrity": "sha512-7VnaOmyewcXohiuoFagJ3SK5ddP9yXpU0rzz+pZQmS1/+5O6vzyFCUoEt3HDRaLctH4GT3nUGoK1jg0ae62IfQ==", + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37949,6 +38706,7 @@ "version": "1.93.2", "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz", "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -37973,6 +38731,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -37989,6 +38748,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -38002,6 +38762,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -38017,6 +38778,7 @@ "version": "16.0.6", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.6.tgz", "integrity": "sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==", + "dev": true, "license": "MIT", "dependencies": { "neo-async": "^2.6.2" @@ -38057,7 +38819,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/saxes": { @@ -38086,6 +38848,7 @@ "version": "4.3.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", @@ -38105,6 +38868,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, "license": "MIT", "dependencies": { "ajv": "^8.0.0" @@ -38122,12 +38886,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true, "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", @@ -38161,6 +38927,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.3.5", @@ -38214,6 +38981,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" @@ -38223,6 +38991,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.4", @@ -38241,6 +39010,7 @@ "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==", + "dev": true, "license": "MIT", "dependencies": { "mime-types": "~2.1.34", @@ -38254,6 +39024,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -38263,6 +39034,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -38272,6 +39044,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, "license": "MIT", "dependencies": { "depd": "~1.1.2", @@ -38287,12 +39060,14 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, "license": "ISC" }, "node_modules/serve-index/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -38302,6 +39077,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -38314,12 +39090,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, "node_modules/serve-index/node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -38329,12 +39107,14 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true, "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -38344,6 +39124,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dev": true, "license": "MIT", "dependencies": { "encodeurl": "^2.0.0", @@ -38446,6 +39227,7 @@ "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, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -38458,6 +39240,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -38467,6 +39250,7 @@ "version": "1.8.3", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -38551,6 +39335,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "license": "ISC", "engines": { "node": ">=14" @@ -38677,6 +39462,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -38713,6 +39499,7 @@ "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", @@ -38724,6 +39511,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, "license": "MIT", "bin": { "uuid": "dist/bin/uuid" @@ -38776,6 +39564,7 @@ "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">= 12" @@ -38785,6 +39574,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "devOptional": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -38794,6 +39584,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "^0.6.3", @@ -38814,6 +39605,7 @@ "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, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -38824,6 +39616,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -39027,6 +39820,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.1.0", @@ -39043,6 +39837,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.1.0", @@ -39057,6 +39852,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -39131,6 +39927,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" @@ -39143,6 +39940,7 @@ "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, "license": "MIT", "engines": { "node": ">=8" @@ -39307,6 +40105,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, "license": "MIT", "dependencies": { "char-regex": "^1.0.2", @@ -39335,6 +40134,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -39421,6 +40221,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -39433,6 +40234,7 @@ "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, "license": "MIT", "engines": { "node": ">=8" @@ -39465,6 +40267,7 @@ "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, "license": "MIT", "engines": { "node": ">=8" @@ -39494,6 +40297,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.23.0", @@ -39510,6 +40314,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -39690,6 +40495,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", @@ -39715,6 +40521,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 10" @@ -39730,6 +40537,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "dev": true, "license": "MIT", "dependencies": { "sync-message-port": "^1.0.0" @@ -39742,6 +40550,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "dev": true, "license": "MIT", "engines": { "node": ">=16.0.0" @@ -39751,6 +40560,7 @@ "version": "0.11.11", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, "license": "MIT", "dependencies": { "@pkgr/core": "^0.2.9" @@ -39899,6 +40709,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -39950,6 +40761,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, "license": "MIT", "dependencies": { "bl": "^4.0.3", @@ -39966,6 +40778,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -40123,6 +40936,7 @@ "version": "5.43.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -40141,6 +40955,7 @@ "version": "5.3.14", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -40175,6 +40990,7 @@ "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, "license": "MIT", "dependencies": { "@types/node": "*", @@ -40189,6 +41005,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -40204,12 +41021,14 @@ "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, "license": "MIT" }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", @@ -40224,6 +41043,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -40235,6 +41055,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -40255,6 +41076,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -40290,6 +41112,7 @@ "version": "1.21.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, "license": "Unlicense", "engines": { "node": ">=10.18" @@ -40308,6 +41131,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true, "license": "MIT" }, "node_modules/tiny-async-pool": { @@ -40348,6 +41172,7 @@ "version": "0.2.14", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.4.4", @@ -40402,6 +41227,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.14" @@ -40421,12 +41247,14 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -40494,6 +41322,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.3.tgz", "integrity": "sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.0" @@ -40510,6 +41339,7 @@ "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, "license": "MIT", "bin": { "tree-kill": "cli.js" @@ -40664,6 +41494,7 @@ "version": "9.5.4", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -40777,6 +41608,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -40792,6 +41624,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -40801,6 +41634,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, "license": "MIT", "dependencies": { "json5": "^2.2.2", @@ -41226,6 +42060,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -41238,6 +42073,7 @@ "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, "license": "MIT", "engines": { "node": ">=4" @@ -41352,6 +42188,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true, "license": "MIT" }, "node_modules/typedarray": { @@ -41591,6 +42428,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -41600,6 +42438,7 @@ "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, "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", @@ -41613,6 +42452,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -41622,6 +42462,7 @@ "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, "license": "MIT", "engines": { "node": ">=4" @@ -41795,6 +42636,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.1.tgz", "integrity": "sha512-4AZVxP05JGN6DwqIkSP4VKLOcwQa5l37SWHF/ahcuqBMbfxbpN1L1QKafEhWCziHhzKex9H/AR09H0OuVyU+9g==", + "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -41843,6 +42685,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -41873,6 +42716,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -41953,13 +42797,14 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/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==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4.0" @@ -41989,6 +42834,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -42003,6 +42849,7 @@ "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, "license": "MIT" }, "node_modules/validate-npm-package-license": { @@ -42030,6 +42877,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true, "license": "MIT" }, "node_modules/vary": { @@ -42458,6 +43306,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" @@ -42467,6 +43316,7 @@ "version": "2.4.4", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "dev": true, "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", @@ -42480,6 +43330,7 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" @@ -42515,6 +43366,7 @@ "version": "5.103.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.103.0.tgz", "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", + "dev": true, "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -42616,6 +43468,7 @@ "version": "7.4.2", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", + "dev": true, "license": "MIT", "dependencies": { "colorette": "^2.0.10", @@ -42645,6 +43498,7 @@ "version": "4.17.2", "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.2.tgz", "integrity": "sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", @@ -42664,6 +43518,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -42673,6 +43528,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -42685,6 +43541,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "dev": true, "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", @@ -42742,6 +43599,7 @@ "version": "4.17.25", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", @@ -42754,6 +43612,7 @@ "version": "4.19.7", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -42766,6 +43625,7 @@ "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==", + "dev": true, "license": "MIT", "dependencies": { "mime-types": "~2.1.34", @@ -42779,6 +43639,7 @@ "version": "1.20.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -42803,6 +43664,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -42827,6 +43689,7 @@ "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" @@ -42839,6 +43702,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -42848,12 +43712,14 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true, "license": "MIT" }, "node_modules/webpack-dev-server/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -42863,12 +43729,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, "node_modules/webpack-dev-server/node_modules/express": { "version": "4.21.2", "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", @@ -42915,6 +43783,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -42933,6 +43802,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -42942,6 +43812,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -42954,6 +43825,7 @@ "version": "2.0.9", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", @@ -42978,6 +43850,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -42990,6 +43863,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 10" @@ -42999,6 +43873,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -43011,6 +43886,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -43020,6 +43896,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -43029,6 +43906,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, "license": "MIT", "bin": { "mime": "cli.js" @@ -43041,6 +43919,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -43050,6 +43929,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -43062,6 +43942,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -43071,6 +43952,7 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, "license": "MIT", "dependencies": { "default-browser": "^5.2.1", @@ -43089,12 +43971,14 @@ "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, "license": "MIT" }, "node_modules/webpack-dev-server/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -43107,6 +43991,7 @@ "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" @@ -43122,6 +44007,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -43137,6 +44023,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -43149,6 +44036,7 @@ "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -43173,6 +44061,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -43182,6 +44071,7 @@ "version": "1.16.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", @@ -43197,6 +44087,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -43206,6 +44097,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -43246,6 +44138,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -43255,6 +44148,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10.13.0" @@ -43264,6 +44158,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, "license": "MIT", "dependencies": { "typed-assert": "^1.0.8" @@ -43292,6 +44187,7 @@ "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, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -43305,6 +44201,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -43314,12 +44211,14 @@ "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, "license": "MIT" }, "node_modules/webpack/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -43329,6 +44228,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -43341,6 +44241,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", @@ -43355,6 +44256,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=0.8.0" @@ -43398,6 +44300,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -43573,6 +44476,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -43604,6 +44508,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -43621,6 +44526,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { @@ -43669,6 +44575,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, "license": "MIT", "dependencies": { "is-wsl": "^3.1.0" @@ -43725,6 +44632,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -43734,12 +44642,14 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, "license": "ISC" }, "node_modules/yaml": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -43752,6 +44662,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -43770,6 +44681,7 @@ "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, "license": "ISC", "engines": { "node": ">=12" @@ -43799,6 +44711,7 @@ "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, "license": "MIT", "engines": { "node": ">=10" @@ -43824,6 +44737,7 @@ "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -43833,6 +44747,7 @@ "version": "3.24.5", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", + "dev": true, "license": "ISC", "peerDependencies": { "zod": "^3.24.1" diff --git a/package.json b/package.json index 7b2b3701fdf..f4c484f1c61 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,11 @@ "@eslint/compat": "2.0.0", "@lit-labs/signals": "0.1.3", "@ngtools/webpack": "20.3.12", + "@nx/devkit": "21.6.10", + "@nx/eslint": "21.6.10", + "@nx/jest": "21.6.10", + "@nx/js": "21.6.10", + "@nx/webpack": "21.6.10", "@storybook/addon-a11y": "9.1.16", "@storybook/addon-designs": "9.0.0-next.3", "@storybook/addon-docs": "9.1.16", @@ -166,11 +171,6 @@ "@microsoft/signalr": "8.0.7", "@microsoft/signalr-protocol-msgpack": "8.0.7", "@ng-select/ng-select": "20.7.0", - "@nx/devkit": "21.6.10", - "@nx/eslint": "21.6.10", - "@nx/jest": "21.6.10", - "@nx/js": "21.6.10", - "@nx/webpack": "21.6.10", "big-integer": "1.6.52", "braintree-web-drop-in": "1.46.0", "buffer": "6.0.3", From 59a1b4d79ecfd639bc7d9412a93fdab701b22cde Mon Sep 17 00:00:00 2001 From: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com> Date: Mon, 22 Dec 2025 14:14:23 -0600 Subject: [PATCH 19/81] Remove FF: pm-22415-tax-id-warnings (#17871) --- ...rganization-payment-details.component.html | 2 +- .../organization-payment-details.component.ts | 62 +++++++------------ .../components/tax-id-warning.component.ts | 37 +++++------ .../provider-payment-details.component.html | 2 +- .../provider-payment-details.component.ts | 60 +++++++----------- libs/common/src/enums/feature-flag.enum.ts | 2 - 6 files changed, 63 insertions(+), 102 deletions(-) diff --git a/apps/web/src/app/billing/organizations/payment-details/organization-payment-details.component.html b/apps/web/src/app/billing/organizations/payment-details/organization-payment-details.component.html index cd31f1f33be..504cfcdeccd 100644 --- a/apps/web/src/app/billing/organizations/payment-details/organization-payment-details.component.html +++ b/apps/web/src/app/billing/organizations/payment-details/organization-payment-details.component.html @@ -29,7 +29,7 @@ diff --git a/apps/web/src/app/billing/organizations/payment-details/organization-payment-details.component.ts b/apps/web/src/app/billing/organizations/payment-details/organization-payment-details.component.ts index 9609160089b..e989185e582 100644 --- a/apps/web/src/app/billing/organizations/payment-details/organization-payment-details.component.ts +++ b/apps/web/src/app/billing/organizations/payment-details/organization-payment-details.component.ts @@ -22,8 +22,6 @@ import { OrganizationService } from "@bitwarden/common/admin-console/abstraction import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { getById } from "@bitwarden/common/platform/misc"; import { DialogService } from "@bitwarden/components"; import { CommandDefinition, MessageListener } from "@bitwarden/messaging"; @@ -118,12 +116,9 @@ export class OrganizationPaymentDetailsComponent implements OnInit, OnDestroy { private destroy$ = new Subject(); - protected enableTaxIdWarning!: boolean; - constructor( private accountService: AccountService, private activatedRoute: ActivatedRoute, - private configService: ConfigService, private dialogService: DialogService, private messageListener: MessageListener, private organizationService: OrganizationService, @@ -140,36 +135,30 @@ export class OrganizationPaymentDetailsComponent implements OnInit, OnDestroy { await this.changePaymentMethod(); } - this.enableTaxIdWarning = await this.configService.getFeatureFlag( - FeatureFlag.PM22415_TaxIDWarnings, - ); - - if (this.enableTaxIdWarning) { - this.organizationWarningsService.taxIdWarningRefreshed$ - .pipe( - switchMap((warning) => - combineLatest([ - of(warning), - this.organization$.pipe(take(1)).pipe( - mapOrganizationToSubscriber, - switchMap((organization) => - this.subscriberBillingClient.getBillingAddress(organization), - ), + this.organizationWarningsService.taxIdWarningRefreshed$ + .pipe( + switchMap((warning) => + combineLatest([ + of(warning), + this.organization$.pipe(take(1)).pipe( + mapOrganizationToSubscriber, + switchMap((organization) => + this.subscriberBillingClient.getBillingAddress(organization), ), - ]), - ), - takeUntil(this.destroy$), - ) - .subscribe(([taxIdWarning, billingAddress]) => { - if (this.viewState$.value) { - this.viewState$.next({ - ...this.viewState$.value, - taxIdWarning, - billingAddress, - }); - } - }); - } + ), + ]), + ), + takeUntil(this.destroy$), + ) + .subscribe(([taxIdWarning, billingAddress]) => { + if (this.viewState$.value) { + this.viewState$.next({ + ...this.viewState$.value, + taxIdWarning, + billingAddress, + }); + } + }); this.messageListener .messages$(BANK_ACCOUNT_VERIFIED_COMMAND) @@ -216,10 +205,7 @@ export class OrganizationPaymentDetailsComponent implements OnInit, OnDestroy { setBillingAddress = (billingAddress: BillingAddress) => { if (this.viewState$.value) { - if ( - this.enableTaxIdWarning && - this.viewState$.value.billingAddress?.taxId !== billingAddress.taxId - ) { + if (this.viewState$.value.billingAddress?.taxId !== billingAddress.taxId) { this.organizationWarningsService.refreshTaxIdWarning(); } this.viewState$.next({ diff --git a/apps/web/src/app/billing/warnings/components/tax-id-warning.component.ts b/apps/web/src/app/billing/warnings/components/tax-id-warning.component.ts index c0fe5626fcb..f2adcaccf30 100644 --- a/apps/web/src/app/billing/warnings/components/tax-id-warning.component.ts +++ b/apps/web/src/app/billing/warnings/components/tax-id-warning.component.ts @@ -12,8 +12,6 @@ import { import { Account, AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { BannerModule, DialogService } from "@bitwarden/components"; import { BILLING_DISK, StateProvider, UserKeyDefinition } from "@bitwarden/state"; @@ -88,23 +86,21 @@ type GetWarning$ = () => Observable; @Component({ selector: "app-tax-id-warning", template: ` - @if (enableTaxIdWarning$ | async) { - @let view = view$ | async; + @let view = view$ | async; - @if (view) { - - {{ view.message }} - - {{ view.callToAction }} - - - } + @if (view) { + + {{ view.message }} + + {{ view.callToAction }} + + } `, imports: [BannerModule, SharedModule], @@ -120,10 +116,6 @@ export class TaxIdWarningComponent implements OnInit { // eslint-disable-next-line @angular-eslint/prefer-output-emitter-ref @Output() billingAddressUpdated = new EventEmitter(); - protected enableTaxIdWarning$ = this.configService.getFeatureFlag$( - FeatureFlag.PM22415_TaxIDWarnings, - ); - protected userId$ = this.accountService.activeAccount$.pipe( filter((account): account is Account => account !== null), getUserId, @@ -209,7 +201,6 @@ export class TaxIdWarningComponent implements OnInit { constructor( private accountService: AccountService, - private configService: ConfigService, private dialogService: DialogService, private i18nService: I18nService, private subscriberBillingClient: SubscriberBillingClient, diff --git a/bitwarden_license/bit-web/src/app/billing/providers/payment-details/provider-payment-details.component.html b/bitwarden_license/bit-web/src/app/billing/providers/payment-details/provider-payment-details.component.html index fa45bbb32d3..d0da7416115 100644 --- a/bitwarden_license/bit-web/src/app/billing/providers/payment-details/provider-payment-details.component.html +++ b/bitwarden_license/bit-web/src/app/billing/providers/payment-details/provider-payment-details.component.html @@ -21,7 +21,7 @@ diff --git a/bitwarden_license/bit-web/src/app/billing/providers/payment-details/provider-payment-details.component.ts b/bitwarden_license/bit-web/src/app/billing/providers/payment-details/provider-payment-details.component.ts index 183e6098471..1de271bcf28 100644 --- a/bitwarden_license/bit-web/src/app/billing/providers/payment-details/provider-payment-details.component.ts +++ b/bitwarden_license/bit-web/src/app/billing/providers/payment-details/provider-payment-details.component.ts @@ -21,8 +21,6 @@ import { ProviderService } from "@bitwarden/common/admin-console/abstractions/pr import { Provider } from "@bitwarden/common/admin-console/models/domain/provider"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { CommandDefinition, MessageListener } from "@bitwarden/messaging"; import { UserId } from "@bitwarden/user-core"; import { SubscriberBillingClient } from "@bitwarden/web-vault/app/billing/clients"; @@ -119,13 +117,10 @@ export class ProviderPaymentDetailsComponent implements OnInit, OnDestroy { private destroy$ = new Subject(); - protected enableTaxIdWarning!: boolean; - constructor( private accountService: AccountService, private activatedRoute: ActivatedRoute, private billingClient: SubscriberBillingClient, - private configService: ConfigService, private messageListener: MessageListener, private providerService: ProviderService, private providerWarningsService: ProviderWarningsService, @@ -133,34 +128,28 @@ export class ProviderPaymentDetailsComponent implements OnInit, OnDestroy { ) {} async ngOnInit() { - this.enableTaxIdWarning = await this.configService.getFeatureFlag( - FeatureFlag.PM22415_TaxIDWarnings, - ); - - if (this.enableTaxIdWarning) { - this.providerWarningsService.taxIdWarningRefreshed$ - .pipe( - switchMap((warning) => - combineLatest([ - of(warning), - this.provider$.pipe(take(1)).pipe( - mapProviderToSubscriber, - switchMap((provider) => this.subscriberBillingClient.getBillingAddress(provider)), - ), - ]), - ), - takeUntil(this.destroy$), - ) - .subscribe(([taxIdWarning, billingAddress]) => { - if (this.viewState$.value) { - this.viewState$.next({ - ...this.viewState$.value, - taxIdWarning, - billingAddress, - }); - } - }); - } + this.providerWarningsService.taxIdWarningRefreshed$ + .pipe( + switchMap((warning) => + combineLatest([ + of(warning), + this.provider$.pipe(take(1)).pipe( + mapProviderToSubscriber, + switchMap((provider) => this.subscriberBillingClient.getBillingAddress(provider)), + ), + ]), + ), + takeUntil(this.destroy$), + ) + .subscribe(([taxIdWarning, billingAddress]) => { + if (this.viewState$.value) { + this.viewState$.next({ + ...this.viewState$.value, + taxIdWarning, + billingAddress, + }); + } + }); this.messageListener .messages$(BANK_ACCOUNT_VERIFIED_COMMAND) @@ -197,10 +186,7 @@ export class ProviderPaymentDetailsComponent implements OnInit, OnDestroy { setBillingAddress = (billingAddress: BillingAddress) => { if (this.viewState$.value) { - if ( - this.enableTaxIdWarning && - this.viewState$.value.billingAddress?.taxId !== billingAddress.taxId - ) { + if (this.viewState$.value.billingAddress?.taxId !== billingAddress.taxId) { this.providerWarningsService.refreshTaxIdWarning(); } this.viewState$.next({ diff --git a/libs/common/src/enums/feature-flag.enum.ts b/libs/common/src/enums/feature-flag.enum.ts index 3bde0eada0a..f905c62288e 100644 --- a/libs/common/src/enums/feature-flag.enum.ts +++ b/libs/common/src/enums/feature-flag.enum.ts @@ -26,7 +26,6 @@ export enum FeatureFlag { /* Billing */ TrialPaymentOptional = "PM-8163-trial-payment", - PM22415_TaxIDWarnings = "pm-22415-tax-id-warnings", PM24032_NewNavigationPremiumUpgradeButton = "pm-24032-new-navigation-premium-upgrade-button", PM25379_UseNewOrganizationMetadataStructure = "pm-25379-use-new-organization-metadata-structure", PM24996_ImplementUpgradeFromFreeDialog = "pm-24996-implement-upgrade-from-free-dialog", @@ -137,7 +136,6 @@ export const DefaultFeatureFlagValue = { /* Billing */ [FeatureFlag.TrialPaymentOptional]: FALSE, - [FeatureFlag.PM22415_TaxIDWarnings]: FALSE, [FeatureFlag.PM24032_NewNavigationPremiumUpgradeButton]: FALSE, [FeatureFlag.PM25379_UseNewOrganizationMetadataStructure]: FALSE, [FeatureFlag.PM24996_ImplementUpgradeFromFreeDialog]: FALSE, From 328ff89747a83c37ebfb574f1c55bf2dd2e2f9bd Mon Sep 17 00:00:00 2001 From: gitclonebrian <235774926+gitclonebrian@users.noreply.github.com> Date: Mon, 22 Dec 2025 15:19:08 -0500 Subject: [PATCH 20/81] bumped `cargo deny` version to fix CVSS error (#18091) --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 47c5e9faef0..b46204514b8 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -144,7 +144,7 @@ jobs: - name: Install cargo-deny uses: taiki-e/install-action@073d46cba2cde38f6698c798566c1b3e24feeb44 # v2.62.67 with: - tool: cargo-deny@0.18.5 + tool: cargo-deny@0.18.6 - name: Run cargo deny working-directory: ./apps/desktop/desktop_native From d95739191b82bbe9c2d34175c449050608847496 Mon Sep 17 00:00:00 2001 From: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com> Date: Mon, 22 Dec 2025 15:56:12 -0500 Subject: [PATCH 21/81] PM-30125 - IdentityTokenResponse - mark deprecated properties as such (#18092) --- .../models/response/identity-token.response.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/libs/common/src/auth/models/response/identity-token.response.ts b/libs/common/src/auth/models/response/identity-token.response.ts index ae208ef1a36..e43697f9ebe 100644 --- a/libs/common/src/auth/models/response/identity-token.response.ts +++ b/libs/common/src/auth/models/response/identity-token.response.ts @@ -19,9 +19,21 @@ export class IdentityTokenResponse extends BaseResponse { tokenType: string; // Decryption Information - privateKey: string; // userKeyEncryptedPrivateKey + + /** + * privateKey is actually userKeyEncryptedPrivateKey + * @deprecated Use {@link accountKeysResponseModel} instead + */ + privateKey: string; + + // TODO: https://bitwarden.atlassian.net/browse/PM-30124 - Rename to just accountKeys accountKeysResponseModel: PrivateKeysResponseModel | null = null; - key?: EncString; // masterKeyEncryptedUserKey + + /** + * key is actually masterKeyEncryptedUserKey + * @deprecated Use {@link userDecryptionOptions.masterPasswordUnlock.masterKeyWrappedUserKey} instead + */ + key?: EncString; twoFactorToken: string; kdfConfig: KdfConfig; forcePasswordReset: boolean; From dc1ecaaaa29f39315ace33a186d46eae62092b09 Mon Sep 17 00:00:00 2001 From: Vicki League Date: Mon, 22 Dec 2025 16:55:20 -0500 Subject: [PATCH 22/81] [PM-29819][CL-806] Fix focus mgmt on search and filter page navigations (#18007) --- .../collections/vault.component.ts | 3 +++ .../services/routed-vault-filter.service.ts | 3 +++ .../vault/individual-vault/vault.component.ts | 3 +++ .../src/a11y/router-focus-manager.service.ts | 19 +++++++++---------- .../tabs/tab-nav-bar/tab-link.component.html | 2 +- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/apps/web/src/app/admin-console/organizations/collections/vault.component.ts b/apps/web/src/app/admin-console/organizations/collections/vault.component.ts index f827dda9a9b..4adf3739845 100644 --- a/apps/web/src/app/admin-console/organizations/collections/vault.component.ts +++ b/apps/web/src/app/admin-console/organizations/collections/vault.component.ts @@ -587,6 +587,9 @@ export class VaultComponent implements OnInit, OnDestroy { queryParams: { search: Utils.isNullOrEmpty(searchText) ? null : searchText }, queryParamsHandling: "merge", replaceUrl: true, + state: { + focusMainAfterNav: false, + }, }), ); diff --git a/apps/web/src/app/vault/individual-vault/vault-filter/services/routed-vault-filter.service.ts b/apps/web/src/app/vault/individual-vault/vault-filter/services/routed-vault-filter.service.ts index a5a99428b2d..bc9da5e1692 100644 --- a/apps/web/src/app/vault/individual-vault/vault-filter/services/routed-vault-filter.service.ts +++ b/apps/web/src/app/vault/individual-vault/vault-filter/services/routed-vault-filter.service.ts @@ -74,6 +74,9 @@ export class RoutedVaultFilterService implements OnDestroy { type: filter.type ?? null, }, queryParamsHandling: "merge", + state: { + focusMainAfterNav: false, + }, }; return [commands, extras]; } diff --git a/apps/web/src/app/vault/individual-vault/vault.component.ts b/apps/web/src/app/vault/individual-vault/vault.component.ts index e791ca7a90b..a5121831304 100644 --- a/apps/web/src/app/vault/individual-vault/vault.component.ts +++ b/apps/web/src/app/vault/individual-vault/vault.component.ts @@ -424,6 +424,9 @@ export class VaultComponent implements OnInit, OnDestr queryParams: { search: Utils.isNullOrEmpty(searchText) ? null : searchText }, queryParamsHandling: "merge", replaceUrl: true, + state: { + focusMainAfterNav: false, + }, }), ); diff --git a/libs/components/src/a11y/router-focus-manager.service.ts b/libs/components/src/a11y/router-focus-manager.service.ts index 27c4e0f9b1e..f7371e02a17 100644 --- a/libs/components/src/a11y/router-focus-manager.service.ts +++ b/libs/components/src/a11y/router-focus-manager.service.ts @@ -1,7 +1,7 @@ import { inject, Injectable } from "@angular/core"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { NavigationEnd, Router } from "@angular/router"; -import { skip, filter, map, combineLatestWith, tap } from "rxjs"; +import { skip, filter, combineLatestWith, tap } from "rxjs"; import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; @@ -19,8 +19,10 @@ export class RouterFocusManagerService { * * By default, we focus the `main` after an internal route navigation. * - * Consumers can opt out of the passing the following to the `info` input: - * `` + * Consumers can opt out of the passing the following to the `state` input. Using `state` + * allows us to access the value between browser back/forward arrows. + * In template: `` + * In typescript: `this.router.navigate([], { state: { focusMainAfterNav: false }})` * * Or, consumers can use the autofocus directive on an applicable interactive element. * The autofocus directive will take precedence over this route focus pipeline. @@ -44,15 +46,12 @@ export class RouterFocusManagerService { skip(1), combineLatestWith(this.configService.getFeatureFlag$(FeatureFlag.RouterFocusManagement)), filter(([_navEvent, flagEnabled]) => flagEnabled), - map(() => { - const currentNavData = this.router.getCurrentNavigation()?.extras; + filter(() => { + const currentNavExtras = this.router.currentNavigation()?.extras; - const info = currentNavData?.info as { focusMainAfterNav?: boolean } | undefined; + const focusMainAfterNav: boolean | undefined = currentNavExtras?.state?.focusMainAfterNav; - return info; - }), - filter((currentNavInfo) => { - return currentNavInfo === undefined ? true : currentNavInfo?.focusMainAfterNav !== false; + return focusMainAfterNav !== false; }), tap(() => { const mainEl = document.querySelector("main"); diff --git a/libs/components/src/tabs/tab-nav-bar/tab-link.component.html b/libs/components/src/tabs/tab-nav-bar/tab-link.component.html index f05ed31547b..aa36eb37f99 100644 --- a/libs/components/src/tabs/tab-nav-bar/tab-link.component.html +++ b/libs/components/src/tabs/tab-nav-bar/tab-link.component.html @@ -5,7 +5,7 @@ [routerLinkActiveOptions]="routerLinkMatchOptions" #rla="routerLinkActive" [active]="rla.isActive" - [info]="{ focusMainAfterNav: false }" + [state]="{ focusMainAfterNav: false }" [disabled]="disabled" [attr.aria-disabled]="disabled" ariaCurrentWhenActive="page" From 3fbb4aced929f3a7904c54091b26a82765ba82e6 Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Tue, 23 Dec 2025 16:27:25 +0100 Subject: [PATCH 23/81] [PM-27239] Tde registration encryption v2 (#17831) * tmp * Implement TDE v2 registration via SDK * Undo encstring test string change * Add feature flag * Add tests * Continue tests * Cleanup * Cleanup * run prettier * Update to apply new sdk changes * Fix build * Update package lock * Fix tests --------- Co-authored-by: Bernd Schoolmann --- ...login-decryption-options.component.spec.ts | 377 ++++++++++++++++++ .../login-decryption-options.component.ts | 120 +++++- libs/common/src/enums/feature-flag.enum.ts | 2 + .../device-trust.service.abstraction.ts | 1 + .../device-trust.service.implementation.ts | 2 +- package-lock.json | 16 +- package.json | 4 +- 7 files changed, 501 insertions(+), 21 deletions(-) create mode 100644 libs/auth/src/angular/login-decryption-options/login-decryption-options.component.spec.ts diff --git a/libs/auth/src/angular/login-decryption-options/login-decryption-options.component.spec.ts b/libs/auth/src/angular/login-decryption-options/login-decryption-options.component.spec.ts new file mode 100644 index 00000000000..07cbb680963 --- /dev/null +++ b/libs/auth/src/angular/login-decryption-options/login-decryption-options.component.spec.ts @@ -0,0 +1,377 @@ +// Mock asUuid to return the input value for test consistency +jest.mock("@bitwarden/common/platform/abstractions/sdk/sdk.service", () => ({ + asUuid: (x: any) => x, +})); + +import { DestroyRef } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; +import { Router } from "@angular/router"; +import { mock, MockProxy } from "jest-mock-extended"; +import { BehaviorSubject, of } from "rxjs"; + +import { + LoginEmailServiceAbstraction, + LogoutService, + UserDecryptionOptionsServiceAbstraction, +} from "@bitwarden/auth/common"; +import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { PasswordResetEnrollmentServiceAbstraction } from "@bitwarden/common/auth/abstractions/password-reset-enrollment.service.abstraction"; +import { SsoLoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/sso-login.service.abstraction"; +import { ClientType } from "@bitwarden/common/enums"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; +import { DeviceTrustServiceAbstraction } from "@bitwarden/common/key-management/device-trust/abstractions/device-trust.service.abstraction"; +import { SecurityStateService } from "@bitwarden/common/key-management/security-state/abstractions/security-state.service"; +import { SignedSecurityState } from "@bitwarden/common/key-management/types"; +import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.service"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; +import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; +import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; +import { RegisterSdkService } from "@bitwarden/common/platform/abstractions/sdk/register-sdk.service"; +import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; +import { SymmetricCryptoKey } from "@bitwarden/common/platform/models/domain/symmetric-crypto-key"; +import { UserId } from "@bitwarden/common/types/guid"; +// eslint-disable-next-line no-restricted-imports +import { AnonLayoutWrapperDataService, DialogService, ToastService } from "@bitwarden/components"; +import { KeyService } from "@bitwarden/key-management"; + +import { LoginDecryptionOptionsComponent } from "./login-decryption-options.component"; +import { LoginDecryptionOptionsService } from "./login-decryption-options.service"; + +describe("LoginDecryptionOptionsComponent", () => { + let component: LoginDecryptionOptionsComponent; + let accountService: MockProxy; + let anonLayoutWrapperDataService: MockProxy; + let apiService: MockProxy; + let destroyRef: MockProxy; + let deviceTrustService: MockProxy; + let dialogService: MockProxy; + let formBuilder: FormBuilder; + let i18nService: MockProxy; + let keyService: MockProxy; + let loginDecryptionOptionsService: MockProxy; + let loginEmailService: MockProxy; + let messagingService: MockProxy; + let organizationApiService: MockProxy; + let passwordResetEnrollmentService: MockProxy; + let platformUtilsService: MockProxy; + let router: MockProxy; + let ssoLoginService: MockProxy; + let toastService: MockProxy; + let userDecryptionOptionsService: MockProxy; + let validationService: MockProxy; + let logoutService: MockProxy; + let registerSdkService: MockProxy; + let securityStateService: MockProxy; + let appIdService: MockProxy; + let configService: MockProxy; + let accountCryptographicStateService: MockProxy; + + const mockUserId = "user-id-123" as UserId; + const mockEmail = "test@example.com"; + const mockOrgId = "org-id-456"; + + beforeEach(() => { + accountService = mock(); + anonLayoutWrapperDataService = mock(); + apiService = mock(); + destroyRef = mock(); + deviceTrustService = mock(); + dialogService = mock(); + formBuilder = new FormBuilder(); + i18nService = mock(); + keyService = mock(); + loginDecryptionOptionsService = mock(); + loginEmailService = mock(); + messagingService = mock(); + organizationApiService = mock(); + passwordResetEnrollmentService = mock(); + platformUtilsService = mock(); + router = mock(); + ssoLoginService = mock(); + toastService = mock(); + userDecryptionOptionsService = mock(); + validationService = mock(); + logoutService = mock(); + registerSdkService = mock(); + securityStateService = mock(); + appIdService = mock(); + configService = mock(); + accountCryptographicStateService = mock(); + + // Setup default mocks + accountService.activeAccount$ = new BehaviorSubject({ + id: mockUserId, + email: mockEmail, + name: "Test User", + emailVerified: true, + creationDate: new Date().toISOString(), + }); + platformUtilsService.getClientType.mockReturnValue(ClientType.Browser); + deviceTrustService.getShouldTrustDevice.mockResolvedValue(true); + i18nService.t.mockImplementation((key: string) => key); + + component = new LoginDecryptionOptionsComponent( + accountService, + anonLayoutWrapperDataService, + apiService, + destroyRef, + deviceTrustService, + dialogService, + formBuilder, + i18nService, + keyService, + loginDecryptionOptionsService, + loginEmailService, + messagingService, + organizationApiService, + passwordResetEnrollmentService, + platformUtilsService, + router, + ssoLoginService, + toastService, + userDecryptionOptionsService, + validationService, + logoutService, + registerSdkService, + securityStateService, + appIdService, + configService, + accountCryptographicStateService, + ); + }); + + describe("createUser with feature flag enabled", () => { + let mockPostKeysForTdeRegistration: jest.Mock; + let mockRegistration: any; + let mockAuth: any; + let mockSdkValue: any; + let mockSdkRef: any; + let mockSdk: any; + let mockDeviceKey: string; + let mockDeviceKeyObj: SymmetricCryptoKey; + let mockUserKeyBytes: Uint8Array; + let mockPrivateKey: string; + let mockSignedPublicKey: string; + let mockSigningKey: string; + let mockSecurityState: SignedSecurityState; + + beforeEach(async () => { + // Mock asUuid to return the input value for test consistency + jest.mock("@bitwarden/common/platform/abstractions/sdk/sdk.service", () => ({ + asUuid: (x: any) => x, + })); + (Symbol as any).dispose = Symbol("dispose"); + + mockPrivateKey = "mock-private-key"; + mockSignedPublicKey = "mock-signed-public-key"; + mockSigningKey = "mock-signing-key"; + mockSecurityState = { + signature: "mock-signature", + payload: { + version: 2, + timestamp: Date.now(), + privateKeyHash: "mock-hash", + }, + } as any; + const deviceKeyBytes = new Uint8Array(32).fill(5); + mockDeviceKey = Buffer.from(deviceKeyBytes).toString("base64"); + mockDeviceKeyObj = SymmetricCryptoKey.fromString(mockDeviceKey); + mockUserKeyBytes = new Uint8Array(64); + + mockPostKeysForTdeRegistration = jest.fn().mockResolvedValue({ + account_cryptographic_state: { + V2: { + private_key: mockPrivateKey, + signed_public_key: mockSignedPublicKey, + signing_key: mockSigningKey, + security_state: mockSecurityState, + }, + }, + device_key: mockDeviceKey, + user_key: mockUserKeyBytes, + }); + + mockRegistration = { + post_keys_for_tde_registration: mockPostKeysForTdeRegistration, + }; + + mockAuth = { + registration: jest.fn().mockReturnValue(mockRegistration), + }; + + mockSdkValue = { + auth: jest.fn().mockReturnValue(mockAuth), + }; + + mockSdkRef = { + value: mockSdkValue, + [Symbol.dispose]: jest.fn(), + }; + + mockSdk = { + take: jest.fn().mockReturnValue(mockSdkRef), + }; + + registerSdkService.registerClient$ = jest.fn((userId: UserId) => of(mockSdk)) as any; + + // Setup for new user state + userDecryptionOptionsService.userDecryptionOptionsById$.mockReturnValue( + of({ + trustedDeviceOption: { + hasAdminApproval: false, + hasLoginApprovingDevice: false, + hasManageResetPasswordPermission: false, + isTdeOffboarding: false, + }, + hasMasterPassword: false, + keyConnectorOption: undefined, + }), + ); + + ssoLoginService.getActiveUserOrganizationSsoIdentifier.mockResolvedValue("org-identifier"); + organizationApiService.getAutoEnrollStatus.mockResolvedValue({ + id: mockOrgId, + resetPasswordEnabled: true, + } as any); + + // Initialize component to set up new user state + await component.ngOnInit(); + }); + + it("should use SDK v2 registration when feature flag is enabled", async () => { + // Arrange + configService.getFeatureFlag.mockResolvedValue(true); + loginDecryptionOptionsService.handleCreateUserSuccess.mockResolvedValue(undefined); + router.navigate.mockResolvedValue(true); + appIdService.getAppId.mockResolvedValue("mock-app-id"); + organizationApiService.getKeys.mockResolvedValue({ + publicKey: "mock-org-public-key", + privateKey: "mock-org-private-key", + } as any); + + // Act + await component["createUser"](); + + // Assert + expect(configService.getFeatureFlag).toHaveBeenCalledWith( + FeatureFlag.PM27279_V2RegistrationTdeJit, + ); + expect(appIdService.getAppId).toHaveBeenCalled(); + expect(organizationApiService.getKeys).toHaveBeenCalledWith(mockOrgId); + expect(registerSdkService.registerClient$).toHaveBeenCalledWith(mockUserId); + + // Verify SDK registration was called with correct parameters + expect(mockSdkValue.auth).toHaveBeenCalled(); + expect(mockAuth.registration).toHaveBeenCalled(); + expect(mockPostKeysForTdeRegistration).toHaveBeenCalledWith({ + org_id: mockOrgId, + org_public_key: "mock-org-public-key", + user_id: mockUserId, + device_identifier: "mock-app-id", + trust_device: true, + }); + + const expectedDeviceKey = mockDeviceKeyObj; + const expectedUserKey = new SymmetricCryptoKey(new Uint8Array(mockUserKeyBytes)); + + // Verify keys were set + expect(keyService.setPrivateKey).toHaveBeenCalledWith(mockPrivateKey, mockUserId); + expect(keyService.setSignedPublicKey).toHaveBeenCalledWith(mockSignedPublicKey, mockUserId); + expect(keyService.setUserSigningKey).toHaveBeenCalledWith(mockSigningKey, mockUserId); + expect(securityStateService.setAccountSecurityState).toHaveBeenCalledWith( + mockSecurityState, + mockUserId, + ); + expect(accountCryptographicStateService.setAccountCryptographicState).toHaveBeenCalledWith( + expect.objectContaining({ + V2: { + private_key: mockPrivateKey, + signed_public_key: mockSignedPublicKey, + signing_key: mockSigningKey, + security_state: mockSecurityState, + }, + }), + mockUserId, + ); + + expect(validationService.showError).not.toHaveBeenCalled(); + + // Verify device and user keys were persisted + expect(deviceTrustService.setDeviceKey).toHaveBeenCalledWith( + mockUserId, + expect.any(SymmetricCryptoKey), + ); + expect(keyService.setUserKey).toHaveBeenCalledWith( + expect.any(SymmetricCryptoKey), + mockUserId, + ); + + const [, deviceKeyArg] = deviceTrustService.setDeviceKey.mock.calls[0]; + const [userKeyArg] = keyService.setUserKey.mock.calls[0]; + + expect((deviceKeyArg as SymmetricCryptoKey).keyB64).toBe(expectedDeviceKey.keyB64); + expect((userKeyArg as SymmetricCryptoKey).keyB64).toBe(expectedUserKey.keyB64); + + // Verify success toast and navigation + expect(toastService.showToast).toHaveBeenCalledWith({ + variant: "success", + title: null, + message: "accountSuccessfullyCreated", + }); + expect(loginDecryptionOptionsService.handleCreateUserSuccess).toHaveBeenCalled(); + expect(router.navigate).toHaveBeenCalledWith(["/tabs/vault"]); + }); + + it("should use legacy registration when feature flag is disabled", async () => { + // Arrange + configService.getFeatureFlag.mockResolvedValue(false); + + const mockPublicKey = "mock-public-key"; + const mockPrivateKey = { + encryptedString: "mock-encrypted-private-key", + } as any; + + keyService.initAccount.mockResolvedValue({ + publicKey: mockPublicKey, + privateKey: mockPrivateKey, + } as any); + + apiService.postAccountKeys.mockResolvedValue(undefined); + passwordResetEnrollmentService.enroll.mockResolvedValue(undefined); + deviceTrustService.trustDevice.mockResolvedValue(undefined); + loginDecryptionOptionsService.handleCreateUserSuccess.mockResolvedValue(undefined); + router.navigate.mockResolvedValue(true); + + // Act + await component["createUser"](); + + // Assert + expect(configService.getFeatureFlag).toHaveBeenCalledWith( + FeatureFlag.PM27279_V2RegistrationTdeJit, + ); + expect(keyService.initAccount).toHaveBeenCalledWith(mockUserId); + expect(apiService.postAccountKeys).toHaveBeenCalledWith( + expect.objectContaining({ + publicKey: mockPublicKey, + encryptedPrivateKey: mockPrivateKey.encryptedString, + }), + ); + expect(passwordResetEnrollmentService.enroll).toHaveBeenCalledWith(mockOrgId); + expect(deviceTrustService.trustDevice).toHaveBeenCalledWith(mockUserId); + + // Verify success toast + expect(toastService.showToast).toHaveBeenCalledWith({ + variant: "success", + title: null, + message: "accountSuccessfullyCreated", + }); + + // Verify navigation + expect(loginDecryptionOptionsService.handleCreateUserSuccess).toHaveBeenCalled(); + expect(router.navigate).toHaveBeenCalledWith(["/tabs/vault"]); + }); + }); +}); diff --git a/libs/auth/src/angular/login-decryption-options/login-decryption-options.component.ts b/libs/auth/src/angular/login-decryption-options/login-decryption-options.component.ts index fb07069998b..06263ef7371 100644 --- a/libs/auth/src/angular/login-decryption-options/login-decryption-options.component.ts +++ b/libs/auth/src/angular/login-decryption-options/login-decryption-options.component.ts @@ -5,7 +5,17 @@ import { Component, DestroyRef, OnInit } from "@angular/core"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { FormBuilder, FormControl, ReactiveFormsModule } from "@angular/forms"; import { Router } from "@angular/router"; -import { catchError, defer, firstValueFrom, from, map, of, switchMap, throwError } from "rxjs"; +import { + catchError, + concatMap, + defer, + firstValueFrom, + from, + map, + of, + switchMap, + throwError, +} from "rxjs"; import { JslibModule } from "@bitwarden/angular/jslib.module"; import { @@ -20,13 +30,27 @@ import { AccountService } from "@bitwarden/common/auth/abstractions/account.serv import { PasswordResetEnrollmentServiceAbstraction } from "@bitwarden/common/auth/abstractions/password-reset-enrollment.service.abstraction"; import { SsoLoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/sso-login.service.abstraction"; import { ClientType } from "@bitwarden/common/enums"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; +import { AccountCryptographicStateService } from "@bitwarden/common/key-management/account-cryptography/account-cryptographic-state.service"; import { DeviceTrustServiceAbstraction } from "@bitwarden/common/key-management/device-trust/abstractions/device-trust.service.abstraction"; +import { SecurityStateService } from "@bitwarden/common/key-management/security-state/abstractions/security-state.service"; +import { + SignedPublicKey, + SignedSecurityState, + WrappedSigningKey, +} from "@bitwarden/common/key-management/types"; import { KeysRequest } from "@bitwarden/common/models/request/keys.request"; +import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.service"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; +import { RegisterSdkService } from "@bitwarden/common/platform/abstractions/sdk/register-sdk.service"; +import { asUuid } from "@bitwarden/common/platform/abstractions/sdk/sdk.service"; import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; +import { SymmetricCryptoKey } from "@bitwarden/common/platform/models/domain/symmetric-crypto-key"; import { UserId } from "@bitwarden/common/types/guid"; +import { DeviceKey, UserKey } from "@bitwarden/common/types/key"; // This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop. // eslint-disable-next-line no-restricted-imports import { @@ -40,6 +64,7 @@ import { TypographyModule, } from "@bitwarden/components"; import { KeyService } from "@bitwarden/key-management"; +import { OrganizationId as SdkOrganizationId, UserId as SdkUserId } from "@bitwarden/sdk-internal"; import { LoginDecryptionOptionsService } from "./login-decryption-options.service"; @@ -112,6 +137,11 @@ export class LoginDecryptionOptionsComponent implements OnInit { private userDecryptionOptionsService: UserDecryptionOptionsServiceAbstraction, private validationService: ValidationService, private logoutService: LogoutService, + private registerSdkService: RegisterSdkService, + private securityStateService: SecurityStateService, + private appIdService: AppIdService, + private configService: ConfigService, + private accountCryptographicStateService: AccountCryptographicStateService, ) { this.clientType = this.platformUtilsService.getClientType(); } @@ -251,9 +281,85 @@ export class LoginDecryptionOptionsComponent implements OnInit { } try { - const { publicKey, privateKey } = await this.keyService.initAccount(this.activeAccountId); - const keysRequest = new KeysRequest(publicKey, privateKey.encryptedString); - await this.apiService.postAccountKeys(keysRequest); + const useSdkV2Creation = await this.configService.getFeatureFlag( + FeatureFlag.PM27279_V2RegistrationTdeJit, + ); + if (useSdkV2Creation) { + const deviceIdentifier = await this.appIdService.getAppId(); + const userId = this.activeAccountId; + const organizationId = this.newUserOrgId; + + const orgKeyResponse = await this.organizationApiService.getKeys(organizationId); + const register_result = await firstValueFrom( + this.registerSdkService.registerClient$(userId).pipe( + concatMap(async (sdk) => { + if (!sdk) { + throw new Error("SDK not available"); + } + + using ref = sdk.take(); + return await ref.value + .auth() + .registration() + .post_keys_for_tde_registration({ + org_id: asUuid(organizationId), + org_public_key: orgKeyResponse.publicKey, + user_id: asUuid(userId), + device_identifier: deviceIdentifier, + trust_device: this.formGroup.value.rememberDevice, + }); + }), + ), + ); + // The keys returned here can only be v2 keys, since the SDK only implements returning V2 keys. + if ("V1" in register_result.account_cryptographic_state) { + throw new Error("Unexpected V1 account cryptographic state"); + } + + // Note: When SDK state management matures, these should be moved into post_keys_for_tde_registration + // Set account cryptography state + await this.accountCryptographicStateService.setAccountCryptographicState( + register_result.account_cryptographic_state, + userId, + ); + // Legacy individual states + await this.keyService.setPrivateKey( + register_result.account_cryptographic_state.V2.private_key, + userId, + ); + await this.keyService.setSignedPublicKey( + register_result.account_cryptographic_state.V2.signed_public_key as SignedPublicKey, + userId, + ); + await this.keyService.setUserSigningKey( + register_result.account_cryptographic_state.V2.signing_key as WrappedSigningKey, + userId, + ); + await this.securityStateService.setAccountSecurityState( + register_result.account_cryptographic_state.V2.security_state as SignedSecurityState, + userId, + ); + + // TDE unlock + await this.deviceTrustService.setDeviceKey( + userId, + SymmetricCryptoKey.fromString(register_result.device_key) as DeviceKey, + ); + + // Set user key - user is now unlocked + await this.keyService.setUserKey( + SymmetricCryptoKey.fromString(register_result.user_key) as UserKey, + userId, + ); + } else { + const { publicKey, privateKey } = await this.keyService.initAccount(this.activeAccountId); + const keysRequest = new KeysRequest(publicKey, privateKey.encryptedString); + await this.apiService.postAccountKeys(keysRequest); + await this.passwordResetEnrollmentService.enroll(this.newUserOrgId); + if (this.formGroup.value.rememberDevice) { + await this.deviceTrustService.trustDevice(this.activeAccountId); + } + } this.toastService.showToast({ variant: "success", @@ -261,12 +367,6 @@ export class LoginDecryptionOptionsComponent implements OnInit { message: this.i18nService.t("accountSuccessfullyCreated"), }); - await this.passwordResetEnrollmentService.enroll(this.newUserOrgId); - - if (this.formGroup.value.rememberDevice) { - await this.deviceTrustService.trustDevice(this.activeAccountId); - } - await this.loginDecryptionOptionsService.handleCreateUserSuccess(); if (this.clientType === ClientType.Desktop) { diff --git a/libs/common/src/enums/feature-flag.enum.ts b/libs/common/src/enums/feature-flag.enum.ts index f905c62288e..08155bf3af2 100644 --- a/libs/common/src/enums/feature-flag.enum.ts +++ b/libs/common/src/enums/feature-flag.enum.ts @@ -44,6 +44,7 @@ export enum FeatureFlag { NoLogoutOnKdfChange = "pm-23995-no-logout-on-kdf-change", DataRecoveryTool = "pm-28813-data-recovery-tool", ConsolidatedSessionTimeoutComponent = "pm-26056-consolidated-session-timeout-component", + PM27279_V2RegistrationTdeJit = "pm-27279-v2-registration-tde-jit", /* Tools */ DesktopSendUIRefresh = "desktop-send-ui-refresh", @@ -154,6 +155,7 @@ export const DefaultFeatureFlagValue = { [FeatureFlag.NoLogoutOnKdfChange]: FALSE, [FeatureFlag.DataRecoveryTool]: FALSE, [FeatureFlag.ConsolidatedSessionTimeoutComponent]: FALSE, + [FeatureFlag.PM27279_V2RegistrationTdeJit]: FALSE, /* Platform */ [FeatureFlag.IpcChannelFramework]: FALSE, diff --git a/libs/common/src/key-management/device-trust/abstractions/device-trust.service.abstraction.ts b/libs/common/src/key-management/device-trust/abstractions/device-trust.service.abstraction.ts index 2bc99e5e5c2..ceff220fe42 100644 --- a/libs/common/src/key-management/device-trust/abstractions/device-trust.service.abstraction.ts +++ b/libs/common/src/key-management/device-trust/abstractions/device-trust.service.abstraction.ts @@ -39,6 +39,7 @@ export abstract class DeviceTrustServiceAbstraction { /** Retrieves the device key if it exists from state or secure storage if supported for the active user. */ abstract getDeviceKey(userId: UserId): Promise; + abstract setDeviceKey(userId: UserId, deviceKey: DeviceKey | null): Promise; abstract decryptUserKeyWithDeviceKey( userId: UserId, encryptedDevicePrivateKey: EncString, diff --git a/libs/common/src/key-management/device-trust/services/device-trust.service.implementation.ts b/libs/common/src/key-management/device-trust/services/device-trust.service.implementation.ts index 59bd7bc11f2..518d16781ab 100644 --- a/libs/common/src/key-management/device-trust/services/device-trust.service.implementation.ts +++ b/libs/common/src/key-management/device-trust/services/device-trust.service.implementation.ts @@ -356,7 +356,7 @@ export class DeviceTrustService implements DeviceTrustServiceAbstraction { } } - private async setDeviceKey(userId: UserId, deviceKey: DeviceKey | null): Promise { + async setDeviceKey(userId: UserId, deviceKey: DeviceKey | null): Promise { if (!userId) { throw new Error("UserId is required. Cannot set device key."); } diff --git a/package-lock.json b/package-lock.json index deb3a9f261c..014c291c38c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,8 +23,8 @@ "@angular/platform-browser": "20.3.15", "@angular/platform-browser-dynamic": "20.3.15", "@angular/router": "20.3.15", - "@bitwarden/commercial-sdk-internal": "0.2.0-main.433", - "@bitwarden/sdk-internal": "0.2.0-main.433", + "@bitwarden/commercial-sdk-internal": "0.2.0-main.439", + "@bitwarden/sdk-internal": "0.2.0-main.439", "@electron/fuses": "1.8.0", "@emotion/css": "11.13.5", "@koa/multer": "4.0.0", @@ -4973,9 +4973,9 @@ "link": true }, "node_modules/@bitwarden/commercial-sdk-internal": { - "version": "0.2.0-main.433", - "resolved": "https://registry.npmjs.org/@bitwarden/commercial-sdk-internal/-/commercial-sdk-internal-0.2.0-main.433.tgz", - "integrity": "sha512-/eFzw+BUHxAmT75kKUn1r9MFsJH/GZpc3ljkjNjAqtvb3L+fz8VTHTe7FoloSoZEnAnp8OWOZy7n4DavT/XDiw==", + "version": "0.2.0-main.439", + "resolved": "https://registry.npmjs.org/@bitwarden/commercial-sdk-internal/-/commercial-sdk-internal-0.2.0-main.439.tgz", + "integrity": "sha512-Wujtym00U7XMEsf9zJ3/0Ggw9WmMcIpE9hMtcLryloX182118vnzkEQbEldqtywpMHiDsD9VmP6RiZ725nnUIQ==", "license": "BITWARDEN SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT", "dependencies": { "type-fest": "^4.41.0" @@ -5078,9 +5078,9 @@ "link": true }, "node_modules/@bitwarden/sdk-internal": { - "version": "0.2.0-main.433", - "resolved": "https://registry.npmjs.org/@bitwarden/sdk-internal/-/sdk-internal-0.2.0-main.433.tgz", - "integrity": "sha512-m2PnYR0ifF0BgZ63aAt8eag0v7LeEGTJ0sa7UMbTWLwmsNnHug4u7jxIJl0WaVILNeWWK8iD/WSiw3EJeb7Fmw==", + "version": "0.2.0-main.439", + "resolved": "https://registry.npmjs.org/@bitwarden/sdk-internal/-/sdk-internal-0.2.0-main.439.tgz", + "integrity": "sha512-uvIS8erGmzgWCZom7Kt78C4n4tbjfZuTCn7+y2+E8BTtLBqIZNtl4kC0tNh8c4GUWsmoIYlbQyz+HymWQ7J+QA==", "license": "GPL-3.0", "dependencies": { "type-fest": "^4.41.0" diff --git a/package.json b/package.json index f4c484f1c61..29ee9683464 100644 --- a/package.json +++ b/package.json @@ -162,8 +162,8 @@ "@angular/platform-browser": "20.3.15", "@angular/platform-browser-dynamic": "20.3.15", "@angular/router": "20.3.15", - "@bitwarden/sdk-internal": "0.2.0-main.433", - "@bitwarden/commercial-sdk-internal": "0.2.0-main.433", + "@bitwarden/sdk-internal": "0.2.0-main.439", + "@bitwarden/commercial-sdk-internal": "0.2.0-main.439", "@electron/fuses": "1.8.0", "@emotion/css": "11.13.5", "@koa/multer": "4.0.0", From 735f885091d020be656387c7b2afd9bf4dc44420 Mon Sep 17 00:00:00 2001 From: Vicki League Date: Tue, 23 Dec 2025 10:55:33 -0500 Subject: [PATCH 24/81] [PM-30141] Fix page height and a11y by removing extra
(#18099) --- .../send-created/send-created.component.html | 72 +++++++++---------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/apps/browser/src/tools/popup/send-v2/send-created/send-created.component.html b/apps/browser/src/tools/popup/send-v2/send-created/send-created.component.html index 16711fabbf4..828c1667c57 100644 --- a/apps/browser/src/tools/popup/send-v2/send-created/send-created.component.html +++ b/apps/browser/src/tools/popup/send-v2/send-created/send-created.component.html @@ -1,39 +1,37 @@ -
- - - - - - + + + + + + -
-
- -
-

- {{ "createdSendSuccessfully" | i18n }} -

-

- {{ formatExpirationDate() }} -

- +
+
+
- - - - - -
+

+ {{ "createdSendSuccessfully" | i18n }} +

+

+ {{ formatExpirationDate() }} +

+ +
+ + + + + From 77ccc3eb49c1dce3b4f7837ddf2f26a814497f50 Mon Sep 17 00:00:00 2001 From: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:24:23 -0800 Subject: [PATCH 25/81] [PM-26656] - remove AutofillConfirmation feature flag (#18074) * remove AutofillConfirmation feature flag * fix tests. remove feature flag tests --- .../item-more-options.component.html | 11 -------- .../item-more-options.component.spec.ts | 27 +------------------ .../item-more-options.component.ts | 20 +------------- libs/common/src/enums/feature-flag.enum.ts | 2 -- 4 files changed, 2 insertions(+), 58 deletions(-) diff --git a/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.html b/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.html index 5c5171ac81d..b86ec24fd20 100644 --- a/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.html +++ b/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.html @@ -13,17 +13,6 @@ - - @if (!(autofillConfirmationFlagEnabled$ | async)) { - - } diff --git a/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.spec.ts b/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.spec.ts index b9f48b7407b..bd9ce108522 100644 --- a/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.spec.ts +++ b/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.spec.ts @@ -13,7 +13,6 @@ import { UriMatchStrategy, UriMatchStrategySetting, } from "@bitwarden/common/models/domain/domain-service"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { CipherArchiveService } from "@bitwarden/common/vault/abstractions/cipher-archive.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; @@ -40,10 +39,6 @@ describe("ItemMoreOptionsComponent", () => { openSimpleDialog: jest.fn().mockResolvedValue(true), open: jest.fn(), }; - const featureFlag$ = new BehaviorSubject(false); - const configService = { - getFeatureFlag$: jest.fn().mockImplementation(() => featureFlag$.asObservable()), - }; const cipherService = { getFullCipherView: jest.fn(), encrypt: jest.fn(), @@ -93,7 +88,6 @@ describe("ItemMoreOptionsComponent", () => { TestBed.configureTestingModule({ imports: [ItemMoreOptionsComponent, NoopAnimationsModule], providers: [ - { provide: ConfigService, useValue: configService }, { provide: CipherService, useValue: cipherService }, { provide: VaultPopupAutofillService, useValue: autofillSvc }, @@ -152,22 +146,6 @@ describe("ItemMoreOptionsComponent", () => { expect(passwordRepromptService.passwordRepromptCheck).toHaveBeenCalledWith(baseCipher); }); - it("calls the autofill service to autofill without showing the confirmation dialog when the feature flag is disabled", async () => { - autofillSvc.currentAutofillTab$.next({ url: "https://page.example.com" }); - - await component.doAutofill(); - - expect(cipherService.getFullCipherView).toHaveBeenCalled(); - expect(autofillSvc.doAutofill).toHaveBeenCalledTimes(1); - expect(autofillSvc.doAutofill).toHaveBeenCalledWith( - expect.objectContaining({ id: "cipher-1" }), - true, - true, - ); - expect(autofillSvc.doAutofillAndSave).not.toHaveBeenCalled(); - expect(dialogService.openSimpleDialog).not.toHaveBeenCalled(); - }); - it("does nothing if the user fails master password reprompt", async () => { baseCipher.reprompt = 2; // Master Password reprompt enabled autofillSvc.currentAutofillTab$.next({ url: "https://page.example.com" }); @@ -181,7 +159,6 @@ describe("ItemMoreOptionsComponent", () => { }); it("does not show the exact match dialog when the default match strategy is Exact and autofill confirmation is not to be shown", async () => { - // autofill confirmation dialog is not shown when either the feature flag is disabled uriMatchStrategy$.next(UriMatchStrategy.Exact); autofillSvc.currentAutofillTab$.next({ url: "https://page.example.com/path" }); await component.doAutofill(); @@ -191,8 +168,6 @@ describe("ItemMoreOptionsComponent", () => { describe("autofill confirmation dialog", () => { beforeEach(() => { - // autofill confirmation dialog is shown when feature flag is enabled - featureFlag$.next(true); uriMatchStrategy$.next(UriMatchStrategy.Domain); passwordRepromptService.passwordRepromptCheck.mockResolvedValue(true); }); @@ -206,7 +181,7 @@ describe("ItemMoreOptionsComponent", () => { expect(passwordRepromptService.passwordRepromptCheck).toHaveBeenCalledWith(baseCipher); }); - it("opens the autofill confirmation dialog with filtered saved URLs when the feature flag is enabled", async () => { + it("opens the autofill confirmation dialog with filtered saved URLs", async () => { autofillSvc.currentAutofillTab$.next({ url: "https://page.example.com/path" }); const openSpy = mockConfirmDialogResult(AutofillConfirmationDialogResult.Canceled); diff --git a/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.ts b/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.ts index b65acc6ca8e..c4353e17bef 100644 --- a/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.ts +++ b/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.ts @@ -11,9 +11,7 @@ import { OrganizationService } from "@bitwarden/common/admin-console/abstraction import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; import { DomainSettingsService } from "@bitwarden/common/autofill/services/domain-settings.service"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { UriMatchStrategy } from "@bitwarden/common/models/domain/domain-service"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { CipherId, UserId } from "@bitwarden/common/types/guid"; import { CipherArchiveService } from "@bitwarden/common/vault/abstractions/cipher-archive.service"; @@ -37,7 +35,6 @@ import { PasswordRepromptService } from "@bitwarden/vault"; import { BrowserPremiumUpgradePromptService } from "../../../services/browser-premium-upgrade-prompt.service"; import { VaultPopupAutofillService } from "../../../services/vault-popup-autofill.service"; -import { VaultPopupItemsService } from "../../../services/vault-popup-items.service"; import { AddEditQueryParams } from "../add-edit/add-edit-v2.component"; import { AutofillConfirmationDialogComponent, @@ -98,10 +95,6 @@ export class ItemMoreOptionsComponent { protected autofillAllowed$ = this.vaultPopupAutofillService.autofillAllowed$; - protected autofillConfirmationFlagEnabled$ = this.configService - .getFeatureFlag$(FeatureFlag.AutofillConfirmation) - .pipe(map((isFeatureFlagEnabled) => isFeatureFlagEnabled)); - protected uriMatchStrategy$ = this.domainSettingsService.resolvedDefaultUriMatchStrategy$; /** @@ -166,8 +159,6 @@ export class ItemMoreOptionsComponent { private collectionService: CollectionService, private restrictedItemTypesService: RestrictedItemTypesService, private cipherArchiveService: CipherArchiveService, - private configService: ConfigService, - private vaultPopupItemsService: VaultPopupItemsService, private domainSettingsService: DomainSettingsService, ) {} @@ -216,13 +207,9 @@ export class ItemMoreOptionsComponent { const cipherHasAllExactMatchLoginUris = uris.length > 0 && uris.every((u) => u.uri && u.match === UriMatchStrategy.Exact); - const showAutofillConfirmation = await firstValueFrom(this.autofillConfirmationFlagEnabled$); const uriMatchStrategy = await firstValueFrom(this.uriMatchStrategy$); - if ( - showAutofillConfirmation && - (cipherHasAllExactMatchLoginUris || uriMatchStrategy === UriMatchStrategy.Exact) - ) { + if (cipherHasAllExactMatchLoginUris || uriMatchStrategy === UriMatchStrategy.Exact) { await this.dialogService.openSimpleDialog({ title: { key: "cannotAutofill" }, content: { key: "cannotAutofillExactMatch" }, @@ -233,11 +220,6 @@ export class ItemMoreOptionsComponent { return; } - if (!showAutofillConfirmation) { - await this.vaultPopupAutofillService.doAutofill(cipher, true, true); - return; - } - const currentTab = await firstValueFrom(this.vaultPopupAutofillService.currentAutofillTab$); if (!currentTab?.url) { diff --git a/libs/common/src/enums/feature-flag.enum.ts b/libs/common/src/enums/feature-flag.enum.ts index 08155bf3af2..837418f92cf 100644 --- a/libs/common/src/enums/feature-flag.enum.ts +++ b/libs/common/src/enums/feature-flag.enum.ts @@ -63,7 +63,6 @@ export enum FeatureFlag { PM22134SdkCipherListView = "pm-22134-sdk-cipher-list-view", PM22136_SdkCipherEncryption = "pm-22136-sdk-cipher-encryption", CipherKeyEncryption = "cipher-key-encryption", - AutofillConfirmation = "pm-25083-autofill-confirm-from-search", RiskInsightsForPremium = "pm-23904-risk-insights-for-premium", VaultLoadingSkeletons = "pm-25081-vault-skeleton-loaders", BrowserPremiumSpotlight = "pm-23384-browser-premium-spotlight", @@ -126,7 +125,6 @@ export const DefaultFeatureFlagValue = { [FeatureFlag.PM19941MigrateCipherDomainToSdk]: FALSE, [FeatureFlag.PM22134SdkCipherListView]: FALSE, [FeatureFlag.PM22136_SdkCipherEncryption]: FALSE, - [FeatureFlag.AutofillConfirmation]: FALSE, [FeatureFlag.RiskInsightsForPremium]: FALSE, [FeatureFlag.VaultLoadingSkeletons]: FALSE, [FeatureFlag.BrowserPremiumSpotlight]: FALSE, From 99305a534220fbdfd42d5297f88355ad0d70e770 Mon Sep 17 00:00:00 2001 From: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com> Date: Wed, 24 Dec 2025 10:14:52 -0800 Subject: [PATCH 26/81] only pass strings to i18n pipe (#17978) --- .../autofill-confirmation-dialog.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/browser/src/vault/popup/components/vault-v2/autofill-confirmation-dialog/autofill-confirmation-dialog.component.html b/apps/browser/src/vault/popup/components/vault-v2/autofill-confirmation-dialog/autofill-confirmation-dialog.component.html index 88bff47191a..d8c12122120 100644 --- a/apps/browser/src/vault/popup/components/vault-v2/autofill-confirmation-dialog/autofill-confirmation-dialog.component.html +++ b/apps/browser/src/vault/popup/components/vault-v2/autofill-confirmation-dialog/autofill-confirmation-dialog.component.html @@ -15,8 +15,8 @@ } @if (savedUrls().length > 1) {
-

- {{ "savedWebsites" | i18n: savedUrls().length }} +

+ {{ "savedWebsites" | i18n: savedUrls().length.toString() }}