diff --git a/package-lock.json b/package-lock.json
index 0acc2bf7d..1bfa87b50 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,16 +9,16 @@
       "version": "0.0.2",
       "license": "MIT",
       "devDependencies": {
-        "@aws-cdk/lambda-layer-kubectl-v28": "^2.1.0",
+        "@aws-cdk/lambda-layer-kubectl-v28": "^2.2.0",
         "@aws-sdk/client-cloudformation": "3.451.0",
         "@aws-sdk/client-eks": "3.451.0",
         "@aws-sdk/client-ssm": "3.451.0",
         "@linzjs/style": "^5.2.0",
-        "aws-cdk": "2.108.x",
-        "aws-cdk-lib": "2.108.x",
-        "cdk8s": "^2.68.4",
-        "cdk8s-cli": "^2.177.0",
-        "cdk8s-plus-27": "^2.7.61",
+        "aws-cdk": "2.143.x",
+        "aws-cdk-lib": "2.143.x",
+        "cdk8s": "^2.68.71",
+        "cdk8s-cli": "^2.198.130",
+        "cdk8s-plus-27": "^2.9.4",
         "constructs": "^10.3.0",
         "tsx": "^4.6.2"
       },
@@ -36,9 +36,9 @@
       }
     },
     "node_modules/@aws-cdk/asset-awscli-v1": {
-      "version": "2.2.201",
-      "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.201.tgz",
-      "integrity": "sha512-INZqcwDinNaIdb5CtW3ez5s943nX5stGBQS6VOP2JDlOFP81hM3fds/9NDknipqfUkZM43dx+HgVvkXYXXARCQ==",
+      "version": "2.2.202",
+      "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.202.tgz",
+      "integrity": "sha512-JqlF0D4+EVugnG5dAsNZMqhu3HW7ehOXm5SDMxMbXNDMdsF0pxtQKNHRl52z1U9igsHmaFpUgSGjbhAJ+0JONg==",
       "dev": true
     },
     "node_modules/@aws-cdk/asset-kubectl-v20": {
@@ -48,15 +48,15 @@
       "dev": true
     },
     "node_modules/@aws-cdk/asset-node-proxy-agent-v6": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.1.tgz",
-      "integrity": "sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.3.tgz",
+      "integrity": "sha512-twhuEG+JPOYCYPx/xy5uH2+VUsIEhPTzDY0F1KuB+ocjWWB/KEDiOVL19nHvbPCB6fhWnkykXEMJ4HHcKvjtvg==",
       "dev": true
     },
     "node_modules/@aws-cdk/lambda-layer-kubectl-v28": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v28/-/lambda-layer-kubectl-v28-2.1.0.tgz",
-      "integrity": "sha512-u806k9M9W1JQJ3e/kO4vQLn2PiKHO+ks2/fPlOchohS/HPcpNylL9hcRWYO8GO+rKMiwEW2EcqDci+6KEYrufQ==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v28/-/lambda-layer-kubectl-v28-2.2.0.tgz",
+      "integrity": "sha512-m7nMDn/Ff9S+gJ5Sok5NuYHBzgsj3Xz3dOo0BxXYJJNPl9UtD1HnPcKV56lHn9+BACJff/h8aPUMln0xCUPuIw==",
       "dev": true,
       "peerDependencies": {
         "aws-cdk-lib": "^2.28.0",
@@ -1245,9 +1245,9 @@
       "dev": true
     },
     "node_modules/@jsii/check-node": {
-      "version": "1.91.0",
-      "resolved": "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.91.0.tgz",
-      "integrity": "sha512-K9UFkRe4uJNVp1O2o4OBM/3usba6Vw3XF1Mq3TVBAYl1EzpAiA62DojGp30+3zwFlb1lkavVj1hKlCrIWIuJhw==",
+      "version": "1.98.0",
+      "resolved": "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.98.0.tgz",
+      "integrity": "sha512-hI53TMW/fylHyY3CrJvqWvfSPJvBL82GSAB1m2CKNC0yHb0pZHCdBZnLrrr4rgTCQx8kIJjcUc0rQ/Ba3w+GaA==",
       "dev": true,
       "dependencies": {
         "chalk": "^4.1.2",
@@ -1258,9 +1258,9 @@
       }
     },
     "node_modules/@jsii/spec": {
-      "version": "1.91.0",
-      "resolved": "https://registry.npmjs.org/@jsii/spec/-/spec-1.91.0.tgz",
-      "integrity": "sha512-Ir01bk5CwIFAApRJjRC+JG/f9db5dACEYFSxsHyvXRMu+J/LIANdwD4OPSelWrhbRiQdY6U16BKsRO63uaNRqg==",
+      "version": "1.98.0",
+      "resolved": "https://registry.npmjs.org/@jsii/spec/-/spec-1.98.0.tgz",
+      "integrity": "sha512-5FCJedjFrxKt0wrcSnXetHHTXQV6OQM2NlE/WJNvjwqlk+RYfw+BwZOBYHsoaQx1Qh0pTwN7ZM9WmEusN3GdNw==",
       "dev": true,
       "dependencies": {
         "ajv": "^8.12.0"
@@ -1270,15 +1270,15 @@
       }
     },
     "node_modules/@jsii/spec/node_modules/ajv": {
-      "version": "8.12.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
-      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz",
+      "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==",
       "dev": true,
       "dependencies": {
-        "fast-deep-equal": "^3.1.1",
+        "fast-deep-equal": "^3.1.3",
         "json-schema-traverse": "^1.0.0",
         "require-from-string": "^2.0.2",
-        "uri-js": "^4.2.2"
+        "uri-js": "^4.4.1"
       },
       "funding": {
         "type": "github",
@@ -1312,19 +1312,6 @@
         "linz-style-install": "linz-style-install.mjs"
       }
     },
