git: 3002ca00eb8f - main - security/bitwarden-cli: Update to 2026.7.0

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Sat, 25 Jul 2026 04:32:09 UTC
The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3002ca00eb8f1f7679e5aa419e69e6496b354929

commit 3002ca00eb8f1f7679e5aa419e69e6496b354929
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2026-07-25 04:30:23 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2026-07-25 04:31:18 +0000

    security/bitwarden-cli: Update to 2026.7.0
    
    Changelog: https://github.com/bitwarden/clients/releases/tag/cli-v2026.7.0
    
    Reported by:    GitHub (watch releases)
---
 security/bitwarden-cli/Makefile                    |    2 +-
 security/bitwarden-cli/distinfo                    |   10 +-
 .../files/packagejsons/apps/browser/package.json   |    6 +-
 .../files/packagejsons/apps/cli/package.json       |   14 +-
 .../apps/desktop/desktop_native/napi/package.json  |    2 +-
 .../files/packagejsons/apps/desktop/package.json   |    4 +-
 .../files/packagejsons/apps/web/package.json       |    2 +-
 .../files/packagejsons/libs/pam/package.json       |   11 +
 .../files/packagejsons/package-lock.json           | 1994 ++++++++++++++------
 .../bitwarden-cli/files/packagejsons/package.json  |   55 +-
 10 files changed, 1433 insertions(+), 667 deletions(-)

diff --git a/security/bitwarden-cli/Makefile b/security/bitwarden-cli/Makefile
index ebb34dcdfdd3..757684a30724 100644
--- a/security/bitwarden-cli/Makefile
+++ b/security/bitwarden-cli/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	bitwarden-cli
 DISTVERSIONPREFIX=	cli-v
-DISTVERSION=	2026.6.0
+DISTVERSION=	2026.7.0
 CATEGORIES=	security
 MASTER_SITES=	https://nodejs.org/dist/v${PKG_NODE_VER}/:node
 DISTFILES=	node-v${PKG_NODE_VER}${EXTRACT_SUFX}:node
diff --git a/security/bitwarden-cli/distinfo b/security/bitwarden-cli/distinfo
index f116040f5524..d905b1ba2a9d 100644
--- a/security/bitwarden-cli/distinfo
+++ b/security/bitwarden-cli/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1782464402
+TIMESTAMP = 1784859489
 SHA256 (node-v22.15.1.tar.gz) = 38aea029f8818f7783f273fbc70dcf930f9ef54bdd49c5f90c0152caec7a57be
 SIZE (node-v22.15.1.tar.gz) = 100310295
