From 8a11aae6a2fa2ec3c36a502fe678524d1e7c9855 Mon Sep 17 00:00:00 2001
From: FiniteLooper <chris.m.barr@gmail.com>
Date: Thu, 28 Dec 2023 14:56:52 -0500
Subject: [PATCH] package updates

---
 package-lock.json | 386 ++++++++++++++++++++++++++--------------------
 package.json      |  34 ++--
 2 files changed, 235 insertions(+), 185 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index ff4638e..7856855 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,15 +8,15 @@
       "name": "lyric-converter",
       "version": "3.1.7",
       "dependencies": {
-        "@angular/animations": "^17.0.7",
-        "@angular/common": "^17.0.7",
-        "@angular/compiler": "^17.0.7",
-        "@angular/core": "^17.0.7",
-        "@angular/platform-browser": "^17.0.7",
-        "@angular/platform-browser-dynamic": "^17.0.7",
-        "@angular/platform-server": "^17.0.7",
-        "@angular/router": "^17.0.7",
-        "@angular/ssr": "^17.0.7",
+        "@angular/animations": "^17.0.8",
+        "@angular/common": "^17.0.8",
+        "@angular/compiler": "^17.0.8",
+        "@angular/core": "^17.0.8",
+        "@angular/platform-browser": "^17.0.8",
+        "@angular/platform-browser-dynamic": "^17.0.8",
+        "@angular/platform-server": "^17.0.8",
+        "@angular/router": "^17.0.8",
+        "@angular/ssr": "^17.0.8",
         "express": "^4.18.2",
         "file-saver": "^2.0.5",
         "js-base64": "^3.7.5",
@@ -33,23 +33,23 @@
         "zone.js": "^0.14.2"
       },
       "devDependencies": {
-        "@angular-devkit/architect": "^0.1700.7",
-        "@angular-devkit/build-angular": "^17.0.7",
-        "@angular-devkit/core": "^17.0.7",
+        "@angular-devkit/architect": "^0.1700.8",
+        "@angular-devkit/build-angular": "^17.0.8",
+        "@angular-devkit/core": "^17.0.8",
         "@angular-eslint/builder": "~17.1.1",
         "@angular-eslint/eslint-plugin": "~17.1.1",
         "@angular-eslint/eslint-plugin-template": "^17.1.1",
         "@angular-eslint/schematics": "~17.1.1",
         "@angular-eslint/template-parser": "~17.1.1",
-        "@angular/cli": "^17.0.7",
-        "@angular/compiler-cli": "^17.0.7",
+        "@angular/cli": "^17.0.8",
+        "@angular/compiler-cli": "^17.0.8",
         "@chiragrupani/karma-chromium-edge-launcher": "^2.3.1",
         "@types/express": "^4.17.21",
         "@types/file-saver": "~2.0.7",
         "@types/jasmine": "~5.1.4",
         "@types/node": "^20.10.5",
-        "@typescript-eslint/eslint-plugin": "~6.14.0",
-        "@typescript-eslint/parser": "~6.14.0",
+        "@typescript-eslint/eslint-plugin": "~6.16.0",
+        "@typescript-eslint/parser": "~6.16.0",
         "autoprefixer": "^10.4.16",
         "eslint": "~8.56.0",
         "genversion": "^3.1.1",
@@ -61,7 +61,7 @@
         "karma-jasmine": "~5.1.0",
         "karma-jasmine-html-reporter": "~2.1.0",
         "postcss": "^8.4.32",
-        "tailwindcss": "^3.3.6",
+        "tailwindcss": "^3.4.0",
         "typescript": "^5.2.2"
       }
     },
@@ -100,12 +100,12 @@
       }
     },
     "node_modules/@angular-devkit/architect": {
-      "version": "0.1700.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1700.7.tgz",
-      "integrity": "sha512-32uitQKsYLGXAKoXBsmOnPsTt9pS+b9cnFI9ZvBFVhJ31I2EOM7vGcMFalhTxdB/DkVHk4TyO78efV0V26DwCA==",
+      "version": "0.1700.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1700.8.tgz",
+      "integrity": "sha512-SWVr3CvwO6T0yW2ytszCwBT1g92vyFkwbVUxqE93urYnoD8PvP+81GH5YwVjHQTgvhP4eXQMGZ9hpHx57VOrWQ==",
       "dev": true,
       "dependencies": {
-        "@angular-devkit/core": "17.0.7",
+        "@angular-devkit/core": "17.0.8",
         "rxjs": "7.8.1"
       },
       "engines": {
@@ -115,15 +115,15 @@
       }
     },
     "node_modules/@angular-devkit/build-angular": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.0.7.tgz",