-    "node_modules/@linzjs/style/node_modules/typescript": {
-      "version": "5.3.3",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
-      "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
-      "dev": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=14.17"
-      }
-    },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -2599,9 +2586,9 @@
       }
     },
     "node_modules/aws-cdk": {
-      "version": "2.108.1",
-      "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.108.1.tgz",
-      "integrity": "sha512-VSu1KYLT1VzJdZqKPgVFQGfEBxaWmWCp0USfT4Xqk7drOmMzZK1PmXhSDpWr1mq1jn0m+4rwaifUi1Tt/0eFNQ==",
+      "version": "2.143.0",
+      "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.143.0.tgz",
+      "integrity": "sha512-lGnmedkE+slsl2xr0Vi516gKieOmE0BHeImdcALy5JKoeLdObDWiHLkMtLWm0Fil7h7cCEHqpzS+hY3emqjTOw==",
       "dev": true,
       "bin": {
         "cdk": "bin/cdk"
@@ -2614,9 +2601,9 @@
       }
     },
     "node_modules/aws-cdk-lib": {
-      "version": "2.108.1",
-      "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.108.1.tgz",
-      "integrity": "sha512-rqBJIB8cVjF2BjO3kEUn1j0JVY0GqrQc7KzMez40ew6I/QzqJwy6j8lPAI+eibn1JBifNeMb8wU2DpwVxz4fhQ==",
+      "version": "2.143.0",
+      "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.143.0.tgz",
+      "integrity": "sha512-mIu+ftBt1OvDEMxpbMNQPZIPtb7ucp+z01xrtaB/3EqZRUXLha2W1/3JodW9X5h7IliFi4oBeMmzH3wWtvHbog==",
       "bundleDependencies": [
         "@balena/dockerignore",
         "case",
@@ -2627,22 +2614,24 @@
         "punycode",
         "semver",
         "table",
-        "yaml"
+        "yaml",
+        "mime-types"
       ],
       "dev": true,
       "dependencies": {
-        "@aws-cdk/asset-awscli-v1": "^2.2.201",
+        "@aws-cdk/asset-awscli-v1": "^2.2.202",
         "@aws-cdk/asset-kubectl-v20": "^2.1.2",
-        "@aws-cdk/asset-node-proxy-agent-v6": "^2.0.1",
+        "@aws-cdk/asset-node-proxy-agent-v6": "^2.0.3",
         "@balena/dockerignore": "^1.0.2",
         "case": "1.6.3",
-        "fs-extra": "^11.1.1",
-        "ignore": "^5.2.4",
+        "fs-extra": "^11.2.0",
+        "ignore": "^5.3.1",
         "jsonschema": "^1.4.1",
+        "mime-types": "^2.1.35",
         "minimatch": "^3.1.2",
         "punycode": "^2.3.1",
-        "semver": "^7.5.4",
-        "table": "^6.8.1",
+        "semver": "^7.6.0",
+        "table": "^6.8.2",
         "yaml": "1.10.2"
       },
       "engines": {
@@ -2659,15 +2648,15 @@
       "license": "Apache-2.0"
     },
     "node_modules/aws-cdk-lib/node_modules/ajv": {
-      "version": "8.12.0",
+      "version": "8.13.0",
       "dev": true,
       "inBundle": true,
       "license": "MIT",
       "dependencies": {
-        "fast-deep-equal": "^3.1.1",
+        "fast-deep-equal": "^3.1.3",
         "json-schema-traverse": "^1.0.0",
         "require-from-string": "^2.0.2",
-        "uri-js": "^4.2.2"
+        "uri-js": "^4.4.1"
       },
       "funding": {
         "type": "github",
@@ -2769,7 +2758,7 @@
       "license": "MIT"
     },
     "node_modules/aws-cdk-lib/node_modules/fs-extra": {
-      "version": "11.1.1",
+      "version": "11.2.0",
       "dev": true,
       "inBundle": true,
       "license": "MIT",
@@ -2789,7 +2778,7 @@
       "license": "ISC"
     },
     "node_modules/aws-cdk-lib/node_modules/ignore": {
-      "version": "5.2.4",
+      "version": "5.3.1",
       "dev": true,
       "inBundle": true,
       "license": "MIT",
@@ -2851,6 +2840,27 @@
         "node": ">=10"
       }
     },
+    "node_modules/aws-cdk-lib/node_modules/mime-db": {
+      "version": "1.52.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/aws-cdk-lib/node_modules/mime-types": {
+      "version": "2.1.35",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
     "node_modules/aws-cdk-lib/node_modules/minimatch": {
       "version": "3.1.2",
       "dev": true,
@@ -2882,7 +2892,7 @@
       }
     },
     "node_modules/aws-cdk-lib/node_modules/semver": {
-      "version": "7.5.4",
+      "version": "7.6.0",
       "dev": true,
       "inBundle": true,
       "license": "ISC",
@@ -2940,7 +2950,7 @@
       }
     },
     "node_modules/aws-cdk-lib/node_modules/table": {
-      "version": "6.8.1",
+      "version": "6.8.2",
       "dev": true,
       "inBundle": true,
       "license": "BSD-3-Clause",
@@ -3177,9 +3187,9 @@
       }
     },
     "node_modules/cdk8s": {
-      "version": "2.68.4",
-      "resolved": "https://registry.npmjs.org/cdk8s/-/cdk8s-2.68.4.tgz",
-      "integrity": "sha512-pkTtmwi3/hPWey6XtSbvPvQcdWfX6H+g1I/HPx5X5eyW22yGEZzYfSuv4HBHBLxOsp6949OlidLZn6EDo7D+UA==",
+      "version": "2.68.71",
+      "resolved": "https://registry.npmjs.org/cdk8s/-/cdk8s-2.68.71.tgz",
+      "integrity": "sha512-fJKgiGKis5pmt7umAiTn4ZI2O/kPhRD7ECDPLBqfyIzJGclSNJN6gRIo9PFUert6p07K+An1tZa8AugIPtsI5w==",
       "bundleDependencies": [
         "fast-json-patch",
         "follow-redirects",
@@ -3188,8 +3198,8 @@
       "dev": true,
       "dependencies": {
         "fast-json-patch": "^3.1.1",
-        "follow-redirects": "^1.15.2",
-        "yaml": "2.3.2"
+        "follow-redirects": "^1.15.6",
+        "yaml": "2.4.2"
       },
       "engines": {
         "node": ">= 16.20.0"
@@ -3202,26 +3212,27 @@
       }
     },
     "node_modules/cdk8s-cli": {
-      "version": "2.177.0",
-      "resolved": "https://registry.npmjs.org/cdk8s-cli/-/cdk8s-cli-2.177.0.tgz",
-      "integrity": "sha512-8La/2uJs54aVGl3G+w895g+RUgtypqHLCzhUkvi+lSiG0Wmy1Kilnlt1zyNNvSMQurkADjUyOkT80zt0U+O1OA==",
+      "version": "2.198.130",
+      "resolved": "https://registry.npmjs.org/cdk8s-cli/-/cdk8s-cli-2.198.130.tgz",
+      "integrity": "sha512-ZSlyjoPTQakgiMGfgbXPhdBSHQSfw3sM2wx7ZN/+cRWRAUB+4Lft3I5thtbuH48rKqxc6PiUhJrNcAodG1AtNA==",
       "dev": true,
       "dependencies": {
         "@types/node": "^16",
-        "ajv": "^8.12.0",
-        "cdk8s": "^2.68.4",
-        "cdk8s-plus-25": "^2.22.58",
-        "codemaker": "^1.91.0",
+        "ajv": "^8.14.0",
+        "cdk8s": "^2.68.71",
+        "cdk8s-plus-25": "^2.22.79",
+        "codemaker": "^1.98.0",
         "colors": "1.4.0",
         "constructs": "^10.3.0",
         "fs-extra": "^8",
-        "jsii-pacmak": "^1.91.0",
-        "jsii-srcmak": "^0.1.965",
-        "json2jsii": "^0.3.389",
-        "semver": "^7.5.4",
+        "jsii-pacmak": "^1.98.0",
+        "jsii-rosetta": "^5.4.20",
+        "jsii-srcmak": "^0.1.1135",
+        "json2jsii": "^0.4.3",
+        "semver": "^7.6.2",
         "sscaff": "^1.2.274",
-        "table": "^6.8.1",
-        "yaml": "2.3.4",
+        "table": "^6.8.2",
+        "yaml": "2.4.2",
         "yargs": "^15"
       },
       "bin": {
@@ -3235,15 +3246,15 @@
       }
     },
     "node_modules/cdk8s-cli/node_modules/ajv": {
-      "version": "8.12.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
-      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz",
+      "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==",
       "dev": true,
       "dependencies": {
-        "fast-deep-equal": "^3.1.1",
+        "fast-deep-equal": "^3.1.3",
         "json-schema-traverse": "^1.0.0",
         "require-from-string": "^2.0.2",
-        "uri-js": "^4.2.2"
+        "uri-js": "^4.4.1"
       },
       "funding": {
         "type": "github",
@@ -3379,9 +3390,9 @@
       }
     },
     "node_modules/cdk8s-plus-25": {
-      "version": "2.22.59",
-      "resolved": "https://registry.npmjs.org/cdk8s-plus-25/-/cdk8s-plus-25-2.22.59.tgz",
-      "integrity": "sha512-2QCLjtmBtkFgw+X7V00wtya/T8o4K0vSRbC+1zy6ZQ230y3KG37GCy7tKj/Hvmx3VfhHVFolhw2vFkFT7sKWwQ==",
+      "version": "2.22.79",
+      "resolved": "https://registry.npmjs.org/cdk8s-plus-25/-/cdk8s-plus-25-2.22.79.tgz",
+      "integrity": "sha512-QSxCBAbLvDJvC3lqt7lO2x8Il84kCsrwIdfAVFxUiwh4wHQxi18ENI9JI16tEhS/2gxv1YyeUNBM1ucH6q9oJA==",
       "bundleDependencies": [
         "minimatch"
       ],
@@ -3396,7 +3407,7 @@
         "backport": "8.5.0"
       },
       "peerDependencies": {
-        "cdk8s": "^2.68.4",
+        "cdk8s": "^2.68.11",
         "constructs": "^10.3.0"
       }
     },