-SHA256 (bitwarden-cli-2026.6.0-node-modules.tar.gz) = 0d70249eed3c1dd4187fef7095af58fd3acbdf1bf2a6d843aca8d5527c978fde
-SIZE (bitwarden-cli-2026.6.0-node-modules.tar.gz) = 333564494
-SHA256 (bitwarden-clients-cli-v2026.6.0_GH0.tar.gz) = 1c6438398b2995263094aba69ae39330d30e6dfdeefbba5ffca7ff76a9aee6c2
-SIZE (bitwarden-clients-cli-v2026.6.0_GH0.tar.gz) = 41617316
+SHA256 (bitwarden-cli-2026.7.0-node-modules.tar.gz) = a9b815f573a32329d21c7dd0da06d58c6e22bfe88dd678ee5ebdd12ec9d53d61
+SIZE (bitwarden-cli-2026.7.0-node-modules.tar.gz) = 340950168
+SHA256 (bitwarden-clients-cli-v2026.7.0_GH0.tar.gz) = cb5496999537d8b947bf8c995479be4055d1807f438e33f9a9fe2d38c5411343
+SIZE (bitwarden-clients-cli-v2026.7.0_GH0.tar.gz) = 42459167
diff --git a/security/bitwarden-cli/files/packagejsons/apps/browser/package.json b/security/bitwarden-cli/files/packagejsons/apps/browser/package.json
index cad7f05ef852..8d1b9d38d89c 100644
--- a/security/bitwarden-cli/files/packagejsons/apps/browser/package.json
+++ b/security/bitwarden-cli/files/packagejsons/apps/browser/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@bitwarden/browser",
-  "version": "2026.6.0",
+  "version": "2026.7.0",
   "scripts": {
     "build": "npm run build:chrome",
     "build:bit": "npm run build:bit:chrome",
@@ -41,8 +41,12 @@
     "build:bit:prod:opera": "cross-env NODE_ENV=production npm run build:bit:opera",
     "build:prod:safari": "cross-env NODE_ENV=production npm run build:safari",
     "build:bit:prod:safari": "cross-env NODE_ENV=production npm run build:bit:safari",
+    "build:beta:chrome": "cross-env CHANNEL=beta npm run build:prod:chrome",
+    "build:bit:beta:chrome": "cross-env CHANNEL=beta npm run build:bit:prod:chrome",
     "dist:chrome": "npm run build:prod:chrome && mkdir -p dist && ./scripts/compress.sh dist-chrome.zip",
     "dist:bit:chrome": "npm run build:bit:prod:chrome && mkdir -p dist && ./scripts/compress.sh bit-dist-chrome.zip",
+    "dist:beta:chrome": "npm run build:beta:chrome && mkdir -p dist && ./scripts/compress.sh dist-chrome.zip",
+    "dist:bit:beta:chrome": "npm run build:bit:beta:chrome && mkdir -p dist && ./scripts/compress.sh bit-dist-chrome.zip",
     "dist:edge": "npm run build:prod:edge && mkdir -p dist && ./scripts/compress.sh dist-edge.zip",
     "dist:bit:edge": "npm run build:bit:prod:edge && mkdir -p dist && ./scripts/compress.sh bit-dist-edge.zip",
     "dist:firefox": "npm run build:prod:firefox && mkdir -p dist && ./scripts/compress.sh dist-firefox.zip",
diff --git a/security/bitwarden-cli/files/packagejsons/apps/cli/package.json b/security/bitwarden-cli/files/packagejsons/apps/cli/package.json
index 7dec6fbd01d2..ab9c94abd303 100644
--- a/security/bitwarden-cli/files/packagejsons/apps/cli/package.json
+++ b/security/bitwarden-cli/files/packagejsons/apps/cli/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@bitwarden/cli",
   "description": "A secure and free password manager for all of your devices.",
-  "version": "2026.6.0",
+  "version": "2026.7.0",
   "keywords": [
     "bitwarden",
     "password",
@@ -64,14 +64,14 @@
   },
   "dependencies": {
     "@koa/multer": "4.0.0",
-    "@koa/router": "15.5.0",
+    "@koa/router": "15.6.0",
     "big-integer": "1.6.52",
     "browser-hrtime": "1.1.8",
     "chalk": "4.1.2",
     "commander": "14.0.0",
     "core-js": "3.49.0",
-    "form-data": "4.0.4",
-    "https-proxy-agent": "9.0.0",
+    "form-data": "4.0.6",
+    "https-proxy-agent": "9.1.0",
     "inquirer": "8.2.6",
     "jsdom": "26.1.0",
     "jszip": "3.10.1",
@@ -80,7 +80,7 @@
     "koa-json": "2.0.2",
     "lowdb": "1.0.0",
     "lunr": "2.3.9",
-    "multer": "2.1.1",
+    "multer": "2.2.0",
     "node-fetch": "2.7.0",
     "node-forge": "1.4.0",
     "open": "8.4.2",
@@ -90,5 +90,9 @@
     "semver": "7.7.3",
     "tldts": "7.4.2",
     "zxcvbn": "4.4.2"
+  },
+  "engines": {
+    "node": "~22",
+    "npm": "~10"
   }
 }