-      "integrity": "sha512-AtEzLk6n6BXqQzk0Bsupe6GV0IgUe7RbpBfqROi+NZqMA7OUAHCX3xA6M68Qu+5KxBtW7T5lHeZZ7iP/y39wtQ==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.0.8.tgz",
+      "integrity": "sha512-u7R5yX92ZxOL/LfxiKGGqlBo86100sJ5Rabavn8DeGtYP8N0qgwCcNwlW2zaMoUlkw2geMnxcxIX5VJI4iFPUA==",
       "dev": true,
       "dependencies": {
         "@ampproject/remapping": "2.2.1",
-        "@angular-devkit/architect": "0.1700.7",
-        "@angular-devkit/build-webpack": "0.1700.7",
-        "@angular-devkit/core": "17.0.7",
+        "@angular-devkit/architect": "0.1700.8",
+        "@angular-devkit/build-webpack": "0.1700.8",
+        "@angular-devkit/core": "17.0.8",
         "@babel/core": "7.23.2",
         "@babel/generator": "7.23.0",
         "@babel/helper-annotate-as-pure": "7.22.5",
@@ -134,7 +134,7 @@
         "@babel/preset-env": "7.23.2",
         "@babel/runtime": "7.23.2",
         "@discoveryjs/json-ext": "0.5.7",
-        "@ngtools/webpack": "17.0.7",
+        "@ngtools/webpack": "17.0.8",
         "@vitejs/plugin-basic-ssl": "1.0.1",
         "ansi-colors": "4.1.3",
         "autoprefixer": "10.4.16",
@@ -707,12 +707,12 @@
       }
     },
     "node_modules/@angular-devkit/build-webpack": {
-      "version": "0.1700.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1700.7.tgz",
-      "integrity": "sha512-B9Mg/qYDpE5my8PJ3VPQyRSUV0Oq1bFUzU8s0ZpqEZl1URKc04pm0LtLmebrMIcUZgDiGk0RHaD+O1E9IV/bdQ==",
+      "version": "0.1700.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1700.8.tgz",
+      "integrity": "sha512-GA7QlCAlYB3uBkRaUYgIC/Vfajb9jMmouwYiAAEm34ZyP3ThFjdqsYd/A/exnuESt5o6Bh++C/PI34sV3lawRA==",
       "dev": true,
       "dependencies": {
-        "@angular-devkit/architect": "0.1700.7",
+        "@angular-devkit/architect": "0.1700.8",
         "rxjs": "7.8.1"
       },
       "engines": {
@@ -726,9 +726,9 @@
       }
     },
     "node_modules/@angular-devkit/core": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.0.7.tgz",
-      "integrity": "sha512-vATobHo5O5tJba424hJfQWLb40GzvZPNsI74dcgSUTgrDph8ksmk5xB9OvEvf0INorQZ2IMphj/VIWj4/+JqSA==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.0.8.tgz",
+      "integrity": "sha512-gI8+SOwGUwr0WOlFrhLjohLolMzcguuoR0LTZEcGjdXvQyPgH4NDSRIIrfWCdu+ZVhfy76o3zQYdYc9QN8NrjQ==",
       "dev": true,
       "dependencies": {
         "ajv": "8.12.0",
@@ -765,12 +765,12 @@
       }
     },
     "node_modules/@angular-devkit/schematics": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.0.7.tgz",
-      "integrity": "sha512-BY11OkJkM3xyXcvyD7x5kGY/c8Ufd4AfPvI0D9imhVxbns45Q48b1DlvCQvSnCJ/s+OwnkrYb/Efa70ZiaGu8A==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.0.8.tgz",
+      "integrity": "sha512-syo814SVWfJvne448IijjZvpWbuqJsEutdNqHWLTewTfX2U3KrIAr/XRVcXQMuyMvLCDiuxjMgEJxOIP7mcIPw==",
       "dev": true,
       "dependencies": {
-        "@angular-devkit/core": "17.0.7",
+        "@angular-devkit/core": "17.0.8",
         "jsonc-parser": "3.2.0",
         "magic-string": "0.30.5",
         "ora": "5.4.1",
@@ -881,9 +881,9 @@
       }
     },
     "node_modules/@angular/animations": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.0.7.tgz",