@@ -3435,9 +3446,9 @@
       }
     },
     "node_modules/cdk8s-plus-27": {
-      "version": "2.7.61",
-      "resolved": "https://registry.npmjs.org/cdk8s-plus-27/-/cdk8s-plus-27-2.7.61.tgz",
-      "integrity": "sha512-Oa1kCN3l1qP6MyJYeVKmvzmQ2VkpmXpZ0sSX8n4N6ZLX2+oQazFeMJ9mRjqaXJRAzm2fZ2e9VF00zuaqdrG+GQ==",
+      "version": "2.9.4",
+      "resolved": "https://registry.npmjs.org/cdk8s-plus-27/-/cdk8s-plus-27-2.9.4.tgz",
+      "integrity": "sha512-8bUxDnTlgASY8rlWfkBhQXF5M28LjuU+2YyHzYyv2QtPS7A25z8dOsGokPEMPpq6uzLguEbdv5dWG5a67kklgw==",
       "bundleDependencies": [
         "minimatch"
       ],
@@ -3452,7 +3463,7 @@
         "backport": "8.5.0"
       },
       "peerDependencies": {
-        "cdk8s": "^2.68.4",
+        "cdk8s": "^2.68.11",
         "constructs": "^10.3.0"
       }
     },
@@ -3497,7 +3508,7 @@
       "license": "MIT"
     },
     "node_modules/cdk8s/node_modules/follow-redirects": {
-      "version": "1.15.3",
+      "version": "1.15.6",
       "dev": true,
       "funding": [
         {
@@ -3517,10 +3528,13 @@
       }
     },
     "node_modules/cdk8s/node_modules/yaml": {
-      "version": "2.3.2",
+      "version": "2.4.2",
       "dev": true,
       "inBundle": true,
       "license": "ISC",
+      "bin": {
+        "yaml": "bin.mjs"
+      },
       "engines": {
         "node": ">= 14"
       }
@@ -3636,9 +3650,9 @@
       }
     },
     "node_modules/codemaker": {
-      "version": "1.91.0",
-      "resolved": "https://registry.npmjs.org/codemaker/-/codemaker-1.91.0.tgz",
-      "integrity": "sha512-yI9ibYUBdJDI8n5Vffd4kfg7mSy6Fes2FHq3/TrZtqhL5CJcXvI8Lltl6iTWM5f1JkeIeAMQOC45PjscBhWyZg==",
+      "version": "1.98.0",
+      "resolved": "https://registry.npmjs.org/codemaker/-/codemaker-1.98.0.tgz",
+      "integrity": "sha512-UAeICTmY7lJXf4OPnDTwKWg/DU87u67nyxuTjMON+vO8yo8C+EcPWnmmOmWtZm3wWLPsPuxyYIQxIIi/4OZ9TA==",
       "dev": true,
       "dependencies": {
         "camelcase": "^6.3.0",
@@ -4511,9 +4525,9 @@
       "dev": true
     },
     "node_modules/fast-glob": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
-      "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+      "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
       "dev": true,
       "dependencies": {
         "@nodelib/fs.stat": "^2.0.2",
@@ -5616,49 +5630,48 @@
       }
     },
     "node_modules/jsii": {
-      "version": "1.91.0",
-      "resolved": "https://registry.npmjs.org/jsii/-/jsii-1.91.0.tgz",
-      "integrity": "sha512-dJ2FbnUfX5Eg9BdZx6Cz2JhDsvzGi2DoQeomzdjO9ltvVUouAFPWkpcUtJdLXaNmHQtPM4/I+AzelUX7w2mWVw==",
+      "version": "5.4.18",
+      "resolved": "https://registry.npmjs.org/jsii/-/jsii-5.4.18.tgz",
+      "integrity": "sha512-ocVGqfYmXk0SCKmygQt+OS9dfCnIMIdAfwqdyhwaY3AnNlRxN6d74Yg6Pz9GaB4zeE9skFBlOJLLtn2J+EKULQ==",
       "dev": true,
       "dependencies": {
-        "@jsii/check-node": "1.91.0",
-        "@jsii/spec": "^1.91.0",
+        "@jsii/check-node": "1.98.0",
+        "@jsii/spec": "^1.98.0",
         "case": "^1.6.3",
         "chalk": "^4",
+        "downlevel-dts": "^0.11.0",
         "fast-deep-equal": "^3.1.3",
-        "fs-extra": "^10.1.0",
         "log4js": "^6.9.1",
-        "semver": "^7.5.4",
-        "semver-intersect": "^1.4.0",
+        "semver": "^7.6.2",
+        "semver-intersect": "^1.5.0",
         "sort-json": "^2.0.1",
-        "spdx-license-list": "^6.7.0",
-        "typescript": "~3.9.10",
-        "yargs": "^16.2.0"
+        "spdx-license-list": "^6.9.0",
+        "typescript": "~5.4",
+        "yargs": "^17.7.2"
       },
       "bin": {
         "jsii": "bin/jsii"
       },
       "engines": {
-        "node": ">= 14.17.0"
+        "node": ">= 18.12.0"
       }
     },
     "node_modules/jsii-pacmak": {
-      "version": "1.91.0",
-      "resolved": "https://registry.npmjs.org/jsii-pacmak/-/jsii-pacmak-1.91.0.tgz",
-      "integrity": "sha512-k3Mc8v2nS7OTZxbwXczjSl5/RzGXHPq/BzZ+MRQhP5Z0Ai7QDF++aJxx6GZT9JXOD8zpHpv74QOr6eLPRVRIEQ==",
+      "version": "1.98.0",
+      "resolved": "https://registry.npmjs.org/jsii-pacmak/-/jsii-pacmak-1.98.0.tgz",
+      "integrity": "sha512-p2H8IbiI3RNIUg+oRcJ9Xu1I7CgJUxCMpUl5IPzWAjz1qzhIKOzlkaAMGJfJZJQtib5kWI2OmZ6xBZScWg16+Q==",
       "dev": true,
       "dependencies": {
-        "@jsii/check-node": "1.91.0",
-        "@jsii/spec": "^1.91.0",
+        "@jsii/check-node": "1.98.0",
+        "@jsii/spec": "^1.98.0",
         "clone": "^2.1.2",
-        "codemaker": "^1.91.0",
+        "codemaker": "^1.98.0",
         "commonmark": "^0.30.0",
         "escape-string-regexp": "^4.0.0",
         "fs-extra": "^10.1.0",
-        "jsii-reflect": "^1.91.0",
-        "jsii-rosetta": "^1.91.0",
+        "jsii-reflect": "^1.98.0",
         "semver": "^7.5.4",
-        "spdx-license-list": "^6.7.0",
+        "spdx-license-list": "^6.8.0",
         "xmlbuilder": "^15.1.1",
         "yargs": "^16.2.0"
       },
@@ -5667,6 +5680,9 @@
       },
       "engines": {
         "node": ">= 14.17.0"
+      },
+      "peerDependencies": {
+        "jsii-rosetta": "^1.98.0 || ~5.2.0 || ~5.3.0 || ~5.4.0"
       }
     },
     "node_modules/jsii-pacmak/node_modules/cliui": {
@@ -5769,16 +5785,16 @@
       }
     },
     "node_modules/jsii-reflect": {
-      "version": "1.91.0",
-      "resolved": "https://registry.npmjs.org/jsii-reflect/-/jsii-reflect-1.91.0.tgz",
-      "integrity": "sha512-RRFmvscXiBHUOP9ew71gPQ2IptiHYoRaihKoLg5+SQSeCvynaJrBWhNcBy26LHd28HEN2atdzYems0+HgeQNRg==",
+      "version": "1.98.0",
+      "resolved": "https://registry.npmjs.org/jsii-reflect/-/jsii-reflect-1.98.0.tgz",
+      "integrity": "sha512-HulKk6pQOk0zkqJXRaweV5PezvAghZAX4cuB7i0sBA0/kz1ypqB1KFhBiZ1PLeeMzAfb1/WmCF2UTu9xzQit4w==",
       "dev": true,
       "dependencies": {
-        "@jsii/check-node": "1.91.0",
-        "@jsii/spec": "^1.91.0",
+        "@jsii/check-node": "1.98.0",
+        "@jsii/spec": "^1.98.0",
         "chalk": "^4",
         "fs-extra": "^10.1.0",
-        "oo-ascii-tree": "^1.91.0",
+        "oo-ascii-tree": "^1.98.0",
         "yargs": "^16.2.0"
       },
       "bin": {
@@ -5879,146 +5895,89 @@
       }
     },
     "node_modules/jsii-rosetta": {
-      "version": "1.91.0",
-      "resolved": "https://registry.npmjs.org/jsii-rosetta/-/jsii-rosetta-1.91.0.tgz",
-      "integrity": "sha512-v8eW/XiJHklnkmTtCIbyAeDPUVfovU/ZNh1ixvGri/ps5H3iRRpLEmqGJGMm2IEIjNCSmnmIsDMQLw20/7Nu+Q==",
+      "version": "5.4.20",
+      "resolved": "https://registry.npmjs.org/jsii-rosetta/-/jsii-rosetta-5.4.20.tgz",
+      "integrity": "sha512-OfZMOMobZB8MwTaiYYn/Iqw2SSWBPut9lJ/IfXK8lbP8JOBk4xJp/p2V5G44qShQQJqp6NS5Nv438DZ/0/wsvA==",
       "dev": true,
       "dependencies": {
-        "@jsii/check-node": "1.91.0",
-        "@jsii/spec": "1.91.0",
+        "@jsii/check-node": "1.98.0",
+        "@jsii/spec": "^1.98.0",
         "@xmldom/xmldom": "^0.8.10",
-        "commonmark": "^0.30.0",
-        "fast-glob": "^3.3.1",
-        "jsii": "1.91.0",
-        "semver": "^7.5.4",
-        "semver-intersect": "^1.4.0",
+        "chalk": "^4",
+        "commonmark": "^0.31.0",
+        "fast-glob": "^3.3.2",
+        "jsii": "~5.4.0",
+        "semver": "^7.6.2",
+        "semver-intersect": "^1.5.0",
         "stream-json": "^1.8.0",
-        "typescript": "~3.9.10",
+        "typescript": "~5.4",
         "workerpool": "^6.5.1",
-        "yargs": "^16.2.0"
+        "yargs": "^17.7.2"
       },
       "bin": {
         "jsii-rosetta": "bin/jsii-rosetta"
       },
       "engines": {
-        "node": ">= 14.17.0"
+        "node": ">= 18.12.0"
       }
     },