diff --git a/security/bitwarden-cli/files/packagejsons/apps/desktop/desktop_native/napi/package.json b/security/bitwarden-cli/files/packagejsons/apps/desktop/desktop_native/napi/package.json
index c9fdd90e9e9f..3b1038841079 100644
--- a/security/bitwarden-cli/files/packagejsons/apps/desktop/desktop_native/napi/package.json
+++ b/security/bitwarden-cli/files/packagejsons/apps/desktop/desktop_native/napi/package.json
@@ -9,7 +9,7 @@
   "author": "",
   "license": "GPL-3.0",
   "devDependencies": {
-    "@napi-rs/cli": "3.5.1"
+    "@napi-rs/cli": "3.7.2"
   },
   "napi": {
     "binaryName": "desktop_napi",
diff --git a/security/bitwarden-cli/files/packagejsons/apps/desktop/package.json b/security/bitwarden-cli/files/packagejsons/apps/desktop/package.json
index d8d9613634a1..120a0d7df926 100644
--- a/security/bitwarden-cli/files/packagejsons/apps/desktop/package.json
+++ b/security/bitwarden-cli/files/packagejsons/apps/desktop/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@bitwarden/desktop",
   "description": "A secure and free password manager for all of your devices.",
-  "version": "2026.6.0",
+  "version": "2026.7.0",
   "keywords": [
     "bitwarden",
     "password",
@@ -46,10 +46,12 @@
     "pack:lin": "npm run clean:dist && electron-builder --linux --x64 -p never && export SNAP_FILE=$(realpath ./dist/bitwarden_*.snap) && unsquashfs -d ./dist/tmp-snap/ $SNAP_FILE && mkdir -p ./dist/tmp-snap/meta/polkit/ && cp ./resources/com.bitwarden.desktop.policy  ./dist/tmp-snap/meta/polkit/polkit.com.bitwarden.desktop.policy && rm $SNAP_FILE && snap pack --compression=lzo ./dist/tmp-snap/ && mv ./*.snap ./dist/ && rm -rf ./dist/tmp-snap/ && cp ./resources/com.bitwarden.desktop.desktop ./dist/linux-unpacked/resources && cp -r ./resources/icons ./dist/linux-unpacked/resources && tar -czvf ./dist/bitwarden_desktop_x64.tar.gz -C ./dist/linux-unpacked/ .",
     "pack:lin:arm64": "npm run clean:dist && electron-builder --linux --arm64 -p never && export SNAP_FILE=$(realpath ./dist/bitwarden_*.snap) && unsquashfs -d ./dist/tmp-snap/ $SNAP_FILE && mkdir -p ./dist/tmp-snap/meta/polkit/ && cp ./resources/com.bitwarden.desktop.policy  ./dist/tmp-snap/meta/polkit/polkit.com.bitwarden.desktop.policy && rm $SNAP_FILE && snap pack --compression=lzo ./dist/tmp-snap/ && mv ./*.snap ./dist/ && rm -rf ./dist/tmp-snap/ && cp ./resources/com.bitwarden.desktop.desktop ./dist/linux-arm64-unpacked/resources && cp -r ./resources/icons ./dist/linux-arm64-unpacked/resources && tar -czvf ./dist/bitwarden_desktop_arm64.tar.gz -C ./dist/linux-arm64-unpacked/ .",
     "pack:mac": "npm run clean:dist && electron-builder --mac --universal -p never",
+    "pack:mac:beta": "npm run clean:dist && electron-builder --config electron-builder.beta.json --mac --universal -p never",
     "pack:mac:with-extension": "npm run clean:dist && npm run build:macos-extension:mac && electron-builder --mac --universal -p never",
     "pack:mac:arm64": "npm run clean:dist && electron-builder --mac --arm64 -p never",
     "pack:mac:mas": "npm run clean:dist && npm run build:macos-extension:mas && electron-builder --mac mas --universal -p never -c.mac.identity=null",
     "pack:mac:masdev": "npm run clean:dist && electron-builder --mac mas-dev --universal -p never -c.mac.identity=null -c.mas.identity=$CSC_NAME -c.mas.provisioningProfile=bitwarden_desktop_developer_id.provisionprofile -c.mas.entitlements=resources/entitlements.mas.autofill-enabled.plist",
+    "pack:mac:masdev:arm64": "npm run clean:dist && electron-builder --mac mas-dev --arm64 -p never -c.mac.identity=null -c.mas.identity=$CSC_NAME -c.mas.provisioningProfile=bitwarden_desktop_developer_id.provisionprofile -c.mas.entitlements=resources/entitlements.mas.autofill-enabled.plist",
     "pack:local:mac": "npm run clean:dist && npm run build:macos-extension:masdev && electron-builder --mac mas-dev --universal -p never -c.mac.provisioningProfile=\"\" -c.mas.provisioningProfile=\"\"",
     "pack:win": "npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p never",
     "pack:win:beta": "npm run clean:dist && electron-builder --config electron-builder.beta.json --win --x64 --arm64 --ia32 -p never",
diff --git a/security/bitwarden-cli/files/packagejsons/apps/web/package.json b/security/bitwarden-cli/files/packagejsons/apps/web/package.json
index 264cb9f24274..3ad671395f34 100644
--- a/security/bitwarden-cli/files/packagejsons/apps/web/package.json
+++ b/security/bitwarden-cli/files/packagejsons/apps/web/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@bitwarden/web-vault",
-  "version": "2026.6.2",
+  "version": "2026.7.0",
   "scripts": {
     "build:oss": "webpack",
     "build:bit": "webpack -c ../../bitwarden_license/bit-web/webpack.config.js",
diff --git a/security/bitwarden-cli/files/packagejsons/libs/pam/package.json b/security/bitwarden-cli/files/packagejsons/libs/pam/package.json
new file mode 100644
index 000000000000..110041f4764d
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/libs/pam/package.json
@@ -0,0 +1,11 @@
+{
+  "name": "@bitwarden/pam",
+  "version": "0.0.1",
+  "description": "Privileged Access Management (PAM) feature library",
+  "private": true,
+  "type": "commonjs",
+  "main": "index.js",
+  "types": "index.d.ts",
+  "license": "GPL-3.0",
+  "author": "pam"
+}
diff --git a/security/bitwarden-cli/files/packagejsons/package-lock.json b/security/bitwarden-cli/files/packagejsons/package-lock.json
index e46ae9248a0d..1f8f6f28a2e4 100644
--- a/security/bitwarden-cli/files/packagejsons/package-lock.json
+++ b/security/bitwarden-cli/files/packagejsons/package-lock.json
@@ -14,22 +14,23 @@
         "libs/**/*"
       ],
       "dependencies": {
-        "@angular/animations": "21.2.11",
+        "@angular/animations": "21.2.17",
         "@angular/cdk": "21.2.9",
-        "@angular/common": "21.2.11",
-        "@angular/compiler": "21.2.11",
-        "@angular/core": "21.2.11",
-        "@angular/forms": "21.2.11",
-        "@angular/platform-browser": "21.2.11",
-        "@angular/platform-browser-dynamic": "21.2.11",
-        "@angular/router": "21.2.11",
-        "@bitwarden/commercial-sdk-internal": "0.2.0-main.841",
+        "@angular/common": "21.2.17",
+        "@angular/compiler": "21.2.17",
+        "@angular/core": "21.2.17",
+        "@angular/forms": "21.2.17",
+        "@angular/platform-browser": "21.2.17",
+        "@angular/platform-browser-dynamic": "21.2.17",
+        "@angular/router": "21.2.17",
+        "@bitwarden/commercial-sdk-internal": "0.2.0-main.883",
         "@bitwarden/desktop-napi": "file:apps/desktop/desktop_native/napi",
-        "@bitwarden/sdk-internal": "0.2.0-main.841",
+        "@bitwarden/sdk-internal": "0.2.0-main.883",
+        "@bufbuild/protobuf": "2.11.0",
         "@electron/fuses": "2.1.1",
         "@emotion/css": "11.13.5",
         "@koa/multer": "4.0.0",
-        "@koa/router": "15.5.0",
+        "@koa/router": "15.6.0",
         "@microsoft/signalr": "10.0.0",
         "@microsoft/signalr-protocol-msgpack": "10.0.0",
         "@ng-select/ng-select": "21.8.2",
@@ -42,8 +43,8 @@
         "chartjs-adapter-date-fns": "3.0.0",
         "commander": "14.0.0",
         "core-js": "3.49.0",
-        "form-data": "4.0.4",
-        "https-proxy-agent": "9.0.0",
+        "form-data": "4.0.6",
+        "https-proxy-agent": "9.1.0",
         "inquirer": "8.2.6",
         "jsdom": "26.1.0",
         "jszip": "3.10.1",
@@ -53,11 +54,11 @@
         "lit": "3.3.1",
         "lowdb": "1.0.0",
         "lunr": "2.3.9",
-        "multer": "2.1.1",
+        "multer": "2.2.0",
         "ngx-toastr": "19.1.0",
         "node-fetch": "2.7.0",
         "node-forge": "1.4.0",
-        "oidc-client-ts": "2.5.0",
+        "oauth4webapi": "3.8.6",
         "open": "8.4.2",
         "papaparse": "5.5.3",
         "proper-lockfile": "4.1.2",
@@ -77,12 +78,12 @@
         "@angular-devkit/build-angular": "21.2.9",
         "@angular-eslint/schematics": "21.3.1",
         "@angular/cli": "21.2.9",
-        "@angular/compiler-cli": "21.2.11",
-        "@babel/core": "7.29.0",
+        "@angular/compiler-cli": "21.2.17",
+        "@babel/core": "7.29.6",
         "@babel/preset-env": "7.29.2",
         "@compodoc/compodoc": "1.2.1",
-        "@electron/notarize": "3.0.1",
-        "@electron/rebuild": "4.0.3",
+        "@electron/notarize": "3.1.1",
+        "@electron/rebuild": "4.0.4",
         "@eslint/compat": "2.0.5",
         "@lit-labs/signals": "0.3.0",
         "@ngtools/webpack": "21.2.9",
@@ -97,7 +98,7 @@
         "@storybook/addon-links": "10.3.6",
         "@storybook/addon-themes": "10.3.6",
         "@storybook/angular": "10.3.6",
-        "@storybook/test-runner": "0.24.3",
+        "@storybook/test-runner": "0.24.4",
         "@storybook/web-components-vite": "10.3.6",
         "@tailwindcss/container-queries": "0.1.1",
         "@types/chrome": "0.1.28",
@@ -111,7 +112,7 @@
         "@types/koa-json": "2.0.24",
         "@types/lowdb": "1.0.15",
         "@types/lunr": "2.3.7",
-        "@types/node": "22.19.17",
+        "@types/node": "22.20.0",
         "@types/node-fetch": "2.6.13",
         "@types/node-forge": "1.3.14",
         "@types/papaparse": "5.5.2",
@@ -133,12 +134,12 @@
         "copy-webpack-plugin": "14.0.0",
         "cross-env": "10.1.0",
         "css-loader": "7.1.4",
-        "electron": "39.8.5",
-        "electron-builder": "26.8.2",
+        "electron": "41.7.2",
+        "electron-builder": "26.9.0",
         "electron-log": "5.4.3",
         "electron-reload": "2.0.0-alpha.1",
         "electron-store": "11.0.2",
-        "electron-updater": "6.6.4",
+        "electron-updater": "6.8.3",
         "eslint": "9.39.4",
         "eslint-config-prettier": "10.1.8",
         "eslint-import-resolver-typescript": "4.4.4",
@@ -189,32 +190,32 @@
         "wait-on": "9.0.3",
         "webpack": "5.106.2",
         "webpack-cli": "7.0.2",
-        "webpack-dev-server": "5.2.3",
+        "webpack-dev-server": "5.2.5",
         "webpack-node-externals": "3.0.0"
       },
       "engines": {
-        "node": ">=22.12.0",
-        "npm": "~10"
+        "node": ">=24.17.0",
+        "npm": "~11"
       }
     },
     "apps/browser": {
       "name": "@bitwarden/browser",
-      "version": "2026.6.0"
+      "version": "2026.7.0"
     },
     "apps/cli": {
       "name": "@bitwarden/cli",
-      "version": "2026.6.0",
+      "version": "2026.7.0",
       "license": "SEE LICENSE IN LICENSE.txt",
       "dependencies": {
         "@koa/multer": "4.0.0",
-        "@koa/router": "15.5.0",
+        "@koa/router": "15.6.0",
         "big-integer": "1.6.52",
         "browser-hrtime": "1.1.8",
         "chalk": "4.1.2",
         "commander": "14.0.0",
         "core-js": "3.49.0",
-        "form-data": "4.0.4",
-        "https-proxy-agent": "9.0.0",
+        "form-data": "4.0.6",
+        "https-proxy-agent": "9.1.0",
         "inquirer": "8.2.6",
         "jsdom": "26.1.0",
         "jszip": "3.10.1",
@@ -223,7 +224,7 @@
         "koa-json": "2.0.2",
         "lowdb": "1.0.0",
         "lunr": "2.3.9",
-        "multer": "2.1.1",
+        "multer": "2.2.0",
         "node-fetch": "2.7.0",
         "node-forge": "1.4.0",
         "open": "8.4.2",
@@ -236,11 +237,15 @@
       },
       "bin": {
         "bw": "build/bw.js"
+      },
+      "engines": {
+        "node": "~22",
+        "npm": "~10"
       }
     },
     "apps/desktop": {
       "name": "@bitwarden/desktop",
-      "version": "2026.6.0",
+      "version": "2026.7.0",
       "hasInstallScript": true,
       "license": "GPL-3.0",
       "dependencies": {
@@ -252,12 +257,12 @@
       "version": "0.1.0",
       "license": "GPL-3.0",
       "devDependencies": {
-        "@napi-rs/cli": "3.5.1"
+        "@napi-rs/cli": "3.7.2"
       }
     },
     "apps/web": {
       "name": "@bitwarden/web-vault",
-      "version": "2026.6.2"
+      "version": "2026.7.0"
     },
     "libs/admin-console": {
       "name": "@bitwarden/admin-console",
@@ -363,6 +368,11 @@
       "version": "0.0.1",
       "license": "GPL-3.0"
     },
+    "libs/pam": {
+      "name": "@bitwarden/pam",
+      "version": "0.0.1",
+      "license": "GPL-3.0"
+    },
     "libs/platform": {
       "name": "@bitwarden/platform",
       "version": "0.0.0",
@@ -890,6 +900,128 @@
         }
       }
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": {
+      "version": "7.29.0",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
+      "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.29.0",
+        "@babel/generator": "^7.29.0",
+        "@babel/helper-compilation-targets": "^7.28.6",
+        "@babel/helper-module-transforms": "^7.28.6",
+        "@babel/helpers": "^7.28.6",
+        "@babel/parser": "^7.29.0",
+        "@babel/template": "^7.28.6",
+        "@babel/traverse": "^7.29.0",
+        "@babel/types": "^7.29.0",
+        "@jridgewell/remapping": "^2.3.5",
+        "convert-source-map": "^2.0.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.3",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/@babel/core/node_modules/debug": {
+      "version": "4.4.3",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+      "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.3"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/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"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/@types/express": {
+      "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": "*",
+        "@types/express-serve-static-core": "^4.17.33",
+        "@types/qs": "*",
+        "@types/serve-static": "^1"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/@types/express-serve-static-core": {
+      "version": "4.19.8",
+      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz",
+      "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*",
+        "@types/qs": "*",
+        "@types/range-parser": "*",
+        "@types/send": "*"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/@types/send": {
+      "version": "0.17.6",
+      "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
+      "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/mime": "^1",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/@types/serve-static": {
+      "version": "1.15.10",
+      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz",
+      "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/http-errors": "*",
+        "@types/node": "*",
+        "@types/send": "<1"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/accepts": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mime-types": "~2.1.34",
+        "negotiator": "0.6.3"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/autoprefixer": {
       "version": "10.4.27",
       "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz",
@@ -944,6 +1076,31 @@
         "webpack": ">=5.61.0"
       }
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/body-parser": {
+      "version": "1.20.5",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz",
+      "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "~3.1.2",
+        "content-type": "~1.0.5",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "~1.2.0",
+        "http-errors": "~2.0.1",
+        "iconv-lite": "~0.4.24",
+        "on-finished": "~2.4.1",
+        "qs": "~6.15.1",
+        "raw-body": "~2.5.3",
+        "type-is": "~1.6.18",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/chokidar": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
@@ -960,6 +1117,33 @@
         "url": "https://paulmillr.com/funding/"
       }
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/content-disposition": {
+      "version": "0.5.4",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "5.2.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/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/@angular-devkit/build-angular/node_modules/cookie-signature": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
+      "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/css-loader": {
       "version": "7.1.3",
       "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.3.tgz",
@@ -996,6 +1180,23 @@
         }
       }
     },