-      "integrity": "sha512-IjZjPGMxvi2a9o7fzjwNO44FvhTZlVSgcPtqM6Glq0+WVeQcnZxf1Onj68M/FGx2AunS8elRbrgPxTexVeSo7A==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.0.8.tgz",
+      "integrity": "sha512-iKJ2s4ZqVoGS9tSRBuuwYEWTV+Rw6b4zDY1rqiXvbZrpNRxfzYr6s+aYsLQQEindZ4hzxgp9j60FJ8aE/g4w6A==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -891,19 +891,19 @@
         "node": "^18.13.0 || >=20.9.0"
       },
       "peerDependencies": {
-        "@angular/core": "17.0.7"
+        "@angular/core": "17.0.8"
       }
     },
     "node_modules/@angular/cli": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.0.7.tgz",
-      "integrity": "sha512-oSa0GVAQNA7wFbLJYeaO3kV4iUcbKEqXDLxcIE8s1GfHddBOlXH2P1T4fXonCBl5qvV+joP0G0+fs7I0w2utZQ==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.0.8.tgz",
+      "integrity": "sha512-yZXYNLAFv9u2qypsVqtS+rRCsnjsIPYXr6TcI/r5buzOtC7UQ2lleYsWJqX47SsyGMk/o3gaYg5Bj2I5mmRDLA==",
       "dev": true,
       "dependencies": {
-        "@angular-devkit/architect": "0.1700.7",
-        "@angular-devkit/core": "17.0.7",
-        "@angular-devkit/schematics": "17.0.7",
-        "@schematics/angular": "17.0.7",
+        "@angular-devkit/architect": "0.1700.8",
+        "@angular-devkit/core": "17.0.8",
+        "@angular-devkit/schematics": "17.0.8",
+        "@schematics/angular": "17.0.8",
         "@yarnpkg/lockfile": "1.1.0",
         "ansi-colors": "4.1.3",
         "ini": "4.1.1",
@@ -929,9 +929,9 @@
       }
     },
     "node_modules/@angular/common": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.0.7.tgz",
-      "integrity": "sha512-bPPL6x0KOAOTxKSE2j4EWmEUOnqZYzOYiHzroa5b9UEyA9NvGkd9bm3zIxw8xcndRj1Ehcmvpi6KBLcYBBbWfg==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.0.8.tgz",
+      "integrity": "sha512-fFfwtdg7H+OkqnvV/ENu8F8KGfgIiH16DDbQqYY5KQyyQB+SMsoVW29F1fGx6Y30s7ZlsLOy6cHhgrw74itkSw==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -939,14 +939,14 @@
         "node": "^18.13.0 || >=20.9.0"
       },
       "peerDependencies": {
-        "@angular/core": "17.0.7",
+        "@angular/core": "17.0.8",
         "rxjs": "^6.5.3 || ^7.4.0"
       }
     },
     "node_modules/@angular/compiler": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.0.7.tgz",
-      "integrity": "sha512-QHPuLti2c2tGZmOGZ0cfCHo4LxiHUkC27I0aZFDyQSSQqEI5obQGVlEREHysw0nsS3sYIcLvqcwcKcRtXlXtxQ==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.0.8.tgz",
+      "integrity": "sha512-48jWypuhBGTrUUbkz1vB9gjbKKZ3hpuJ2DUUncd331Yw4tqkqZQbBa/E3ei4IHiCxEvW2uX3lI4AwlhuozmUtA==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -954,7 +954,7 @@
         "node": "^18.13.0 || >=20.9.0"
       },
       "peerDependencies": {
-        "@angular/core": "17.0.7"
+        "@angular/core": "17.0.8"
       },
       "peerDependenciesMeta": {
         "@angular/core": {
@@ -963,9 +963,9 @@
       }
     },
     "node_modules/@angular/compiler-cli": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.0.7.tgz",