-    "node_modules/jsii-rosetta/node_modules/cliui": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
-      "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+    "node_modules/jsii-rosetta/node_modules/commonmark": {
+      "version": "0.31.0",
+      "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.31.0.tgz",
+      "integrity": "sha512-nuDsQ34gjmgAqjyIz6mbRWBW/XPE9wsBempAMBk2V/AA88ekztjTM46oi07J6c6Y/2Y8TdYCZi9L0pIBt/oMZw==",
       "dev": true,
       "dependencies": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^7.0.0"
-      }
-    },
-    "node_modules/jsii-rosetta/node_modules/typescript": {
-      "version": "3.9.10",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz",
-      "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==",
-      "dev": true,
+        "entities": "~3.0.1",
+        "mdurl": "~1.0.1",
+        "minimist": "~1.2.5",
+        "string.prototype.repeat": "^1.0.0"
+      },
       "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
+        "commonmark": "bin/commonmark"
       },
       "engines": {
-        "node": ">=4.2.0"
+        "node": "*"
       }
     },
-    "node_modules/jsii-rosetta/node_modules/wrap-ansi": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+    "node_modules/jsii-rosetta/node_modules/entities": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
+      "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
       "dev": true,
-      "dependencies": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
       "engines": {
-        "node": ">=10"
+        "node": ">=0.12"
       },
       "funding": {
-        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+        "url": "https://github.com/fb55/entities?sponsor=1"
       }
     },