+    "node_modules/@angular-devkit/build-angular/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"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/debug/node_modules/ms": {
+      "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/@angular-devkit/build-angular/node_modules/define-lazy-prop": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
@@ -1040,6 +1241,147 @@
         "node": ">=4.0"
       }
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/express": {
+      "version": "4.22.2",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz",
+      "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.8",
+        "array-flatten": "1.1.1",
+        "body-parser": "~1.20.5",
+        "content-disposition": "~0.5.4",
+        "content-type": "~1.0.4",
+        "cookie": "~0.7.1",
+        "cookie-signature": "~1.0.6",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "encodeurl": "~2.0.0",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.3.1",
+        "fresh": "~0.5.2",
+        "http-errors": "~2.0.0",
+        "merge-descriptors": "1.0.3",
+        "methods": "~1.1.2",
+        "on-finished": "~2.4.1",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "~0.1.12",
+        "proxy-addr": "~2.0.7",
+        "qs": "~6.15.1",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.2.1",
+        "send": "~0.19.0",
+        "serve-static": "~1.16.2",
+        "setprototypeof": "1.2.0",
+        "statuses": "~2.0.1",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/express"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/finalhandler": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
+      "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~2.0.0",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.4.1",
+        "parseurl": "~1.3.3",
+        "statuses": "~2.0.2",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/fresh": {
+      "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"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/ipaddr.js": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.4.0.tgz",
+      "integrity": "sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/is-plain-obj": {
+      "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"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/is-wsl": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
+      "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-inside-container": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/json-parse-even-better-errors": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -1047,6 +1389,39 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/merge-descriptors": {
+      "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"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/mime": {
+      "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"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/mime-db": {
       "version": "1.52.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -1091,6 +1466,16 @@
         "webpack": "^5.0.0"
       }
     },