-      "integrity": "sha512-YnL38idjIYtl3BXYpv+sVJKWGbUjHT6eyQSQVAfO/1AwWqVa21K9hnE+Q37VmUKEcKFMnQembeuErA+KVsGI6A==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.0.8.tgz",
+      "integrity": "sha512-ny2SMVgl+icjMuU5ZM57yFGUrhjR0hNxfCn0otAD3jUFliz/Onu9l6EPRKA5Cr8MZx3mg3rTLSBMD17YT8rsOg==",
       "dev": true,
       "dependencies": {
         "@babel/core": "7.23.2",
@@ -986,14 +986,14 @@
         "node": "^18.13.0 || >=20.9.0"
       },
       "peerDependencies": {
-        "@angular/compiler": "17.0.7",
+        "@angular/compiler": "17.0.8",
         "typescript": ">=5.2 <5.3"
       }
     },
     "node_modules/@angular/core": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.0.7.tgz",
-      "integrity": "sha512-mEkelXkzEi6+A9GjdKOSGGzQAfo1iAjVTn6YsplNUeGE5JgDZYZ7sXGQqs0Lin7dzJxnPAgGjCOl7SpWLXIPSQ==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.0.8.tgz",
+      "integrity": "sha512-tzYsK24LdkNuKNJK6efF4XOqspvF/qOe9j/n1Y61a6mNvFwsJFGbcmdZMby4hI/YRm6oIDoIIFjSep8ycp6Pbw==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -1006,9 +1006,9 @@
       }
     },
     "node_modules/@angular/platform-browser": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.0.7.tgz",
-      "integrity": "sha512-bm9/wt51nc/MPjft/FlRNIgFSeLjDtfJOT7M32Rt6kOHhNKSK7ZTPWdMe9ahuHSbAhLzd0G/4NsT5sKrWSeVZg==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.0.8.tgz",
+      "integrity": "sha512-XaI+p2AxQaIHzR761lhPUf4OcOp46WDW0IfbvOzaezHE+8r81joZyVSDQPgXSa/aRfI58YhcfUavuGqyU3PphA==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -1016,9 +1016,9 @@
         "node": "^18.13.0 || >=20.9.0"
       },
       "peerDependencies": {
-        "@angular/animations": "17.0.7",
-        "@angular/common": "17.0.7",
-        "@angular/core": "17.0.7"
+        "@angular/animations": "17.0.8",
+        "@angular/common": "17.0.8",
+        "@angular/core": "17.0.8"
       },
       "peerDependenciesMeta": {
         "@angular/animations": {
@@ -1027,9 +1027,9 @@
       }
     },
     "node_modules/@angular/platform-browser-dynamic": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.0.7.tgz",
-      "integrity": "sha512-OquwUX9fLWA2JUZW5Jm6atk0CPt0sA7Tg24eGLsr6g1XfTS7jRZprlGaa72NgPLnQVV6m84o/ZiNYS6yPmq1Gg==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.0.8.tgz",
+      "integrity": "sha512-BIXNKnfBZb8sdluQ7WIhIXFuVnsJJ0SV+aiMKzQ7B6XhWoAXZQnlvON2thydjIIVuCvaF3YmWTbILI2K8YZ2jQ==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -1037,16 +1037,16 @@
         "node": "^18.13.0 || >=20.9.0"
       },
       "peerDependencies": {
-        "@angular/common": "17.0.7",
-        "@angular/compiler": "17.0.7",
-        "@angular/core": "17.0.7",
-        "@angular/platform-browser": "17.0.7"
+        "@angular/common": "17.0.8",
+        "@angular/compiler": "17.0.8",
+        "@angular/core": "17.0.8",
+        "@angular/platform-browser": "17.0.8"
       }
     },
     "node_modules/@angular/platform-server": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-17.0.7.tgz",