-    "node_modules/jsii-rosetta/node_modules/yargs": {
-      "version": "16.2.0",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
-      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+    "node_modules/jsii-rosetta/node_modules/string.prototype.repeat": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+      "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
       "dev": true,
       "dependencies": {
-        "cliui": "^7.0.2",
-        "escalade": "^3.1.1",
-        "get-caller-file": "^2.0.5",
-        "require-directory": "^2.1.1",
-        "string-width": "^4.2.0",
-        "y18n": "^5.0.5",
-        "yargs-parser": "^20.2.2"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/jsii-rosetta/node_modules/yargs-parser": {
-      "version": "20.2.9",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
-      "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
       }
     },
     "node_modules/jsii-srcmak": {
-      "version": "0.1.967",
-      "resolved": "https://registry.npmjs.org/jsii-srcmak/-/jsii-srcmak-0.1.967.tgz",
-      "integrity": "sha512-HP7AF5s/gFaWDzSEwAj0hc3b0LwV7SG9+24jLp5ubQQtcip9nQsFVs6yZ452upxei2S8ONsIIwZsWMIXm22J2Q==",
+      "version": "0.1.1135",
+      "resolved": "https://registry.npmjs.org/jsii-srcmak/-/jsii-srcmak-0.1.1135.tgz",
+      "integrity": "sha512-wCs4VbOlLhsWoKC7LPkh0G6aN508k6nJnBgOcYh+AVGGRdmZYDN3/2cphttDpcmGM0aG5eUzoSwLP9IkYm+y/g==",
       "dev": true,
       "dependencies": {
         "fs-extra": "^9.1.0",
-        "jsii": "~5.2.29",
-        "jsii-pacmak": "^1.91.0",
+        "jsii": "~5.4.18",
+        "jsii-pacmak": "^1.98.0",
+        "jsii-rosetta": "^5.4.19",
         "ncp": "^2.0.0",
-        "yargs": "^15.4.1"
+        "yargs": "^17.7.2"
       },
       "bin": {
         "jsii-srcmak": "bin/jsii-srcmak"
       }
     },