+    "node_modules/@angular-devkit/build-angular/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"
+      }
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/open": {
       "version": "11.0.0",
       "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz",
@@ -1112,6 +1497,13 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/path-to-regexp": {
+      "version": "0.1.13",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz",
+      "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/picomatch": {
       "version": "4.0.4",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
@@ -1186,6 +1578,22 @@
         }
       }
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/raw-body": {
+      "version": "2.5.3",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+      "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "~3.1.2",
+        "http-errors": "~2.0.1",
+        "iconv-lite": "~0.4.24",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/readdirp": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
@@ -1210,6 +1618,27 @@
         "tslib": "^2.1.0"
       }
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/sass": {
       "version": "1.97.3",
       "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz",
@@ -1244,6 +1673,61 @@
         "node": ">=10"
       }
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/send": {
+      "version": "0.19.2",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
+      "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "encodeurl": "~2.0.0",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "~0.5.2",
+        "http-errors": "~2.0.1",
+        "mime": "1.6.0",
+        "ms": "2.1.3",
+        "on-finished": "~2.4.1",
+        "range-parser": "~1.2.1",
+        "statuses": "~2.0.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/serve-static": {
+      "version": "1.16.3",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
+      "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "encodeurl": "~2.0.0",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "~0.19.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular/node_modules/type-is": {
+      "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",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
     "node_modules/@angular-devkit/build-angular/node_modules/webpack": {
       "version": "5.105.2",
       "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz",
@@ -1293,6 +1777,175 @@
         }
       }
     },
+    "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server": {
+      "version": "5.2.3",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz",
+      "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/bonjour": "^3.5.13",
+        "@types/connect-history-api-fallback": "^1.5.4",
+        "@types/express": "^4.17.25",
+        "@types/express-serve-static-core": "^4.17.21",
+        "@types/serve-index": "^1.9.4",
+        "@types/serve-static": "^1.15.5",
+        "@types/sockjs": "^0.3.36",
+        "@types/ws": "^8.5.10",
+        "ansi-html-community": "^0.0.8",
+        "bonjour-service": "^1.2.1",
+        "chokidar": "^3.6.0",
+        "colorette": "^2.0.10",
+        "compression": "^1.8.1",
+        "connect-history-api-fallback": "^2.0.0",
+        "express": "^4.22.1",
+        "graceful-fs": "^4.2.6",
*** 2534 LINES SKIPPED ***