-      "integrity": "sha512-ezEOqcPw/2Naqb+L0Qq1eVCnN5Wrd9ACBTlBny6eOvYh/SVcmZlU2vdPX4aUKKu/Mq5CHNAaHHqqfwKCoDYnBw==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-17.0.8.tgz",
+      "integrity": "sha512-1ePN6OhVtPXYfIh6oSJwiOdUk+T4puzH6rhAtHfaiEI3gAoAlz170RBZzcDKc6ow5kQ8zo1DPWc61/FbOJFFew==",
       "dependencies": {
         "tslib": "^2.3.0",
         "xhr2": "^0.2.0"
@@ -1055,17 +1055,17 @@
         "node": "^18.13.0 || >=20.9.0"
       },
       "peerDependencies": {
-        "@angular/animations": "17.0.7",
-        "@angular/common": "17.0.7",
-        "@angular/compiler": "17.0.7",
-        "@angular/core": "17.0.7",
-        "@angular/platform-browser": "17.0.7"
+        "@angular/animations": "17.0.8",
+        "@angular/common": "17.0.8",
+        "@angular/compiler": "17.0.8",
+        "@angular/core": "17.0.8",
+        "@angular/platform-browser": "17.0.8"
       }
     },
     "node_modules/@angular/router": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.0.7.tgz",
-      "integrity": "sha512-rUFPe1uDlYYw6+3Gq68czW7WxBH7zT/D3UsT1otqwUV4RnQQsVze4fIit9FqJh7tuP4y3WpB4XBNf7p7Oi6TJw==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.0.8.tgz",
+      "integrity": "sha512-ptphcRe1RG/mIS60R7ZPilkkrxautqB0sOhds3h5VP3g628G1a2HWzvnmvjEfpJWDMFivV32VJMMBtTLqGr+0Q==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -1073,16 +1073,16 @@
         "node": "^18.13.0 || >=20.9.0"
       },
       "peerDependencies": {
-        "@angular/common": "17.0.7",
-        "@angular/core": "17.0.7",
-        "@angular/platform-browser": "17.0.7",
+        "@angular/common": "17.0.8",
+        "@angular/core": "17.0.8",
+        "@angular/platform-browser": "17.0.8",
         "rxjs": "^6.5.3 || ^7.4.0"
       }
     },
     "node_modules/@angular/ssr": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-17.0.7.tgz",
-      "integrity": "sha512-CV7xJEHAZ6PaA866E9+gHtLit8Lv7uqg2AYnh51ct5Jl9am0CIjbnf9bPUFq0iiCPnZ3uB0FMMjkFDup3Kl1Og==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-17.0.8.tgz",
+      "integrity": "sha512-7dTP4kU8O50yKMeOQ/74nJgRnfyVaOMKOalzUktMRdZR4MKN9JfG1XfqiUVFK0V8UNGLrOGI+M004wAnm3DOtg==",
       "dependencies": {
         "critters": "0.0.20",
         "tslib": "^2.3.0"
@@ -3567,9 +3567,9 @@
       }
     },
     "node_modules/@ngtools/webpack": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.0.7.tgz",
-      "integrity": "sha512-gwhUhpwXn0trwwKdSu9WlJbEcLt+s/2fPwoD9lZ0y3wXfrOogsfcNBJKeO5BZf1h+A3AWt7ePmgrZXSJM+865Q==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.0.8.tgz",
+      "integrity": "sha512-wx0XBMrbpDeailK2uIhp/ZVMC3GK3BWwJjUu5SbT4BFrcoi2Zd9/9m0RCBAY54UXLBCqKd+ih7pJ6JSvprZmWw==",
       "dev": true,
       "engines": {
         "node": "^18.13.0 || >=20.9.0",
@@ -4089,13 +4089,13 @@
       }
     },
     "node_modules/@schematics/angular": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.0.7.tgz",