-    "node_modules/jsii-srcmak/node_modules/camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jsii-srcmak/node_modules/decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/jsii-srcmak/node_modules/find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/jsii-srcmak/node_modules/fs-extra": {
       "version": "9.1.0",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -6034,51 +5993,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/jsii-srcmak/node_modules/jsii": {
-      "version": "5.2.29",
-      "resolved": "https://registry.npmjs.org/jsii/-/jsii-5.2.29.tgz",
-      "integrity": "sha512-2ApVgH/6473cyyVIxDtYGCm2yozJn0yhXYM+KYBxXsTjVXaXtkzSfD2PbPvzJ1phlR3FKAXSphFv8HIheRc/BA==",
-      "dev": true,
-      "dependencies": {
-        "@jsii/check-node": "1.91.0",
-        "@jsii/spec": "^1.91.0",
-        "case": "^1.6.3",
-        "chalk": "^4",
-        "downlevel-dts": "^0.11.0",
-        "fast-deep-equal": "^3.1.3",
-        "log4js": "^6.9.1",
-        "semver": "^7.5.4",
-        "semver-intersect": "^1.4.0",
-        "sort-json": "^2.0.1",
-        "spdx-license-list": "^6.8.0",
-        "typescript": "~5.2",
-        "yargs": "^17.7.2"
-      },
-      "bin": {
-        "jsii": "bin/jsii"
-      },
-      "engines": {
-        "node": ">= 16.14.0"
-      }
-    },
-    "node_modules/jsii-srcmak/node_modules/jsii/node_modules/yargs": {
-      "version": "17.7.2",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
-      "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
-      "dev": true,
-      "dependencies": {
-        "cliui": "^8.0.1",
-        "escalade": "^3.1.1",
-        "get-caller-file": "^2.0.5",
-        "require-directory": "^2.1.1",
-        "string-width": "^4.2.3",
-        "y18n": "^5.0.5",
-        "yargs-parser": "^21.1.1"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
     "node_modules/jsii-srcmak/node_modules/jsonfile": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -6091,45 +6005,6 @@
         "graceful-fs": "^4.1.6"
       }
     },