-      "integrity": "sha512-d7QKmcKrM4owb/2bR7Ipf23roiNbvbD/x7reNhQAtKAPLSHJ3Ulkf1+Yv+dj+9f+K7y9SBviEUSrD27BQ9WaxQ==",
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.0.8.tgz",
+      "integrity": "sha512-1h5mwKFv1B/L5JWZ0mxnC4ms06iwnSi/w+GgRZPeM3P5BpuZuvAkFiClNnM55iLlQJXRQioPNLM3sOsz7spR6w==",
       "dev": true,
       "dependencies": {
-        "@angular-devkit/core": "17.0.7",
-        "@angular-devkit/schematics": "17.0.7",
+        "@angular-devkit/core": "17.0.8",
+        "@angular-devkit/schematics": "17.0.8",
         "jsonc-parser": "3.2.0"
       },
       "engines": {
@@ -4443,16 +4443,16 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz",
-      "integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.16.0.tgz",
+      "integrity": "sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==",
       "dev": true,
       "dependencies": {
         "@eslint-community/regexpp": "^4.5.1",
-        "@typescript-eslint/scope-manager": "6.14.0",
-        "@typescript-eslint/type-utils": "6.14.0",
-        "@typescript-eslint/utils": "6.14.0",
-        "@typescript-eslint/visitor-keys": "6.14.0",
+        "@typescript-eslint/scope-manager": "6.16.0",
+        "@typescript-eslint/type-utils": "6.16.0",
+        "@typescript-eslint/utils": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0",
         "debug": "^4.3.4",
         "graphemer": "^1.4.0",
         "ignore": "^5.2.4",
@@ -4478,13 +4478,13 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz",
-      "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz",
+      "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "6.14.0",
-        "@typescript-eslint/visitor-keys": "6.14.0"
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0"
       },
       "engines": {
         "node": "^16.0.0 || >=18.0.0"
@@ -4495,13 +4495,13 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz",
-      "integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.16.0.tgz",
+      "integrity": "sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/typescript-estree": "6.14.0",
-        "@typescript-eslint/utils": "6.14.0",
+        "@typescript-eslint/typescript-estree": "6.16.0",
+        "@typescript-eslint/utils": "6.16.0",
         "debug": "^4.3.4",
         "ts-api-utils": "^1.0.1"
       },
@@ -4522,9 +4522,9 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz",
-      "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz",
+      "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==",
       "dev": true,
       "engines": {
         "node": "^16.0.0 || >=18.0.0"
@@ -4535,16 +4535,17 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz",
-      "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz",
+      "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "6.14.0",
-        "@typescript-eslint/visitor-keys": "6.14.0",
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0",
         "debug": "^4.3.4",
         "globby": "^11.1.0",
         "is-glob": "^4.0.3",
+        "minimatch": "9.0.3",
         "semver": "^7.5.4",
         "ts-api-utils": "^1.0.1"
       },
@@ -4562,17 +4563,17 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz",
-      "integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.16.0.tgz",
+      "integrity": "sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==",
       "dev": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
         "@types/json-schema": "^7.0.12",
         "@types/semver": "^7.5.0",
-        "@typescript-eslint/scope-manager": "6.14.0",
-        "@typescript-eslint/types": "6.14.0",
-        "@typescript-eslint/typescript-estree": "6.14.0",
+        "@typescript-eslint/scope-manager": "6.16.0",
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/typescript-estree": "6.16.0",
         "semver": "^7.5.4"
       },
       "engines": {
@@ -4587,12 +4588,12 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz",
-      "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz",
+      "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "6.14.0",
+        "@typescript-eslint/types": "6.16.0",
         "eslint-visitor-keys": "^3.4.1"
       },
       "engines": {
@@ -4603,16 +4604,40 @@
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
+    "node_modules/@typescript-eslint/eslint-plugin/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@typescript-eslint/eslint-plugin/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,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/@typescript-eslint/parser": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz",
-      "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz",
+      "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/scope-manager": "6.14.0",
-        "@typescript-eslint/types": "6.14.0",
-        "@typescript-eslint/typescript-estree": "6.14.0",
-        "@typescript-eslint/visitor-keys": "6.14.0",
+        "@typescript-eslint/scope-manager": "6.16.0",
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/typescript-estree": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0",
         "debug": "^4.3.4"
       },
       "engines": {
@@ -4632,13 +4657,13 @@
       }
     },
     "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz",
-      "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz",
+      "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "6.14.0",
-        "@typescript-eslint/visitor-keys": "6.14.0"
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0"
       },
       "engines": {
         "node": "^16.0.0 || >=18.0.0"
@@ -4649,9 +4674,9 @@
       }
     },
     "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz",
-      "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz",
+      "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==",
       "dev": true,
       "engines": {
         "node": "^16.0.0 || >=18.0.0"
@@ -4662,16 +4687,17 @@
       }
     },
     "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz",
-      "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz",
+      "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "6.14.0",
-        "@typescript-eslint/visitor-keys": "6.14.0",
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0",
         "debug": "^4.3.4",
         "globby": "^11.1.0",
         "is-glob": "^4.0.3",
+        "minimatch": "9.0.3",
         "semver": "^7.5.4",
         "ts-api-utils": "^1.0.1"
       },
@@ -4689,12 +4715,12 @@
       }
     },
     "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "6.14.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz",
-      "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz",
+      "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "6.14.0",
+        "@typescript-eslint/types": "6.16.0",
         "eslint-visitor-keys": "^3.4.1"
       },
       "engines": {
@@ -4705,6 +4731,30 @@
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
+    "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@typescript-eslint/parser/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,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/@typescript-eslint/scope-manager": {
       "version": "6.13.1",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.1.tgz",
@@ -14268,9 +14318,9 @@
       }
     },
     "node_modules/tailwindcss": {
-      "version": "3.3.6",
-      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.6.tgz",
-      "integrity": "sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==",
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.0.tgz",
+      "integrity": "sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==",
       "dev": true,
       "dependencies": {
         "@alloc/quick-lru": "^5.2.0",
@@ -15506,9 +15556,9 @@
       "dev": true
     },
     "node_modules/ws": {
-      "version": "8.15.1",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz",
-      "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==",
+      "version": "8.16.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
+      "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
       "dev": true,
       "engines": {
         "node": ">=10.0.0"
diff --git a/package.json b/package.json
index 183ebc0..1ef5ceb 100644
--- a/package.json
+++ b/package.json
@@ -35,15 +35,15 @@
   },
   "private": false,
   "dependencies": {
-    "@angular/animations": "^17.0.7",
-    "@angular/common": "^17.0.7",
-    "@angular/compiler": "^17.0.7",
-    "@angular/core": "^17.0.7",
-    "@angular/platform-browser": "^17.0.7",
-    "@angular/platform-browser-dynamic": "^17.0.7",
-    "@angular/platform-server": "^17.0.7",
-    "@angular/router": "^17.0.7",
-    "@angular/ssr": "^17.0.7",
+    "@angular/animations": "^17.0.8",
+    "@angular/common": "^17.0.8",
+    "@angular/compiler": "^17.0.8",
+    "@angular/core": "^17.0.8",
+    "@angular/platform-browser": "^17.0.8",
+    "@angular/platform-browser-dynamic": "^17.0.8",
+    "@angular/platform-server": "^17.0.8",
+    "@angular/router": "^17.0.8",
+    "@angular/ssr": "^17.0.8",
     "express": "^4.18.2",
     "file-saver": "^2.0.5",
     "js-base64": "^3.7.5",
@@ -60,23 +60,23 @@
     "zone.js": "^0.14.2"
   },
   "devDependencies": {
-    "@angular-devkit/architect": "^0.1700.7",
-    "@angular-devkit/build-angular": "^17.0.7",
-    "@angular-devkit/core": "^17.0.7",
+    "@angular-devkit/architect": "^0.1700.8",
+    "@angular-devkit/build-angular": "^17.0.8",
+    "@angular-devkit/core": "^17.0.8",
     "@angular-eslint/builder": "~17.1.1",
     "@angular-eslint/eslint-plugin": "~17.1.1",
     "@angular-eslint/eslint-plugin-template": "^17.1.1",
     "@angular-eslint/schematics": "~17.1.1",
     "@angular-eslint/template-parser": "~17.1.1",
-    "@angular/cli": "^17.0.7",
-    "@angular/compiler-cli": "^17.0.7",
+    "@angular/cli": "^17.0.8",
+    "@angular/compiler-cli": "^17.0.8",
     "@chiragrupani/karma-chromium-edge-launcher": "^2.3.1",
     "@types/express": "^4.17.21",
     "@types/file-saver": "~2.0.7",
     "@types/jasmine": "~5.1.4",
     "@types/node": "^20.10.5",
-    "@typescript-eslint/eslint-plugin": "~6.14.0",
-    "@typescript-eslint/parser": "~6.14.0",
+    "@typescript-eslint/eslint-plugin": "~6.16.0",
+    "@typescript-eslint/parser": "~6.16.0",
     "autoprefixer": "^10.4.16",
     "eslint": "~8.56.0",
     "genversion": "^3.1.1",
@@ -88,7 +88,7 @@
     "karma-jasmine": "~5.1.0",
     "karma-jasmine-html-reporter": "~2.1.0",
     "postcss": "^8.4.32",
-    "tailwindcss": "^3.3.6",
+    "tailwindcss": "^3.4.0",
     "typescript": "^5.2.2"
   }
 }