-    "node_modules/jsii-srcmak/node_modules/locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jsii-srcmak/node_modules/p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dev": true,
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/jsii-srcmak/node_modules/p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/jsii-srcmak/node_modules/universalify": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
@@ -6139,161 +6014,6 @@
         "node": ">= 10.0.0"
       }
     },
-    "node_modules/jsii-srcmak/node_modules/yargs": {
-      "version": "15.4.1",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
-      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
-      "dev": true,
-      "dependencies": {
-        "cliui": "^6.0.0",
-        "decamelize": "^1.2.0",
-        "find-up": "^4.1.0",
-        "get-caller-file": "^2.0.1",
-        "require-directory": "^2.1.1",
-        "require-main-filename": "^2.0.0",
-        "set-blocking": "^2.0.0",
-        "string-width": "^4.2.0",
-        "which-module": "^2.0.0",
-        "y18n": "^4.0.0",
-        "yargs-parser": "^18.1.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jsii-srcmak/node_modules/yargs/node_modules/cliui": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
-      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^6.2.0"
-      }
-    },
-    "node_modules/jsii-srcmak/node_modules/yargs/node_modules/y18n": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
-      "dev": true
-    },
-    "node_modules/jsii-srcmak/node_modules/yargs/node_modules/yargs-parser": {
-      "version": "18.1.3",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
-      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-      "dev": true,
-      "dependencies": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jsii/node_modules/cliui": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
-      "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^7.0.0"
-      }
-    },
-    "node_modules/jsii/node_modules/fs-extra": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
-      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/jsii/node_modules/jsonfile": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-      "dev": true,
-      "dependencies": {
-        "universalify": "^2.0.0"
-      },
-      "optionalDependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "node_modules/jsii/node_modules/typescript": {
-      "version": "3.9.10",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz",
-      "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==",
-      "dev": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "node_modules/jsii/node_modules/universalify": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
-      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/jsii/node_modules/wrap-ansi": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-      }
-    },
-    "node_modules/jsii/node_modules/yargs": {
-      "version": "16.2.0",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
-      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
-      "dev": true,
-      "dependencies": {
-        "cliui": "^7.0.2",
-        "escalade": "^3.1.1",
-        "get-caller-file": "^2.0.5",
-        "require-directory": "^2.1.1",
-        "string-width": "^4.2.0",
-        "y18n": "^5.0.5",
-        "yargs-parser": "^20.2.2"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/jsii/node_modules/yargs-parser": {
-      "version": "20.2.9",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
-      "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/json-buffer": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -6319,9 +6039,9 @@
       "dev": true
     },
     "node_modules/json2jsii": {
-      "version": "0.3.389",
-      "resolved": "https://registry.npmjs.org/json2jsii/-/json2jsii-0.3.389.tgz",
-      "integrity": "sha512-ct6j/QAj/jvGN0Oie3kd2aJ7a6UaB2m+TsDs3OjevqZEb2eE0m9iD5kjISaiIR1PNFl00kOZpILXi0cE/WIxuA==",
+      "version": "0.4.3",
+      "resolved": "https://registry.npmjs.org/json2jsii/-/json2jsii-0.4.3.tgz",
+      "integrity": "sha512-9PNmX7v94XVR5RiblCvtoCbFy3HALnRqZWLT8LSXEE7wujudmMXzdSFyyK0YwYd7dxpzNXirPf6eoQG5xL9N5A==",
       "dev": true,
       "dependencies": {
         "camelcase": "^6.3.0",
@@ -6498,18 +6218,6 @@
         "tslib": "^2.0.3"
       }
     },
-    "node_modules/lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/make-dir": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -6793,9 +6501,9 @@
       }
     },
     "node_modules/oo-ascii-tree": {
-      "version": "1.91.0",
-      "resolved": "https://registry.npmjs.org/oo-ascii-tree/-/oo-ascii-tree-1.91.0.tgz",
-      "integrity": "sha512-pH4FFNLTO8VG+vNUm4AHmhLNjoSfQlO1UKIrzBGdeScppY785D93GVMH1XkCwbuO7pd9rrh6El5WF3a5QNvaww==",
+      "version": "1.98.0",
+      "resolved": "https://registry.npmjs.org/oo-ascii-tree/-/oo-ascii-tree-1.98.0.tgz",
+      "integrity": "sha512-+GE7ywhtS6MctbfcO+vZzqIxcFzucZCwmawcwCVo89DxQDakV1JFfFViTXG4A90UzTAsU4tQteGmwDtwOlOXLw==",
       "dev": true,
       "engines": {
         "node": ">= 14.17.0"
@@ -7246,9 +6954,9 @@
       }
     },
     "node_modules/rfdc": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
-      "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",
+      "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==",
       "dev": true
     },
     "node_modules/rimraf": {
@@ -7387,13 +7095,10 @@
       "optional": true
     },
     "node_modules/semver": {
-      "version": "7.5.4",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
-      "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+      "version": "7.6.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+      "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
       "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
       "bin": {
         "semver": "bin/semver.js"
       },
@@ -7402,21 +7107,21 @@
       }
     },
     "node_modules/semver-intersect": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz",
-      "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.5.0.tgz",
+      "integrity": "sha512-BDjWX7yCC0haX4W/zrnV2JaMpVirwaEkGOBmgRQtH++F1N3xl9v7k9H44xfTqwl+yLNNSbMKosoVSTIiJVQ2Pw==",
       "dev": true,
       "dependencies": {
-        "semver": "^5.0.0"
+        "semver": "^6.3.0"
       }
     },
     "node_modules/semver-intersect/node_modules/semver": {
-      "version": "5.7.2",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
-      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
       "dev": true,
       "bin": {
-        "semver": "bin/semver"
+        "semver": "bin/semver.js"
       }
     },
     "node_modules/set-blocking": {
@@ -7559,9 +7264,9 @@
       }
     },
     "node_modules/spdx-license-list": {
-      "version": "6.8.0",
-      "resolved": "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-6.8.0.tgz",
-      "integrity": "sha512-5UdM7r9yJ1EvsPQZWfa41AZjLQngl9iMMysm9XBW7Lqhq7aF8cllfqjS+rFCHB8FFMGSM0yFWue2LUV9mR0QzQ==",
+      "version": "6.9.0",
+      "resolved": "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-6.9.0.tgz",
+      "integrity": "sha512-L2jl5vc2j6jxWcNCvcVj/BW9A8yGIG02Dw+IUw0ZxDM70f7Ylf5Hq39appV1BI9yxyWQRpq2TQ1qaXvf+yjkqA==",
       "dev": true,
       "engines": {
         "node": ">=8"
@@ -7798,9 +7503,9 @@
       }
     },
     "node_modules/table": {
-      "version": "6.8.1",
-      "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
-      "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
+      "version": "6.8.2",
+      "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz",
+      "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==",
       "dev": true,
       "dependencies": {
         "ajv": "^8.0.1",
@@ -7814,15 +7519,15 @@
       }
     },
     "node_modules/table/node_modules/ajv": {
-      "version": "8.12.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
-      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz",
+      "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==",
       "dev": true,
       "dependencies": {
-        "fast-deep-equal": "^3.1.1",
+        "fast-deep-equal": "^3.1.3",
         "json-schema-traverse": "^1.0.0",
         "require-from-string": "^2.0.2",
-        "uri-js": "^4.2.2"
+        "uri-js": "^4.4.1"
       },
       "funding": {
         "type": "github",
@@ -8055,9 +7760,9 @@
       }
     },
     "node_modules/typescript": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
-      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
+      "version": "5.4.5",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+      "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
       "dev": true,
       "bin": {
         "tsc": "bin/tsc",
@@ -8353,17 +8058,14 @@
         "node": ">=10"
       }
     },
-    "node_modules/yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true
-    },
     "node_modules/yaml": {
-      "version": "2.3.4",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
-      "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz",
+      "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==",
       "dev": true,
+      "bin": {
+        "yaml": "bin.mjs"
+      },
       "engines": {
         "node": ">= 14"
       }
@@ -8373,7 +8075,6 @@
       "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
       "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
       "dev": true,
-      "optional": true,
       "dependencies": {
         "cliui": "^8.0.1",
         "escalade": "^3.1.1",
diff --git a/package.json b/package.json
index b70f211b9..8f6bae5cf 100644
--- a/package.json
+++ b/package.json
@@ -23,16 +23,16 @@
     "test": "node --import tsx --test infra/**/*.test.ts"
   },
   "devDependencies": {
-    "@aws-cdk/lambda-layer-kubectl-v28": "^2.1.0",
+    "@aws-cdk/lambda-layer-kubectl-v28": "^2.2.0",
     "@aws-sdk/client-cloudformation": "3.451.0",
     "@aws-sdk/client-eks": "3.451.0",
     "@aws-sdk/client-ssm": "3.451.0",
     "@linzjs/style": "^5.2.0",
-    "aws-cdk": "2.108.x",
-    "aws-cdk-lib": "2.108.x",
-    "cdk8s": "^2.68.4",
-    "cdk8s-cli": "^2.177.0",
-    "cdk8s-plus-27": "^2.7.61",
+    "aws-cdk": "2.143.x",
+    "aws-cdk-lib": "2.143.x",
+    "cdk8s": "^2.68.71",
+    "cdk8s-cli": "^2.198.130",
+    "cdk8s-plus-27": "^2.9.4",
     "constructs": "^10.3.0",
     "tsx": "^4.6.2"
   }