From b97aec6b97ad1a91cc758ed02e9db8765e015f78 Mon Sep 17 00:00:00 2001 From: sepehr Date: Sun, 7 Jul 2024 14:48:52 +0330 Subject: [PATCH] MikroWizard Initial commit | MikroFront Welcome to the world :) --- .gitignore | 8 + Dockerfile | 25 + LICENSE | 21 + README.md | 222 + angular.json | 122 + build.sh | 7 + front-update.py | 189 + karma.conf.js | 44 + mwcrontab | 3 + nginx.conf | 38 + package-lock.json | 23691 ++++++++++++++++ package.json | 83 + proxy.conf.json | 8 + proxy.conf.ts | 22 + proxy.conf2.json | 8 + reqs.txt | 2 + run-docker.sh | 1 + src/app/app-routing.module.ts | 135 + src/app/app.component.spec.ts | 28 + src/app/app.component.ts | 33 + src/app/app.module.ts | 116 + src/app/containers/default-layout/_nav.ts | 158 + .../default-footer.component.html | 6 + .../default-footer.component.scss | 0 .../default-footer.component.spec.ts | 25 + .../default-footer.component.ts | 13 + .../default-header.component.html | 93 + .../default-header.component.scss | 0 .../default-header.component.spec.ts | 43 + .../default-header.component.ts | 67 + .../default-layout.component.html | 80 + .../default-layout.component.scss | 7 + .../default-layout.component.ts | 125 + src/app/containers/default-layout/index.ts | 3 + src/app/containers/index.ts | 1 + src/app/icons/icon-subset.ts | 281 + src/app/providers/login_checker.ts | 28 + src/app/providers/messaging.service.ts | 86 + src/app/providers/mikrowizard/data.ts | 455 + src/app/providers/mikrowizard/provider.ts | 209 + src/app/providers/mikrowizard/user.ts | 21 + src/app/views/acc_log/acc-routing.module.ts | 20 + src/app/views/acc_log/acc.component.html | 112 + src/app/views/acc_log/acc.component.scss | 86 + src/app/views/acc_log/acc.component.ts | 204 + src/app/views/acc_log/acc.module.ts | 42 + src/app/views/auth_log/auth-routing.module.ts | 21 + src/app/views/auth_log/auth.component.html | 142 + src/app/views/auth_log/auth.component.scss | 36 + src/app/views/auth_log/auth.component.ts | 222 + src/app/views/auth_log/auth.module.ts | 41 + .../views/backups/backups-routing.module.ts | 21 + src/app/views/backups/backups.component.html | 68 + src/app/views/backups/backups.component.scss | 0 src/app/views/backups/backups.component.ts | 153 + src/app/views/backups/backups.module.ts | 36 + .../dashboard/dashboard-routing.module.ts | 21 + .../views/dashboard/dashboard.component.html | 168 + .../views/dashboard/dashboard.component.ts | 217 + src/app/views/dashboard/dashboard.module.ts | 43 + .../device_detail/device-routing.module.ts | 21 + .../views/device_detail/device.component.html | 167 + .../views/device_detail/device.component.scss | 7 + .../device_detail/device.component.spec.ts | 36 + .../views/device_detail/device.component.ts | 437 + src/app/views/device_detail/device.module.ts | 42 + .../device_logs/devlogs-routing.module.ts | 21 + .../views/device_logs/devlogs.component.html | 139 + .../views/device_logs/devlogs.component.scss | 125 + .../views/device_logs/devlogs.component.ts | 234 + src/app/views/device_logs/devlogs.module.ts | 47 + .../views/devices/devices-routing.module.ts | 21 + src/app/views/devices/devices.component.html | 346 + src/app/views/devices/devices.component.ts | 460 + src/app/views/devices/devices.module.ts | 50 + .../devices_group/devgroup-routing.module.ts | 21 + .../devices_group/devgroup.component.html | 178 + .../views/devices_group/devgroup.component.ts | 240 + .../views/devices_group/devgroup.module.ts | 35 + .../views/icons/coreui-icons.component.html | 16 + src/app/views/icons/coreui-icons.component.ts | 46 + src/app/views/icons/icons-routing.module.ts | 48 + src/app/views/icons/icons.module.ts | 25 + .../views/pages/login/login.component.html | 51 + .../views/pages/login/login.component.scss | 0 .../views/pages/login/login.component.spec.ts | 35 + src/app/views/pages/login/login.component.ts | 66 + .../pages/page404/page404.component.html | 22 + .../pages/page404/page404.component.scss | 0 .../pages/page404/page404.component.spec.ts | 35 + .../views/pages/page404/page404.component.ts | 12 + .../pages/page500/page500.component.html | 22 + .../pages/page500/page500.component.scss | 0 .../pages/page500/page500.component.spec.ts | 35 + .../views/pages/page500/page500.component.ts | 12 + src/app/views/pages/pages-routing.module.ts | 36 + src/app/views/pages/pages.module.ts | 32 + .../permissions/permissions-routing.module.ts | 21 + .../permissions/permissions.component.html | 137 + .../permissions/permissions.component.ts | 260 + .../views/permissions/permissions.module.ts | 43 + .../views/settings/settings-routing.module.ts | 21 + .../views/settings/settings.component.html | 227 + .../views/settings/settings.component.scss | 10 + src/app/views/settings/settings.component.ts | 259 + src/app/views/settings/settings.module.ts | 41 + src/app/views/settings/timezones-data.ts | 1456 + .../views/snippets/snippets-routing.module.ts | 21 + .../views/snippets/snippets.component.html | 130 + src/app/views/snippets/snippets.component.ts | 214 + src/app/views/snippets/snippets.module.ts | 34 + src/app/views/syslog/syslog-routing.module.ts | 21 + src/app/views/syslog/syslog.component.html | 104 + src/app/views/syslog/syslog.component.scss | 128 + src/app/views/syslog/syslog.component.ts | 204 + src/app/views/syslog/syslog.module.ts | 41 + .../toast-sample-icon.component.svg | 11 + .../toast-sample-icon.component.ts | 14 + .../views/toast-simple/toast.component.html | 12 + .../views/toast-simple/toast.component.scss | 4 + .../toast-simple/toast.component.spec.ts | 34 + src/app/views/toast-simple/toast.component.ts | 28 + .../user_manager-routing.module.ts | 21 + .../user_manager/user_manager.component.html | 261 + .../user_manager/user_manager.component.ts | 296 + .../views/user_manager/user_manager.module.ts | 39 + .../user_tasks/user_tasks-routing.module.ts | 21 + .../user_tasks/user_tasks.component.html | 268 + .../views/user_tasks/user_tasks.component.ts | 306 + src/app/views/user_tasks/user_tasks.module.ts | 33 + .../widgets-brand.component.html | 22 + .../widgets-brand.component.scss | 0 .../widgets-brand.component.spec.ts | 36 + .../widgets-brand/widgets-brand.component.ts | 102 + .../widgets-dropdown.component.html | 28 + .../widgets-dropdown.component.scss | 0 .../widgets-dropdown.component.spec.ts | 36 + .../widgets-dropdown.component.ts | 423 + .../widgets-e/widgets-e.component.html | 56 + .../widgets-e/widgets-e.component.scss | 0 .../widgets-e/widgets-e.component.spec.ts | 35 + .../widgets/widgets-e/widgets-e.component.ts | 138 + .../views/widgets/widgets-routing.module.ts | 21 + src/app/views/widgets/widgets.module.ts | 52 + .../widgets/widgets/widgets.component.html | 616 + .../widgets/widgets/widgets.component.scss | 0 .../widgets/widgets/widgets.component.spec.ts | 40 + .../widgets/widgets/widgets.component.ts | 17 + src/assets/.gitkeep | 0 src/assets/angular.ico | Bin 0 -> 948 bytes src/assets/favicon.ico | Bin 0 -> 15086 bytes src/assets/images/angular.jpg | Bin 0 -> 169234 bytes src/assets/img/avatars/1.jpg | Bin 0 -> 13887 bytes src/assets/img/avatars/2.jpg | Bin 0 -> 12870 bytes src/assets/img/avatars/3.jpg | Bin 0 -> 13528 bytes src/assets/img/avatars/4.jpg | Bin 0 -> 13725 bytes src/assets/img/avatars/5.jpg | Bin 0 -> 12666 bytes src/assets/img/avatars/6.jpg | Bin 0 -> 11918 bytes src/assets/img/avatars/7.jpg | Bin 0 -> 14285 bytes src/assets/img/avatars/8.jpg | Bin 0 -> 15146 bytes src/assets/img/avatars/9.jpg | Bin 0 -> 12451 bytes .../img/brand/logo-MIkroWizard-big-color.svg | 252 + .../img/brand/logo-MIkroWizard-big-white.svg | 1 + .../brand/logo-MIkroWizard-small-color.svg | 325 + .../brand/logo-MIkroWizard-small-white.svg | 325 + src/assets/img/brand/mikrowizard-full.jpg | Bin 0 -> 88478 bytes src/assets/img/brand/mikrowizard-full.png | Bin 0 -> 33142 bytes src/assets/img/chip.png | Bin 0 -> 43692 bytes src/assets/img/loading.svg | 39 + src/assets/img/tcpip.png | Bin 0 -> 25147 bytes .../docs-callout/docs-callout.component.html | 17 + .../docs-callout/docs-callout.component.scss | 0 .../docs-callout.component.spec.ts | 27 + .../docs-callout/docs-callout.component.ts | 34 + src/components/docs-components.module.ts | 33 + .../docs-example/docs-example.component.html | 21 + .../docs-example/docs-example.component.scss | 0 .../docs-example.component.spec.ts | 25 + .../docs-example/docs-example.component.ts | 48 + .../docs-link/docs-link.component.html | 9 + .../docs-link/docs-link.component.scss | 0 .../docs-link/docs-link.component.spec.ts | 25 + .../docs-link/docs-link.component.ts | 27 + src/components/index.ts | 1 + src/components/public-api.ts | 4 + src/declarations.d.ts | 5 + src/index.html | 32 + src/main.ts | 9 + src/scss/_animations.scss | 114 + src/scss/_charts.scss | 7 + src/scss/_custom.scss | 125 + src/scss/_examples.scss | 113 + src/scss/_fixes.scss | 12 + src/scss/_layout.scss | 7 + src/scss/_scrollbar.scss | 36 + src/scss/_variables.scss | 1668 ++ src/scss/styles.scss | 28 + src/test.ts | 15 + tsconfig.app.json | 19 + tsconfig.json | 40 + tsconfig.spec.json | 18 + version.json | 1 + version_generate.py | 13 + 203 files changed, 41097 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 angular.json create mode 100755 build.sh create mode 100644 front-update.py create mode 100644 karma.conf.js create mode 100644 mwcrontab create mode 100644 nginx.conf create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 proxy.conf.json create mode 100644 proxy.conf.ts create mode 100644 proxy.conf2.json create mode 100644 reqs.txt create mode 100755 run-docker.sh create mode 100644 src/app/app-routing.module.ts create mode 100644 src/app/app.component.spec.ts create mode 100644 src/app/app.component.ts create mode 100644 src/app/app.module.ts create mode 100644 src/app/containers/default-layout/_nav.ts create mode 100644 src/app/containers/default-layout/default-footer/default-footer.component.html create mode 100644 src/app/containers/default-layout/default-footer/default-footer.component.scss create mode 100644 src/app/containers/default-layout/default-footer/default-footer.component.spec.ts create mode 100644 src/app/containers/default-layout/default-footer/default-footer.component.ts create mode 100644 src/app/containers/default-layout/default-header/default-header.component.html create mode 100644 src/app/containers/default-layout/default-header/default-header.component.scss create mode 100644 src/app/containers/default-layout/default-header/default-header.component.spec.ts create mode 100644 src/app/containers/default-layout/default-header/default-header.component.ts create mode 100644 src/app/containers/default-layout/default-layout.component.html create mode 100644 src/app/containers/default-layout/default-layout.component.scss create mode 100644 src/app/containers/default-layout/default-layout.component.ts create mode 100644 src/app/containers/default-layout/index.ts create mode 100644 src/app/containers/index.ts create mode 100644 src/app/icons/icon-subset.ts create mode 100644 src/app/providers/login_checker.ts create mode 100644 src/app/providers/messaging.service.ts create mode 100644 src/app/providers/mikrowizard/data.ts create mode 100644 src/app/providers/mikrowizard/provider.ts create mode 100644 src/app/providers/mikrowizard/user.ts create mode 100644 src/app/views/acc_log/acc-routing.module.ts create mode 100644 src/app/views/acc_log/acc.component.html create mode 100644 src/app/views/acc_log/acc.component.scss create mode 100644 src/app/views/acc_log/acc.component.ts create mode 100644 src/app/views/acc_log/acc.module.ts create mode 100644 src/app/views/auth_log/auth-routing.module.ts create mode 100644 src/app/views/auth_log/auth.component.html create mode 100644 src/app/views/auth_log/auth.component.scss create mode 100644 src/app/views/auth_log/auth.component.ts create mode 100644 src/app/views/auth_log/auth.module.ts create mode 100644 src/app/views/backups/backups-routing.module.ts create mode 100644 src/app/views/backups/backups.component.html create mode 100644 src/app/views/backups/backups.component.scss create mode 100644 src/app/views/backups/backups.component.ts create mode 100644 src/app/views/backups/backups.module.ts create mode 100644 src/app/views/dashboard/dashboard-routing.module.ts create mode 100644 src/app/views/dashboard/dashboard.component.html create mode 100644 src/app/views/dashboard/dashboard.component.ts create mode 100644 src/app/views/dashboard/dashboard.module.ts create mode 100644 src/app/views/device_detail/device-routing.module.ts create mode 100644 src/app/views/device_detail/device.component.html create mode 100644 src/app/views/device_detail/device.component.scss create mode 100644 src/app/views/device_detail/device.component.spec.ts create mode 100644 src/app/views/device_detail/device.component.ts create mode 100644 src/app/views/device_detail/device.module.ts create mode 100644 src/app/views/device_logs/devlogs-routing.module.ts create mode 100644 src/app/views/device_logs/devlogs.component.html create mode 100644 src/app/views/device_logs/devlogs.component.scss create mode 100644 src/app/views/device_logs/devlogs.component.ts create mode 100644 src/app/views/device_logs/devlogs.module.ts create mode 100644 src/app/views/devices/devices-routing.module.ts create mode 100644 src/app/views/devices/devices.component.html create mode 100644 src/app/views/devices/devices.component.ts create mode 100644 src/app/views/devices/devices.module.ts create mode 100644 src/app/views/devices_group/devgroup-routing.module.ts create mode 100644 src/app/views/devices_group/devgroup.component.html create mode 100644 src/app/views/devices_group/devgroup.component.ts create mode 100644 src/app/views/devices_group/devgroup.module.ts create mode 100644 src/app/views/icons/coreui-icons.component.html create mode 100644 src/app/views/icons/coreui-icons.component.ts create mode 100644 src/app/views/icons/icons-routing.module.ts create mode 100644 src/app/views/icons/icons.module.ts create mode 100644 src/app/views/pages/login/login.component.html create mode 100644 src/app/views/pages/login/login.component.scss create mode 100644 src/app/views/pages/login/login.component.spec.ts create mode 100644 src/app/views/pages/login/login.component.ts create mode 100644 src/app/views/pages/page404/page404.component.html create mode 100644 src/app/views/pages/page404/page404.component.scss create mode 100644 src/app/views/pages/page404/page404.component.spec.ts create mode 100644 src/app/views/pages/page404/page404.component.ts create mode 100644 src/app/views/pages/page500/page500.component.html create mode 100644 src/app/views/pages/page500/page500.component.scss create mode 100644 src/app/views/pages/page500/page500.component.spec.ts create mode 100644 src/app/views/pages/page500/page500.component.ts create mode 100644 src/app/views/pages/pages-routing.module.ts create mode 100644 src/app/views/pages/pages.module.ts create mode 100644 src/app/views/permissions/permissions-routing.module.ts create mode 100644 src/app/views/permissions/permissions.component.html create mode 100644 src/app/views/permissions/permissions.component.ts create mode 100644 src/app/views/permissions/permissions.module.ts create mode 100644 src/app/views/settings/settings-routing.module.ts create mode 100644 src/app/views/settings/settings.component.html create mode 100644 src/app/views/settings/settings.component.scss create mode 100644 src/app/views/settings/settings.component.ts create mode 100644 src/app/views/settings/settings.module.ts create mode 100644 src/app/views/settings/timezones-data.ts create mode 100644 src/app/views/snippets/snippets-routing.module.ts create mode 100644 src/app/views/snippets/snippets.component.html create mode 100644 src/app/views/snippets/snippets.component.ts create mode 100644 src/app/views/snippets/snippets.module.ts create mode 100644 src/app/views/syslog/syslog-routing.module.ts create mode 100644 src/app/views/syslog/syslog.component.html create mode 100644 src/app/views/syslog/syslog.component.scss create mode 100644 src/app/views/syslog/syslog.component.ts create mode 100644 src/app/views/syslog/syslog.module.ts create mode 100644 src/app/views/toast-simple/toast-sample-icon.component.svg create mode 100644 src/app/views/toast-simple/toast-sample-icon.component.ts create mode 100644 src/app/views/toast-simple/toast.component.html create mode 100644 src/app/views/toast-simple/toast.component.scss create mode 100644 src/app/views/toast-simple/toast.component.spec.ts create mode 100644 src/app/views/toast-simple/toast.component.ts create mode 100644 src/app/views/user_manager/user_manager-routing.module.ts create mode 100644 src/app/views/user_manager/user_manager.component.html create mode 100644 src/app/views/user_manager/user_manager.component.ts create mode 100644 src/app/views/user_manager/user_manager.module.ts create mode 100644 src/app/views/user_tasks/user_tasks-routing.module.ts create mode 100644 src/app/views/user_tasks/user_tasks.component.html create mode 100644 src/app/views/user_tasks/user_tasks.component.ts create mode 100644 src/app/views/user_tasks/user_tasks.module.ts create mode 100644 src/app/views/widgets/widgets-brand/widgets-brand.component.html create mode 100644 src/app/views/widgets/widgets-brand/widgets-brand.component.scss create mode 100644 src/app/views/widgets/widgets-brand/widgets-brand.component.spec.ts create mode 100644 src/app/views/widgets/widgets-brand/widgets-brand.component.ts create mode 100644 src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.html create mode 100644 src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.scss create mode 100644 src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.spec.ts create mode 100644 src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.ts create mode 100644 src/app/views/widgets/widgets-e/widgets-e.component.html create mode 100644 src/app/views/widgets/widgets-e/widgets-e.component.scss create mode 100644 src/app/views/widgets/widgets-e/widgets-e.component.spec.ts create mode 100644 src/app/views/widgets/widgets-e/widgets-e.component.ts create mode 100644 src/app/views/widgets/widgets-routing.module.ts create mode 100644 src/app/views/widgets/widgets.module.ts create mode 100644 src/app/views/widgets/widgets/widgets.component.html create mode 100644 src/app/views/widgets/widgets/widgets.component.scss create mode 100644 src/app/views/widgets/widgets/widgets.component.spec.ts create mode 100644 src/app/views/widgets/widgets/widgets.component.ts create mode 100644 src/assets/.gitkeep create mode 100644 src/assets/angular.ico create mode 100644 src/assets/favicon.ico create mode 100644 src/assets/images/angular.jpg create mode 100644 src/assets/img/avatars/1.jpg create mode 100644 src/assets/img/avatars/2.jpg create mode 100644 src/assets/img/avatars/3.jpg create mode 100644 src/assets/img/avatars/4.jpg create mode 100644 src/assets/img/avatars/5.jpg create mode 100644 src/assets/img/avatars/6.jpg create mode 100644 src/assets/img/avatars/7.jpg create mode 100644 src/assets/img/avatars/8.jpg create mode 100644 src/assets/img/avatars/9.jpg create mode 100644 src/assets/img/brand/logo-MIkroWizard-big-color.svg create mode 100644 src/assets/img/brand/logo-MIkroWizard-big-white.svg create mode 100644 src/assets/img/brand/logo-MIkroWizard-small-color.svg create mode 100644 src/assets/img/brand/logo-MIkroWizard-small-white.svg create mode 100644 src/assets/img/brand/mikrowizard-full.jpg create mode 100644 src/assets/img/brand/mikrowizard-full.png create mode 100644 src/assets/img/chip.png create mode 100644 src/assets/img/loading.svg create mode 100644 src/assets/img/tcpip.png create mode 100644 src/components/docs-callout/docs-callout.component.html create mode 100644 src/components/docs-callout/docs-callout.component.scss create mode 100644 src/components/docs-callout/docs-callout.component.spec.ts create mode 100644 src/components/docs-callout/docs-callout.component.ts create mode 100644 src/components/docs-components.module.ts create mode 100644 src/components/docs-example/docs-example.component.html create mode 100644 src/components/docs-example/docs-example.component.scss create mode 100644 src/components/docs-example/docs-example.component.spec.ts create mode 100644 src/components/docs-example/docs-example.component.ts create mode 100644 src/components/docs-link/docs-link.component.html create mode 100644 src/components/docs-link/docs-link.component.scss create mode 100644 src/components/docs-link/docs-link.component.spec.ts create mode 100644 src/components/docs-link/docs-link.component.ts create mode 100644 src/components/index.ts create mode 100644 src/components/public-api.ts create mode 100644 src/declarations.d.ts create mode 100644 src/index.html create mode 100644 src/main.ts create mode 100644 src/scss/_animations.scss create mode 100644 src/scss/_charts.scss create mode 100644 src/scss/_custom.scss create mode 100644 src/scss/_examples.scss create mode 100644 src/scss/_fixes.scss create mode 100644 src/scss/_layout.scss create mode 100644 src/scss/_scrollbar.scss create mode 100644 src/scss/_variables.scss create mode 100644 src/scss/styles.scss create mode 100644 src/test.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.spec.json create mode 100644 version.json create mode 100644 version_generate.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0406dee --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +/node_modules/ +*.log +*.swo +*.swp +.vimrc +.nvimrc +.angular/ +/dist/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..03f6690 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM nginx:latest AS ngi + +RUN apt-get update && apt-get -y install cron +RUN touch /var/log/cron.log +COPY reqs.txt /reqs.txt + +RUN set -ex \ + && buildDeps=' \ + build-essential \ + gcc \ + ' \ + && deps=' \ + htop \ + ' \ + && apt-get install -y python3 pip $buildDeps $deps --no-install-recommends && pip install -r /reqs.txt --break-system-packages +COPY front-update.py / +COPY mwcrontab /etc/cron.d/mwcrontab +RUN chmod 0644 /etc/cron.d/mwcrontab + +RUN crontab /etc/cron.d/mwcrontab + +COPY /dist/mikrowizard /usr/share/nginx/html +COPY /nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 80 +CMD cron;nginx -g "daemon off;" \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0653197 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-2023 creativeLabs ลukasz Holeczek + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0f10284 --- /dev/null +++ b/README.md @@ -0,0 +1,222 @@ +[![@coreui angular](https://img.shields.io/badge/@coreui%20-angular-lightgrey.svg?style=flat-square)](https://github.com/coreui/angular) +[![npm-coreui-angular][npm-coreui-angular-badge]][npm-coreui-angular] +[![NPM downloads][npm-coreui-angular-download]][npm-coreui-angular] +[![@coreui coreui](https://img.shields.io/badge/@coreui%20-coreui-lightgrey.svg?style=flat-square)](https://github.com/coreui/coreui) +[![npm package][npm-coreui-badge]][npm-coreui] +[![NPM downloads][npm-coreui-download]][npm-coreui] +![angular](https://img.shields.io/badge/angular-^16.2.0-lightgrey.svg?style=flat-square&logo=angular) + +[npm-coreui-angular]: https://www.npmjs.com/package/@coreui/angular +[npm-coreui-angular-badge]: https://img.shields.io/npm/v/@coreui/angular.png?style=flat-square +[npm-coreui-angular-badge-next]: https://img.shields.io/npm/v/@coreui/angular/next?style=flat-square&color=red +[npm-coreui-angular-download]: https://img.shields.io/npm/dm/@coreui/angular.svg?style=flat-square +[npm-coreui]: https://www.npmjs.com/package/@coreui/coreui +[npm-coreui-badge]: https://img.shields.io/npm/v/@coreui/coreui.png?style=flat-square +[npm-coreui-download]: https://img.shields.io/npm/dm/@coreui/coreui.svg?style=flat-square + +# CoreUI Free Admin Dashboard Template for Angular 16 + +CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of redundant components, so the app is light enough to offer ultimate user experience. This means mobile devices also, where the navigation is just as easy and intuitive as on a desktop or laptop. The CoreUI Layout API lets you customize your project for almost any device โ€“ be it Mobile, Web or WebApp โ€“ CoreUI covers them all! + +- [CoreUI Angular Admin Dashboard Template & UI Components Library](https://coreui.io/angular) +- [CoreUI Angular Demo](https://coreui.io/angular/demo/4.3/free/) +- [CoreUI Angular Docs](https://coreui.io/angular/docs/) + +## Table of Contents + +* [Versions](#versions) +* [CoreUI Pro](#coreui-pro) +* [Quick Start](#quick-start) +* [Installation](#installation) +* [Basic usage](#basic-usage) +* [What's included](#whats-included) +* [Documentation](#documentation) +* [Versioning](#versioning) +* [Creators](#creators) +* [Community](#community) +* [Copyright and License](#copyright-and-license) + +## Versions + +* [CoreUI Free Bootstrap Admin Template](https://github.com/coreui/coreui-free-bootstrap-admin-template) +* [CoreUI Free Angular Admin Template](https://github.com/coreui/coreui-free-angular-admin-template) +* [CoreUI Free React.js Admin Template](https://github.com/coreui/coreui-free-react-admin-template) +* [CoreUI Free Vue.js Admin Template](https://github.com/coreui/coreui-free-vue-admin-template) + +## CoreUI Pro + +**Only customers with [Enterpise Membership Plan](https://coreui.io/pro/#buy) have access to private GitHub CoreUI Pro repository.** + +* ๐Ÿ’ช [CoreUI Pro Angular Admin Template](https://coreui.io/product/angular-dashboard-template/) +* ๐Ÿ’ช [CoreUI Pro Bootstrap Admin Template](https://coreui.io/product/bootstrap-dashboard-template/) +* ๐Ÿ’ช [CoreUI Pro React Admin Template](https://coreui.io/product/react-dashboard-template/) +* ๐Ÿ’ช [CoreUI Pro Next.js Admin Template](https://coreui.io/product/next-js-dashboard-template/) +* ๐Ÿ’ช [CoreUI Pro Vue Admin Template](https://coreui.io/product/vue-dashboard-template/) + +## Quick Start + +- [Download the latest release](https://github.com/coreui/coreui-free-angular-admin-template/) +- Clone the repo: `git clone https://github.com/coreui/coreui-free-angular-admin-template.git` + +#### Prerequisites +Before you begin, make sure your development environment includes `Node.jsยฎ` and an `npm` package manager. + +###### Node.js +[**Angular 16**](https://angular.io/guide/what-is-angular) requires `Node.js` LTS version `^16.14` or `^18.10`. + +- To check your version, run `node -v` in a terminal/console window. +- To get `Node.js`, go to [nodejs.org](https://nodejs.org/). + +###### Angular CLI +Install the Angular CLI globally using a terminal/console window. +```bash +npm install -g @angular/cli +``` + +### Installation + +``` bash +$ npm install +$ npm update +``` + +### Basic usage + +``` bash +# dev server with hot reload at http://localhost:4200 +$ npm start +``` + +Navigate to [http://localhost:4200](http://localhost:4200). The app will automatically reload if you change any of the source files. + +#### Build + +Run `build` to build the project. The build artifacts will be stored in the `dist/` directory. + +```bash +# build for production with minification +$ npm run build +``` +## What's included + +Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this: + +``` +coreui-free-angular-admin-template +โ”œโ”€โ”€ src/ # project root +โ”‚ โ”œโ”€โ”€ app/ # main app directory +| โ”‚ โ”œโ”€โ”€ containers/ # layout containers +| | โ”‚ โ””โ”€โ”€ default-layout/ # layout containers +| | | โ””โ”€โ”€ _nav.js # sidebar navigation config +| โ”‚ โ”œโ”€โ”€ icons/ # icons set for the app +| โ”‚ โ””โ”€โ”€ views/ # application views +โ”‚ โ”œโ”€โ”€ assets/ # images, icons, etc. +โ”‚ โ”œโ”€โ”€ components/ # components for demo only +โ”‚ โ”œโ”€โ”€ scss/ # scss styles +โ”‚ โ””โ”€โ”€ index.html # html template +โ”‚ +โ”œโ”€โ”€ angular.json +โ”œโ”€โ”€ README.md +โ””โ”€โ”€ package.json +``` + +## Documentation + +The documentation for the CoreUI Admin Template is hosted at our website [CoreUI for Angular](https://coreui.io/angular/) + +--- + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.0.0. + +## Versioning + +For transparency into our release cycle and in striving to maintain backward compatibility, CoreUI Free Admin Template is maintained under [the Semantic Versioning guidelines](http://semver.org/). + +See [the Releases section of our project](https://github.com/coreui/coreui-free-angular-admin-template/releases) for changelogs for each release version. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. + +## Creators + +**ลukasz Holeczek** +* +* +* + +**CoreUI team** +* https://github.com/orgs/coreui/people + +## Community + +Get updates on CoreUI's development and chat with the project maintainers and community members. + +- Follow [@core_ui on Twitter](https://twitter.com/core_ui). +- Read and subscribe to [CoreUI Blog](https://coreui.io/blog/). + +## Support CoreUI Development + +CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the [CoreUI PRO](https://coreui.io/pricing/) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/). + + + +### Platinum Sponsors + +Support this project by [becoming a Platinum Sponsor](https://opencollective.com/coreui/contribute/platinum-sponsor-40959/). A large company logo will be added here with a link to your website. + + + +### Gold Sponsors + +Support this project by [becoming a Gold Sponsor](https://opencollective.com/coreui/contribute/gold-sponsor-40960/). A big company logo will be added here with a link to your website. + + + +### Silver Sponsors + +Support this project by [becoming a Silver Sponsor](https://opencollective.com/coreui/contribute/silver-sponsor-40967/). A medium company logo will be added here with a link to your website. + + + +### Bronze Sponsors + +Support this project by [becoming a Bronze Sponsor](https://opencollective.com/coreui/contribute/bronze-sponsor-40966/). The company avatar will show up here with a link to your OpenCollective Profile. + + + +### Backers + +Thanks to all the backers and sponsors! Support this project by [becoming a backer](https://opencollective.com/coreui/contribute/backer-40965/). + + + + + +## Copyright and License + +copyright 2017-2023 creativeLabs ลukasz Holeczek. + + +Code released under [the MIT license](https://github.com/coreui/coreui-free-react-admin-template/blob/master/LICENSE). +There is only one limitation you can't re-distribute the CoreUI as stock. You canโ€™t do this if you modify the CoreUI. In the past, we faced some problems with persons who tried to sell CoreUI based templates. diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..5ba5099 --- /dev/null +++ b/angular.json @@ -0,0 +1,122 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "cli": { + "analytics": false + }, + "version": 1, + "newProjectRoot": "projects", + "projects": { + "mikrowizard": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + }, + "@schematics/angular:application": { + "strict": true + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/mikrowizard", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": [ + "@angular/localize/init", + "zone.js" + ], + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "preserveSymlinks": true, + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/scss/styles.scss", + "node_modules/@easyfonts/font-awesome-v6/fontawesome.css", + "node_modules/@easyfonts/font-awesome-v6/solid.css", + "node_modules/@easyfonts/font-awesome-v6/regular.css", + "node_modules/@easyfonts/font-awesome-v6/brands.css", + + ], + "scripts": [], + "allowedCommonJsDependencies": [ + "chart.js" + ] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "1500kb", + "maximumError": "6mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "browserTarget": "mikrowizard:build:production" + }, + "development": { + "browserTarget": "mikrowizard:build:development" + } + }, + "proxyConfig": "proxy.conf.json", + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "mikrowizard:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing" + ], + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/scss/styles.scss" + ], + "scripts": [] + } + } + } + } + } +} diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..dd73cda --- /dev/null +++ b/build.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# run in dev mode + +npm run build --prod +python3 version_generate.py +sudo docker build --rm -t mikrofront . + diff --git a/front-update.py b/front-update.py new file mode 100644 index 0000000..f632379 --- /dev/null +++ b/front-update.py @@ -0,0 +1,189 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# mule1.py: independent worker process +# - a TCP server as an example + +import time +import datetime +from pathlib import Path +import requests +import logging +import os +import hashlib +import zipfile +import subprocess +import json +from cryptography.fernet import Fernet +logging.basicConfig(level=logging.INFO) + +log = logging.getLogger("updater") +log.setLevel(logging.INFO) +API_URL="http://host.docker.internal:8181" +Config_File="/conf/server-conf.json" +Version_File="/usr/share/nginx/html/version.json" +# Example usage +def check_sha256(filename, expect): + """Check if the file with the name "filename" matches the SHA-256 sum + in "expect".""" + h = hashlib.sha256() + # This will raise an exception if the file doesn't exist. Catching + # and handling it is left as an exercise for the reader. + try: + with open(filename, 'rb') as fh: + # Read and hash the file in 4K chunks. Reading the whole + # file at once might consume a lot of memory if it is + # large. + while True: + data = fh.read(4096) + if len(data) == 0: + break + else: + h.update(data) + return expect == h.hexdigest() + except Exception as e: + return False + +def crypt_data(text,key): + # Encryption: Encrypting password using Fernet symmetric encryption + key = Fernet.generate_key() + cipher_suite = Fernet(key) + # Encrypting + encrypted_password = cipher_suite.encrypt(text.encode()).decode() + return encrypted_password + + +def decrypt_data(text,key): + # Encryption: Decrypting password using Fernet symmetric encryption + cipher_suite = Fernet(key) + # Decrypting password + decrypted_password = cipher_suite.decrypt(text.encode()).decode() + return decrypted_password + +def extract_zip_reload(filename,dst): + """Extract the contents of the zip file "filename" to the directory + "dst". Then reload the updated modules.""" + with zipfile.ZipFile(filename, 'r') as zip_ref: + zip_ref.extractall(dst) + # run db migrate + # dir ="/usr/share/nginx/html/" + # cmd = "cd {}; PYTHONPATH={}py PYSRV_CONFIG_PATH={} python3 scripts/dbmigrate.py".format(dir, dir, "/conf/server-conf.json") + # p = subprocess.Popen(cmd, shell=True) + # (output, err) = p.communicate() + #This makes the wait possible + # p_status = p.wait() + #touch server reload file /app/reload + os.remove(filename) + # Path('/app/reload').touch() + +def load_config_file(): + try: + with open(Config_File, 'r') as fh: + config = json.load(fh) + return config + except Exception as e: + log.error(e) + return False + +def get_serial_from_api(): + url=API_URL+"/api/get_version" + config=load_config_file() + key=False + if config: + key=config.get('PYSRV_CRYPT_KEY',False) + else: + return False + if not key: + return False + try: + response = requests.get(url) + response = response.json() + return json.loads(decrypt_data(response['result'],key)) + except Exception as e: + log.error(e) + return False + + +def get_version_from_file(): + try: + with open(Version_File, 'r') as fh: + version = json.load(fh) + return version.get('version', '0.0.0') + except Exception as e: + log.error(e) + return '0.0.0' + + +def main(): + while True: + try: + next_hour = (time.time() // 3600 + 1) * 3600 + sleep_time = next_hour - time.time() + + res=get_serial_from_api() + hwid=res['serial'] + username=res['username'] + version=get_version_from_file() + + params={ + "serial_number": hwid, + "username": username.strip(), + "front":True, + "version": version + } + url="http://mikrowizard.com/wp-json/mikrowizard/v1/get_update" + # send post request to server mikrowizard.com with params in json + response = requests.post(url, json=params) + # get response from server + res = response + try: + if res.status_code == 200: + res=res.json() + if 'token' in res: + params={ + "token":res['token'], + "file_name":res['filename'], + "username":username.strip(), + "front":True + } + log.info("Update available/Downloading...") + else: + log.info("Update not available") + time.sleep(sleep_time) + continue + except Exception as e: + log.error(e) + + # check if filename exist in /app/py and checksum is same then dont continue + if check_sha256("/usr/share/nginx/"+res['filename'], res['sha256']): + log.error("Checksum match, File exist") + extract_zip_reload("/usr/share/nginx/"+res['filename'],"/usr/share/nginx/") + time.sleep(sleep_time) + continue + download_url="http://mikrowizard.com/wp-json/mikrowizard/v1/download_update" + # send post request to server mikrowizard.com with params in json + r = requests.post(download_url,json=params,stream=True) + if "invalid" in r.text or r.text=='false': + log.error(r) + log.error("Invalid response") + time.sleep(30) + continue + with open("/usr/share/nginx/"+res['filename'], 'wb') as fd: + for chunk in r.iter_content(chunk_size=128): + fd.write(chunk) + if check_sha256("/usr/share/nginx/"+res['filename'], res['sha256']): + log.error("Update downloaded") + log.error("/usr/share/nginx/"+res['filename']) + extract_zip_reload("/usr/share/nginx/"+res['filename'],"/usr/share/nginx/") + else: + log.error("Checksum not match") + os.remove("/usr/share/nginx/"+res['filename']) + time.sleep(sleep_time) + except Exception as e: + log.error(e) + time.sleep(30) + + +if __name__ == '__main__': + main() + diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..b975454 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,44 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/coreui-free-angular-admin-template'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/mwcrontab b/mwcrontab new file mode 100644 index 0000000..0ac41ca --- /dev/null +++ b/mwcrontab @@ -0,0 +1,3 @@ +# must be ended with a new line "LF" (Unix) and not "CRLF" (Windows) +* * * * * /usr/bin/python3 /front-update.py > /var/log/cron.log 2>&1 +# An empty line is required at the end of this file for a valid cron file. diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..418d1e1 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,38 @@ +server { + listen 80; + sendfile on; + default_type application/octet-stream; + + gzip on; + gzip_http_version 1.1; + gzip_disable "MSIE [1-6]\."; + gzip_min_length 256; + gzip_vary on; + gzip_proxied expired no-cache no-store private auth; + gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; + gzip_comp_level 9; + + root /usr/share/nginx/html; + + location / { + try_files $uri $uri/ /index.html =404; + } + location /api { + proxy_pass http://host.docker.internal:8181; + + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $realip_remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + proxy_http_version 1.1; + proxy_set_header Connection ""; + } + location /api/frontver { + add_header Cache-Control 'no-store'; + add_header Cache-Control 'no-cache'; + expires 0; + index version.json; + alias /usr/share/nginx/html; + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2ad6060 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,23691 @@ +{ + "name": "coreui-free-angular-admin-template", + "version": "4.5.27", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "coreui-free-angular-admin-template", + "version": "4.5.27", + "license": "MIT", + "dependencies": { + "@angular/animations": "^17.3.5", + "@angular/cdk": "^16.2.9", + "@angular/common": "^17.3.5", + "@angular/compiler": "^17.3.5", + "@angular/core": "^17.3.5", + "@angular/forms": "^17.3.5", + "@angular/language-service": "^17.3.5", + "@angular/material": "^17.3.5", + "@angular/platform-browser": "^17.3.5", + "@angular/platform-browser-dynamic": "^17.3.5", + "@angular/router": "^17.3.5", + "@coreui/angular": "~4.5.27", + "@coreui/angular-chartjs": "~4.5.27", + "@coreui/chartjs": "^3.1.2", + "@coreui/coreui": "~4.2.6", + "@coreui/icons": "^3.0.1", + "@coreui/icons-angular": "~4.5.27", + "@coreui/utils": "^2.0.2", + "@easyfonts/font-awesome-v6": "^6.0.6", + "@fortawesome/angular-fontawesome": "^0.13.0", + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-brands-svg-icons": "^6.4.2", + "@fortawesome/free-regular-svg-icons": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@generic-ui/fabric": "^0.19.0", + "@generic-ui/hermes": "^0.19.0", + "@generic-ui/ngx-grid": "^0.19.0", + "chart.js": "^3.9.1", + "date-fns": "^3.6.0", + "date-fns-jalali": "^3.6.0-0", + "date-fns-tz": "^3.1.3", + "font-awesome": "^4.7.0", + "install": "^0.13.0", + "lodash-es": "^4.17.21", + "mat-progress-buttons": "^9.3.1", + "ngx-cron-editor": "^0.8.1", + "ngx-date-fns": "^11.0.0", + "ngx-highlightjs": "^12.0.0", + "ngx-mat-select-search": "^7.0.6", + "ngx-material-date-fns-adapter": "^18.0.0", + "ngx-scrollbar": "^13.0.3", + "ngx-super-select": "^3.17.0", + "rxjs": "~7.8.1", + "tslib": "^2.3.0", + "zone.js": "~0.14.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^17.3.5", + "@angular/cli": "^17.3.5", + "@angular/compiler-cli": "^17.3.5", + "@angular/localize": "^17.3.5", + "@types/jasmine": "^5.1.1", + "@types/lodash-es": "^4.17.10", + "@types/node": "^18.19.34", + "jasmine-core": "^5.1.1", + "karma": "^6.4.2", + "karma-chrome-launcher": "^3.2.0", + "karma-coverage": "^2.2.1", + "karma-jasmine": "^5.1.0", + "karma-jasmine-html-reporter": "^2.1.0", + "typescript": "~5.4.5" + }, + "engines": { + "node": "^16.14.0 || ^18.10.0", + "npm": ">= 6" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1703.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.5.tgz", + "integrity": "sha512-j3+9QeXIafuRMtk7N5Cmm/IiMSS/TOaybzfCv/LK+DP3hjEd8f8Az7hPmevUuOArvWNzUvoUeu30GmR3wABydA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "17.3.5", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.5.tgz", + "integrity": "sha512-Ju2MkMidJglJq/iWgM9CNbhK7A/2n0LNYPZx+ucb+aOFWvurCQrU4Mt/es6xCsxOEs5OPhjqdva8mxE5FHwzTQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1703.5", + "@angular-devkit/build-webpack": "0.1703.5", + "@angular-devkit/core": "17.3.5", + "@babel/core": "7.24.0", + "@babel/generator": "7.23.6", + "@babel/helper-annotate-as-pure": "7.22.5", + "@babel/helper-split-export-declaration": "7.22.6", + "@babel/plugin-transform-async-generator-functions": "7.23.9", + "@babel/plugin-transform-async-to-generator": "7.23.3", + "@babel/plugin-transform-runtime": "7.24.0", + "@babel/preset-env": "7.24.0", + "@babel/runtime": "7.24.0", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "17.3.5", + "@vitejs/plugin-basic-ssl": "1.1.0", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.18", + "babel-loader": "9.1.3", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.21.5", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.22", + "css-loader": "6.10.0", + "esbuild-wasm": "0.20.1", + "fast-glob": "3.3.2", + "http-proxy-middleware": "2.0.6", + "https-proxy-agent": "7.0.4", + "inquirer": "9.2.15", + "jsonc-parser": "3.2.1", + "karma-source-map-support": "1.4.0", + "less": "4.2.0", + "less-loader": "11.1.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "magic-string": "0.30.8", + "mini-css-extract-plugin": "2.8.1", + "mrmime": "2.0.0", + "open": "8.4.2", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.1", + "piscina": "4.4.0", + "postcss": "8.4.35", + "postcss-loader": "8.1.1", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.71.1", + "sass-loader": "14.1.1", + "semver": "7.6.0", + "source-map-loader": "5.0.0", + "source-map-support": "0.5.21", + "terser": "5.29.1", + "tree-kill": "1.2.2", + "tslib": "2.6.2", + "undici": "6.11.1", + "vite": "5.1.7", + "watchpack": "2.4.0", + "webpack": "5.90.3", + "webpack-dev-middleware": "6.1.2", + "webpack-dev-server": "4.15.1", + "webpack-merge": "5.10.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.20.1" + }, + "peerDependencies": { + "@angular/compiler-cli": "^17.0.0", + "@angular/localize": "^17.0.0", + "@angular/platform-server": "^17.0.0", + "@angular/service-worker": "^17.0.0", + "@web/test-runner": "^0.18.0", + "browser-sync": "^3.0.2", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "karma": "^6.3.0", + "ng-packagr": "^17.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=5.2 <5.5" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@web/test-runner": { + "optional": true + }, + "browser-sync": { + "optional": true + }, + "jest": { + "optional": true + }, + "jest-environment-jsdom": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "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/semver": { + "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.js" + } + }, + "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 + }, + "node_modules/@angular-devkit/build-angular/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/@angular-devkit/build-angular/node_modules/picomatch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@angular-devkit/build-angular/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/@angular-devkit/build-webpack": { + "version": "0.1703.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.5.tgz", + "integrity": "sha512-KcoKlWhDP6+2q3laQ6elXLt2QrVxWJFdCPUC9dIm0Tnc997Tal/UVhlDKaZgITYDgDvRFqG+tzNm2uFd8l7h+A==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1703.5", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.5.tgz", + "integrity": "sha512-iqGv45HVI+yRROoTqQTY0QChYlRCZkFUfIjdfJLegjc6xq9sLtxDr03CWM45BKGG5lSxDOy+qu/pdRvtL3V2eg==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.1", + "picomatch": "4.0.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/picomatch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.5.tgz", + "integrity": "sha512-oh/mvpMKxGfk5v9QIB7LfGsDC/iVpmsIAvbb4+1ddCx86EJXdz3xWnVDbUehOd6n7HJXnQrNirWjWvWquM2GhQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "17.3.5", + "jsonc-parser": "3.2.1", + "magic-string": "0.30.8", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/animations": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.5.tgz", + "integrity": "sha512-hbfCnBxwhYQMKB+9tDcmfvckUtB8LdY1gPST6TZ7CzrWCSPddsnXxqxBZSBjBI6zXvE4FOV3kUzaUXM/Bq5sRw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.3.5" + } + }, + "node_modules/@angular/cdk": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.14.tgz", + "integrity": "sha512-n6PrGdiVeSTEmM/HEiwIyg6YQUUymZrb5afaNLGFRM5YL0Y8OBqd+XhCjb0OfD/AfgCUtedVEPwNqrfW8KzgGw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^16.0.0 || ^17.0.0", + "@angular/core": "^16.0.0 || ^17.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cli": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.5.tgz", + "integrity": "sha512-6MHJzPKy4uB9qlJO1eKs4rtDlRuCe0lOiz1f3kHFZ/GQQm5xA1xsmZJMN4ASsnu4yU3oZs6vJ/vt8i2/jvdPbA==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1703.5", + "@angular-devkit/core": "17.3.5", + "@angular-devkit/schematics": "17.3.5", + "@schematics/angular": "17.3.5", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.1.2", + "inquirer": "9.2.15", + "jsonc-parser": "3.2.1", + "npm-package-arg": "11.0.1", + "npm-pick-manifest": "9.0.0", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "17.0.6", + "resolve": "1.22.8", + "semver": "7.6.0", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/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/@angular/cli/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/cli/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/@angular/common": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.5.tgz", + "integrity": "sha512-Ox91WxSnOSrQ6I21cHi69EfT2Pxtd5Knb5AsdwpxqE57V2E7EnWMhb+LP+holCtFUhK529EGXCk788M+Elyw6g==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.3.5", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.5.tgz", + "integrity": "sha512-lTubBFNlpH9zK46+yeVI7VJQNUELLAB8W1ucndYLCA9Rr9Jop+rYIXijmr42AGokOYr7yLc8HRiSQ5e+X2pUQg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.3.5" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.5.tgz", + "integrity": "sha512-R53JNbbVDHWSGdL0e2vGQ5iJCrILOWZ1oemKjekOFB93fUBlEyi+nZmm4uTO7RU8PgjB0UpxI6ok5ZE3Amkt6A==", + "dev": true, + "dependencies": { + "@babel/core": "7.23.9", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/compiler": "17.3.5", + "typescript": ">=5.2 <5.5" + } + }, + "node_modules/@angular/core": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.5.tgz", + "integrity": "sha512-y6P27lcrKy3yMx/rtMuGsAnDyVEsS3BdyArTXcD0TOImVGHhVIaB0L95DUCam3ajTe2f2x39eozJZDh7QSpJaw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.14.0" + } + }, + "node_modules/@angular/forms": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.5.tgz", + "integrity": "sha512-Rf/8XWHdFYZQaOVTJ0QVwxQm9fDqQqIJc0yfPcH/DYL5pT7R0U2z98I5McZawzUBJUo1Zt1gijzDlzNUGf6jiA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/common": "17.3.5", + "@angular/core": "17.3.5", + "@angular/platform-browser": "17.3.5", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/language-service": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-17.3.5.tgz", + "integrity": "sha512-s3W5o+pRPU3jNWeeyO4XEdc28+s4MPhew+k0meQfZ11VMdmShzwFu5nPgOMmLB3fBhQqlSBrHUh1P9SB7Hu3FQ==", + "engines": { + "node": "^18.13.0 || >=20.9.0" + } + }, + "node_modules/@angular/localize": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-17.3.5.tgz", + "integrity": "sha512-/5iKRvnleA2vsf8zqNZaXeOBjFFq3FLrbot+ygfmk3uYqz949X0nXrXBKk9kpakw/WC6kgzK+tmiEHKQY6cLiQ==", + "dev": true, + "dependencies": { + "@babel/core": "7.23.9", + "@types/babel__core": "7.20.5", + "fast-glob": "3.3.2", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/compiler": "17.3.5", + "@angular/compiler-cli": "17.3.5" + } + }, + "node_modules/@angular/material": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.3.5.tgz", + "integrity": "sha512-1+QqBQ8HVOwxOkx/v2n53JA9ALOee55yVDbnAv7TkseNN4JEDxOcE5TO5HGmdV2A4tcsXQ00MIdy04jiB4sCng==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/auto-init": "15.0.0-canary.7f224ddd4.0", + "@material/banner": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/card": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/chips": "15.0.0-canary.7f224ddd4.0", + "@material/circular-progress": "15.0.0-canary.7f224ddd4.0", + "@material/data-table": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dialog": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/drawer": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/fab": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/form-field": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/image-list": "15.0.0-canary.7f224ddd4.0", + "@material/layout-grid": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/radio": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/segmented-button": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/slider": "15.0.0-canary.7f224ddd4.0", + "@material/snackbar": "15.0.0-canary.7f224ddd4.0", + "@material/switch": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-bar": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/textfield": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tooltip": "15.0.0-canary.7f224ddd4.0", + "@material/top-app-bar": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^17.0.0 || ^18.0.0", + "@angular/cdk": "17.3.5", + "@angular/common": "^17.0.0 || ^18.0.0", + "@angular/core": "^17.0.0 || ^18.0.0", + "@angular/forms": "^17.0.0 || ^18.0.0", + "@angular/platform-browser": "^17.0.0 || ^18.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.5.tgz", + "integrity": "sha512-ITlu/GTD64Sr0FMaFCJiHoTJrEZw8qRFXjPjv3BKhAp5dQKcwnCm02o1NOaj5d8oIItIh5fbI2zP0CSU2qNZkQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/animations": "17.3.5", + "@angular/common": "17.3.5", + "@angular/core": "17.3.5" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.5.tgz", + "integrity": "sha512-KuS4j3Gh1h/CEj+bIOc/IcZIdiCB/DNbtUvz1eNp1o23aM8QutqelI3A4WBnQuR4yq8Z/8M3FH9F1OVwwhn2QQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/common": "17.3.5", + "@angular/compiler": "17.3.5", + "@angular/core": "17.3.5", + "@angular/platform-browser": "17.3.5" + } + }, + "node_modules/@angular/router": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.5.tgz", + "integrity": "sha512-KsIIs3t9IpxsdMSrJDZzO5WgIWkVE6Ep5WWiSyPIgEfA+ndGpJLmyv0d/r1yKKlYUJxz7Hde55o4thgT2n2x/A==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/common": "17.3.5", + "@angular/core": "17.3.5", + "@angular/platform-browser": "17.3.5", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "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/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", + "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", + "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz", + "integrity": "sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", + "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@coreui/angular": { + "version": "4.5.29", + "resolved": "https://registry.npmjs.org/@coreui/angular/-/angular-4.5.29.tgz", + "integrity": "sha512-Pk3fSUxRCV2JAdkyTz3ZxSKUqrWduYT7zjzONmfeSx8q5Ryb5o42U+51iBeF/ScVLiErCOYGMOhnQR/FXeJ3Ww==", + "dependencies": { + "@popperjs/core": "~2.11.6", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^16.1.0", + "@angular/cdk": "^16.1.0", + "@angular/common": "^16.1.0", + "@angular/core": "^16.1.0", + "@angular/router": "^16.1.0", + "rxjs": "^7.8.1" + } + }, + "node_modules/@coreui/angular-chartjs": { + "version": "4.5.28", + "resolved": "https://registry.npmjs.org/@coreui/angular-chartjs/-/angular-chartjs-4.5.28.tgz", + "integrity": "sha512-XwMecBZXiX+k6sq35qRpPgrzxvyMegknH3LOW23ySdhOUYS0+ZoYHIUAjmPCDynDxe6poFY8cCmxvKxnKFaZDA==", + "dependencies": { + "lodash-es": "^4.17.21", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "^16.1.0", + "@angular/common": "^16.1.0", + "@angular/core": "^16.1.0", + "@coreui/chartjs": "^3.0.0", + "chart.js": "^3.9.1" + } + }, + "node_modules/@coreui/chartjs": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@coreui/chartjs/-/chartjs-3.1.2.tgz", + "integrity": "sha512-d3MGk3KZNAt29VRKP/XYiGmT56KTqtuOhLEg5HNwb7P7ZmEgOJoHxFHVCVE4I36hfgQCjZZVknsuk2ZTfF/2fw==", + "dependencies": { + "@coreui/coreui": "^4.2.6", + "chart.js": "^3.9.1" + } + }, + "node_modules/@coreui/coreui": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@coreui/coreui/-/coreui-4.2.6.tgz", + "integrity": "sha512-h9j1BVnaDi9vSr1t0H8NL3hlDD4lU9kIdGLXn7g9k5iaFq5EDlRDcSBDer6lR2O4sIEl7W7YqTlevLxFC+1cIA==", + "dependencies": { + "postcss-combine-duplicated-selectors": "^10.0.3" + }, + "peerDependencies": { + "@popperjs/core": "^2.11.6" + } + }, + "node_modules/@coreui/icons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@coreui/icons/-/icons-3.0.1.tgz", + "integrity": "sha512-u9UKEcRMyY9pa4jUoLij8pAR03g5g6TLWV33/Mx2ix8sffyi0eO4fLV8DSTQljDCw938zt7KYog5cVKEAJUxxg==" + }, + "node_modules/@coreui/icons-angular": { + "version": "4.5.28", + "resolved": "https://registry.npmjs.org/@coreui/icons-angular/-/icons-angular-4.5.28.tgz", + "integrity": "sha512-wMyGIfLcHuv6lOAbFIcFHDbreTXCiUconhCq4yHSw/ZIpKxyp3lUKdQH5IXu5fTg9fwPxobGnIrEPg30/bisww==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^16.1.0", + "@angular/core": "^16.1.0", + "@angular/platform-browser": "^16.1.0", + "@coreui/icons": "^2.1.0 || ^3.0.0" + } + }, + "node_modules/@coreui/utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@coreui/utils/-/utils-2.0.2.tgz", + "integrity": "sha512-tIFmyKzR96vSD3vqtw4H/4rH/Pctghj+Rp9kWncx1ec2vstC+yphcEUmMk/r+Mm86/Tradi0SIcuCaqvhkyqJA==" + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@easyfonts/font-awesome-v6": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@easyfonts/font-awesome-v6/-/font-awesome-v6-6.0.6.tgz", + "integrity": "sha512-I3mV9KQuD6jJgfX3bU3mdv/RtYSd+X/Y9Yo2RrAmIfQJeDVCQdTPXBgmodMtGxfAU8lVHKFwr/fh9zexavXdNQ==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz", + "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz", + "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz", + "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz", + "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz", + "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz", + "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz", + "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz", + "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz", + "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz", + "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz", + "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz", + "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz", + "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz", + "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz", + "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz", + "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz", + "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz", + "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz", + "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz", + "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz", + "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz", + "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz", + "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fortawesome/angular-fontawesome": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.13.0.tgz", + "integrity": "sha512-gzSPRdveOXNO7NIiMgTyB46aiHG0i98KinnAEqHXi8qzraM/kCcHn/0y3f4MhemX6kftwsFli0IU8RyHmtXlSQ==", + "dependencies": { + "tslib": "^2.4.1" + }, + "peerDependencies": { + "@angular/core": "^16.0.0", + "@fortawesome/fontawesome-svg-core": "~1.2.27 || ~1.3.0-beta2 || ^6.1.0" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", + "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", + "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.2.tgz", + "integrity": "sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.2.tgz", + "integrity": "sha512-iabw/f5f8Uy2nTRtJ13XZTS1O5+t+anvlamJ3zJGLEVE2pKsAWhPv2lq01uQlfgCX7VaveT3EVs515cCN9jRbw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", + "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@generic-ui/fabric": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@generic-ui/fabric/-/fabric-0.19.1.tgz", + "integrity": "sha512-VX1S+hqK+anU5MHoys40oYkCSGqxXL82lQEavguoV8yqBxoXRPht7ma9XDh7EJolW2YsvYmAohZqNYeEAs3aBw==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^15.0.0", + "@angular/core": "^15.0.0" + } + }, + "node_modules/@generic-ui/hermes": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@generic-ui/hermes/-/hermes-0.19.1.tgz", + "integrity": "sha512-qySdtVA4XumzYUmVR+THIuqhdH50WVqE5jDO1FHFVapj9wt7GyymverKPOkGE37LG3uvRVcfej/xeE/6G2mdXA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^15.0.0", + "@angular/core": "^15.0.0", + "rxjs": "6.6.7" + } + }, + "node_modules/@generic-ui/ngx-grid": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@generic-ui/ngx-grid/-/ngx-grid-0.19.1.tgz", + "integrity": "sha512-w+qn4sTazQM0X99TfCk/JDkAhCFOrw6DK5MOjp1ZCPWFx+3JnIS+bYQ5cM6UFn/6h1lO2rQURv1pwbXhY3Dv1g==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^15.0.0", + "@angular/core": "^15.0.0", + "@angular/forms": "^15.0.0", + "@angular/platform-browser": "^15.0.0", + "@generic-ui/fabric": "0.19.1", + "@generic-ui/hermes": "0.19.1", + "rxjs": "~6.6.7" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "node_modules/@ljharb/through": { + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", + "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@material/animation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/auto-init": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/banner": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/base": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", + "dependencies": { + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/card": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", + "dependencies": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/checkbox": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/chips": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/circular-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/data-table": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/density": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dialog": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dom": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/drawer": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/elevation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/fab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/feature-targeting": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/floating-label": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/focus-ring": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==", + "dependencies": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0" + } + }, + "node_modules/@material/form-field": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/icon-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/image-list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/layout-grid": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/line-ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/linear-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu-surface": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/notched-outline": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/progress-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/radio": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/rtl": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", + "dependencies": { + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/segmented-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/select": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/shape": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/slider": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/snackbar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/switch": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-scroller": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/textfield": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/theme": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tokens": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", + "dependencies": { + "@material/elevation": "15.0.0-canary.7f224ddd4.0" + } + }, + "node_modules/@material/tooltip": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/top-app-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/touch-target": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/typography": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.5.tgz", + "integrity": "sha512-0heI0yHUckdGI8uywu/wkp24KR/tdYMKYJOaYIU+9JydyN1zJRpbR7x0thddl7+k/zu2ZGbfFdv1779Ecw/xdA==", + "dev": true, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^17.0.0", + "typescript": ">=5.2 <5.5", + "webpack": "^5.54.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.6.tgz", + "integrity": "sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/git/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "dev": true, + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.0.3.tgz", + "integrity": "sha512-cgsjCvld2wMqkUqvY+SZI+1ZJ7umGBYc9IAKfqJRKJCcs7hCQYxScUgdsyrRINk3VmdCYf9TXiLBHQ6ECTxhtg==", + "dev": true, + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/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/@npmcli/package-json/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz", + "integrity": "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==", + "dev": true, + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", + "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", + "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz", + "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz", + "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz", + "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz", + "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz", + "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz", + "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz", + "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz", + "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz", + "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz", + "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz", + "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz", + "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz", + "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz", + "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz", + "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz", + "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@schematics/angular": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.5.tgz", + "integrity": "sha512-SWCK16Eob0K86hpZ3NHmrTS6LSzTlhvnIdf3BXC6nzoiyDhcAS0oJ2Tjdq1opW/PaL1hB7MulcbIhxYln5du0w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "17.3.5", + "@angular-devkit/schematics": "17.3.5", + "jsonc-parser": "3.2.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", + "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", + "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz", + "integrity": "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.0.tgz", + "integrity": "sha512-tsAyV6FC3R3pHmKS880IXcDJuiFJiKITO1jxR1qbplcsBkZLBmjrEw5GbC7ikD6f5RU1hr7WnmxB/2kKc1qUWQ==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.2.tgz", + "integrity": "sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.0.tgz", + "integrity": "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz", + "integrity": "sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg==", + "dev": true + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.0.tgz", + "integrity": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==", + "dev": true, + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/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/@tufjs/models/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.9", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz", + "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", + "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", + "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==", + "dev": true + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dev": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.19.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.34.tgz", + "integrity": "sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", + "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", + "dev": true, + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.18", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", + "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001591", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.1", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "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.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/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, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", + "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/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/cacache/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/caniuse-lite": { + "version": "1.0.30001611", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz", + "integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chart.js": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/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, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/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, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/critters": { + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.22.tgz", + "integrity": "sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "postcss-media-query-parser": "^0.2.3" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/date-fns-jalali": { + "version": "3.6.0-0", + "resolved": "https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-3.6.0-0.tgz", + "integrity": "sha512-rcOocwhBFgEN4i+vXPoEp/irCxAmX8yloK/l/oeMOVCLpaFQfkq7jVn0vCWK91P2H9I/doSAPEN4WSWQeqwsug==" + }, + "node_modules/date-fns-tz": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.1.3.tgz", + "integrity": "sha512-ZfbMu+nbzW0mEzC8VZrLiSWvUIaI3aRHeq33mTe7Y38UctKukgqPR4nTDwcwS4d64Gf8GghnVsroBuMY3eiTeA==", + "peerDependencies": { + "date-fns": "^3.0.0" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.740", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.740.tgz", + "integrity": "sha512-Yvg5i+iyv7Xm18BRdVPVm8lc7kgxM3r6iwqCH2zB7QZy1kZRNmd0Zqm0zcD9XoFREE5/5rwIuIAOT+/mzGcnZg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "devOptional": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", + "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz", + "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.1", + "@esbuild/android-arm": "0.20.1", + "@esbuild/android-arm64": "0.20.1", + "@esbuild/android-x64": "0.20.1", + "@esbuild/darwin-arm64": "0.20.1", + "@esbuild/darwin-x64": "0.20.1", + "@esbuild/freebsd-arm64": "0.20.1", + "@esbuild/freebsd-x64": "0.20.1", + "@esbuild/linux-arm": "0.20.1", + "@esbuild/linux-arm64": "0.20.1", + "@esbuild/linux-ia32": "0.20.1", + "@esbuild/linux-loong64": "0.20.1", + "@esbuild/linux-mips64el": "0.20.1", + "@esbuild/linux-ppc64": "0.20.1", + "@esbuild/linux-riscv64": "0.20.1", + "@esbuild/linux-s390x": "0.20.1", + "@esbuild/linux-x64": "0.20.1", + "@esbuild/netbsd-x64": "0.20.1", + "@esbuild/openbsd-x64": "0.20.1", + "@esbuild/sunos-x64": "0.20.1", + "@esbuild/win32-arm64": "0.20.1", + "@esbuild/win32-ia32": "0.20.1", + "@esbuild/win32-x64": "0.20.1" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz", + "integrity": "sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "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" + } + }, + "node_modules/express/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, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "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", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/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, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", + "engines": { + "node": ">=0.10.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", + "dev": true, + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/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/ignore-walk/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "9.2.15", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", + "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", + "dev": true, + "dependencies": { + "@ljharb/through": "^2.3.12", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^3.2.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jasmine-core": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.1.2.tgz", + "integrity": "sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/karma": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", + "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.7.2", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/karma-coverage": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", + "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0 || ^5.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", + "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", + "dev": true + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/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/karma/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/karma/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/karma/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/karma/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/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/make-fetch-happen": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "dev": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/mat-progress-buttons": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/mat-progress-buttons/-/mat-progress-buttons-9.3.1.tgz", + "integrity": "sha512-Y0KIyKxb+QdlcJyi299GYSrBu53uYVK1w1LnKs/x6bMfKJkuFlpQdP7t5TqorndYe8H4iyhyM6SVpDxlAoNXLw==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@angular/cdk": "^11.0.3", + "@angular/common": "^11.0.5", + "@angular/core": "^11.0.5", + "@angular/material": "^11.0.3" + } + }, + "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, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", + "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/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/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/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/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/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/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/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/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/ngx-cron-editor": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/ngx-cron-editor/-/ngx-cron-editor-0.8.2.tgz", + "integrity": "sha512-iSHu39MGpFVdqFVog4deEwR6nLSUclaxe0sbutozcrxqFxJWrUPPjBGM6KM/yfv6akgnFbc3IGpIf/s6J/F1dw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": ">=15.0.0 <18.0.0", + "@angular/common": ">=15.0.0 <18.0.0", + "@angular/core": ">=15.0.0 <18.0.0", + "@angular/forms": ">=15.0.0 <18.0.0", + "@angular/material": ">=15.0.0 <18.0.0", + "@angular/platform-browser": ">=15.0.0 <18.0.0", + "@angular/platform-browser-dynamic": ">=6.0.0 <18.0.0", + "@angular/router": ">=15.0.0 <18.0.0" + } + }, + "node_modules/ngx-date-fns": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/ngx-date-fns/-/ngx-date-fns-11.0.0.tgz", + "integrity": "sha512-lpWjWL4yQDvhvqynrUtvft81NkVbBDfSl97UoaHWKFwfScnmplR3XsEnguNZQte4S/RIOxV4TZ+eM6gFlAN2SQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=17", + "@angular/core": ">=17", + "date-fns": ">=3" + } + }, + "node_modules/ngx-highlightjs": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/ngx-highlightjs/-/ngx-highlightjs-12.0.0.tgz", + "integrity": "sha512-1lSUv3hNpriHewwe8zz8eMX6q/Tcq1ZCsJ1GitBsr86y39e+q4U/s8LKE7rvK6SVAbQlUuopdbbKWR0zjihjLg==", + "dependencies": { + "highlight.js": "^11.9.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=17.0.0", + "@angular/core": ">=17.0.0" + } + }, + "node_modules/ngx-mat-select-search": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ngx-mat-select-search/-/ngx-mat-select-search-7.0.6.tgz", + "integrity": "sha512-aKzWknt439ZoOaSz+KnP8lPDeBBHmcEl0fRI80wcKiRqhlk90NW//6u81ZlwBsxdvQ6hB6NCXbRLUNV8HjdETg==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@angular/material": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/ngx-material-date-fns-adapter": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ngx-material-date-fns-adapter/-/ngx-material-date-fns-adapter-18.0.0.tgz", + "integrity": "sha512-Vc4jBRM875yAesetJm39YRJUiCPID9vYvNqy9nzpzTyBL77R031N+dT2xAKj/NkUc5DTrAUu0AytI7GDGMwQHQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": "^18.0.0 || ^19.0.0", + "@angular/material": "^18.0.0 || ^19.0.0", + "date-fns": ">=2.22.0 <4.0", + "date-fns-jalali": "2.22.0-0 || 2.22.1-0 || 2.23.0-0 || 2.24.0-0 || 2.25.0-0 || 2.26.0-0 || 2.27.0-0 || 2.28.0-0 || 2.28.0-1 || 2.29.0-0 || 2.29.1-0 || 2.29.2-0 || 2.29.3-0 || 2.30.0-0 || 3.0.0-0 || 3.0.1-0 || 3.0.2-0 || 3.0.3-0 || 3.0.4-0 || 3.0.5-0 || 3.0.6-0 || 3.1.0-0 || 3.2.0-0 || 3.3.0-0 || 3.3.1-0 || 3.4.0-0 || 3.5.0-0 || 3.6.0-0" + } + }, + "node_modules/ngx-scrollbar": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/ngx-scrollbar/-/ngx-scrollbar-13.0.3.tgz", + "integrity": "sha512-ZpjNm9y7F5OSQh7p4x2PrwRkNl5zARPqPbRdkS5HjP8lHpG7hAFpbsjW+WlsM/6lAL5pesfVRCSlvcRJihM2sg==", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "@angular/cdk": ">=16.0.0", + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "rxjs": ">=7.0.0" + } + }, + "node_modules/ngx-super-select": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/ngx-super-select/-/ngx-super-select-3.17.4.tgz", + "integrity": "sha512-IcayyEDkLy1vINh9j8OZQWJj3ai3AxvJwsf1Qbi3xctlolJVRWPXik1rAo2j5SfpdeHy3m2J2tgT5fuoD8EC+A==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^17.0.0", + "@angular/core": "^17.0.0", + "@angular/forms": "^17.0.0" + } + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", + "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/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/node-gyp/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", + "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", + "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", + "dev": true, + "dependencies": { + "@npmcli/redact": "^1.1.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "17.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz", + "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==", + "dev": true, + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "devOptional": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "dev": true, + "dependencies": { + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "dev": true, + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/piscina": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.4.0.tgz", + "integrity": "sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==", + "dev": true, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-combine-duplicated-selectors": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz", + "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-package-json": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.0.tgz", + "integrity": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==", + "dev": true, + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/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/read-package-json/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz", + "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.14.3", + "@rollup/rollup-android-arm64": "4.14.3", + "@rollup/rollup-darwin-arm64": "4.14.3", + "@rollup/rollup-darwin-x64": "4.14.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.3", + "@rollup/rollup-linux-arm-musleabihf": "4.14.3", + "@rollup/rollup-linux-arm64-gnu": "4.14.3", + "@rollup/rollup-linux-arm64-musl": "4.14.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3", + "@rollup/rollup-linux-riscv64-gnu": "4.14.3", + "@rollup/rollup-linux-s390x-gnu": "4.14.3", + "@rollup/rollup-linux-x64-gnu": "4.14.3", + "@rollup/rollup-linux-x64-musl": "4.14.3", + "@rollup/rollup-win32-arm64-msvc": "4.14.3", + "@rollup/rollup-win32-ia32-msvc": "4.14.3", + "@rollup/rollup-win32-x64-msvc": "4.14.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "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" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/safevalues": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz", + "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" + }, + "node_modules/sass": { + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", + "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "optional": true + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/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, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/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 + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/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, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sigstore": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz", + "integrity": "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", + "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", + "dev": true, + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.11.0" + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "dev": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/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/terser": { + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.30.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", + "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tuf-js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz", + "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==", + "dev": true, + "dependencies": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "node_modules/typescript": { + "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", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/undici": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.11.1.tgz", + "integrity": "sha512-KyhzaLJnV1qa3BSHdj4AZ2ndqI0QWPxYzaIOio0WzcEJB9gvuysprJSLtpvc2D9mhR9jPDUk7xlJlZbH2KR5iw==", + "dev": true, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", + "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", + "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "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/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "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/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "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" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "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/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zone.js": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.4.tgz", + "integrity": "sha512-NtTUvIlNELez7Q1DzKVIFZBzNb646boQMgpATo9z3Ftuu/gWvzxCW7jdjcUDoRGxRikrhVHB/zLXh1hxeJawvw==", + "dependencies": { + "tslib": "^2.3.0" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@angular-devkit/architect": { + "version": "0.1703.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.5.tgz", + "integrity": "sha512-j3+9QeXIafuRMtk7N5Cmm/IiMSS/TOaybzfCv/LK+DP3hjEd8f8Az7hPmevUuOArvWNzUvoUeu30GmR3wABydA==", + "dev": true, + "requires": { + "@angular-devkit/core": "17.3.5", + "rxjs": "7.8.1" + } + }, + "@angular-devkit/build-angular": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.5.tgz", + "integrity": "sha512-Ju2MkMidJglJq/iWgM9CNbhK7A/2n0LNYPZx+ucb+aOFWvurCQrU4Mt/es6xCsxOEs5OPhjqdva8mxE5FHwzTQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1703.5", + "@angular-devkit/build-webpack": "0.1703.5", + "@angular-devkit/core": "17.3.5", + "@babel/core": "7.24.0", + "@babel/generator": "7.23.6", + "@babel/helper-annotate-as-pure": "7.22.5", + "@babel/helper-split-export-declaration": "7.22.6", + "@babel/plugin-transform-async-generator-functions": "7.23.9", + "@babel/plugin-transform-async-to-generator": "7.23.3", + "@babel/plugin-transform-runtime": "7.24.0", + "@babel/preset-env": "7.24.0", + "@babel/runtime": "7.24.0", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "17.3.5", + "@vitejs/plugin-basic-ssl": "1.1.0", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.18", + "babel-loader": "9.1.3", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.21.5", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.22", + "css-loader": "6.10.0", + "esbuild": "0.20.1", + "esbuild-wasm": "0.20.1", + "fast-glob": "3.3.2", + "http-proxy-middleware": "2.0.6", + "https-proxy-agent": "7.0.4", + "inquirer": "9.2.15", + "jsonc-parser": "3.2.1", + "karma-source-map-support": "1.4.0", + "less": "4.2.0", + "less-loader": "11.1.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "magic-string": "0.30.8", + "mini-css-extract-plugin": "2.8.1", + "mrmime": "2.0.0", + "open": "8.4.2", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.1", + "piscina": "4.4.0", + "postcss": "8.4.35", + "postcss-loader": "8.1.1", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.71.1", + "sass-loader": "14.1.1", + "semver": "7.6.0", + "source-map-loader": "5.0.0", + "source-map-support": "0.5.21", + "terser": "5.29.1", + "tree-kill": "1.2.2", + "tslib": "2.6.2", + "undici": "6.11.1", + "vite": "5.1.7", + "watchpack": "2.4.0", + "webpack": "5.90.3", + "webpack-dev-middleware": "6.1.2", + "webpack-dev-server": "4.15.1", + "webpack-merge": "5.10.0", + "webpack-subresource-integrity": "5.1.0" + }, + "dependencies": { + "@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "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 + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "picomatch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "dev": true + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1703.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.5.tgz", + "integrity": "sha512-KcoKlWhDP6+2q3laQ6elXLt2QrVxWJFdCPUC9dIm0Tnc997Tal/UVhlDKaZgITYDgDvRFqG+tzNm2uFd8l7h+A==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1703.5", + "rxjs": "7.8.1" + } + }, + "@angular-devkit/core": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.5.tgz", + "integrity": "sha512-iqGv45HVI+yRROoTqQTY0QChYlRCZkFUfIjdfJLegjc6xq9sLtxDr03CWM45BKGG5lSxDOy+qu/pdRvtL3V2eg==", + "dev": true, + "requires": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.1", + "picomatch": "4.0.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "dependencies": { + "picomatch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "dev": true + } + } + }, + "@angular-devkit/schematics": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.5.tgz", + "integrity": "sha512-oh/mvpMKxGfk5v9QIB7LfGsDC/iVpmsIAvbb4+1ddCx86EJXdz3xWnVDbUehOd6n7HJXnQrNirWjWvWquM2GhQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "17.3.5", + "jsonc-parser": "3.2.1", + "magic-string": "0.30.8", + "ora": "5.4.1", + "rxjs": "7.8.1" + } + }, + "@angular/animations": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.5.tgz", + "integrity": "sha512-hbfCnBxwhYQMKB+9tDcmfvckUtB8LdY1gPST6TZ7CzrWCSPddsnXxqxBZSBjBI6zXvE4FOV3kUzaUXM/Bq5sRw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/cdk": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.14.tgz", + "integrity": "sha512-n6PrGdiVeSTEmM/HEiwIyg6YQUUymZrb5afaNLGFRM5YL0Y8OBqd+XhCjb0OfD/AfgCUtedVEPwNqrfW8KzgGw==", + "requires": { + "parse5": "^7.1.2", + "tslib": "^2.3.0" + } + }, + "@angular/cli": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.5.tgz", + "integrity": "sha512-6MHJzPKy4uB9qlJO1eKs4rtDlRuCe0lOiz1f3kHFZ/GQQm5xA1xsmZJMN4ASsnu4yU3oZs6vJ/vt8i2/jvdPbA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1703.5", + "@angular-devkit/core": "17.3.5", + "@angular-devkit/schematics": "17.3.5", + "@schematics/angular": "17.3.5", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.1.2", + "inquirer": "9.2.15", + "jsonc-parser": "3.2.1", + "npm-package-arg": "11.0.1", + "npm-pick-manifest": "9.0.0", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "17.0.6", + "resolve": "1.22.8", + "semver": "7.6.0", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@angular/common": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.5.tgz", + "integrity": "sha512-Ox91WxSnOSrQ6I21cHi69EfT2Pxtd5Knb5AsdwpxqE57V2E7EnWMhb+LP+holCtFUhK529EGXCk788M+Elyw6g==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.5.tgz", + "integrity": "sha512-lTubBFNlpH9zK46+yeVI7VJQNUELLAB8W1ucndYLCA9Rr9Jop+rYIXijmr42AGokOYr7yLc8HRiSQ5e+X2pUQg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler-cli": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.5.tgz", + "integrity": "sha512-R53JNbbVDHWSGdL0e2vGQ5iJCrILOWZ1oemKjekOFB93fUBlEyi+nZmm4uTO7RU8PgjB0UpxI6ok5ZE3Amkt6A==", + "dev": true, + "requires": { + "@babel/core": "7.23.9", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + } + }, + "@angular/core": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.5.tgz", + "integrity": "sha512-y6P27lcrKy3yMx/rtMuGsAnDyVEsS3BdyArTXcD0TOImVGHhVIaB0L95DUCam3ajTe2f2x39eozJZDh7QSpJaw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/forms": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.5.tgz", + "integrity": "sha512-Rf/8XWHdFYZQaOVTJ0QVwxQm9fDqQqIJc0yfPcH/DYL5pT7R0U2z98I5McZawzUBJUo1Zt1gijzDlzNUGf6jiA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/language-service": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-17.3.5.tgz", + "integrity": "sha512-s3W5o+pRPU3jNWeeyO4XEdc28+s4MPhew+k0meQfZ11VMdmShzwFu5nPgOMmLB3fBhQqlSBrHUh1P9SB7Hu3FQ==" + }, + "@angular/localize": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-17.3.5.tgz", + "integrity": "sha512-/5iKRvnleA2vsf8zqNZaXeOBjFFq3FLrbot+ygfmk3uYqz949X0nXrXBKk9kpakw/WC6kgzK+tmiEHKQY6cLiQ==", + "dev": true, + "requires": { + "@babel/core": "7.23.9", + "@types/babel__core": "7.20.5", + "fast-glob": "3.3.2", + "yargs": "^17.2.1" + } + }, + "@angular/material": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.3.5.tgz", + "integrity": "sha512-1+QqBQ8HVOwxOkx/v2n53JA9ALOee55yVDbnAv7TkseNN4JEDxOcE5TO5HGmdV2A4tcsXQ00MIdy04jiB4sCng==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/auto-init": "15.0.0-canary.7f224ddd4.0", + "@material/banner": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/card": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/chips": "15.0.0-canary.7f224ddd4.0", + "@material/circular-progress": "15.0.0-canary.7f224ddd4.0", + "@material/data-table": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dialog": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/drawer": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/fab": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/form-field": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/image-list": "15.0.0-canary.7f224ddd4.0", + "@material/layout-grid": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/radio": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/segmented-button": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/slider": "15.0.0-canary.7f224ddd4.0", + "@material/snackbar": "15.0.0-canary.7f224ddd4.0", + "@material/switch": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-bar": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/textfield": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tooltip": "15.0.0-canary.7f224ddd4.0", + "@material/top-app-bar": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.5.tgz", + "integrity": "sha512-ITlu/GTD64Sr0FMaFCJiHoTJrEZw8qRFXjPjv3BKhAp5dQKcwnCm02o1NOaj5d8oIItIh5fbI2zP0CSU2qNZkQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.5.tgz", + "integrity": "sha512-KuS4j3Gh1h/CEj+bIOc/IcZIdiCB/DNbtUvz1eNp1o23aM8QutqelI3A4WBnQuR4yq8Z/8M3FH9F1OVwwhn2QQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/router": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.5.tgz", + "integrity": "sha512-KsIIs3t9IpxsdMSrJDZzO5WgIWkVE6Ep5WWiSyPIgEfA+ndGpJLmyv0d/r1yKKlYUJxz7Hde55o4thgT2n2x/A==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "requires": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + } + }, + "@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true + }, + "@babel/core": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "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 + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "requires": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "requires": { + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "requires": { + "@babel/types": "^7.24.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + } + }, + "@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + } + }, + "@babel/helpers": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "dev": true, + "requires": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" + } + }, + "@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + } + }, + "@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "requires": {} + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", + "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", + "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.1" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz", + "integrity": "sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/preset-env": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", + "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + } + }, + "@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "dev": true, + "requires": { + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + } + } + } + }, + "@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@coreui/angular": { + "version": "4.5.29", + "resolved": "https://registry.npmjs.org/@coreui/angular/-/angular-4.5.29.tgz", + "integrity": "sha512-Pk3fSUxRCV2JAdkyTz3ZxSKUqrWduYT7zjzONmfeSx8q5Ryb5o42U+51iBeF/ScVLiErCOYGMOhnQR/FXeJ3Ww==", + "requires": { + "@popperjs/core": "~2.11.6", + "tslib": "^2.3.0" + } + }, + "@coreui/angular-chartjs": { + "version": "4.5.28", + "resolved": "https://registry.npmjs.org/@coreui/angular-chartjs/-/angular-chartjs-4.5.28.tgz", + "integrity": "sha512-XwMecBZXiX+k6sq35qRpPgrzxvyMegknH3LOW23ySdhOUYS0+ZoYHIUAjmPCDynDxe6poFY8cCmxvKxnKFaZDA==", + "requires": { + "lodash-es": "^4.17.21", + "tslib": "^2.3.0" + } + }, + "@coreui/chartjs": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@coreui/chartjs/-/chartjs-3.1.2.tgz", + "integrity": "sha512-d3MGk3KZNAt29VRKP/XYiGmT56KTqtuOhLEg5HNwb7P7ZmEgOJoHxFHVCVE4I36hfgQCjZZVknsuk2ZTfF/2fw==", + "requires": { + "@coreui/coreui": "^4.2.6", + "chart.js": "^3.9.1" + } + }, + "@coreui/coreui": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@coreui/coreui/-/coreui-4.2.6.tgz", + "integrity": "sha512-h9j1BVnaDi9vSr1t0H8NL3hlDD4lU9kIdGLXn7g9k5iaFq5EDlRDcSBDer6lR2O4sIEl7W7YqTlevLxFC+1cIA==", + "requires": { + "postcss-combine-duplicated-selectors": "^10.0.3" + } + }, + "@coreui/icons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@coreui/icons/-/icons-3.0.1.tgz", + "integrity": "sha512-u9UKEcRMyY9pa4jUoLij8pAR03g5g6TLWV33/Mx2ix8sffyi0eO4fLV8DSTQljDCw938zt7KYog5cVKEAJUxxg==" + }, + "@coreui/icons-angular": { + "version": "4.5.28", + "resolved": "https://registry.npmjs.org/@coreui/icons-angular/-/icons-angular-4.5.28.tgz", + "integrity": "sha512-wMyGIfLcHuv6lOAbFIcFHDbreTXCiUconhCq4yHSw/ZIpKxyp3lUKdQH5IXu5fTg9fwPxobGnIrEPg30/bisww==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@coreui/utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@coreui/utils/-/utils-2.0.2.tgz", + "integrity": "sha512-tIFmyKzR96vSD3vqtw4H/4rH/Pctghj+Rp9kWncx1ec2vstC+yphcEUmMk/r+Mm86/Tradi0SIcuCaqvhkyqJA==" + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@easyfonts/font-awesome-v6": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@easyfonts/font-awesome-v6/-/font-awesome-v6-6.0.6.tgz", + "integrity": "sha512-I3mV9KQuD6jJgfX3bU3mdv/RtYSd+X/Y9Yo2RrAmIfQJeDVCQdTPXBgmodMtGxfAU8lVHKFwr/fh9zexavXdNQ==" + }, + "@esbuild/aix-ppc64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz", + "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz", + "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz", + "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz", + "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz", + "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz", + "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz", + "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz", + "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz", + "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz", + "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz", + "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz", + "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz", + "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz", + "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz", + "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz", + "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz", + "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz", + "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz", + "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz", + "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz", + "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz", + "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz", + "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==", + "dev": true, + "optional": true + }, + "@fortawesome/angular-fontawesome": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.13.0.tgz", + "integrity": "sha512-gzSPRdveOXNO7NIiMgTyB46aiHG0i98KinnAEqHXi8qzraM/kCcHn/0y3f4MhemX6kftwsFli0IU8RyHmtXlSQ==", + "requires": { + "tslib": "^2.4.1" + } + }, + "@fortawesome/fontawesome-common-types": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", + "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", + "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.5.2" + } + }, + "@fortawesome/free-brands-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.2.tgz", + "integrity": "sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.5.2" + } + }, + "@fortawesome/free-regular-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.2.tgz", + "integrity": "sha512-iabw/f5f8Uy2nTRtJ13XZTS1O5+t+anvlamJ3zJGLEVE2pKsAWhPv2lq01uQlfgCX7VaveT3EVs515cCN9jRbw==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.5.2" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", + "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.5.2" + } + }, + "@generic-ui/fabric": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@generic-ui/fabric/-/fabric-0.19.1.tgz", + "integrity": "sha512-VX1S+hqK+anU5MHoys40oYkCSGqxXL82lQEavguoV8yqBxoXRPht7ma9XDh7EJolW2YsvYmAohZqNYeEAs3aBw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@generic-ui/hermes": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@generic-ui/hermes/-/hermes-0.19.1.tgz", + "integrity": "sha512-qySdtVA4XumzYUmVR+THIuqhdH50WVqE5jDO1FHFVapj9wt7GyymverKPOkGE37LG3uvRVcfej/xeE/6G2mdXA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@generic-ui/ngx-grid": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@generic-ui/ngx-grid/-/ngx-grid-0.19.1.tgz", + "integrity": "sha512-w+qn4sTazQM0X99TfCk/JDkAhCFOrw6DK5MOjp1ZCPWFx+3JnIS+bYQ5cM6UFn/6h1lO2rQURv1pwbXhY3Dv1g==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "@ljharb/through": { + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", + "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7" + } + }, + "@material/animation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/auto-init": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/banner": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/base": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", + "requires": { + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/card": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", + "requires": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/checkbox": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/chips": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "@material/circular-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/data-table": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/density": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/dialog": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/dom": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/drawer": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/elevation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/fab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/feature-targeting": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/floating-label": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/focus-ring": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==", + "requires": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0" + } + }, + "@material/form-field": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/icon-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/image-list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/layout-grid": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/line-ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/linear-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/menu": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/menu-surface": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/notched-outline": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/progress-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/radio": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/rtl": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", + "requires": { + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/segmented-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/select": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/shape": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/slider": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/snackbar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/switch": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "@material/tab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/tab-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/tab-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/tab-scroller": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/textfield": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/theme": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/tokens": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", + "requires": { + "@material/elevation": "15.0.0-canary.7f224ddd4.0" + } + }, + "@material/tooltip": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "@material/top-app-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/touch-target": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/typography": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@ngtools/webpack": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.5.tgz", + "integrity": "sha512-0heI0yHUckdGI8uywu/wkp24KR/tdYMKYJOaYIU+9JydyN1zJRpbR7x0thddl7+k/zu2ZGbfFdv1779Ecw/xdA==", + "dev": true, + "requires": {} + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true + } + } + }, + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.6.tgz", + "integrity": "sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true + }, + "proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true + } + } + }, + "@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "dev": true, + "requires": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true + }, + "@npmcli/package-json": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.0.3.tgz", + "integrity": "sha512-cgsjCvld2wMqkUqvY+SZI+1ZJ7umGBYc9IAKfqJRKJCcs7hCQYxScUgdsyrRINk3VmdCYf9TXiLBHQ6ECTxhtg==", + "dev": true, + "requires": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true + } + } + }, + "@npmcli/promise-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz", + "integrity": "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==", + "dev": true, + "requires": { + "which": "^4.0.0" + } + }, + "@npmcli/redact": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", + "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", + "dev": true + }, + "@npmcli/run-script": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", + "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz", + "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz", + "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz", + "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz", + "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz", + "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz", + "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz", + "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz", + "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz", + "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz", + "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz", + "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz", + "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz", + "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz", + "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz", + "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz", + "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==", + "dev": true, + "optional": true + }, + "@schematics/angular": { + "version": "17.3.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.5.tgz", + "integrity": "sha512-SWCK16Eob0K86hpZ3NHmrTS6LSzTlhvnIdf3BXC6nzoiyDhcAS0oJ2Tjdq1opW/PaL1hB7MulcbIhxYln5du0w==", + "dev": true, + "requires": { + "@angular-devkit/core": "17.3.5", + "@angular-devkit/schematics": "17.3.5", + "jsonc-parser": "3.2.1" + } + }, + "@sigstore/bundle": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", + "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", + "dev": true, + "requires": { + "@sigstore/protobuf-specs": "^0.3.1" + } + }, + "@sigstore/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", + "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "dev": true + }, + "@sigstore/protobuf-specs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz", + "integrity": "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==", + "dev": true + }, + "@sigstore/sign": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.0.tgz", + "integrity": "sha512-tsAyV6FC3R3pHmKS880IXcDJuiFJiKITO1jxR1qbplcsBkZLBmjrEw5GbC7ikD6f5RU1hr7WnmxB/2kKc1qUWQ==", + "dev": true, + "requires": { + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.0" + } + }, + "@sigstore/tuf": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.2.tgz", + "integrity": "sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w==", + "dev": true, + "requires": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" + } + }, + "@sigstore/verify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.0.tgz", + "integrity": "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q==", + "dev": true, + "requires": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" + } + }, + "@socket.io/component-emitter": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz", + "integrity": "sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg==", + "dev": true + }, + "@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true + }, + "@tufjs/models": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.0.tgz", + "integrity": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==", + "dev": true, + "requires": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.56.9", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz", + "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", + "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/lodash": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", + "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==", + "dev": true + }, + "@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dev": true, + "requires": { + "@types/lodash": "*" + } + }, + "@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "@types/node": { + "version": "18.19.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.34.tgz", + "integrity": "sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "requires": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@vitejs/plugin-basic-ssl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", + "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", + "dev": true, + "requires": {} + }, + "@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true + }, + "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, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "requires": {} + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.18", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", + "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001591", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "requires": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + } + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + } + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "requires": { + "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.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "cacache": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", + "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001611", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz", + "integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chart.js": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true + }, + "cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "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, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + } + } + }, + "core-js-compat": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "dev": true, + "requires": { + "browserslist": "^4.23.0" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "requires": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "critters": { + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.22.tgz", + "integrity": "sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "postcss-media-query-parser": "^0.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "css-loader": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + } + }, + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==" + }, + "date-fns-jalali": { + "version": "3.6.0-0", + "resolved": "https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-3.6.0-0.tgz", + "integrity": "sha512-rcOocwhBFgEN4i+vXPoEp/irCxAmX8yloK/l/oeMOVCLpaFQfkq7jVn0vCWK91P2H9I/doSAPEN4WSWQeqwsug==" + }, + "date-fns-tz": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.1.3.tgz", + "integrity": "sha512-ZfbMu+nbzW0mEzC8VZrLiSWvUIaI3aRHeq33mTe7Y38UctKukgqPR4nTDwcwS4d64Gf8GghnVsroBuMY3eiTeA==", + "requires": {} + }, + "date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.740", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.740.tgz", + "integrity": "sha512-Yvg5i+iyv7Xm18BRdVPVm8lc7kgxM3r6iwqCH2zB7QZy1kZRNmd0Zqm0zcD9XoFREE5/5rwIuIAOT+/mzGcnZg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "engine.io": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" + }, + "dependencies": { + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } + } + }, + "engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "devOptional": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-module-lexer": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", + "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==", + "dev": true + }, + "esbuild": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz", + "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==", + "dev": true, + "optional": true, + "requires": { + "@esbuild/aix-ppc64": "0.20.1", + "@esbuild/android-arm": "0.20.1", + "@esbuild/android-arm64": "0.20.1", + "@esbuild/android-x64": "0.20.1", + "@esbuild/darwin-arm64": "0.20.1", + "@esbuild/darwin-x64": "0.20.1", + "@esbuild/freebsd-arm64": "0.20.1", + "@esbuild/freebsd-x64": "0.20.1", + "@esbuild/linux-arm": "0.20.1", + "@esbuild/linux-arm64": "0.20.1", + "@esbuild/linux-ia32": "0.20.1", + "@esbuild/linux-loong64": "0.20.1", + "@esbuild/linux-mips64el": "0.20.1", + "@esbuild/linux-ppc64": "0.20.1", + "@esbuild/linux-riscv64": "0.20.1", + "@esbuild/linux-s390x": "0.20.1", + "@esbuild/linux-x64": "0.20.1", + "@esbuild/netbsd-x64": "0.20.1", + "@esbuild/openbsd-x64": "0.20.1", + "@esbuild/sunos-x64": "0.20.1", + "@esbuild/win32-arm64": "0.20.1", + "@esbuild/win32-ia32": "0.20.1", + "@esbuild/win32-x64": "0.20.1" + } + }, + "esbuild-wasm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz", + "integrity": "sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==", + "dev": true + }, + "escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "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, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "requires": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + } + }, + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==" + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "dependencies": { + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "highlight.js": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==" + }, + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "requires": { + "lru-cache": "^10.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true + } + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true + }, + "ignore-walk": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", + "dev": true, + "requires": { + "minimatch": "^9.0.0" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true + }, + "inquirer": { + "version": "9.2.15", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", + "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", + "dev": true, + "requires": { + "@ljharb/through": "^2.3.12", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^3.2.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==" + }, + "ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + } + } + }, + "ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-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 + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jasmine-core": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.1.2.tgz", + "integrity": "sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "karma": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", + "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.7.2", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "dependencies": { + "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, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "dev": true, + "requires": { + "which": "^1.2.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "karma-coverage": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", + "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "requires": { + "jasmine-core": "^4.1.0" + }, + "dependencies": { + "jasmine-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", + "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", + "dev": true + } + } + }, + "karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "dev": true, + "requires": {} + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true + }, + "launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "requires": { + "webpack-sources": "^3.0.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true + } + } + }, + "make-fetch-happen": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "dev": true, + "requires": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + } + }, + "mat-progress-buttons": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/mat-progress-buttons/-/mat-progress-buttons-9.3.1.tgz", + "integrity": "sha512-Y0KIyKxb+QdlcJyi299GYSrBu53uYVK1w1LnKs/x6bMfKJkuFlpQdP7t5TqorndYe8H4iyhyM6SVpDxlAoNXLw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "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 + }, + "memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.4" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", + "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, + "minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, + "needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "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 + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "ngx-cron-editor": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/ngx-cron-editor/-/ngx-cron-editor-0.8.2.tgz", + "integrity": "sha512-iSHu39MGpFVdqFVog4deEwR6nLSUclaxe0sbutozcrxqFxJWrUPPjBGM6KM/yfv6akgnFbc3IGpIf/s6J/F1dw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-date-fns": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/ngx-date-fns/-/ngx-date-fns-11.0.0.tgz", + "integrity": "sha512-lpWjWL4yQDvhvqynrUtvft81NkVbBDfSl97UoaHWKFwfScnmplR3XsEnguNZQte4S/RIOxV4TZ+eM6gFlAN2SQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-highlightjs": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/ngx-highlightjs/-/ngx-highlightjs-12.0.0.tgz", + "integrity": "sha512-1lSUv3hNpriHewwe8zz8eMX6q/Tcq1ZCsJ1GitBsr86y39e+q4U/s8LKE7rvK6SVAbQlUuopdbbKWR0zjihjLg==", + "requires": { + "highlight.js": "^11.9.0", + "tslib": "^2.3.0" + } + }, + "ngx-mat-select-search": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ngx-mat-select-search/-/ngx-mat-select-search-7.0.6.tgz", + "integrity": "sha512-aKzWknt439ZoOaSz+KnP8lPDeBBHmcEl0fRI80wcKiRqhlk90NW//6u81ZlwBsxdvQ6hB6NCXbRLUNV8HjdETg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "ngx-material-date-fns-adapter": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ngx-material-date-fns-adapter/-/ngx-material-date-fns-adapter-18.0.0.tgz", + "integrity": "sha512-Vc4jBRM875yAesetJm39YRJUiCPID9vYvNqy9nzpzTyBL77R031N+dT2xAKj/NkUc5DTrAUu0AytI7GDGMwQHQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "ngx-scrollbar": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/ngx-scrollbar/-/ngx-scrollbar-13.0.3.tgz", + "integrity": "sha512-ZpjNm9y7F5OSQh7p4x2PrwRkNl5zARPqPbRdkS5HjP8lHpG7hAFpbsjW+WlsM/6lAL5pesfVRCSlvcRJihM2sg==", + "requires": { + "tslib": "^2.3.1" + } + }, + "ngx-super-select": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/ngx-super-select/-/ngx-super-select-3.17.4.tgz", + "integrity": "sha512-IcayyEDkLy1vINh9j8OZQWJj3ai3AxvJwsf1Qbi3xctlolJVRWPXik1rAo2j5SfpdeHy3m2J2tgT5fuoD8EC+A==", + "requires": { + "tslib": "^2.3.0" + } + }, + "nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "optional": true, + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-gyp": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", + "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "dev": true, + "optional": true + }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dev": true, + "requires": { + "abbrev": "^2.0.0" + } + }, + "normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^3.0.0" + } + }, + "npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true + }, + "npm-package-arg": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "dev": true, + "requires": { + "ignore-walk": "^6.0.4" + } + }, + "npm-pick-manifest": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", + "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", + "dev": true, + "requires": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + } + }, + "npm-registry-fetch": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", + "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", + "dev": true, + "requires": { + "@npmcli/redact": "^1.1.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, + "dependencies": { + "proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pacote": { + "version": "17.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz", + "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==", + "dev": true, + "requires": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "devOptional": true, + "requires": { + "entities": "^4.4.0" + } + }, + "parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "dev": true, + "requires": { + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" + } + }, + "parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "dev": true, + "requires": { + "parse5": "^7.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true + } + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "piscina": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.4.0.tgz", + "integrity": "sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==", + "dev": true, + "requires": { + "nice-napi": "^1.0.2" + } + }, + "pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "requires": { + "find-up": "^6.3.0" + } + }, + "postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-combine-duplicated-selectors": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz", + "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "dev": true, + "requires": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true + }, + "postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "read-package-json": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.0.tgz", + "integrity": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==", + "dev": true, + "requires": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz", + "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.14.3", + "@rollup/rollup-android-arm64": "4.14.3", + "@rollup/rollup-darwin-arm64": "4.14.3", + "@rollup/rollup-darwin-x64": "4.14.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.3", + "@rollup/rollup-linux-arm-musleabihf": "4.14.3", + "@rollup/rollup-linux-arm64-gnu": "4.14.3", + "@rollup/rollup-linux-arm64-musl": "4.14.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3", + "@rollup/rollup-linux-riscv64-gnu": "4.14.3", + "@rollup/rollup-linux-s390x-gnu": "4.14.3", + "@rollup/rollup-linux-x64-gnu": "4.14.3", + "@rollup/rollup-linux-x64-musl": "4.14.3", + "@rollup/rollup-win32-arm64-msvc": "4.14.3", + "@rollup/rollup-win32-ia32-msvc": "4.14.3", + "@rollup/rollup-win32-x64-msvc": "4.14.3", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, + "run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "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 + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "safevalues": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz", + "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" + }, + "sass": { + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", + "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", + "dev": true, + "requires": { + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "optional": true + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "requires": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + } + }, + "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==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sigstore": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz", + "integrity": "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==", + "dev": true, + "requires": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socket.io": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + } + }, + "socket.io-adapter": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", + "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", + "dev": true, + "requires": { + "debug": "~4.3.4", + "ws": "~8.11.0" + }, + "dependencies": { + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } + } + }, + "socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "requires": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dev": true, + "requires": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" + }, + "source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "terser": { + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "terser": { + "version": "5.30.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", + "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "tuf-js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz", + "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==", + "dev": true, + "requires": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "typescript": { + "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 + }, + "ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "dev": true + }, + "undici": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.11.1.tgz", + "integrity": "sha512-KyhzaLJnV1qa3BSHdj4AZ2ndqI0QWPxYzaIOio0WzcEJB9gvuysprJSLtpvc2D9mhR9jPDUk7xlJlZbH2KR5iw==", + "dev": true + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vite": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", + "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", + "dev": true, + "requires": { + "esbuild": "^0.19.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "dependencies": { + "@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + } + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true + }, + "watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-dev-middleware": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", + "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + } + }, + "webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "dependencies": { + "webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + } + } + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "requires": { + "typed-assert": "^1.0.8" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "requires": { + "isexe": "^3.1.1" + }, + "dependencies": { + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true + } + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + }, + "zone.js": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.4.tgz", + "integrity": "sha512-NtTUvIlNELez7Q1DzKVIFZBzNb646boQMgpATo9z3Ftuu/gWvzxCW7jdjcUDoRGxRikrhVHB/zLXh1hxeJawvw==", + "requires": { + "tslib": "^2.3.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b1f4645 --- /dev/null +++ b/package.json @@ -0,0 +1,83 @@ +{ + "name": "MikroWizard", + "version": "1.0.0", + "copyright": "MikroWizard mikrowizard.com", + "license": "AGPL", + "author": "MikroWizard Team (https://github.com/MikroWizard)", + "homepage": "https://MikroWizard.com", + "config": { + "coreui_library_short_version": "coreui 4.5 , mikrowizard 1.0.0", + "coreui_library_docs_url": "https://coreui.io/angular/docs/" + }, + "scripts": { + "ng": "ng", + "start": "ng serve --proxy-config proxy.conf.json --host 0.0.0.0", + "startnp": "ng serve --proxy-config=./proxy.conf.ts --host 0.0.0.0", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/animations": "^17.3.5", + "@angular/cdk": "^16.2.9", + "@angular/common": "^17.3.5", + "@angular/compiler": "^17.3.5", + "@angular/core": "^17.3.5", + "@angular/forms": "^17.3.5", + "@angular/language-service": "^17.3.5", + "@angular/material": "^17.3.5", + "@angular/platform-browser": "^17.3.5", + "@angular/platform-browser-dynamic": "^17.3.5", + "@angular/router": "^17.3.5", + "@coreui/angular": "~4.5.27", + "@coreui/angular-chartjs": "~4.5.27", + "@coreui/chartjs": "^3.1.2", + "@coreui/coreui": "~4.2.6", + "@coreui/icons": "^3.0.1", + "@coreui/icons-angular": "~4.5.27", + "@coreui/utils": "^2.0.2", + "@easyfonts/font-awesome-v6": "^6.0.6", + "@generic-ui/fabric": "^0.19.0", + "@generic-ui/hermes": "^0.19.0", + "@generic-ui/ngx-grid": "^0.19.0", + "chart.js": "^3.9.1", + "date-fns": "^3.6.0", + "date-fns-jalali": "^3.6.0-0", + "date-fns-tz": "^3.1.3", + "font-awesome": "^4.7.0", + "install": "^0.13.0", + "lodash-es": "^4.17.21", + "mat-progress-buttons": "^9.3.1", + "ngx-cron-editor": "^0.8.1", + "ngx-date-fns": "^11.0.0", + "ngx-highlightjs": "^12.0.0", + "ngx-mat-select-search": "^7.0.6", + "ngx-material-date-fns-adapter": "^18.0.0", + "ngx-scrollbar": "^13.0.3", + "ngx-super-select": "^3.17.0", + "rxjs": "~7.8.1", + "tslib": "^2.3.0", + "zone.js": "~0.14.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^17.3.5", + "@angular/cli": "^17.3.5", + "@angular/compiler-cli": "^17.3.5", + "@angular/localize": "^17.3.5", + "@types/jasmine": "^5.1.1", + "@types/lodash-es": "^4.17.10", + "@types/node": "^18.19.34", + "jasmine-core": "^5.1.1", + "karma": "^6.4.2", + "karma-chrome-launcher": "^3.2.0", + "karma-coverage": "^2.2.1", + "karma-jasmine": "^5.1.0", + "karma-jasmine-html-reporter": "^2.1.0", + "typescript": "~5.4.5" + }, + "engines": { + "node": "^16.14.0 || ^18.10.0", + "npm": ">= 6" + } +} diff --git a/proxy.conf.json b/proxy.conf.json new file mode 100644 index 0000000..b6b8647 --- /dev/null +++ b/proxy.conf.json @@ -0,0 +1,8 @@ +{ + "/api": { + "target": "http://172.17.0.1:8181/", + "secure": false, + "changeOrigin": true, + "pathRewrite": {"^/api" : ""} + } +} \ No newline at end of file diff --git a/proxy.conf.ts b/proxy.conf.ts new file mode 100644 index 0000000..c26f3fb --- /dev/null +++ b/proxy.conf.ts @@ -0,0 +1,22 @@ + +const PROXY_CONFIG = [ + { + context: [ + "/api/frontver/" + ], + target: "http://127.0.0.1/", + secure: false, + "changeOrigin": true, + logLevel: "debug", + }, + { + context: [ + "/api" + ], + target: "http://172.17.0.1:8181/", + secure: false, + "changeOrigin": true, + } +] + +module.exports = PROXY_CONFIG; \ No newline at end of file diff --git a/proxy.conf2.json b/proxy.conf2.json new file mode 100644 index 0000000..82b63cd --- /dev/null +++ b/proxy.conf2.json @@ -0,0 +1,8 @@ +{ + "/api": { + "target": "http://127.0.0.1/", + "secure": false, + "changeOrigin": true, + "pathRewrite": {"^/api" : ""} + } +} \ No newline at end of file diff --git a/reqs.txt b/reqs.txt new file mode 100644 index 0000000..f741b6c --- /dev/null +++ b/reqs.txt @@ -0,0 +1,2 @@ +cryptography==3.4.8 +Requests==2.32.2 \ No newline at end of file diff --git a/run-docker.sh b/run-docker.sh new file mode 100755 index 0000000..c21bcbe --- /dev/null +++ b/run-docker.sh @@ -0,0 +1 @@ +sudo docker run --rm -it --add-host=host.docker.internal:host-gateway --name mikrofront-dev --add-host=host.docker.internal:host-gateway -p 80:80 -v /opt/mikrowizard/:/conf/ mikrofront diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 0000000..3b9210e --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,135 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { DefaultLayoutComponent } from './containers'; +import { Page404Component } from './views/pages/page404/page404.component'; +import { Page500Component } from './views/pages/page500/page500.component'; +import { LoginComponent } from './views/pages/login/login.component'; + +const routes: Routes = [ + { + path: '', + redirectTo: 'dashboard', + pathMatch: 'full' + }, + { + path: '', + component: DefaultLayoutComponent, + data: { + title: 'Home' + }, + children: [ + { + path: 'dashboard', + loadChildren: () => + import('./views/dashboard/dashboard.module').then((m) => m.DashboardModule) + }, + { + path: 'devices', + loadChildren: () => + import('./views/devices/devices.module').then((m) => m.DevicesModule) + }, + { + path: 'device-stats', + loadChildren: () => + import('./views/device_detail/device.module').then((m) => m.DeviceModule) + }, + { + path: 'deviceGroup', + loadChildren: () => + import('./views/devices_group/devgroup.module').then((m) => m.DevicesGroupModule) + }, + { + path: 'authlog', + loadChildren: () => + import('./views/auth_log/auth.module').then((m) => m.AuthModule) + }, + { + path: 'devlogs', + loadChildren: () => + import('./views/device_logs/devlogs.module').then((m) => m.DevLogsModule) + }, + { + path: 'syslog', + loadChildren: () => + import('./views/syslog/syslog.module').then((m) => m.SyslogModule) + }, + { + path: 'backups', + loadChildren: () => + import('./views/backups/backups.module').then((m) => m.BackupsModule) + }, + { + path: 'settings', + loadChildren: () => + import('./views/settings/settings.module').then((m) => m.SettingsModule) + }, + { + path: 'accountlog', + loadChildren: () => + import('./views/acc_log/acc.module').then((m) => m.AccModule) + }, + { + path: 'user_tasks', + loadChildren: () => + import('./views/user_tasks/user_tasks.module').then((m) => m.UserTasksModule) + }, + { + path: 'snippets', + loadChildren: () => + import('./views/snippets/snippets.module').then((m) => m.SnippetsModule) + }, + { + path: 'user_manager', + loadChildren: () => + import('./views/user_manager/user_manager.module').then((m) => m.UserManagerModule) + }, + { + path: 'permissions', + loadChildren: () => + import('./views/permissions/permissions.module').then((m) => m.PermissionsModule) + }, + { + path: 'pages', + loadChildren: () => + import('./views/pages/pages.module').then((m) => m.PagesModule) + }, + ] + }, + { + path: '404', + component: Page404Component, + data: { + title: 'Page 404' + } + }, + { + path: '500', + component: Page500Component, + data: { + title: 'Page 500' + } + }, + { + path: 'login', + component: LoginComponent, + data: { + title: 'Login Page' + } + }, + {path: '**', redirectTo: 'dashboard'} +]; + +@NgModule({ + imports: [ + RouterModule.forRoot(routes, { + scrollPositionRestoration: 'top', + anchorScrolling: 'enabled', + initialNavigation: 'enabledBlocking' + // relativeLinkResolution: 'legacy' + }) + ], + exports: [RouterModule] +}) +export class AppRoutingModule { +} diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts new file mode 100644 index 0000000..35cd3ce --- /dev/null +++ b/src/app/app.component.spec.ts @@ -0,0 +1,28 @@ +import { TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'CoreUI Free Angular Admin Template'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('CoreUI Free Angular Admin Template'); + }); +}); diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..137ed64 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; +import { Router, NavigationEnd } from '@angular/router'; + +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from './icons/icon-subset'; +import { Title } from '@angular/platform-browser'; + +@Component({ + selector: 'app-root', + template: '', +}) +export class AppComponent implements OnInit { + title = 'MikroWizard , Mikrotik router managent system'; + + constructor( + private router: Router, + private titleService: Title, + private iconSetService: IconSetService + ) { + titleService.setTitle(this.title); + // iconSet singleton + iconSetService.icons = { ...iconSubset }; + } + + ngOnInit(): void { + console.log(this.router.url); + this.router.events.subscribe((evt) => { + if (!(evt instanceof NavigationEnd)) { + return; + } + }); + } +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000..1007ae2 --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,116 @@ +import { NgModule ,APP_INITIALIZER} from '@angular/core'; +import { HashLocationStrategy, LocationStrategy, PathLocationStrategy } from '@angular/common'; +import { BrowserModule, Title } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { ReactiveFormsModule,FormsModule } from '@angular/forms'; + +import { NgScrollbarModule } from 'ngx-scrollbar'; +import { HttpClientModule } from '@angular/common/http'; + +// Import routing module +import { AppRoutingModule } from './app-routing.module'; +import { provideDateFnsAdapter } from 'ngx-material-date-fns-adapter'; + +// Import app component +import { AppComponent } from './app.component'; + +// Import containers +import { DefaultFooterComponent, DefaultHeaderComponent, DefaultLayoutComponent } from './containers'; +import { MikroWizardProvider } from './providers/mikrowizard/provider'; +import { dataProvider } from './providers/mikrowizard/data'; +import { loginChecker } from './providers/login_checker'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; +import { provideHighlightOptions, Highlight, HighlightAuto } from 'ngx-highlightjs'; + +import { + AvatarModule, + BadgeModule, + BreadcrumbModule, + ButtonGroupModule, + ButtonModule, + CardModule, + DropdownModule, + FooterModule, + FormModule, + GridModule, + HeaderModule, + ListGroupModule, + NavModule, + ProgressModule, + SharedModule, + SidebarModule, + TabsModule, + UtilitiesModule, + ModalModule +} from '@coreui/angular'; + +import { IconModule, IconSetService } from '@coreui/icons-angular'; + +const APP_CONTAINERS = [ + DefaultFooterComponent, + DefaultHeaderComponent, + DefaultLayoutComponent +]; +export function loginStatusProviderFactory(provider: loginChecker) { + return () => provider.load(); +} +@NgModule({ + declarations: [AppComponent, ...APP_CONTAINERS], + imports: [ + BrowserModule, + BrowserAnimationsModule, + AppRoutingModule, + AvatarModule, + BreadcrumbModule, + FooterModule, + DropdownModule, + GridModule, + HeaderModule, + SidebarModule, + IconModule, + NavModule, + HttpClientModule, + ButtonModule, + FormModule, + UtilitiesModule, + ButtonGroupModule, + ReactiveFormsModule, + FormsModule, + SidebarModule, + SharedModule, + TabsModule, + ListGroupModule, + ProgressModule, + BadgeModule, + ListGroupModule, + CardModule, + NgScrollbarModule, + ModalModule, + FontAwesomeModule + ], + providers: [ + { + provide: LocationStrategy, + useClass: HashLocationStrategy + }, + MikroWizardProvider, + dataProvider, + loginChecker, + IconSetService, + provideDateFnsAdapter(), + provideHighlightOptions({ + fullLibraryLoader: () => import('highlight.js'), + lineNumbersLoader: () => import('ngx-highlightjs/line-numbers') + }), + { + provide: APP_INITIALIZER, + useFactory: loginStatusProviderFactory, + deps: [loginChecker], + multi: true, + }, + Title + ], + bootstrap: [AppComponent] +}) +export class AppModule { +} diff --git a/src/app/containers/default-layout/_nav.ts b/src/app/containers/default-layout/_nav.ts new file mode 100644 index 0000000..7485e78 --- /dev/null +++ b/src/app/containers/default-layout/_nav.ts @@ -0,0 +1,158 @@ +import { INavData } from '@coreui/angular'; + +export const navItems: INavData[] = [ + { + name: 'Dashboard', + url: '/dashboard', + iconComponent: { name: 'cil-speedometer' }, + + }, + { + title: true, + name: 'Device Managment' + }, + { + name: 'Devices', + url: '/devices', + icon: 'fa-solid fa-server' + }, + { + name: 'Device Groups', + url: '/deviceGroup', + // linkProps: { fragment: 'someAnchor' }, + icon: 'fa-solid fa-layer-group' + }, + // { + // name: 'Tools', + // url: '/login', + // icon: 'fa-solid fa-screwdriver-wrench', + // children: [ + // { + // name: 'BW test', + // url: '/login', + // icon: 'fa-solid fa-file-circle-check' + // }, + // { + // name: 'Ping test', + // url: '/register', + // icon: 'fa-solid fa-arrow-right-arrow-left' + // }, + // ] + // }, + { + name: 'Backup & Config', + title: true + }, + { + name: 'Task Planer', + url: '/user_tasks', + icon: 'fa-solid fa-calendar-week' + }, + { + name: 'Backups', + url: '/backups', + icon: 'fa-solid fa-database' + }, + { + name: 'snippets', + url: '/snippets', + icon: 'fa-solid fa-code' + }, + // { + // name: 'Tools', + // url: '/login', + // icon: 'fa-solid fa-screwdriver-wrench', + // children: [ + // { + // name: 'Backup comparator', + // url: '/login', + // icon: 'fa-solid fa-code-compare' + // }, + // { + // name: 'Backup search', + // url: '/register', + // icon: 'fa-solid fa-magnifying-glass-arrow-right' + // }, + // { + // name: 'batch execute', + // url: '/register', + // icon: 'fa-solid fa-terminal' + // }, + // ] + // }, + { + name: 'Reports', + title: true + }, + { + name: 'Authentication', + url: '/authlog', + icon: 'fa-solid fa-check-to-slot', + + }, + { + name: 'Accounting', + url: '/accountlog', + icon: 'fa-solid fa-list-check', + + }, + { + name: 'Device Logs', + url: '/devlogs', + icon: 'fa-regular fa-rectangle-list', + + }, + { + name: 'System Logs', + url: '/syslog', + icon: 'fa-solid fa-person-circle-question', + + }, + { + title: true, + name: 'Users' + }, + { + name: 'Users Management', + url: '/user_manager', + icon: 'fa-solid fa-user-gear' , + }, + { + name: 'Permissions', + url: '/permissions', + icon: 'fa-solid fa-users' , + }, + { + title: true, + name: 'System', + class: 'py-0' + }, + { + name: 'Settings', + url: '/settings', + icon: 'fa-solid fa-gear' , + }, + // { + // name: 'Backup', + // url: '/login', + // icon: 'cil-star' , + // }, + { + title: true, + name: 'Links', + class: 'py-0' + }, + { + name: 'Docs', + url: 'https://mikrowizard.com/docs', + iconComponent: { name: 'cil-description' }, + attributes: { target: '_blank', class: '-text-dark' }, + class: 'mt-auto' + }, + { + name: 'Buy Pro', + url: 'https://mikrowizard.com/pricing/', + icon:'fa-solid fa-money-check-dollar', + attributes: { target: '_blank' } + } +]; diff --git a/src/app/containers/default-layout/default-footer/default-footer.component.html b/src/app/containers/default-layout/default-footer/default-footer.component.html new file mode 100644 index 0000000..94884c0 --- /dev/null +++ b/src/app/containers/default-layout/default-footer/default-footer.component.html @@ -0,0 +1,6 @@ + +
+ MikroWizard + © 2024 +
+ diff --git a/src/app/containers/default-layout/default-footer/default-footer.component.scss b/src/app/containers/default-layout/default-footer/default-footer.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/containers/default-layout/default-footer/default-footer.component.spec.ts b/src/app/containers/default-layout/default-footer/default-footer.component.spec.ts new file mode 100644 index 0000000..c287eb6 --- /dev/null +++ b/src/app/containers/default-layout/default-footer/default-footer.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DefaultFooterComponent } from './default-footer.component'; + +describe('DefaultFooterComponent', () => { + let component: DefaultFooterComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DefaultFooterComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DefaultFooterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/containers/default-layout/default-footer/default-footer.component.ts b/src/app/containers/default-layout/default-footer/default-footer.component.ts new file mode 100644 index 0000000..2002f42 --- /dev/null +++ b/src/app/containers/default-layout/default-footer/default-footer.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { FooterComponent } from '@coreui/angular'; + +@Component({ + selector: 'app-default-footer', + templateUrl: './default-footer.component.html', + styleUrls: ['./default-footer.component.scss'], +}) +export class DefaultFooterComponent extends FooterComponent { + constructor() { + super(); + } +} diff --git a/src/app/containers/default-layout/default-header/default-header.component.html b/src/app/containers/default-layout/default-header/default-header.component.html new file mode 100644 index 0000000..0aa2561 --- /dev/null +++ b/src/app/containers/default-layout/default-header/default-header.component.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/containers/default-layout/default-header/default-header.component.scss b/src/app/containers/default-layout/default-header/default-header.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/containers/default-layout/default-header/default-header.component.spec.ts b/src/app/containers/default-layout/default-header/default-header.component.spec.ts new file mode 100644 index 0000000..ad6662e --- /dev/null +++ b/src/app/containers/default-layout/default-header/default-header.component.spec.ts @@ -0,0 +1,43 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { + AvatarModule, + BadgeModule, + BreadcrumbModule, + DropdownModule, + GridModule, + HeaderModule, + NavModule, SidebarModule +} from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DefaultHeaderComponent } from './default-header.component'; +import { RouterTestingModule } from '@angular/router/testing'; + +describe('DefaultHeaderComponent', () => { + let component: DefaultHeaderComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [DefaultHeaderComponent], + imports: [GridModule, HeaderModule, NavModule, BadgeModule, AvatarModule, DropdownModule, BreadcrumbModule, RouterTestingModule, SidebarModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(DefaultHeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/containers/default-layout/default-header/default-header.component.ts b/src/app/containers/default-layout/default-header/default-header.component.ts new file mode 100644 index 0000000..cd59a84 --- /dev/null +++ b/src/app/containers/default-layout/default-header/default-header.component.ts @@ -0,0 +1,67 @@ +import { Component, Input ,Output,EventEmitter} from '@angular/core'; +import { FormControl, FormGroup } from '@angular/forms'; +import { loginChecker } from '../../../providers/login_checker'; +import { Router } from "@angular/router"; +import { dataProvider } from '../../../providers/mikrowizard/data'; +import { User } from '../../../providers/mikrowizard/user'; + +import { ClassToggleService, HeaderComponent } from '@coreui/angular'; + +@Component({ + selector: 'app-default-header', + templateUrl: './default-header.component.html', +}) +export class DefaultHeaderComponent extends HeaderComponent { + + @Input() sidebarId: string = "sidebar"; + @Output() UserModalEvent = new EventEmitter(); + + public newMessages = new Array(4) + public newTasks = new Array(5) + public newNotifications = new Array(5) + public current_user: User; + + public uid: number; + public uname: string; + public fname: string; + public lname: string; + public UserProfileModalVisible : boolean = false; + + constructor( + private classToggler: ClassToggleService, + private router: Router, + private login_checker: loginChecker, + private data_provider: dataProvider, + ) { + super(); + var _self = this; + var session_info: string = localStorage.getItem('current_user') || "[]]"; + this.current_user = JSON.parse(session_info); + } + + submit(){ + } + + get_user_info() { + var _self = this; + this.uid = this.current_user.partner_id; + this.uname = this.current_user.name; + this.fname = this.current_user.firstname; + this.lname = this.current_user.lastname; + } + + callParent(): void { + this.UserModalEvent.next('test'); + } + + logout() { + this.data_provider.logout().then(res => { + this.router.navigate(['login']); + }) + } + + ngOnInit(): void { + var _self = this; + this.get_user_info(); + } +} diff --git a/src/app/containers/default-layout/default-layout.component.html b/src/app/containers/default-layout/default-layout.component.html new file mode 100644 index 0000000..47debf3 --- /dev/null +++ b/src/app/containers/default-layout/default-layout.component.html @@ -0,0 +1,80 @@ + + + + + + + + + + + +
+ + + +
+ + + +
+ + +
+ + + +
Change Password Form of{{ uname }}({{ fname }} {{lname}})
+ +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ {{error}} +
+ + + + +
\ No newline at end of file diff --git a/src/app/containers/default-layout/default-layout.component.scss b/src/app/containers/default-layout/default-layout.component.scss new file mode 100644 index 0000000..4ca8e9e --- /dev/null +++ b/src/app/containers/default-layout/default-layout.component.scss @@ -0,0 +1,7 @@ +:host { + ng-scrollbar { + --scrollbar-thumb-color: var(--cui-border-color, #999); + --scrollbar-track-color: var(--cui-body-color, #fff); + --scrollbar-hover-size: calc(var(--scrollbar-size) * 1.5); + } +} diff --git a/src/app/containers/default-layout/default-layout.component.ts b/src/app/containers/default-layout/default-layout.component.ts new file mode 100644 index 0000000..4879269 --- /dev/null +++ b/src/app/containers/default-layout/default-layout.component.ts @@ -0,0 +1,125 @@ +import { Component, OnInit } from '@angular/core'; +import { Router, NavigationEnd } from "@angular/router"; +import { loginChecker } from '../../providers/login_checker'; +import { User } from '../../providers/mikrowizard/user'; +import { navItems } from './_nav'; +import { dataProvider } from '../../providers/mikrowizard/data'; +import { version } from 'os'; + +@Component({ + selector: 'app-dashboard', + templateUrl: './default-layout.component.html', + styleUrls: ['./default-layout.component.scss'], +}) +export class DefaultLayoutComponent implements OnInit { + + public navItems = navItems; + public current_user: User; + public uid: number; + public uname: string; + public fname: string; + public lname: string; + public UserProfileModalVisible:boolean; + public error:any=false; + public password:any={ + 'cupass':'', + 'pass1':'', + 'pass2':'' + }; + + public passvalid:any={ + 'cupass':false, + 'pass1':false, + 'pass2':false + }; + version=require('../../../../package.json').version; + + constructor( + private router: Router, + private login_checker: loginChecker, + private data_provider: dataProvider, + + ) { + var _self = this; + var session_info: string = localStorage.getItem('current_user') || "[]"; + this.current_user = JSON.parse(session_info); + this.router.events.subscribe((ev) => { + if (ev instanceof NavigationEnd) { + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(['login']); + }, 100); + } + } + }); + } + + password_changed(variable:string,value:any){ + var _self=this; + this.password[variable]=value; + console.dir(this.password['pass1']); + console.dir(this.password['pass2']); + if(this.password['pass1']==this.password['pass2']){ + _self.passvalid['pass2']=true; + } + else{ + _self.passvalid['pass2']=false; + } + } + + show_user_modal(){ + this.UserProfileModalVisible = true; + } + + submit(){ + var _self=this; + if(!_self.passvalid['pass2']){ + return; + } + this.data_provider.change_password(this.password['cupass'], this.password['pass1']).then(res => { + if(res['status']=='success'){ + _self.logout(); + setTimeout(function () { + _self.router.navigate(['login']); + }, 100); + } + else{ + _self.error=res['err']; + } + }, + (err) => { + console.dir(err); + } + ); + } + + + get_user_info() { + var _self = this; + this.uid = this.current_user.partner_id; + this.uname = this.current_user.name; + this.fname = this.current_user.firstname; + this.lname = this.current_user.lastname; + } + + logout() { + this.data_provider.logout(); + } + + ngOnInit(): void { + var _self = this; + this.get_user_info(); + _self.data_provider.get_front_version().then((res:any) => { + console.log("ressssssssssssssssss"); + console.dir(res['version']); + console.dir(this.version); + if(res['version']!=this.version){ + console.dir("New version is available. Please refresh the page."); + window.location.href = window.location.href.replace(/#.*$/, ''); + + + } + }); + } + +} diff --git a/src/app/containers/default-layout/index.ts b/src/app/containers/default-layout/index.ts new file mode 100644 index 0000000..158fc87 --- /dev/null +++ b/src/app/containers/default-layout/index.ts @@ -0,0 +1,3 @@ +export * from './default-footer/default-footer.component'; +export * from './default-header/default-header.component'; +export * from './default-layout.component'; diff --git a/src/app/containers/index.ts b/src/app/containers/index.ts new file mode 100644 index 0000000..473078d --- /dev/null +++ b/src/app/containers/index.ts @@ -0,0 +1 @@ +export * from './default-layout'; diff --git a/src/app/icons/icon-subset.ts b/src/app/icons/icon-subset.ts new file mode 100644 index 0000000..5407905 --- /dev/null +++ b/src/app/icons/icon-subset.ts @@ -0,0 +1,281 @@ +import { + cibCcAmex, + cibCcApplePay, + cibCcMastercard, + cibCcPaypal, + cibCcStripe, + cibCcVisa, + cibFacebook, + cibGoogle, + cibLinkedin, + cibSkype, + cibTwitter, + cifBr, + cifEs, + cifFr, + cifIn, + cifPl, + cifUs, + cilAlignCenter, + cilAlignLeft, + cilAlignRight, + cilApplicationsSettings, + cilArrowBottom, + cilArrowRight, + cilArrowTop, + cilBasket, + cilBell, + cilBold, + cilBookmark, + cilCalculator, + cilCalendar, + cilChart, + cilChartPie, + cilCheck, + cilChevronLeft, + cilChevronRight, + cilCloudDownload, + cilCode, + cilCommentSquare, + cilCreditCard, + cilCursor, + cilDescription, + cilDollar, + cilDrop, + cilEnvelopeClosed, + cilEnvelopeOpen, + cilFile, + cilHome, + cilInbox, + cilIndentDecrease, + cilIndentIncrease, + cilItalic, + cilJustifyCenter, + cilLayers, + cilList, + cilListNumbered, + cilLocationPin, + cilLockLocked, + cilMagnifyingGlass, + cilMap, + cilMediaPlay, + cilMenu, + cilMoon, + cilNotes, + cilOptions, + cilPaperclip, + cilPaperPlane, + cilPen, + cilPencil, + cilPeople, + cilPrint, + cilPuzzle, + cilReportSlash, + cilSave, + cilSettings, + cilShare, + cilShareAll, + cilShareBoxed, + cilSpeech, + cilSpeedometer, + cilSpreadsheet, + cilStar, + cilSun, + cilTags, + cilTask, + cilTrash, + cilUnderline, + cilUser, + cilUserFemale, + cilUserFollow, + cilUserUnfollow, + cilExitToApp +} from '@coreui/icons'; + +export const iconSubset = { + cibCcAmex, + cibCcApplePay, + cibCcMastercard, + cibCcPaypal, + cibCcStripe, + cibCcVisa, + cibFacebook, + cibGoogle, + cibLinkedin, + cibSkype, + cibTwitter, + cifBr, + cifEs, + cifFr, + cifIn, + cifPl, + cifUs, + cilAlignCenter, + cilAlignLeft, + cilAlignRight, + cilApplicationsSettings, + cilArrowBottom, + cilArrowRight, + cilArrowTop, + cilBasket, + cilBell, + cilBold, + cilBookmark, + cilCalculator, + cilCalendar, + cilChart, + cilChartPie, + cilCheck, + cilChevronLeft, + cilChevronRight, + cilCloudDownload, + cilCode, + cilCommentSquare, + cilCreditCard, + cilCursor, + cilDescription, + cilDollar, + cilDrop, + cilEnvelopeClosed, + cilEnvelopeOpen, + cilFile, + cilHome, + cilInbox, + cilIndentDecrease, + cilIndentIncrease, + cilItalic, + cilJustifyCenter, + cilLayers, + cilList, + cilListNumbered, + cilLocationPin, + cilLockLocked, + cilMagnifyingGlass, + cilMap, + cilMediaPlay, + cilMenu, + cilMoon, + cilNotes, + cilOptions, + cilPaperclip, + cilPaperPlane, + cilPen, + cilPencil, + cilPeople, + cilPrint, + cilPuzzle, + cilReportSlash, + cilSave, + cilSettings, + cilShare, + cilShareAll, + cilShareBoxed, + cilSpeech, + cilSpeedometer, + cilSpreadsheet, + cilStar, + cilSun, + cilTags, + cilTask, + cilTrash, + cilUnderline, + cilUser, + cilUserFemale, + cilUserFollow, + cilUserUnfollow, + cilExitToApp +}; + +export enum IconSubset { + cibCcAmex = 'cibCcAmex', + cibCcApplePay = 'cibCcApplePay', + cibCcMastercard = 'cibCcMastercard', + cibCcPaypal = 'cibCcPaypal', + cibCcStripe = 'cibCcStripe', + cibCcVisa = 'cibCcVisa', + cibFacebook = 'cibFacebook', + cibGoogle = 'cibGoogle', + cibLinkedin = 'cibLinkedin', + cibSkype = 'cibSkype', + cibTwitter = 'cibTwitter', + cifBr = 'cifBr', + cifEs = 'cifEs', + cifFr = 'cifFr', + cifIn = 'cifIn', + cifPl = 'cifPl', + cifUs = 'cifUs', + cilAlignCenter = 'cilAlignCenter', + cilAlignLeft = 'cilAlignLeft', + cilAlignRight = 'cilAlignRight', + cilApplicationsSettings = 'cilApplicationsSettings', + cilArrowBottom = 'cilArrowBottom', + cilArrowRight = 'cilArrowRight', + cilArrowTop = 'cilArrowTop', + cilBasket = 'cilBasket', + cilBell = 'cilBell', + cilBold = 'cilBold', + cilBookmark = 'cilBookmark', + cilCalculator = 'cilCalculator', + cilCalendar = 'cilCalendar', + cilChart = 'cilChart', + cilChartPie = 'cilChartPie', + cilCheck = 'cilCheck', + cilChevronLeft = 'cilChevronLeft', + cilChevronRight = 'cilChevronRight', + cilCloudDownload = 'cilCloudDownload', + cilCode = 'cilCode', + cilCommentSquare = 'cilCommentSquare', + cilCreditCard = 'cilCreditCard', + cilCursor = 'cilCursor', + cilDescription = 'cilDescription', + cilDollar = 'cilDollar', + cilDrop = 'cilDrop', + cilEnvelopeClosed = 'cilEnvelopeClosed', + cilEnvelopeOpen = 'cilEnvelopeOpen', + cilFile = 'cilFile', + cilHome = 'cilHome', + cilInbox = 'cilInbox', + cilIndentDecrease = 'cilIndentDecrease', + cilIndentIncrease = 'cilIndentIncrease', + cilItalic = 'cilItalic', + cilJustifyCenter = 'cilJustifyCenter', + cilLayers = 'cilLayers', + cilList = 'cilList', + cilListNumbered = 'cilListNumbered', + cilLocationPin = 'cilLocationPin', + cilLockLocked = 'cilLockLocked', + cilMagnifyingGlass = 'cilMagnifyingGlass', + cilMap = 'cilMap', + cilMediaPlay = 'cilMediaPlay', + cilMenu = 'cilMenu', + cilMoon = 'cilMoon', + cilNotes = 'cilNotes', + cilOptions = 'cilOptions', + cilPaperclip = 'cilPaperclip', + cilPaperPlane = 'cilPaperPlane', + cilPen = 'cilPen', + cilPencil = 'cilPencil', + cilPeople = 'cilPeople', + cilPrint = 'cilPrint', + cilPuzzle = 'cilPuzzle', + cilReportSlash = 'cilReportSlash', + cilSave = 'cilSave', + cilSettings = 'cilSettings', + cilShare = 'cilShare', + cilShareAll = 'cilShareAll', + cilShareBoxed = 'cilShareBoxed', + cilSpeech = 'cilSpeech', + cilSpeedometer = 'cilSpeedometer', + cilSpreadsheet = 'cilSpreadsheet', + cilStar = 'cilStar', + cilSun = 'cilSun', + cilTags = 'cilTags', + cilTask = 'cilTask', + cilTrash = 'cilTrash', + cilUnderline = 'cilUnderline', + cilUser = 'cilUser', + cilUserFemale = 'cilUserFemale', + cilUserFollow = 'cilUserFollow', + cilUserUnfollow = 'cilUserUnfollow', + cilExitToApp = 'cilExitToApp' +} diff --git a/src/app/providers/login_checker.ts b/src/app/providers/login_checker.ts new file mode 100644 index 0000000..36becec --- /dev/null +++ b/src/app/providers/login_checker.ts @@ -0,0 +1,28 @@ +import { Injectable } from '@angular/core'; +import { dataProvider } from './mikrowizard/data'; + +@Injectable() +export class loginChecker { + private logged_in: boolean = false; + private pinging: boolean = false; + + constructor(private data_provider: dataProvider) { + } + public isLoggedIn(): boolean { + return this.logged_in; + } + load() { + var _self = this; + return this.data_provider.isLoggedIn().then(result => { + _self.logged_in = result; + }).catch(err => { + _self.logged_in = false; + }) + } + setStatus(status: boolean): void { + this.logged_in = status; + } + setPinging(ping: boolean): void { + this.pinging = ping; + } +} \ No newline at end of file diff --git a/src/app/providers/messaging.service.ts b/src/app/providers/messaging.service.ts new file mode 100644 index 0000000..8a135d6 --- /dev/null +++ b/src/app/providers/messaging.service.ts @@ -0,0 +1,86 @@ +import { Injectable } from '@angular/core'; +import { AngularFireDatabase } from '@angular/fire/database'; +import { AngularFireAuth } from '@angular/fire/auth'; +import { AngularFireMessaging } from '@angular/fire/messaging'; +import { mergeMapTo } from 'rxjs/operators'; +import { take } from 'rxjs/operators'; +import { BehaviorSubject } from 'rxjs' +import { dataProvider } from './odoorpchttp/data'; +import { ToastrService } from 'ngx-toastr'; + +@Injectable() +export class MessagingService { + + currentMessage = new BehaviorSubject(null); + + constructor( + private angularFireDB: AngularFireDatabase, + private angularFireAuth: AngularFireAuth, + private data_provider: dataProvider, + private toastr: ToastrService, + private angularFireMessaging: AngularFireMessaging, + ) { + this.angularFireMessaging.messaging.subscribe( + (_messaging) => { + _messaging.onMessage = _messaging.onMessage.bind(_messaging); + _messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging); + } + ) + } + + /** + * update token in firebase database + * + * @param userId userId as a key + * @param token token as a value + */ + updateToken(userId, token) { + // we can change this function to request our backend service + this.angularFireAuth.authState.pipe(take(1)).subscribe( + () => { + const data = {}; + data[userId] = token + this.angularFireDB.object('fcmTokens/').update(data) + }) + } + + /** + * request permission for notification from firebase cloud messaging + * + * @param userId userId + */ + requestPermission(userId) { + this.angularFireMessaging.requestToken.subscribe( + (token) => { + this.data_provider.update_FBC_token(token).then(result => { + if(result.result!='success'){ + console.error('Unable to write token.'); + } + }); + this.updateToken(userId, token); + }, + (err) => { + console.error('Unable to get permission to notify.', err); + } + ); + } + shownotification(payload){ + if(typeof(payload) !== 'undefined'){ + if(document.visibilityState){ + this.toastr.warning(payload.notification.title, payload.notification.body,{ + disableTimeOut:true, + }); + } + } + } + /** + * hook method when new notification received in foreground + */ + receiveMessage() { + this.angularFireMessaging.messages.subscribe( + (payload) => { + this.shownotification(payload); + this.currentMessage.next(payload); + }) + } +} \ No newline at end of file diff --git a/src/app/providers/mikrowizard/data.ts b/src/app/providers/mikrowizard/data.ts new file mode 100644 index 0000000..2a3eb88 --- /dev/null +++ b/src/app/providers/mikrowizard/data.ts @@ -0,0 +1,455 @@ + +import { Injectable } from '@angular/core'; +// import { MikroWizardrpcProvider } from '../MikroWizardrpc/MikroWizardrpc'; +import { MikroWizardProvider } from './provider'; + + +import { User } from './user'; + +@Injectable() +export class dataProvider { + + // public serverUrl: string = "/api"; + public serverUrl: string = ""; + private db: string = "NothingImportant"; + + constructor( + // private http: HTTP, + // public MikroWizardRPC: MikroWizardrpcProvider, + public MikroWizardRPC: MikroWizardProvider, + ) { + this.MikroWizardRPC.init({ + MikroWizard_server: this.serverUrl + }); + } + + isLoggedIn() { + return this.MikroWizardRPC.isLoggedIn(); + } + + login(username: string = "", password: string = "", ga: string = "") { + var _self = this; + this.MikroWizardRPC.clearCookeis(); + return this.MikroWizardRPC.login(this.db, username, password, ga).then(res => { + if ('uid' in res && res['uid']) { + let usr: User = new User( + res.name, + res.username, + res.partner_id, + res.uid, + res.first_name, + res.last_name, + res.role, + res.perms, + res.tz, + ); + // console.dir(JSON.stringify(usr)) + localStorage.setItem('current_user', JSON.stringify(usr)); + } + return res; + }); + } + + logout() { + var _self = this; + _self.MikroWizardRPC.clearCookeis(); + this.MikroWizardRPC.setNewSession('', ''); + localStorage.removeItem('current_user'); + return this.MikroWizardRPC.sendJsonRequest("/api/logout", {}); + } + + //// + //// MikroWizard API + //// + get_front_version(){ + return this.MikroWizardRPC.sendHttpGetRequest("/api/frontver/"); + } + change_password(oldpass:string,newpass:string){ + var data={ + 'oldpass':oldpass, + 'newpass':newpass + } + return this.MikroWizardRPC.sendJsonRequest("/api/user/change_password", data); + } + dashboard_stats(versioncheck:boolean){ + var data={ + 'versioncheck':versioncheck + } + return this.MikroWizardRPC.sendJsonRequest("/api/dashboard/stats", data); + } + + dashboard_traffic(delta:string){ + var data={ + 'delta':delta + } + return this.MikroWizardRPC.sendJsonRequest("/api/dashboard/traffic", data); + } + + get_dev_list(data:any) { + return this.MikroWizardRPC.sendJsonRequest("/api/dev/list", data); + } + + get_devgroup_list() { + return this.MikroWizardRPC.sendJsonRequest("/api/devgroup/list", {}); + } + + get_devgroup_members(gid:number) { + var data={ + 'gid':gid + } + return this.MikroWizardRPC.sendJsonRequest("/api/devgroup/members", data); + } + delete_group(id:number){ + var data={ + 'gid':id + } + return this.MikroWizardRPC.sendJsonRequest("/api/devgroup/delete", data); + } + + delete_devices(devids:any){ + var data = { + 'devids':devids + } + return this.MikroWizardRPC.sendJsonRequest("/api/dev/delete", data); + } + + get_dev_info(id: number) { + var data={ + 'devid':id + } + return this.MikroWizardRPC.sendJsonRequest("/api/dev/info", data); + } + + get_editform(id: number) { + var data={ + 'devid':id + } + return this.MikroWizardRPC.sendJsonRequest("/api/dev/get_editform", data); + } + save_editform(data:any){ + return this.MikroWizardRPC.sendJsonRequest("/api/dev/save_editform", data); + } + get_dev_sensors(id: number,delta:string="5m",total_type:string="bps") { + var data={ + 'devid':id, + 'delta':delta, + 'total':total_type + } + return this.MikroWizardRPC.sendJsonRequest("/api/dev/sensors", data); + } + + get_dev_ifstat(id: number,delta:string="5m",iface:string="ether1",type:string="bps") { + var data={ + 'devid':id, + 'delta':delta, + 'type':type, + 'interface':iface + } + return this.MikroWizardRPC.sendJsonRequest("/api/dev/ifstat", data); + } + + get_auth_logs(filters:any) { + var data=filters; + return this.MikroWizardRPC.sendJsonRequest("/api/auth/list", data); + } + + get_account_logs(filters:any) { + var data=filters; + return this.MikroWizardRPC.sendJsonRequest("/api/account/list", data); + } + + get_dev_logs(filters:any) { + var data=filters; + return this.MikroWizardRPC.sendJsonRequest("/api/devlogs/list", data); + } + + get_syslog(filters:any) { + var data=filters; + return this.MikroWizardRPC.sendJsonRequest("/api/syslog/list", data); + } + get_details_grouped(devid:number=0){ + var data={ + 'devid':devid + } + return this.MikroWizardRPC.sendJsonRequest("/api/devlogs/details/list", data); + } + + scan_devs(type:string,info:any){ + var data: any={ + 'type':type + } + if(type=="ip"){ + data = Object.assign(data, info); + } + return this.MikroWizardRPC.sendJsonRequest("/api/scanner/scan", data); + } + + get_groups(searchstr:string=""){ + var data={ + 'searchstr':searchstr + } + return this.MikroWizardRPC.sendJsonRequest("/api/search/groups", data); + } + + get_devices(searchstr:string=""){ + var data={ + 'searchstr':searchstr + } + return this.MikroWizardRPC.sendJsonRequest("/api/search/devices", data); + } + + update_save_group(group:any){ + var data={ + ...group + } + return this.MikroWizardRPC.sendJsonRequest("/api/devgroup/update_save_group", data); + } + + get_snippets(name:string,desc:string,content:string,page:number=0,size:number=1000){ + var data={ + 'name':name, + 'description':desc, + 'content':content, + 'page':page, + 'size':size + } + return this.MikroWizardRPC.sendJsonRequest("/api/snippet/list", data); + } + + save_snippet(data:any){ + return this.MikroWizardRPC.sendJsonRequest("/api/snippet/save", {...data}); + } + + delete_snippet(id:number){ + var data={ + 'id':id + } + return this.MikroWizardRPC.sendJsonRequest("/api/snippet/delete", data); + } + + get_user_task_list() { + return this.MikroWizardRPC.sendJsonRequest("/api/user_tasks/list", {}); + } + + + Add_task(data:any,members:any) { + data['members']=members; + return this.MikroWizardRPC.sendJsonRequest("/api/user_tasks/create", data); + } + + Delete_task(taskid:Number) { + var data={ + 'taskid':taskid, + } + return this.MikroWizardRPC.sendJsonRequest("/api/user_tasks/delete", data); + } + + Edit_task(data:any,members:any) { + data['members']=members; + return this.MikroWizardRPC.sendJsonRequest("/api/user_tasks/edit", data); + } + + get_task_members(taskid:Number) { + var data={ + 'taskid':taskid, + } + return this.MikroWizardRPC.sendJsonRequest("/api/taskmember/details", data); + } + + + get_users(page:Number,size:Number,search:string) { + var data={ + 'page':page, + 'size':size, + 'search':search + } + return this.MikroWizardRPC.sendJsonRequest("/api/users/list", data); + } + + get_perms(page:Number,size:Number,search:string) { + var data={ + 'page':page, + 'size':size, + 'search':search + } + return this.MikroWizardRPC.sendJsonRequest("/api/perms/list", data); + } + + create_perm(name:string,perms:any) { + var data={ + 'name':name, + 'perms':perms + } + return this.MikroWizardRPC.sendJsonRequest("/api/perms/create", data); + } + + edit_perm(id:Number,name:string,perms:any) { + + var data = { + 'id':id, + 'name':name, + 'perms':perms + } + + return this.MikroWizardRPC.sendJsonRequest("/api/perms/edit", data); + } + + delete_perm(id:number){ + var data={ + 'id':id + } + return this.MikroWizardRPC.sendJsonRequest("/api/perms/delete", data); + } + + user_perms(uid:string) { + + var data = { + 'uid':uid, + } + + return this.MikroWizardRPC.sendJsonRequest("/api/userperms/list", data); + } + + Add_user_perm(uid:Number,permid:Number,devgroupid:Number){ + + var data = { + 'uid':uid, + 'pid':permid, + 'gid':devgroupid + } + + return this.MikroWizardRPC.sendJsonRequest("/api/userperms/create", data); + } + Delete_user_perm(id:number){ + var data={ + 'id':id + } + return this.MikroWizardRPC.sendJsonRequest("/api/userperms/delete", data); + } + edit_user(data:any) { + + return this.MikroWizardRPC.sendJsonRequest("/api/user/edit", data); + } + + create_user(data:any) { + return this.MikroWizardRPC.sendJsonRequest("/api/user/create", data); + } + delete_user(id:number){ + var data={ + 'uid':id + } + return this.MikroWizardRPC.sendJsonRequest("/api/user/delete", data); + } + check_firmware(devids:any) { + var data = { + 'devids':devids + } + return this.MikroWizardRPC.sendJsonRequest("/api/firmware/check_firmware_update", data); + } + + get_firms(page:Number,size:Number,search:any) { + var data = { + 'page':page, + 'size':size, + 'search':search + } + return this.MikroWizardRPC.sendJsonRequest("/api/firmware/get_firms", data); + } + + get_backups(devid:Number=0,page:Number,size:Number,search:any) { + var data = { + 'devid':devid, + 'page':page, + 'size':size, + 'search':search + } + return this.MikroWizardRPC.sendJsonRequest("/api/backup/list", data); + } + + + get_backup(id:number){ + var data = { + 'id':id + } + return this.MikroWizardRPC.sendJsonRequest("/api/backup/get", data); + } + + get_downloadable_firms() { + + return this.MikroWizardRPC.sendJsonRequest("/api/firmware/get_downloadable_firms", {}); + } + + download_firmware_to_repository(version:string){ + var data = { + 'version':version + } + return this.MikroWizardRPC.sendJsonRequest("/api/firmware/download_firmware_to_repository", data); + } + + save_firmware_setting(updatebehavior:string,firmwaretoinstall:string,firmwaretoinstallv6:string){ + var data = { + 'updatebehavior':updatebehavior, + 'firmwaretoinstall':firmwaretoinstall, + 'firmwaretoinstallv6':firmwaretoinstallv6 + } + return this.MikroWizardRPC.sendJsonRequest("/api/firmware/update_firmware_settings", data); + } + + update_firmware(devids:string){ + var data = { + 'devids':devids + } + return this.MikroWizardRPC.sendJsonRequest("/api/firmware/update_firmware", data); + } + + upgrade_firmware(devids:string){ + var data = { + 'devids':devids + } + return this.MikroWizardRPC.sendJsonRequest("/api/firmware/upgrade_firmware", data); + } + + reboot_devices(devids:string){ + var data = { + 'devids':devids + } + return this.MikroWizardRPC.sendJsonRequest("/api/firmware/reboot_devices", data); + } + + get_settings(){ + return this.MikroWizardRPC.sendJsonRequest("/api/sysconfig/get_all", {}); + } + + save_sys_setting(data:any){ + return this.MikroWizardRPC.sendJsonRequest("/api/sysconfig/save_all", data); + } + + + //// + //// End api funcs + //// + setupSession(context: any, session: any) { + this.MikroWizardRPC.clearCookeis(); + this.MikroWizardRPC.setNewSession(context, session); + } + + checkSessionExpired(error: any) { + console.log(error); + if ('title' in error && error.title == "session_expired") + this.logout(); + return Promise.reject(error.message || error); + } + + + setSession(context: any, session_id: any) { + this.MikroWizardRPC.setNewSession(context, session_id); + } + + getSessionInfo() { + return this.MikroWizardRPC.getSessionInfo(); + } + + getFullUrl(url: any) { + return this.serverUrl + url; + } +} diff --git a/src/app/providers/mikrowizard/provider.ts b/src/app/providers/mikrowizard/provider.ts new file mode 100644 index 0000000..73bce74 --- /dev/null +++ b/src/app/providers/mikrowizard/provider.ts @@ -0,0 +1,209 @@ +import { Injectable, Inject } from '@angular/core'; + +import { HttpClient,HttpResponse } from '@angular/common/http'; + +class Cookies { // cookies doesn't work with Android default browser / Ionic + private session_id: string = ""; + + delete_sessionId() { + this.session_id = ""; + document.cookie = ""; + } + + get_sessionId() { + return document + .cookie.split("; ") + .filter(x => { return x.indexOf("session_id") === 0; }) + .map(x => { return x.split("=")[1]; }) + .pop() || this.session_id || ""; + } + + set_sessionId(val: string) { + // document.cookie = `session_id=${val}`; + // this.session_id = val; + } +} + +@Injectable() +export class MikroWizardProvider { + + private MikroWizard_server: string; + private http_auth: string; + private cookies: Cookies; + private uniq_id_counter: number = 0; + private shouldManageSessionId: boolean = false; // try without first + private context: Object = {"lang": "en_US"}; + private headers: any; + + constructor(private http: HttpClient) { + this.cookies = new Cookies(); + } + + private buildRequest(url: string, params: any) { + this.uniq_id_counter += 1; + if (this.shouldManageSessionId) { + params.session_id = this.cookies.get_sessionId(); + } + + this.headers = { + "Content-Type": "application/json", + "Session-Id": this.cookies.get_sessionId(), + "Authorization": "Basic " + btoa(`${this.http_auth}`) + }; + return params; + } + + private handleMikroWizardErrors(response: any) { + //response = JSON.parse(response.data); + if (!response.error) { + if (typeof response.result === 'string' || response.result instanceof String) + return JSON.parse(response.result); + return response.result; + } + + let error = response.error; + let errorObj = { + title: " ", + message: "", + fullTrace: error + }; + return Promise.reject(error); + } + + private handleRequestErrors(response: any) { + if (!response.error) { + if (typeof response.result === 'string' || response.result instanceof String) + return JSON.parse(response.result); + return response.result; + } + + let error = response.error; + let errorObj = { + title: " ", + message: "", + fullTrace: error + }; + return Promise.reject(error); + } + + private handleHttpErrors(error: any) { + try{ + console.log(error, Object.getOwnPropertyNames(error)); + } + catch(e){ + console.log(error); + } + return Promise.reject(error.message || error); + } + + public init(configs: any) { + this.MikroWizard_server = configs.MikroWizard_server; + this.http_auth = configs.http_auth || null; + } + + public setMikroWizardServer(MikroWizard_server: string) { + this.MikroWizard_server = MikroWizard_server; + } + + public setHttpAuth(http_auth: string) { + this.http_auth = http_auth; + } + public sendRequestauth(url: string, params: Object){ + let body = this.buildRequest(url, params); + console.dir(body); + return this.http.post(this.MikroWizard_server + url, body, {observe: "response",headers: this.headers,withCredentials:true}); + } + public sendRequest(url: string, params: Object): Promise { + let body = this.buildRequest(url, params); + return this.http.post(this.MikroWizard_server + url, body, {headers: this.headers,withCredentials:true}) + .toPromise() + .then((response: any) => this.handleMikroWizardErrors(response)) + .catch((response: any) => this.handleHttpErrors(response)); + } + + public sendJsonRequest(url: string, params: Object) { + let headers = { + "Content-Type": "application/json", + }; + return this.http.post(url, params, + {headers:this.headers,withCredentials:true} + ).toPromise() + .then(this.handleRequestErrors) + .catch(this.handleHttpErrors); + } + + public sendHttpRequest(url: string, params: any) { + let headers = { + "Content-Type": "application/x-www-form-urlencoded", + }; + return this.http.post(this.MikroWizard_server + url, params, + {headers:headers,withCredentials:true} + ).toPromise() + .then(this.handleRequestErrors) + .catch(this.handleHttpErrors); + } + public sendHttpGetRequest(url: string) { + let headers = { + "Content-Type": "application/x-www-form-urlencoded", + }; + return this.http.get( url, + { responseType: 'json' } + ).toPromise() + } + + public getServerInfo() { + return this.sendRequest("/api/version_info", {}); + } + + public getSessionInfo() { + return this.sendRequest("/api/me", {}); + } + //Set-Cookie + public login(db: string, login: string, password: string, ga: string) { + let params = { + username : login, + password : password, + // token: token, + ga: ga + }; + let $this = this; + return this.sendRequest("/api/login", params); + } + + public isLoggedIn() { + return this.getSessionInfo().then(function(result: any) { + // console.dir("result"); + console.dir(result); + // return true; + if ( "uid" in result === false ) return false; + else return true; + }); + } + + public clearCookeis() { + this.cookies = new Cookies(); + } + + public logout() { + this.clearCookeis(); + return Promise.resolve(); + } + + + + public getUserContext(context: any) { + localStorage.setItem("user_context", JSON.stringify(context)); + + } + + public getContext() { + return this.context; + } + + + + public setNewSession(user_context: any, session_id: any) { + this.context = user_context; + localStorage.setItem("user_context", JSON.stringify(this.context)); + } +} diff --git a/src/app/providers/mikrowizard/user.ts b/src/app/providers/mikrowizard/user.ts new file mode 100644 index 0000000..1f0ce5c --- /dev/null +++ b/src/app/providers/mikrowizard/user.ts @@ -0,0 +1,21 @@ +export class User { + name: string; + username: string; + firstname: string; + lastname: string; + partner_id: number; + id: number; + role: string; + perms:any; + tz:string; + constructor(name: any, username: any, partner_id: any, user_id: any,firstname: any,lastname: any,role: any,perms:any,tz:string) { this.name = name; + this.username = username; + this.partner_id = partner_id; + this.id = user_id; + this.firstname = firstname; + this.lastname = lastname; + this.role = role; + this.perms = perms; + this.tz=tz; + } +} diff --git a/src/app/views/acc_log/acc-routing.module.ts b/src/app/views/acc_log/acc-routing.module.ts new file mode 100644 index 0000000..ec80452 --- /dev/null +++ b/src/app/views/acc_log/acc-routing.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { AccComponent } from "./acc.component"; + +const routes: Routes = [ + { + path: "", + component: AccComponent, + data: { + title: $localize`Accounting Logs`, + }, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class AccRoutingModule {} diff --git a/src/app/views/acc_log/acc.component.html b/src/app/views/acc_log/acc.component.html new file mode 100644 index 0000000..c37a836 --- /dev/null +++ b/src/app/views/acc_log/acc.component.html @@ -0,0 +1,112 @@ + + + + + + + Accunting Logs + + + + + + + + +
+ + + Start date + + + + + + End date + + + + + + Select section + + All + + {{sec}} + + + + + Select action + + All + + {{ac}} + + + + + Config + + + + IP + + + + +
+ +
+ + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + +
{{value}}
+
+
+ + + {{value}} + + + + + {{value}} + + + + + {{value}} + + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/views/acc_log/acc.component.scss b/src/app/views/acc_log/acc.component.scss new file mode 100644 index 0000000..2b40855 --- /dev/null +++ b/src/app/views/acc_log/acc.component.scss @@ -0,0 +1,86 @@ +@use '@angular/material' as mat; + +:host { + .legend { + small { + font-size: x-small; + } + } +} +.gui-drawer-content{ + background-color: #efefef!important; + +} +.log-detail{ +padding:30px 10px; +box-sizing:border-box; +} +.log-detail h1{ +font-size:2em; +font-weight:bold; +margin:0; +padding:0; +} +.log-detail small{ +position:relative; +top:-7px; +padding:0; +font-weight:bold; +font-size:1.1em; +} +.log-detail table { +width: 100%; +border-collapse: collapse!important; +margin: 0; +padding: 0; +background-color: #fff!important; +} +.log-detail th { +text-align: left; +} +.log-detail th, +.log-detail td { +border: 1px solid #dfdfdf!important; +padding: 1rem!important; +} + +.log-detail code{ + padding:5px!important; + display:block; + background:#1d1f21; + color:#c5c8c6; + border-bottom-left-radius:3px; + border-bottom-right-radius:3px; + width:100%; +} + +.log-detail .code-title{ + background-color:#393e42!important;; + width:100%; + padding:2px 15px; + display:inline-block; + margin-top:10px; + color:#d2d2d2; + border-top-left-radius:3px; + border-top-right-radius:3px; + font-weight:bold; +} + + +.example-form { + @include mat.button-density(-5); + + @include mat.form-field-density(-5); + @include mat.button-toggle-density(-5); + @include mat.datepicker-density(-5); + @include mat.all-component-densities(-5); + @include mat.icon-button-density(-5); + @include mat.icon-density(-5); + .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label { display: inline; } + mat-form-field *{ + font-size:13px!important; + } + .mat-mdc-form-field-infix{ + width:150px; + } +} \ No newline at end of file diff --git a/src/app/views/acc_log/acc.component.ts b/src/app/views/acc_log/acc.component.ts new file mode 100644 index 0000000..ccc2fde --- /dev/null +++ b/src/app/views/acc_log/acc.component.ts @@ -0,0 +1,204 @@ +import { Component, OnInit, ViewEncapsulation } from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router, ActivatedRoute } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiRowDetail, + GuiSelectedRow, + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { formatInTimeZone } from "date-fns-tz"; + + + +@Component({ + templateUrl: "acc.component.html", + styleUrls: ["acc.component.scss"], + encapsulation: ViewEncapsulation.None, +}) +export class AccComponent implements OnInit { + public uid: number; + public uname: string; + public tz: string; + public filterText: string; + public filters: any = { + devid: false, + ip: "", + command: "", + user: false, + state: "all", + with: "all", + start_time: false, + end_time: false, + }; + public filters_visible: boolean = false; + public event_action: any = []; + public event_section: any = []; + + constructor( + private data_provider: dataProvider, + private router: Router, + private route: ActivatedRoute, + private login_checker: loginChecker, + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + _self.tz = res.tz; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public rows: any = []; + public Selectedrows: any; + public devid: number = 0; + public sorting = { + enabled: true, + multiSorting: true, + }; + rowDetail: GuiRowDetail = { + enabled: true, + template: (item) => { + return ` +
+

${item.name}

+ ${item.devip} + + + + + + + + + + + + + + + + + + + + + +
User Address${item.address}
User Name${item.username}
Connection Type${item.ctype}
Section${item.section}
Exec time${item.created}
+
Executed Config
+ + ${item.config} + +
`; + }, + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + + reinitgrid(field: string, $event: any) { + if (field == "start") this.filters["start_time"] = $event.target.value; + else if (field == "end") this.filters["end_time"] = $event.target.value; + else if (field == "ip") this.filters["ip"] = $event; + else if (field == "section") this.filters["section"] = $event; + else if (field == "config") this.filters["config"] = $event; + else if (field == "action") this.filters["action"] = $event; + this.initGridTable(); + } + + ngOnInit(): void { + this.devid = Number(this.route.snapshot.paramMap.get("devid")); + if (this.devid > 0) { + this.filters["devid"] = this.devid; + } + this.initGridTable(); + } + OnDestroy(): void {} + onSelectedRows(rows: Array): void { + this.rows = rows; + this.Selectedrows = rows.map((m: GuiSelectedRow) => m.source.id); + } + + removefilter(filter: any) { + delete this.filters[filter]; + this.initGridTable(); + } + toggleCollapse(): void { + this.filters_visible = !this.filters_visible; + } + logger(item: any) { + console.dir(item); + } + + initGridTable(): void { + var _self = this; + this.data_provider.get_account_logs(this.filters).then((res) => { + let index = 1; + this.source = res.map((d: any) => { + d.index = index; + if (!_self.event_section.includes(d.section)) + _self.event_section.push(d.section); + + if (!_self.event_action.includes(d.action)) + _self.event_action.push(d.action); + d.created = formatInTimeZone( + d.created.split(".")[0] + ".000Z", + _self.tz, + "yyyy-MM-dd HH:mm:ss XXX" + ); + index += 1; + return d; + }); + this.loading = false; + }); + } +} diff --git a/src/app/views/acc_log/acc.module.ts b/src/app/views/acc_log/acc.module.ts new file mode 100644 index 0000000..8dfbca2 --- /dev/null +++ b/src/app/views/acc_log/acc.module.ts @@ -0,0 +1,42 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; + +import { + ButtonModule, + CardModule, + FormModule, + GridModule, + CollapseModule, +} from "@coreui/angular"; + +import { AccRoutingModule } from "./acc-routing.module"; +import { AccComponent } from "./acc.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; + +import { MatDatepickerModule } from "@angular/material/datepicker"; +import { MatInputModule } from "@angular/material/input"; +import { MatFormFieldModule } from "@angular/material/form-field"; +import { MatSelectModule } from "@angular/material/select"; + +import { FormsModule } from "@angular/forms"; + +@NgModule({ + imports: [ + AccRoutingModule, + CardModule, + CommonModule, + GridModule, + FormsModule, + ButtonModule, + FormModule, + ButtonModule, + GuiGridModule, + CollapseModule, + MatFormFieldModule, + MatInputModule, + MatDatepickerModule, + MatSelectModule, + ], + declarations: [AccComponent], +}) +export class AccModule {} diff --git a/src/app/views/auth_log/auth-routing.module.ts b/src/app/views/auth_log/auth-routing.module.ts new file mode 100644 index 0000000..803f2bc --- /dev/null +++ b/src/app/views/auth_log/auth-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { AuthComponent } from './auth.component'; + +const routes: Routes = [ + { + path: '', + component: AuthComponent, + data: { + title: $localize`Authentication Logs` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class AuthRoutingModule { +} diff --git a/src/app/views/auth_log/auth.component.html b/src/app/views/auth_log/auth.component.html new file mode 100644 index 0000000..7990eb4 --- /dev/null +++ b/src/app/views/auth_log/auth.component.html @@ -0,0 +1,142 @@ + + + + + + + Authentication Logs + + + + + + + + +
+ + + Start date + + + + + + End date + + + + + + Connection Type + + All + + {{con}} + + + + + Select action + + All + + {{ac}} + + + + + + Server + + All + + {{ac}} + + + + + Device IP + + + + IP/MAC + + + + Username + + + + +
+ +
+ + + + {{value}} + + + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + +
{{value}}
+
+
+ + + {{value}} + + + + + + {{value}} + {{item.message}} + + + + + + + Logged In + Logged Out + Failed + + + + + {{value}} + + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/views/auth_log/auth.component.scss b/src/app/views/auth_log/auth.component.scss new file mode 100644 index 0000000..302345a --- /dev/null +++ b/src/app/views/auth_log/auth.component.scss @@ -0,0 +1,36 @@ + +@use '@angular/material' as mat; +// Plus imports for other components in your app. + +// Include the common styles for Angular Material. We include this here so that you only +// have to load a single css file for Angular Material in your app. +// Be sure that you only ever include this mixin once! + +// Include theme styles for core and each component used in your app. +// Alternatively, you can import and @include the theme mixins for each component +// that you are using. +.example-form { + @include mat.button-density(-5); + + @include mat.form-field-density(-5); + @include mat.button-toggle-density(-5); + @include mat.datepicker-density(-5); + @include mat.all-component-densities(-5); + @include mat.icon-button-density(-5); + @include mat.icon-density(-5); + .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label { display: inline; } + mat-form-field *{ + font-size:13px!important; + } + .mat-mdc-form-field-infix{ + width:150px; + } +} + +:host { + .legend { + small { + font-size: x-small; + } + } +} diff --git a/src/app/views/auth_log/auth.component.ts b/src/app/views/auth_log/auth.component.ts new file mode 100644 index 0000000..b85a7da --- /dev/null +++ b/src/app/views/auth_log/auth.component.ts @@ -0,0 +1,222 @@ +import { Component, OnInit, ViewEncapsulation } from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router, ActivatedRoute } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiSelectedRow, + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { formatInTimeZone } from "date-fns-tz"; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "auth.component.html", + styleUrls: ["auth.component.scss"], + encapsulation: ViewEncapsulation.None, +}) +export class AuthComponent implements OnInit { + public uid: number; + public uname: string; + public tz: string = "UTC"; + public filterText: string; + public devid: number = 0; + public filters: any = { + devid: false, + ip: "", + devip: "", + user: "", + state: "All", + server: "All", + connection_type: "All", + start_time: false, + end_time: false, + }; + public filters_visible: boolean = false; + public connection_types: any = []; + + constructor( + private data_provider: dataProvider, + private router: Router, + private login_checker: loginChecker, + private route: ActivatedRoute + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + _self.tz = res.tz; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public rows: any = []; + public Selectedrows: any; + + public sorting = { + enabled: true, + multiSorting: true, + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + + reinitgrid(field: string, $event: any) { + if (field == "start") this.filters["start_time"] = $event.target.value; + else if (field == "end") this.filters["end_time"] = $event.target.value; + else if (field == "ip") this.filters["ip"] = $event; + else if (field == "devip") this.filters["devip"] = $event; + else if (field == "user") this.filters["user"] = $event; + else if (field == "connection_type") + this.filters["connection_type"] = $event; + else if (field == "state") this.filters["state"] = $event; + else if (field == "server") this.filters["server"] = $event; + this.initGridTable(); + } + secondsToString(seconds: number) { + var years = Math.floor(seconds / 31536000); + var max = 2; + var current = 0; + var str = ""; + if (years && current < max) { + str += years + "y "; + current++; + } + var days = Math.floor((seconds %= 31536000) / 86400); + if (days && current < max) { + str += days + "d "; + current++; + } + var hours = Math.floor((seconds %= 86400) / 3600); + if (hours && current < max) { + str += hours + "h "; + current++; + } + var minutes = Math.floor((seconds %= 3600) / 60); + if (minutes && current < max) { + str += minutes + "m "; + current++; + } + var seconds = seconds % 60; + if (seconds && current < max) { + str += seconds + "s "; + current++; + } + + return str; + } + ngOnInit(): void { + this.devid = Number(this.route.snapshot.paramMap.get("devid")); + if (this.devid > 0) { + this.filters["devid"] = this.devid; + } + this.initGridTable(); + } + onSelectedRows(rows: Array): void { + this.rows = rows; + this.Selectedrows = rows.map((m: GuiSelectedRow) => m.source.id); + } + + removefilter(filter: any) { + delete this.filters[filter]; + this.initGridTable(); + } + toggleCollapse(): void { + this.filters_visible = !this.filters_visible; + } + logger(item: any) { + console.dir(item); + } + + initGridTable(): void { + var _self = this; + this.data_provider.get_auth_logs(this.filters).then((res) => { + let index = 1; + this.source = res.map((d: any) => { + d.index = index; + if (!_self.connection_types.includes(d.by)) + _self.connection_types.push(d.by); + + if (!d.sessionid) { + d.stype = "local"; + d.duration = "Local Access"; + } else { + d.stype = "radius"; + if (d.ended != 0) { + d.duration = _self.secondsToString(d.ended - d.started); + } else { + d.duration = "live"; + } + } + d.created = formatInTimeZone( + d.created.split(".")[0] + ".000Z", + _self.tz, + "yyyy-MM-dd HH:mm:ss XXX" + ); + index += 1; + return d; + }); + this.loading = false; + }); + } +} diff --git a/src/app/views/auth_log/auth.module.ts b/src/app/views/auth_log/auth.module.ts new file mode 100644 index 0000000..a9f497c --- /dev/null +++ b/src/app/views/auth_log/auth.module.ts @@ -0,0 +1,41 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { + ButtonModule, + CardModule, + GridModule, + CollapseModule, + BadgeModule, +} from '@coreui/angular'; +import { AuthRoutingModule } from './auth-routing.module'; +import { AuthComponent } from './auth.component'; +import { GuiGridModule } from '@generic-ui/ngx-grid'; + +import { faCoffee } from '@fortawesome/free-solid-svg-icons'; +import { FormsModule } from '@angular/forms'; + +import {MatDatepickerModule} from '@angular/material/datepicker'; +import {MatInputModule} from '@angular/material/input'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {MatSelectModule} from '@angular/material/select'; +@NgModule({ + imports: [ + AuthRoutingModule, + CardModule, + CommonModule, + GridModule, + FormsModule, + ButtonModule, + GuiGridModule, + CollapseModule, + MatFormFieldModule, + MatInputModule, + MatDatepickerModule, + MatSelectModule, + BadgeModule + ], + declarations: [AuthComponent] +}) +export class AuthModule { +} diff --git a/src/app/views/backups/backups-routing.module.ts b/src/app/views/backups/backups-routing.module.ts new file mode 100644 index 0000000..982336c --- /dev/null +++ b/src/app/views/backups/backups-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { BackupsComponent } from './backups.component'; + +const routes: Routes = [ + { + path: '', + component: BackupsComponent, + data: { + title: $localize`Backups` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class BackupsRoutingModule { +} diff --git a/src/app/views/backups/backups.component.html b/src/app/views/backups/backups.component.html new file mode 100644 index 0000000..56fbbc7 --- /dev/null +++ b/src/app/views/backups/backups.component.html @@ -0,0 +1,68 @@ + + + + Backups + + Filtered Result For Device ID {{devid}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + + + + + + + + + + + +
Please Confirm Action
+ +
+ +
+    
+
+ + + +
\ No newline at end of file diff --git a/src/app/views/backups/backups.component.scss b/src/app/views/backups/backups.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/backups/backups.component.ts b/src/app/views/backups/backups.component.ts new file mode 100644 index 0000000..ff8ed52 --- /dev/null +++ b/src/app/views/backups/backups.component.ts @@ -0,0 +1,153 @@ +import { Component, OnInit } from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router, ActivatedRoute } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiSearching, + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { formatInTimeZone } from "date-fns-tz"; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "backups.component.html", +}) +export class BackupsComponent implements OnInit { + public uid: number; + public uname: string; + public tz: string = "UTC"; + public filterText: string; + public filters: any = {}; + public codeForHighlightAuto: string = ""; + + constructor( + private data_provider: dataProvider, + private router: Router, + private login_checker: loginChecker, + private route: ActivatedRoute + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + _self.tz = res.tz; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public rows: any = []; + public Selectedrows: any; + public BakcupModalVisible: boolean = false; + public devid: number = 0; + + public sorting = { + enabled: true, + multiSorting: true, + }; + searching: GuiSearching = { + enabled: true, + placeholder: "Search Devices", + }; + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + + ngOnInit(): void { + this.devid = Number(this.route.snapshot.paramMap.get("devid")); + this.initGridTable(); + } + + logger(item: any) { + console.dir(item); + } + + ShowBackup(id: number) { + this.BakcupModalVisible = true; + this.loading = true; + this.data_provider.get_backup(id).then((res) => { + this.codeForHighlightAuto = res.content; + this.loading = false; + }); + } + + initGridTable(): void { + var _self=this; + this.data_provider.get_backups(this.devid, 0, 0, false).then((res) => { + let index = 1; + this.source = res.map((d: any) => { + d.index = index; + d.createdC = formatInTimeZone( + d.created.split(".")[0] + ".000Z", + _self.tz, + "yyyy-MM-dd HH:mm:ss XXX" + ); + // d.created = [d.created.split("T")[0],d.created.split("T")[1].split(".")[0]].join(" ") + index += 1; + return d; + }); + console.dir(this.source); + this.loading = false; + }); + } +} diff --git a/src/app/views/backups/backups.module.ts b/src/app/views/backups/backups.module.ts new file mode 100644 index 0000000..f63dacd --- /dev/null +++ b/src/app/views/backups/backups.module.ts @@ -0,0 +1,36 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { Highlight, HighlightAuto } from "ngx-highlightjs"; +import { HighlightLineNumbers } from "ngx-highlightjs/line-numbers"; + +import { + ButtonModule, + CardModule, + GridModule, + CollapseModule, + BadgeModule, + ModalModule, +} from "@coreui/angular"; +import { BackupsRoutingModule } from "./backups-routing.module"; +import { BackupsComponent } from "./backups.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; + +@NgModule({ + imports: [ + BackupsRoutingModule, + CardModule, + CommonModule, + GridModule, + ButtonModule, + ButtonModule, + GuiGridModule, + CollapseModule, + BadgeModule, + Highlight, + HighlightAuto, + HighlightLineNumbers, + ModalModule, + ], + declarations: [BackupsComponent], +}) +export class BackupsModule {} diff --git a/src/app/views/dashboard/dashboard-routing.module.ts b/src/app/views/dashboard/dashboard-routing.module.ts new file mode 100644 index 0000000..ee61ebf --- /dev/null +++ b/src/app/views/dashboard/dashboard-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { DashboardComponent } from './dashboard.component'; + +const routes: Routes = [ + { + path: '', + component: DashboardComponent, + data: { + title: $localize`Dashboard` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class DashboardRoutingModule { +} diff --git a/src/app/views/dashboard/dashboard.component.html b/src/app/views/dashboard/dashboard.component.html new file mode 100644 index 0000000..34d9e11 --- /dev/null +++ b/src/app/views/dashboard/dashboard.component.html @@ -0,0 +1,168 @@ + + + + Past 24 Hour Statics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Total users
+
{{stats['Users']}}
+
+
+ +
+
Total Devices
+
{{stats['Devices']}}
+
+
+ +
+
Total Events
+
{{stats['Events']}}
+
+
+ +
+
Total Auth Logs
+
{{stats['Auth']}}
+
+
+ +
+
Total Acc Logs
+
{{stats['Acc']}}
+
+
+
+
+
+
+
+
+
+
+ + + + + +

Total Devices Traffic

+
+ +
+ + + + + + + + + + + + +
+
+
+ + +
+
+ + + +
+ Serial: {{ stats['serial'] }} + Copy +
+ +
+ Registred + License Type : {{stats['license']}} +
+
+
+ + + + + + + + {{slide.title}} +
+
{{slide.title}}
+

+
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/views/dashboard/dashboard.component.ts b/src/app/views/dashboard/dashboard.component.ts new file mode 100644 index 0000000..2637c3b --- /dev/null +++ b/src/app/views/dashboard/dashboard.component.ts @@ -0,0 +1,217 @@ +import { Component, OnInit } from "@angular/core"; +import { UntypedFormControl, UntypedFormGroup } from "@angular/forms"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { loginChecker } from "../../providers/login_checker"; +import { Router } from "@angular/router"; +import { formatInTimeZone } from "date-fns-tz"; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "dashboard.component.html", +}) +export class DashboardComponent implements OnInit { + public uid: number; + public uname: string; + public tz: string; + public copy_msg: any = false; + constructor( + private data_provider: dataProvider, + private router: Router, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + _self.tz = res.tz; + const userId = _self.uid; + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + + public trafficRadioGroup = new UntypedFormGroup({ + trafficRadio: new UntypedFormControl("5m"), + }); + public chart_data: any = {}; + Chartoptions = { + plugins: { + tooltip: { + callbacks: { + label: function (context: any) { + const units = ["bit", "Kib", "Mib", "Gib", "Tib"]; + let label = context.dataset.label || ""; + var res = context.parsed.y; + let unitIndex = 0; + // if (res>8) res /=8; + while (res >= 1024 && unitIndex < units.length - 1) { + res /= 1024; + unitIndex++; + } + switch (context.dataset.unit) { + case "rx": + return "rx/s :" + res.toFixed(3) + " " + units[unitIndex]; + break; + case "tx": + return "tx/s :" + res.toFixed(3) + " " + units[unitIndex]; + break; + case "rxp": + return "rxp/s :" + context.parsed.y; + break; + case "txp": + return "txp/s :" + context.parsed.y; + break; + default: + return context.parsed.y; + break; + } + }, + }, + }, + legend: { + display: true, + }, + }, + maintainAspectRatio: true, + scales: { + x: { display: false }, + yA: { + display: true, + stacked: true, + position: "left", + type: "linear", + color: "#17522f", + grid: { + color: "rgba(23, 82, 47, 0.3)", + backgroundColor: "transparent", + borderColor: "#f86c6b", + pointHoverBackgroundColor: "#f86c6b", + borderWidth: 1, + borderDash: [8, 5], + }, + ticks: { + color: "#17522f", + callback: function (value: any, index: any, ticks: any) { + const units = ["bit", "Kib", "Mib", "Gib", "Tib"]; + var res = value; + let unitIndex = 0; + while (res >= 1024 && unitIndex < units.length - 1) { + res /= 1024; + unitIndex++; + } + return res.toFixed(3) + " " + units[unitIndex]; + }, + }, + scaleLabel: { + display: true, + }, + }, + yB: { + display: true, + stacked: true, + position: "right", + type: "linear", + grid: { + color: "rgba(23, 82, 47, 0.3)", + backgroundColor: "transparent", + borderColor: "#f86c6b", + pointHoverBackgroundColor: "#f86c6b", + borderWidth: 1, + borderDash: [8, 5], + }, + border: { + width: 2, + }, + ticks: { + color: "#171951", + callback: function (value: any, index: any, ticks: any) { + const units = ["bit", "Kib", "Mib", "Gib", "Tib"]; + var res = value; + let unitIndex = 0; + while (res >= 1024 && unitIndex < units.length - 1) { + res /= 1024; + unitIndex++; + } + return res.toFixed(3) + " " + units[unitIndex]; + }, + }, + }, + }, + elements: { + line: { + borderWidth: 1, + tension: 0.4, + }, + point: { + radius: 2, + hitRadius: 10, + hoverRadius: 6, + }, + }, + }; + public options: any; + public delta: string = "5m"; + public stats: any = false; + + ngOnInit(): void { + this.options = this.Chartoptions; + this.initStats(); + this.initTrafficChart(); + } + + initTrafficChart(): void { + var _self = this; + this.data_provider.dashboard_traffic(this.delta).then((res) => { + let labels = res["data"]["labels"].map((d: any) => { + return (d = formatInTimeZone( + d.split(".")[0] + ".000Z", + _self.tz, + "yyyy-MM-dd HH:mm:ss" + )); + }); + _self.chart_data = { datasets: res["data"]["datasets"], labels: labels }; + }); + } + initStats() { + var _self = this; + this.data_provider.dashboard_stats(true).then((res) => { + console.dir(res); + _self.stats = res; + }); + } + + copy_this() { + //show text copy to clipboard for 3 seconds + this.copy_msg = true; + setTimeout(() => { + this.copy_msg = false; + }, 3000); + } + + // Traffic Chart + setTrafficPeriod(value: string): void { + this.trafficRadioGroup.setValue({ trafficRadio: value }); + this.delta = value; + this.initTrafficChart(); + } +} diff --git a/src/app/views/dashboard/dashboard.module.ts b/src/app/views/dashboard/dashboard.module.ts new file mode 100644 index 0000000..c605424 --- /dev/null +++ b/src/app/views/dashboard/dashboard.module.ts @@ -0,0 +1,43 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { ReactiveFormsModule } from "@angular/forms"; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + GridModule, + WidgetModule, + ProgressModule, + TemplateIdDirective, + BadgeModule, + CarouselModule, +} from "@coreui/angular"; + +import { ChartjsModule } from "@coreui/angular-chartjs"; + +import { DashboardRoutingModule } from "./dashboard-routing.module"; +import { DashboardComponent } from "./dashboard.component"; +import { ClipboardModule } from "@angular/cdk/clipboard"; + +@NgModule({ + imports: [ + DashboardRoutingModule, + CardModule, + WidgetModule, + CommonModule, + GridModule, + ProgressModule, + ReactiveFormsModule, + ButtonModule, + TemplateIdDirective, + ButtonModule, + ButtonGroupModule, + ChartjsModule, + CarouselModule, + BadgeModule, + ClipboardModule, + ], + declarations: [DashboardComponent], +}) +export class DashboardModule {} diff --git a/src/app/views/device_detail/device-routing.module.ts b/src/app/views/device_detail/device-routing.module.ts new file mode 100644 index 0000000..bb99f13 --- /dev/null +++ b/src/app/views/device_detail/device-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { DeviceComponent } from './device.component'; + +const routes: Routes = [ + { + path: '', + component: DeviceComponent, + data: { + title: $localize`Device Detail` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class DeviceRoutingModule { +} diff --git a/src/app/views/device_detail/device.component.html b/src/app/views/device_detail/device.component.html new file mode 100644 index 0000000..ad9b2d7 --- /dev/null +++ b/src/app/views/device_detail/device.component.html @@ -0,0 +1,167 @@ +Firmware + Update availble For This Device! +Device is updated but needs to upgrade firmware! + + + + + + + +

{{devdata['name'] }} ( {{devdata['ip'] }} )

+
+ + + + + + + + +
+ +
+ + + + +
+
+
+ + + + + + + + + + {{item.key}} + + {{ item.value }} + + + + + + + + + + + + + + + + + + + + {{value}} - {{item['default-name']}} + + + + + + + {{value}} + + + + + +
{{convert_bw_human(value,'rx')}}
+
+
+ + + + {{convert_bw_human(value,'tx')}} + + + + + + curr:{{value}}
+ max : {{item['max-l2mtu']}} +
+
+ + + + {{convert_bw_human(value,'rx')}} + + + + + + + {{convert_bw_human(value,'tx')}} + + + + + + {{value}} + + + + + + {{value}} + + + + + {{value}} + + + + + + + +
+
+
+
+
+
+ + + + + +
{{interface_rate['name']}}
+ +
+ + + + + + + +
\ No newline at end of file diff --git a/src/app/views/device_detail/device.component.scss b/src/app/views/device_detail/device.component.scss new file mode 100644 index 0000000..3e08d93 --- /dev/null +++ b/src/app/views/device_detail/device.component.scss @@ -0,0 +1,7 @@ +:host { + .legend { + small { + font-size: x-small; + } + } +} diff --git a/src/app/views/device_detail/device.component.spec.ts b/src/app/views/device_detail/device.component.spec.ts new file mode 100644 index 0000000..d74cd88 --- /dev/null +++ b/src/app/views/device_detail/device.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, DropdownModule, GridModule, WidgetModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../icons/icon-subset'; +import { DeviceComponent } from './device.component'; + +describe('DeviceComponent', () => { + let component: DeviceComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DeviceComponent ], + imports: [WidgetModule, DropdownModule, IconModule, ButtonModule, ChartjsModule, GridModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(DeviceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/device_detail/device.component.ts b/src/app/views/device_detail/device.component.ts new file mode 100644 index 0000000..3767178 --- /dev/null +++ b/src/app/views/device_detail/device.component.ts @@ -0,0 +1,437 @@ +import { Component, OnInit } from "@angular/core"; +import { Router, ActivatedRoute } from "@angular/router"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { __setFunctionName } from "tslib"; +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "device.component.html", + styleUrls: ["device.component.scss"], +}) +export class DeviceComponent implements OnInit { + public uid: number; + public uname: string; + public tz: string; + constructor( + private data_provider: dataProvider, + private route: ActivatedRoute, + private router: Router, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + _self.tz = res.tz; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + public devdata: any; + public devsensors: any; + public columns: Array = []; + public loading: boolean = true; + public InterfaceChartModalVisible: boolean = false; + public rows: any = []; + public Selectedrows: any; + public devid: number = 0; + public data_interval: any; + public delta: string = "5m"; + public total_type: string = "bps"; + public interface_rate: any = {}; + public options: any; + public sorting = { + enabled: true, + multiSorting: true, + }; + public interfaces: Array = []; + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + + Chartoptions = { + plugins: { + tooltip: { + callbacks: { + label: function (context: any) { + const units = ["bit", "Kib", "Mib", "Gib", "Tib"]; + let label = context.dataset.label || ""; + var res = context.parsed.y; + let unitIndex = 0; + // if (res>8) res /=8; + while (res >= 1024 && unitIndex < units.length - 1) { + res /= 1024; + unitIndex++; + } + switch (context.dataset.unit) { + case "rx": + return "rx/s :" + res.toFixed(3) + " " + units[unitIndex]; + break; + case "tx": + return "tx/s :" + res.toFixed(3) + " " + units[unitIndex]; + break; + case "rxp": + return "rxp/s :" + context.parsed.y; + break; + case "txp": + return "txp/s :" + context.parsed.y; + break; + default: + return context.parsed.y; + break; + } + }, + }, + }, + legend: { + display: true, + }, + }, + maintainAspectRatio: true, + scales: { + x: { display: false }, + yA: { + display: true, + stacked: true, + position: "left", + type: "linear", + color: "#17522f", + grid: { + color: "rgba(23, 82, 47, 0.3)", + borderDash: [5, 5], + }, + ticks: { + color: "#17522f", + callback: function (value: any, index: any, ticks: any) { + const units = ["bit", "Kib", "Mib", "Gib", "Tib"]; + var res = value; + let unitIndex = 0; + while (res >= 1024 && unitIndex < units.length - 1) { + res /= 1024; + unitIndex++; + } + return res.toFixed(3) + " " + units[unitIndex]; + }, + }, + scaleLabel: { + display: true, + }, + }, + yB: { + display: true, + stacked: true, + position: "right", + type: "linear", + grid: { + color: "rgba(23, 25, 81, 0.3)", + borderDash: [8, 8], + }, + border: { + width: 2, + }, + ticks: { + color: "#171951", + callback: function (value: any, index: any, ticks: any) { + const units = ["bit", "Kib", "Mib", "Gib", "Tib"]; + var res = value; + let unitIndex = 0; + while (res >= 1024 && unitIndex < units.length - 1) { + res /= 1024; + unitIndex++; + } + return res.toFixed(3) + " " + units[unitIndex]; + }, + }, + }, + }, + elements: { + line: { + borderWidth: 1, + tension: 0.4, + }, + point: { + radius: 4, + hitRadius: 10, + hoverRadius: 6, + }, + }, + }; + + ngOnInit(): void { + this.devid = Number(this.route.snapshot.paramMap.get("id")); + this.options = this.Chartoptions; + this.initDeviceInfo(); + } + + optionsDefault = { + plugins: { + legend: { + display: false, + }, + }, + maintainAspectRatio: true, + scales: { + x: { + grid: { + display: false, + drawBorder: false, + }, + ticks: { + display: false, + }, + }, + y: { + display: false, + grid: { + display: false, + }, + ticks: { + display: false, + }, + }, + }, + elements: { + line: { + borderWidth: 1, + tension: 0.4, + }, + point: { + radius: 4, + hitRadius: 10, + hoverRadius: 6, + }, + }, + }; + setOptions() { + for (let idx = 0; idx < 5; idx++) { + const options = JSON.parse(JSON.stringify(this.optionsDefault)); + switch (idx) { + case 0: { + this.options.push(options); + break; + } + case 1: { + options.scales.y.min = -9; + options.scales.y.max = 39; + this.options.push(options); + break; + } + case 2: { + options.scales.x = { display: false }; + options.scales.y = { display: false }; + options.elements.line.borderWidth = 2; + options.elements.point.radius = 2; + this.options.push(options); + break; + } + case 3: { + options.scales.x.grid = { display: false, drawTicks: false }; + options.scales.x.grid = { + display: false, + drawTicks: false, + drawBorder: false, + }; + options.scales.y.min = undefined; + options.scales.y.max = undefined; + options.elements = {}; + this.options.push(options); + break; + } + case 4: { + options.plugins = { + tooltip: { + callbacks: { + label: function (context: any) { + const units = ["bit", "Kib", "Mib", "Gib", "Tib"]; + let label = context.dataset.label || ""; + var res = context.parsed.y; + let unitIndex = 0; + // if (res>8) res /=8; + while (res >= 1024 && unitIndex < units.length - 1) { + res /= 1024; + unitIndex++; + } + switch (context.dataset.unit) { + case "rx": + return "rx/s :" + res.toFixed(3) + " " + units[unitIndex]; + break; + case "tx": + return "tx/s :" + res.toFixed(3) + " " + units[unitIndex]; + break; + case "rxp": + return "rxp/s :" + context.parsed.y; + break; + case "txp": + return "txp/s :" + context.parsed.y; + break; + default: + return context.parsed.y; + break; + } + }, + }, + }, + legend: { + display: false, + }, + }; + options.scales = { + x: { display: false }, + yA: { + display: false, + stacked: true, + position: "left", + type: "linear", + scaleLabel: { + display: true, + }, + }, + yB: { + display: false, + stacked: true, + position: "right", + type: "linear", + }, + }; + options.elements.line.borderWidth = 2; + options.elements.point.radius = 2; + this.options.push(options); + break; + } + } + } + } + + logger(item: any) { + console.dir(item); + } + updateData(): void { + var _self = this; + this.data_provider.get_dev_info(this.devid).then((res) => { + _self.devdata = res; + _self.interfaces = res.interfaces; + _self.data_provider + .get_dev_sensors(_self.devid, _self.delta, _self.total_type) + .then((res) => { + _self.devsensors = res; + _self.loading = false; + }); + }); + } + checkitem(item: any) { + if (item.value && !item.key.match("sensors|id|_availble|interfaces")) { + return true; + } else { + return false; + } + } + convert_bw_human(mynumber: number = 0, unit: string) { + const units = ["bit", "Kib", "Mib", "Gib", "Tib"]; + let unitIndex = 0; + while (mynumber >= 1024 && unitIndex < units.length - 1) { + mynumber /= 1024; + unitIndex++; + } + switch (unit) { + case "rx": + return mynumber.toFixed(3) + " " + units[unitIndex]; + break; + case "tx": + return mynumber.toFixed(3) + " " + units[unitIndex]; + break; + default: + return mynumber; + break; + } + } + + show_interface_rate(name: string) { + var _self = this; + _self.InterfaceChartModalVisible = false; + this.data_provider + .get_dev_ifstat(_self.devid, _self.delta, name, _self.total_type) + .then((res) => { + _self.interface_rate = res["data"]; + _self.InterfaceChartModalVisible = true; + }); + } + + initDeviceInfo(): void { + var _self = this; + clearInterval(this.data_interval); + this.updateData(); + this.data_interval = setInterval(() => { + this.data_provider.get_dev_info(this.devid).then((res) => { + _self.devdata = res; + + _self.interfaces = res.interfaces; + _self.data_provider + .get_dev_sensors(_self.devid, _self.delta, _self.total_type) + .then((res) => { + _self.devsensors = res; + _self.loading = false; + }); + }); + }, 1000000); + } +} diff --git a/src/app/views/device_detail/device.module.ts b/src/app/views/device_detail/device.module.ts new file mode 100644 index 0000000..2f372f5 --- /dev/null +++ b/src/app/views/device_detail/device.module.ts @@ -0,0 +1,42 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + ProgressModule, + NavbarModule, + AlertModule, + ModalModule, +} from "@coreui/angular"; +import { ChartjsModule } from "@coreui/angular-chartjs"; + +import { DeviceRoutingModule } from "./device-routing.module"; +import { DeviceComponent } from "./device.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; + +import { WidgetsModule } from "../widgets/widgets.module"; + +@NgModule({ + imports: [ + DeviceRoutingModule, + CardModule, + AlertModule, + CommonModule, + GridModule, + ProgressModule, + FormModule, + ButtonModule, + ButtonGroupModule, + ChartjsModule, + WidgetsModule, + GuiGridModule, + NavbarModule, + ModalModule, + ], + declarations: [DeviceComponent], +}) +export class DeviceModule {} diff --git a/src/app/views/device_logs/devlogs-routing.module.ts b/src/app/views/device_logs/devlogs-routing.module.ts new file mode 100644 index 0000000..1ee92d4 --- /dev/null +++ b/src/app/views/device_logs/devlogs-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { DevLogsComponent } from './devlogs.component'; + +const routes: Routes = [ + { + path: '', + component: DevLogsComponent, + data: { + title: $localize`Device Logs` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class DevLogsRoutingModule { +} diff --git a/src/app/views/device_logs/devlogs.component.html b/src/app/views/device_logs/devlogs.component.html new file mode 100644 index 0000000..287ed9e --- /dev/null +++ b/src/app/views/device_logs/devlogs.component.html @@ -0,0 +1,139 @@ + + + + + + + Device LOGS + + + + + + + + +
+ + + Start date + + + + + + End date + + + + + + Select event type + + + + + + {{bank}} + + + + + Select event type + + All + + {{level}} + + + + + Status + + All + Fixed + Not Fixed + + + + + Comment + + + + +
+ +
+ + + + {{ value }} + + + + + + {{ value + }} + {{ value + }} + {{ value + }} + {{ value }} + + + + + {{ value }} + + + + + +
+ {{ value }} +
+
+
+ + + {{ value }} + + + + + Fixed + Not + Fixed + + + + + {{ value }} + + + + +
+ {{ value }} + {{ item.devip }} +
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/app/views/device_logs/devlogs.component.scss b/src/app/views/device_logs/devlogs.component.scss new file mode 100644 index 0000000..83dd81d --- /dev/null +++ b/src/app/views/device_logs/devlogs.component.scss @@ -0,0 +1,125 @@ +@use '@angular/material' as mat; + +:host { + .legend { + small { + font-size: x-small; + } + } +} +// .gui-drawer-content{ +// background-color: #efefef!important; + +// } +.log-detail{ +padding:30px 10px; +box-sizing:border-box; +} +.log-detail h1{ +font-size:2em; +font-weight:bold; +margin:0; +padding:0; +} +.log-detail small{ +position:relative; +top:-7px; +padding:0; +font-weight:bold; +font-size:1.1em; +} +.log-detail table { +width: 100%; +border-collapse: collapse!important; +margin: 5px 0 0 0; +padding: 0; +background-color: #ffffff29 !important; +color: #000; +} +.log-detail th { +text-align: left; +} +.log-detail th, +.log-detail td { +border: 1px solid #ffffff4a!important; +padding: 0.5rem!important; +} +.gui-close-icon-wrapper .gui-close-icon:after,.gui-close-icon-wrapper .gui-close-icon:before { + background-color: #ffffff !important; + +} +.log-detail code{ + padding:5px!important; + display:block; + background:#1d1f21; + color:#c5c8c6; + border-bottom-left-radius:3px; + border-bottom-right-radius:3px; + width:100%; +} + +.log-detail .code-title{ + background-color:#393e42!important;; + width:100%; + padding:2px 15px; + display:inline-block; + margin-top:10px; + color:#d2d2d2; + border-top-left-radius:3px; + border-top-right-radius:3px; + font-weight:bold; +} + +.gui-row-detail{ + height:100%; +} + +.gui-dev-info { + display: inline-flex; + flex-direction: column; + align-items: stretch; + align-content: center; + justify-content: center; + white-space: normal; + line-height: 17px; +} + +.gui-dev-info-name { + font-weight: bold; +} + +.gui-dev-info-ip { + color: #525252; + font-style: italic; + font-size: 13px; + overflow: hidden; +} +.gui-row-detail > div{ + height:100%; +} +.gui-row-detail .log-detail{ + height:100%; +} + +.gui-structure{ + min-height: 550px; +} + + +.example-form { + @include mat.button-density(-5); + + @include mat.form-field-density(-5); + @include mat.button-toggle-density(-5); + @include mat.datepicker-density(-5); + @include mat.all-component-densities(-5); + @include mat.icon-button-density(-5); + @include mat.icon-density(-5); + .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label { display: inline; } + mat-form-field *{ + font-size:13px!important; + } + .mat-mdc-form-field-infix{ + width:150px; + } +} \ No newline at end of file diff --git a/src/app/views/device_logs/devlogs.component.ts b/src/app/views/device_logs/devlogs.component.ts new file mode 100644 index 0000000..904dc0d --- /dev/null +++ b/src/app/views/device_logs/devlogs.component.ts @@ -0,0 +1,234 @@ +import { Component, OnInit, ViewEncapsulation } from "@angular/core"; +import { FormControl } from "@angular/forms"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router, ActivatedRoute } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiRowDetail, + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { formatInTimeZone } from "date-fns-tz"; +import { takeUntil } from "rxjs/operators"; +import { Subject } from "rxjs"; + + +@Component({ + templateUrl: "devlogs.component.html", + styleUrls: ["devlogs.component.scss"], + encapsulation: ViewEncapsulation.None, +}) +export class DevLogsComponent implements OnInit { + public uid: number; + public uname: string; + public tz: string = "UTC" + public filterText: string; + public filters: any = { + start_time: false, + end_time: false, + detail: [], + level: false, + comment: "", + status: "all", + }; + public event_types: any = []; + public event_types_filtered: any = []; + public filters_visible: boolean = false; + constructor( + private data_provider: dataProvider, + private router: Router, + private route: ActivatedRoute, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + _self.tz = res.tz; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public rows: any = []; + public Selectedrows: any; + public devid: number = 0; + public sorting = { + enabled: true, + multiSorting: true, + }; + public bankMultiFilterCtrl: FormControl = new FormControl(""); + protected _onDestroy = new Subject(); + + public campaignOnestart: any; + public campaignOneend: any; + rowDetail: GuiRowDetail = { + enabled: true, + template: (item) => { + return ` +
+

Device :

+ + + + + + + + + + + + + +
Device Name${item.name}
Device IP${item.devip}
Device MAC${item.mac}
+

Alert Detail : + +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Event${item.detail}
Event Status${ + item.status ? "Fixed" : "Not Fixed" + }
Event Category${item.eventtype}
Exec time${item.eventtime}
Detail${item.comment}
Source${item.src}
+
`; + }, + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + ngOnInit(): void { + var _self = this; + this.devid = Number(this.route.snapshot.paramMap.get("devid")); + if (this.devid > 0) { + this.filters["devid"] = this.devid; + } + this.initGridTable(); + + this.bankMultiFilterCtrl.valueChanges + .pipe(takeUntil(this._onDestroy)) + .subscribe(() => { + let search = this.bankMultiFilterCtrl.value; + if (!search) { + this.event_types_filtered = this.event_types; + } + _self.event_types_filtered = _self.event_types_filtered.filter( + (item: any) => item.toLowerCase().indexOf(search.toLowerCase()) > -1 + ); + console.dir(_self.event_types_filtered); + }); + } + toggleCollapse(): void { + this.filters_visible = !this.filters_visible; + } + logger(item: any) { + console.dir(item); + } + reinitgrid(field: string, $event: any) { + if (field == "start") this.filters["start_time"] = $event.target.value; + else if (field == "end") this.filters["end_time"] = $event.target.value; + else if (field == "detail") this.filters["detail"] = $event; + else if (field == "level") this.filters["level"] = $event; + else if (field == "comment") this.filters["comment"] = $event; + else if (field == "status") this.filters["status"] = $event; + this.initGridTable(); + } + initGridTable(): void { + var _self = this; + this.data_provider.get_dev_logs(this.filters).then((res) => { + let index = 1; + this.source = res.map((d: any) => { + d.index = index; + if (d.detail.indexOf("Link Down") >= 0) d.detail = "Link Down"; + else if (d.detail.indexOf("Link Up") >= 0) d.detail = "Link Up"; + if (!_self.event_types.includes(d.detail)) + _self.event_types.push(d.detail); + d.eventtime = formatInTimeZone( + d.eventtime.split(".")[0] + ".000Z", + _self.tz, + "yyyy-MM-dd HH:mm:ss XXX" + ); + index += 1; + return d; + }); + _self.event_types_filtered = _self.event_types; + console.dir(this.source); + this.loading = false; + }); + } +} diff --git a/src/app/views/device_logs/devlogs.module.ts b/src/app/views/device_logs/devlogs.module.ts new file mode 100644 index 0000000..d6a9a65 --- /dev/null +++ b/src/app/views/device_logs/devlogs.module.ts @@ -0,0 +1,47 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { ReactiveFormsModule } from "@angular/forms"; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + CollapseModule, + BadgeModule, +} from "@coreui/angular"; +import { NgxMatSelectSearchModule } from "ngx-mat-select-search"; +import { DevLogsRoutingModule } from "./devlogs-routing.module"; +import { DevLogsComponent } from "./devlogs.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; +import { MatDatepickerModule } from "@angular/material/datepicker"; +import { MatInputModule } from "@angular/material/input"; +import { MatFormFieldModule } from "@angular/material/form-field"; +import { FormsModule } from "@angular/forms"; + +import { MatSelectModule } from "@angular/material/select"; + +@NgModule({ + imports: [ + DevLogsRoutingModule, + CardModule, + CommonModule, + GridModule, + ReactiveFormsModule, + FormsModule, + FormModule, + ButtonModule, + ButtonGroupModule, + GuiGridModule, + CollapseModule, + BadgeModule, + MatInputModule, + MatFormFieldModule, + MatSelectModule, + NgxMatSelectSearchModule, + MatDatepickerModule, + ], + declarations: [DevLogsComponent], +}) +export class DevLogsModule {} diff --git a/src/app/views/devices/devices-routing.module.ts b/src/app/views/devices/devices-routing.module.ts new file mode 100644 index 0000000..0f522e0 --- /dev/null +++ b/src/app/views/devices/devices-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { DevicesComponent } from './devices.component'; + +const routes: Routes = [ + { + path: '', + component: DevicesComponent, + data: { + title: $localize`Device List` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class DevicesRoutingModule { +} diff --git a/src/app/views/devices/devices.component.html b/src/app/views/devices/devices.component.html new file mode 100644 index 0000000..9d922db --- /dev/null +++ b/src/app/views/devices/devices.component.html @@ -0,0 +1,346 @@ + + + + + + + Devices + + +
+ + + | + +
+
+
+
+ + + + + Group + + + + + + + + + + + + {{value}} + + + + + {{value}} + + + + +
{{value}}
+ + +
+
+ + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + + + +
+
  • Actions Menu
  • + + + + + + + + +
    +
    +
    +
    +
    + + + + Batch Action : + + +
    + + + + Select +
      +
    • +
    • + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + +
    Scanner Wizard
    + +
    + +
    +
    Please select searching method
    + + +
    +
    +
    Please Provide needed information
    + + Start IP + + End IP + + + + Username + + + + Password + + + + Port + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {{scanwizard_prompt}}
    +
    +
    + + Empty username and password means system default + configuration + +
    + + + + +
    Please Confirm Action
    + +
    + + Are you sure that You want to Check firmware of selected devices for + update? + Are you sure that You want to update firmware of selected + devices? + + Are you sure that You want toDelete Device {{selected_device.name}} ?
    +
    +

    + All Related Configuration will be deleted/Modified :

    + * User Permision Related to this Device
    + * Device Groups including this Device
    + * All Logs related to this device
    +

    +
    +
    + + + + + + + +
    + + + +
    Editing Device
    + +
    + + + Username + + + + Password + + + + + ip + + + + peer ip + + + + + + + + +
    + + \ No newline at end of file diff --git a/src/app/views/devices/devices.component.ts b/src/app/views/devices/devices.component.ts new file mode 100644 index 0000000..4cd9a2c --- /dev/null +++ b/src/app/views/devices/devices.component.ts @@ -0,0 +1,460 @@ +import { + Component, + OnInit, + OnDestroy, + QueryList, + ViewChild, + ViewChildren, +} from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router, ActivatedRoute } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiGridComponent, + GuiGridApi, + GuiRowClass, + GuiSearching, + GuiSelectedRow, + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { ToasterComponent } from "@coreui/angular"; +import { AppToastComponent } from "../toast-simple/toast.component"; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "devices.component.html", +}) +export class DevicesComponent implements OnInit, OnDestroy { + public uid: number; + public uname: string; + + constructor( + private data_provider: dataProvider, + private route: ActivatedRoute, + private router: Router, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + @ViewChild("grid", { static: true }) gridComponent: GuiGridComponent; + @ViewChildren(ToasterComponent) viewChildren!: QueryList; + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public rows: any = []; + public Selectedrows: any; + public upgrades: any = []; + public updates: any = []; + public scanwizard_step: number = 1; + public scanwizard_modal: boolean = false; + public ConfirmModalVisible: boolean = false; + public EditDevModalVisible: boolean = false; + public ConfirmAction: string = "checkfirm"; + public scan_type: string = "ip"; + public scan_timer: any; + public list_update_timer: any; + public scanwizard_prompt: string = "Scanning Network!"; + public groups: any = []; + public selected_group: number = 0; + public selected_devices: any = {}; + public selected_device: any = {}; + public show_pass: boolean = false; + toasterForm = { + autohide: true, + delay: 3000, + position: "fixed", + fade: true, + closeButton: true, + }; + rowClass: GuiRowClass = { + class: "row-highlighted", + }; + public sorting = { + enabled: true, + multiSorting: true, + }; + public ip_scanner: any; + + searching: GuiSearching = { + enabled: true, + placeholder: "Search Devices", + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + + ngOnInit(): void { + this.selected_group = Number(this.route.snapshot.paramMap.get("id")); + this.initGridTable(); + this.get_groups(); + } + + show_detail(item: any) { + this.router.navigate(["/device-stats", { id: item.id }]); + } + + single_device_action(dev: any, action: string) { + const api: GuiGridApi = this.gridComponent.api; + api.unselectAll(); + this.Selectedrows = [dev["id"]]; + switch (action) { + case "edit": + this.edit_device_form(dev); + break; + case "firmware": + this.check_firmware(); + break; + case "update": + this.update_firmware(); + break; + case "upgrade": + this.upgrade_firmware(); + break; + case "logauth": + this.router.navigate(["/authlog", { devid: dev.id }]); + break; + case "logacc": + this.router.navigate(["/accountlog", { devid: dev.id }]); + break; + case "backup": + this.router.navigate(["/backups", { devid: dev.id }]); + break; + case "reboot": + this.reboot_devices(); + break; + case "delete": + this.ConfirmAction = "delete"; + this.ConfirmModalVisible = true; + break; + } + } + edit_device_form(dev: any) { + var _self = this; + this.selected_device = dev; + this.data_provider.get_editform(dev.id).then((res) => { + if ("error" in res) { + if (res.error.indexOf("Unauthorized")) { + _self.show_toast( + "Error", + "You are not authorized to perform this action", + "danger" + ); + } + } else { + this.selected_device["editform"] = res; + this.EditDevModalVisible = true; + } + }); + } + save_device() { + var _self = this; + this.data_provider + .save_editform(this.selected_device["editform"]) + .then((res) => { + _self.show_toast("Success", "Device Saved", "success"); + this.initGridTable(); + this.EditDevModalVisible = false; + }); + } + groupselected(item: any) { + this.selected_group = item.target.value; + if (this.selected_group != 0) { + this.router.navigate([".", { id: this.selected_group }]); + } + this.initGridTable(); + } + + delete_device() { + var _self = this; + this.ConfirmModalVisible = false; + this.data_provider.delete_devices(this.Selectedrows).then((res) => { + _self.show_toast("Success", "Device Deleted", "success"); + this.initGridTable(); + }); + } + + onSelectedRows(rows: Array): void { + this.rows = rows; + this.Selectedrows = rows.map((m: GuiSelectedRow) => m.source.id); + } + + checkvalid(type: string): boolean { + var rx = + /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; + if (type == "start") return rx.test(this.ip_scanner.start); + else if (type == "end") return rx.test(this.ip_scanner.end); + else if (type == "port") { + if (this.ip_scanner.port == "") return true; + return Boolean(Number(this.ip_scanner.port)); + } else return false; + } + + scanwizard(step: number, type: string) { + var _self = this; + this.data_provider.scan_devs(this.scan_type, {}).then((res) => { + if (res.status == true) { + _self.scanwizard_step = 3; + this.wait_scan(); + return; + } + if (step == 1) { + _self.scan_type = ""; + _self.ip_scanner = { + start: "", + end: "", + port: "", + user: "", + password: "", + }; + } + if (step == 2) { + _self.scan_type = ""; + if (type == "ip") { + _self.scan_type = "ip"; + } else if (type == "chip") { + _self.scan_type = "mac"; + } + } + if (step == 3) { + if (_self.scan_type == "ip") { + if (_self.ip_scanner.start == "" || _self.ip_scanner.end == "") { + return; + } + //test if start and end are valid ip addresses and port is valid + if ( + !_self.checkvalid("start") || + !_self.checkvalid("end") || + !_self.checkvalid("port") + ) { + return; + } + if (_self.ip_scanner.port == "") { + _self.ip_scanner.port = false; + } + if (_self.ip_scanner.user == "") { + _self.ip_scanner.user = false; + } + if (_self.ip_scanner.password == "") { + _self.ip_scanner.password = false; + } + + _self.data_provider + .scan_devs(_self.scan_type, _self.ip_scanner) + .then((res) => { + _self.scanwizard_prompt = "Scanning Network!"; + _self.wait_scan(); + }); + } else if (type == "chip") { + _self.data_provider + .scan_devs(_self.scan_type, _self.ip_scanner) + .then((res) => { + // console.dir(res); + }); + } + } + _self.scanwizard_step = step; + }); + } + + wait_scan() { + clearTimeout(this.scan_timer); + var _self = this; + this.scan_timer = setTimeout(function () { + _self.data_provider.scan_devs(_self.scan_type, {}).then((res) => { + if (res.status == false) { + _self.initGridTable(); + _self.scanwizard_prompt = "Scanning done! Reloading data"; + setTimeout(function () { + _self.scanwizard_modal = false; + }, 3000); + } else { + _self.wait_scan(); + } + }); + }, 3000); + } + + logger(item: any) { + console.dir(item); + } + + handleScanwizard_modal(event: any) { + this.scanwizard_modal = event; + } + show_toast(title: string, body: string, color: string) { + const { ...props } = { ...this.toasterForm, color, title, body }; + const componentRef = this.viewChildren.first.addToast( + AppToastComponent, + props, + {} + ); + componentRef.instance["closeButton"] = props.closeButton; + } + check_firmware() { + var _self = this; + this.data_provider + .check_firmware(this.Selectedrows.toString()) + .then((res) => { + _self.show_toast("info", "Checking Firmwares", "light"); + _self.ConfirmModalVisible = false; + setTimeout(function () { + if (_self.Selectedrows.length < 1) _self.initGridTable(); + }, 1); + }); + } + + update_firmware() { + var _self = this; + this.data_provider + .update_firmware(this.Selectedrows.toString()) + .then((res) => { + _self.show_toast("info", "Updating Firmwares Sent", "light"); + _self.initGridTable(); + }); + } + + upgrade_firmware() { + var _self = this; + this.data_provider + .upgrade_firmware(this.Selectedrows.toString()) + .then((res) => { + _self.show_toast("info", "Upgrading Firmwares", "light"); + _self.initGridTable(); + }); + } + + reboot_devices() { + var _self = this; + this.data_provider + .reboot_devices(this.Selectedrows.toString()) + .then((res) => { + _self.show_toast("info", "Reboot sent", "light"); + _self.ConfirmModalVisible = !_self.ConfirmModalVisible; + _self.initGridTable(); + }); + } + + get_groups() { + var _self = this; + this.data_provider.get_devgroup_list().then((res) => { + _self.groups = res; + }); + } + + initGridTable(): void { + var _self = this; + _self.upgrades = []; + _self.updates = []; + clearTimeout(this.list_update_timer); + var data = { + group_id: this.selected_group, + search: false, + page: this.paging.page, + size: this.paging.pageSize, + }; + + _self.data_provider.get_dev_list(data).then((res) => { + _self.source = res.map((x: any) => { + if (x.upgrade_availble) _self.upgrades.push(x); + if (x.update_availble) _self.updates.push(x); + return x; + }); + _self.device_interval(); + _self.loading = false; + }); + } + + device_interval() { + var _self = this; + var data = { + group_id: this.selected_group, + search: false, + page: this.paging.page, + size: this.paging.pageSize, + }; + clearTimeout(this.list_update_timer); + _self.list_update_timer = setTimeout(function () { + // _self.data_provider.get_dev_list(data).then(res => { + // _self.source =res.map( (x:any) => { + // if(x.upgrade_availble) + // _self.upgrades.push(x); + // if(x.update_availble) + // _self.updates.push(x); + // return x; + // }); + // // _self.device_interval() + // _self.loading = false; + // }); + //we don't want to reload table if user is selected devices from list + if (_self.Selectedrows.length < 1) _self.initGridTable(); + }, 10000); + } + + ngOnDestroy(): void { + clearTimeout(this.scan_timer); + } +} diff --git a/src/app/views/devices/devices.module.ts b/src/app/views/devices/devices.module.ts new file mode 100644 index 0000000..f16b801 --- /dev/null +++ b/src/app/views/devices/devices.module.ts @@ -0,0 +1,50 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { FormsModule } from "@angular/forms"; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + NavModule, + NavbarModule, + CollapseModule, + DropdownModule, + BadgeModule, + ToastModule, + ModalModule, + ListGroupModule, + TooltipModule, +} from "@coreui/angular"; +import { MatMenuModule } from "@angular/material/menu"; +import { DevicesRoutingModule } from "./devices-routing.module"; +import { DevicesComponent } from "./devices.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; + +@NgModule({ + imports: [ + DevicesRoutingModule, + CardModule, + NavModule, + CommonModule, + GridModule, + FormModule, + ButtonModule, + ButtonGroupModule, + GuiGridModule, + NavbarModule, + CollapseModule, + DropdownModule, + BadgeModule, + ModalModule, + ToastModule, + FormsModule, + ListGroupModule, + MatMenuModule, + TooltipModule, + ], + declarations: [DevicesComponent], +}) +export class DevicesModule {} diff --git a/src/app/views/devices_group/devgroup-routing.module.ts b/src/app/views/devices_group/devgroup-routing.module.ts new file mode 100644 index 0000000..bb0f4ec --- /dev/null +++ b/src/app/views/devices_group/devgroup-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { DevicesGroupComponent } from './devgroup.component'; + +const routes: Routes = [ + { + path: '', + component: DevicesGroupComponent, + data: { + title: $localize`Device Group` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class DevicesGroupRoutingModule { +} \ No newline at end of file diff --git a/src/app/views/devices_group/devgroup.component.html b/src/app/views/devices_group/devgroup.component.html new file mode 100644 index 0000000..fb48f5f --- /dev/null +++ b/src/app/views/devices_group/devgroup.component.html @@ -0,0 +1,178 @@ + + + + + + + Device Groups + + + + + + + + + + + {{value}} + + + + + + + + All Devices + + + 0 Members + {{value.length}} Members + + + + + + + {{value}} + + + + + + + + + + + + + + + + + + + + + +
    Group Edit
    + +
    + + +
    + + +
    +
    + +
    Group Members :
    + + + +   {{value}} + + + + {{value}} + + + + + + + + +
    + +
    +
    + +
    + + + + +
    + + + +
    Members not in Group
    + +
    + + +
    Members Availble to add:
    + + + +   {{value}} + + + + {{value}} + + + + + {{value}} + + + +
    +
    +
    +
    + + + + + +
    + + + + + + +
    Are You Sure?
    + +
    + + + + Are you sure that you want to delete {{currentGroup['name']}}? + +
    +

    + All Related Configuration will be deleted/Modified :
    + * User Permision Related to this group
    + * Tasks including this Group
    +

    +
    +
    + + + + +
    \ No newline at end of file diff --git a/src/app/views/devices_group/devgroup.component.ts b/src/app/views/devices_group/devgroup.component.ts new file mode 100644 index 0000000..5ee1248 --- /dev/null +++ b/src/app/views/devices_group/devgroup.component.ts @@ -0,0 +1,240 @@ +import { Component, OnInit } from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiSearching, + GuiSelectedRow, + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "devgroup.component.html", +}) +export class DevicesGroupComponent implements OnInit { + public uid: number; + public uname: string; + + constructor( + private data_provider: dataProvider, + private router: Router, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public MemberRows: any = []; + public NewMemberRows: any = []; + + public SelectedMemberRows: any; + public SelectedNewMemberRows: any; + public ConfirmModalVisible: boolean = false; + public ConfirmAction: string = "delete"; + public EditGroupModalVisible: boolean = false; + public NewMemberModalVisible: boolean = false; + public groupMembers: any = []; + public availbleMembers: any = []; + public currentGroup: any = { + array_agg: [], + created: "", + id: 0, + name: "", + }; + public DefaultCurrentGroup: any = { + array_agg: [], + created: "", + id: 0, + name: "", + }; + public sorting = { + enabled: true, + multiSorting: true, + }; + + searching: GuiSearching = { + enabled: true, + placeholder: "Search Devices", + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + + ngOnInit(): void { + this.initGridTable(); + } + + public show_members(id: number) { + this.router.navigate(["devices", { id: id }]); + } + + public show_delete_group(item: any) { + this.currentGroup = item; + this.ConfirmModalVisible = true; + this.ConfirmAction = "delete"; + } + public delete_group() { + var _self = this; + this.data_provider.delete_group(this.currentGroup.id).then((res) => { + _self.initGridTable(); + _self.ConfirmModalVisible = false; + }); + } + + onSelectedRowsMembers(rows: Array): void { + this.MemberRows = rows; + this.SelectedMemberRows = rows.map((m: GuiSelectedRow) => m.source.id); + } + onSelectedRowsNewMembers(rows: Array): void { + this.NewMemberRows = rows; + this.SelectedNewMemberRows = rows.map((m: GuiSelectedRow) => m.source.id); + } + add_new_members() { + var _self = this; + this.currentGroup["array_agg"] = [ + ...new Set( + this.currentGroup["array_agg"].concat(this.SelectedNewMemberRows) + ), + ]; + this.groupMembers = [ + ...new Set( + this.groupMembers.concat( + this.NewMemberRows.map((m: GuiSelectedRow) => m.source) + ) + ), + ]; + this.NewMemberModalVisible = false; + } + remove_from_group(id: number) { + var _self = this; + this.currentGroup["array_agg"] = this.currentGroup["array_agg"].filter( + (x: any) => x != id + ); + this.groupMembers = this.groupMembers.filter((x: any) => x.id != id); + } + + save_group() { + var _self = this; + this.data_provider.update_save_group(this.currentGroup).then((res) => { + _self.initGridTable(); + _self.EditGroupModalVisible = false; + }); + } + + editAddGroup(item: any, action: string) { + var _self = this; + if (action == "showadd") { + this.currentGroup = { ...this.DefaultCurrentGroup }; + this.groupMembers = []; + this.EditGroupModalVisible = true; + return; + } + this.currentGroup = item; + this.groupMembers = []; + this.data_provider.get_devgroup_members(item.id).then((res) => { + _self.groupMembers = res; + _self.currentGroup = { ...item }; + // simple hack to remove null from devices list + _self.currentGroup["array_agg"] = item["array_agg"].filter( + (x: any) => x != null + ); + _self.EditGroupModalVisible = true; + }); + } + + show_new_member_form() { + this.NewMemberModalVisible = true; + var _self = this; + _self.availbleMembers = []; + this.SelectedNewMemberRows = []; + this.NewMemberRows = []; + var data = { + group_id: false, + search: false, + page: false, + size: 10000, + }; + _self.data_provider.get_dev_list(data).then((res) => { + _self.availbleMembers = res.filter( + (x: any) => !_self.currentGroup["array_agg"].includes(x.id) + ); + _self.NewMemberModalVisible = true; + }); + } + + logger(item: any) { + console.dir(item); + } + initGridTable(): void { + this.data_provider.get_devgroup_list().then((res) => { + this.source = res; + this.loading = false; + }); + } +} diff --git a/src/app/views/devices_group/devgroup.module.ts b/src/app/views/devices_group/devgroup.module.ts new file mode 100644 index 0000000..0fe8c12 --- /dev/null +++ b/src/app/views/devices_group/devgroup.module.ts @@ -0,0 +1,35 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + CollapseModule, + ModalModule, +} from "@coreui/angular"; +import { DevicesGroupRoutingModule } from "./devgroup-routing.module"; +import { DevicesGroupComponent } from "./devgroup.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; +import { BadgeModule } from "@coreui/angular"; +import { FormsModule } from "@angular/forms"; +@NgModule({ + imports: [ + DevicesGroupRoutingModule, + CardModule, + CommonModule, + GridModule, + FormsModule, + FormModule, + ButtonModule, + ButtonGroupModule, + GuiGridModule, + CollapseModule, + ModalModule, + BadgeModule, + ], + declarations: [DevicesGroupComponent], +}) +export class DevicesGroupModule {} diff --git a/src/app/views/icons/coreui-icons.component.html b/src/app/views/icons/coreui-icons.component.html new file mode 100644 index 0000000..5f3ee3a --- /dev/null +++ b/src/app/views/icons/coreui-icons.component.html @@ -0,0 +1,16 @@ +
    + + + {{ title }} + + + + + + +
    {{ toKebabCase(icon[0]) }}
    +
    +
    +
    +
    +
    diff --git a/src/app/views/icons/coreui-icons.component.ts b/src/app/views/icons/coreui-icons.component.ts new file mode 100644 index 0000000..92bae59 --- /dev/null +++ b/src/app/views/icons/coreui-icons.component.ts @@ -0,0 +1,46 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +import { IconSetService } from '@coreui/icons-angular'; +import { brandSet, flagSet, freeSet } from '@coreui/icons'; + +@Component({ + templateUrl: 'coreui-icons.component.html', + providers: [IconSetService], +}) +export class CoreUIIconsComponent implements OnInit { + public title = 'CoreUI Icons'; + public icons!: [string, string[]][]; + + constructor( + private route: ActivatedRoute, public iconSet: IconSetService + ) { + iconSet.icons = { ...freeSet, ...brandSet, ...flagSet }; + } + + ngOnInit() { + const path = this.route?.routeConfig?.path; + let prefix = 'cil'; + if (path === 'coreui-icons') { + this.title = `${this.title} - Free`; + prefix = 'cil'; + } else if (path === 'brands') { + this.title = `${this.title} - Brands`; + prefix = 'cib'; + } else if (path === 'flags') { + this.title = `${this.title} - Flags`; + prefix = 'cif'; + } + this.icons = this.getIconsView(prefix); + } + + toKebabCase(str: string) { + return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase(); + } + + getIconsView(prefix: string) { + return Object.entries(this.iconSet.icons).filter((icon) => { + return icon[0].startsWith(prefix); + }); + } +} diff --git a/src/app/views/icons/icons-routing.module.ts b/src/app/views/icons/icons-routing.module.ts new file mode 100644 index 0000000..e9d21fe --- /dev/null +++ b/src/app/views/icons/icons-routing.module.ts @@ -0,0 +1,48 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { CoreUIIconsComponent } from './coreui-icons.component'; + +const routes: Routes = [ + { + path: '', + data: { + title: 'Icons' + }, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'coreui-icons' + }, + { + path: 'coreui-icons', + component: CoreUIIconsComponent, + data: { + title: 'CoreUI Icons' + } + }, + { + path: 'brands', + component: CoreUIIconsComponent, + data: { + title: 'Brands' + } + }, + { + path: 'flags', + component: CoreUIIconsComponent, + data: { + title: 'Flags' + } + } + ] + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class IconsRoutingModule { +} diff --git a/src/app/views/icons/icons.module.ts b/src/app/views/icons/icons.module.ts new file mode 100644 index 0000000..ca4b7b9 --- /dev/null +++ b/src/app/views/icons/icons.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { CardModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; + +import { CoreUIIconsComponent } from './coreui-icons.component'; +import { IconsRoutingModule } from './icons-routing.module'; +import { DocsComponentsModule } from '@docs-components/docs-components.module'; + +@NgModule({ + imports: [ + IconsRoutingModule, + CardModule, + GridModule, + IconModule, + CommonModule, + DocsComponentsModule + ], + declarations: [ + CoreUIIconsComponent + ] +}) +export class IconsModule { +} diff --git a/src/app/views/pages/login/login.component.html b/src/app/views/pages/login/login.component.html new file mode 100644 index 0000000..64a0039 --- /dev/null +++ b/src/app/views/pages/login/login.component.html @@ -0,0 +1,51 @@ +
    + + + + + + + + + + + +
    +

    Login

    +

    Sign In to your account

    + + + + + + + + + + + + + {{error_msg}} + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    diff --git a/src/app/views/pages/login/login.component.scss b/src/app/views/pages/login/login.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/pages/login/login.component.spec.ts b/src/app/views/pages/login/login.component.spec.ts new file mode 100644 index 0000000..494e9b0 --- /dev/null +++ b/src/app/views/pages/login/login.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, CardModule, FormModule, GridModule } from '@coreui/angular'; +import { LoginComponent } from './login.component'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LoginComponent ], + imports: [FormModule, CardModule, GridModule, ButtonModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/pages/login/login.component.ts b/src/app/views/pages/login/login.component.ts new file mode 100644 index 0000000..73e2f4c --- /dev/null +++ b/src/app/views/pages/login/login.component.ts @@ -0,0 +1,66 @@ +import { Component } from '@angular/core'; +import { Router } from '@angular/router'; +import { dataProvider } from '../../../providers/mikrowizard/data'; +import { loginChecker } from '../../../providers/login_checker'; +import { Validators, FormControl, FormGroup} from '@angular/forms'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'] +}) +export class LoginComponent { + public loginForm: FormGroup; + public forgotForm: FormGroup; + public error_msg: string = ""; + public forgot_error_msg: string = ""; + public success_msg: string = ""; + public submitted = false; + public forgot_page: boolean = false; + public forgot_btn_disable: boolean = false; + + + constructor( + private router: Router, + private data_provider: dataProvider, + private login_checker: loginChecker, + ) { + this.createForm(); + }; + + createForm() { + this.loginForm = new FormGroup({ + username: new FormControl(''), + password: new FormControl(''), + ga_code: new FormControl(''), + }); + this.forgotForm = new FormGroup({ + email: new FormControl(''), + }); + } + + onClickSubmit(){ + var _self = this; + let uname = _self.loginForm.get('username')!.value; + let passwd = _self.loginForm.get('password')!.value; + let ga_code = ''; + console.dir(uname); + _self.data_provider.login(uname, passwd, '').then(res => { + if ('uid' in res && res['uid']){ + _self.error_msg = ""; + _self.login_checker.setStatus(true); + _self.router.navigate(['/'], {replaceUrl: true}); + } + else { + if ('reason' in res) { + } + else + _self.error_msg = res.error; + } + }).catch(err => { + _self.error_msg = "Wrong username or password!"; + }); + // }); + } + +} diff --git a/src/app/views/pages/page404/page404.component.html b/src/app/views/pages/page404/page404.component.html new file mode 100644 index 0000000..77d684e --- /dev/null +++ b/src/app/views/pages/page404/page404.component.html @@ -0,0 +1,22 @@ +
    + + + +
    +

    404

    +

    Oops! You're lost.

    +

    + The page you are looking for was not found. +

    +
    + + + + + + + +
    +
    +
    +
    diff --git a/src/app/views/pages/page404/page404.component.scss b/src/app/views/pages/page404/page404.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/pages/page404/page404.component.spec.ts b/src/app/views/pages/page404/page404.component.spec.ts new file mode 100644 index 0000000..c7bbf32 --- /dev/null +++ b/src/app/views/pages/page404/page404.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, FormModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { Page404Component } from './page404.component'; + +describe('Page404Component', () => { + let component: Page404Component; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ Page404Component ], + imports: [FormModule, GridModule, ButtonModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(Page404Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/pages/page404/page404.component.ts b/src/app/views/pages/page404/page404.component.ts new file mode 100644 index 0000000..1155906 --- /dev/null +++ b/src/app/views/pages/page404/page404.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-page404', + templateUrl: './page404.component.html', + styleUrls: ['./page404.component.scss'] +}) +export class Page404Component { + + constructor() { } + +} diff --git a/src/app/views/pages/page500/page500.component.html b/src/app/views/pages/page500/page500.component.html new file mode 100644 index 0000000..7bf7d0b --- /dev/null +++ b/src/app/views/pages/page500/page500.component.html @@ -0,0 +1,22 @@ +
    + + + + +

    500

    +

    Houston, we have a problem!

    +

    + The page you are looking for is temporarily unavailable. +

    +
    + + + + + + + +
    +
    +
    +
    diff --git a/src/app/views/pages/page500/page500.component.scss b/src/app/views/pages/page500/page500.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/pages/page500/page500.component.spec.ts b/src/app/views/pages/page500/page500.component.spec.ts new file mode 100644 index 0000000..5b4ebaf --- /dev/null +++ b/src/app/views/pages/page500/page500.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, FormModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { Page500Component } from './page500.component'; + +describe('Page500Component', () => { + let component: Page500Component; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ Page500Component ], + imports: [GridModule, ButtonModule, FormModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(Page500Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/pages/page500/page500.component.ts b/src/app/views/pages/page500/page500.component.ts new file mode 100644 index 0000000..114d810 --- /dev/null +++ b/src/app/views/pages/page500/page500.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-page500', + templateUrl: './page500.component.html', + styleUrls: ['./page500.component.scss'] +}) +export class Page500Component { + + constructor() { } + +} diff --git a/src/app/views/pages/pages-routing.module.ts b/src/app/views/pages/pages-routing.module.ts new file mode 100644 index 0000000..b72022b --- /dev/null +++ b/src/app/views/pages/pages-routing.module.ts @@ -0,0 +1,36 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { Page404Component } from './page404/page404.component'; +import { Page500Component } from './page500/page500.component'; +import { LoginComponent } from './login/login.component'; + +const routes: Routes = [ + { + path: '404', + component: Page404Component, + data: { + title: 'Page 404' + } + }, + { + path: '500', + component: Page500Component, + data: { + title: 'Page 500' + } + }, + { + path: 'login', + component: LoginComponent, + data: { + title: 'Login Page' + } + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class PagesRoutingModule { +} diff --git a/src/app/views/pages/pages.module.ts b/src/app/views/pages/pages.module.ts new file mode 100644 index 0000000..6c3250f --- /dev/null +++ b/src/app/views/pages/pages.module.ts @@ -0,0 +1,32 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { PagesRoutingModule } from './pages-routing.module'; +import { LoginComponent } from './login/login.component'; +import { Page404Component } from './page404/page404.component'; +import { Page500Component } from './page500/page500.component'; +import { ButtonModule, CardModule, FormModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; + + +@NgModule({ + declarations: [ + LoginComponent, + Page404Component, + Page500Component + ], + imports: [ + CommonModule, + PagesRoutingModule, + CardModule, + ButtonModule, + GridModule, + IconModule, + FormModule, + FormsModule, + ReactiveFormsModule + ] +}) +export class PagesModule { +} diff --git a/src/app/views/permissions/permissions-routing.module.ts b/src/app/views/permissions/permissions-routing.module.ts new file mode 100644 index 0000000..dfbeae1 --- /dev/null +++ b/src/app/views/permissions/permissions-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { PermissionsComponent } from './permissions.component'; + +const routes: Routes = [ + { + path: '', + component: PermissionsComponent, + data: { + title: $localize`Permissions` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class PermissionsRoutingModule { +} diff --git a/src/app/views/permissions/permissions.component.html b/src/app/views/permissions/permissions.component.html new file mode 100644 index 0000000..776c61d --- /dev/null +++ b/src/app/views/permissions/permissions.component.html @@ -0,0 +1,137 @@ + + + + + + + Permissions + + + + + + + + + + +   {{value}} + + + +
    + + {{perm.key}} + +
    +
    +
    + + + + + + +
    +
    +
    +
    +
    + + + + + +
    Editing Permission {{SelectedPerm['name']}}
    +
    Adding new Permission Rule
    + +
    + + +
    + + +
    + + + + + + + + + + + + + + + + {{get_member_by_id(id).name}} + + + +
    + + + + + +
    + + + + +
    Confirm delete {{ SelectedPerm['name'] }}
    + +
    + + Are you sure that You want to delete following Permission? +
    +
    + + + + + + + + + +
    Permission name : {{ SelectedPerm['name'] }} +
    + + {{perm.key}} + +
    +

    Warning: ALL Given device access related to this permision in Users Section will be deleted for each user +

    +
    +
    + + + + +
    + + + \ No newline at end of file diff --git a/src/app/views/permissions/permissions.component.ts b/src/app/views/permissions/permissions.component.ts new file mode 100644 index 0000000..d8fac73 --- /dev/null +++ b/src/app/views/permissions/permissions.component.ts @@ -0,0 +1,260 @@ +import { Component, OnInit, QueryList, ViewChildren } from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, +} from "@generic-ui/ngx-grid"; + +import { ToasterComponent } from "@coreui/angular"; +import { AppToastComponent } from "../toast-simple/toast.component"; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "permissions.component.html", +}) +export class PermissionsComponent implements OnInit { + public uid: number; + public uname: string; + + constructor( + private data_provider: dataProvider, + private router: Router, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + @ViewChildren(ToasterComponent) viewChildren!: QueryList; + + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public rows: any = []; + public SelectedPerm: any = {}; + public SelectedPermItems: string = ""; + + public EditTaskModalVisible: boolean = false; + public DeleteConfirmModalVisible: boolean = false; + public Members: any = ""; + public SelectedMembers: any = []; + + public action: string = "add"; + public permid: number = 0; + public permname: string = ""; + public perms: { [index: string]: boolean } = { + api: false, + ftp: false, + password: false, + read: false, + romon: false, + sniff: false, + telnet: false, + tikapp: false, + winbox: false, + dude: false, + local: false, + policy: false, + reboot: false, + "rest-api": false, + sensitive: false, + ssh: false, + test: false, + web: false, + write: false, + }; + + toasterForm = { + autohide: true, + delay: 3000, + position: "fixed", + fade: true, + closeButton: true, + }; + + public sorting = { + enabled: true, + multiSorting: true, + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + show_toast(title: string, body: string, color: string) { + const { ...props } = { ...this.toasterForm, color, title, body }; + const componentRef = this.viewChildren.first.addToast( + AppToastComponent, + props, + {} + ); + componentRef.instance["closeButton"] = props.closeButton; + } + + ngOnInit(): void { + this.initGridTable(); + } + submit(action: string) { + var _self = this; + if (action == "add") { + this.data_provider + .create_perm(_self.permname, _self.perms) + .then((res) => { + if (res["status"] == "failed") { + _self.show_toast( + "Error", + res.err, + "danger" + ); + return; + } else { + _self.initGridTable(); + this.EditTaskModalVisible = false; + } + }); + } else { + this.data_provider + .edit_perm(_self.permid, _self.permname, _self.perms) + .then((res) => { + if (res["status"] == "failed") { + _self.show_toast( + "Error", + res.err, + "danger" + ); + return; + } else { + _self.initGridTable(); + this.EditTaskModalVisible = false; + } + }); + } + } + editAddTask(item: any, action: string) { + if (action == "showadd") { + this.permname = item["name"]; + this.perms = { + api: false, + ftp: false, + password: false, + read: false, + romon: false, + sniff: false, + telnet: false, + tikapp: false, + winbox: false, + dude: false, + local: false, + policy: false, + reboot: false, + "rest-api": false, + sensitive: false, + ssh: false, + test: false, + web: false, + write: false, + }; + this.permid = 0; + this.action = "add"; + this.EditTaskModalVisible = true; + return; + } + this.action = "edit"; + this.permname = item["name"]; + this.perms = item.perms; + this.permid = item["id"]; + this.EditTaskModalVisible = true; + } + + splitids(ids: string = "") { + return ids.split(","); + } + + get_member_by_id(id: string) { + return this.Members.find((x: any) => x.id == id); + } + + confirm_delete(item: any = "", del: boolean = false) { + if (!del) { + this.SelectedPerm = { ...item }; + this.DeleteConfirmModalVisible = true; + } else { + var _self = this; + this.data_provider.delete_perm(_self.SelectedPerm["id"]).then((res) => { + if (res["status"] == "failed") { + _self.show_toast( + "Error", + res.err, + "danger" + ); + return; + } + else{ + _self.initGridTable(); + _self.DeleteConfirmModalVisible = false; + } + }); + } + } + + logger(item: any) { + console.dir(item); + } + + initGridTable(): void { + var _self = this; + var page = 1; + var pageSize = 10; + var searchstr = ""; + this.data_provider.get_perms(page, pageSize, searchstr).then((res) => { + _self.source = res.map((x: any) => { + return x; + }); + _self.loading = false; + }); + } +} diff --git a/src/app/views/permissions/permissions.module.ts b/src/app/views/permissions/permissions.module.ts new file mode 100644 index 0000000..3c1b310 --- /dev/null +++ b/src/app/views/permissions/permissions.module.ts @@ -0,0 +1,43 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { FormsModule } from "@angular/forms"; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + NavModule, + TabsModule, + ModalModule, + BadgeModule, + ToastModule, +} from "@coreui/angular"; +import { IconModule } from "@coreui/icons-angular"; + +import { PermissionsRoutingModule } from "./permissions-routing.module"; +import { PermissionsComponent } from "./permissions.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; + +@NgModule({ + imports: [ + PermissionsRoutingModule, + CardModule, + NavModule, + IconModule, + TabsModule, + CommonModule, + GridModule, + ToastModule, + FormModule, + ButtonModule, + ButtonGroupModule, + GuiGridModule, + ModalModule, + FormsModule, + BadgeModule, + ], + declarations: [PermissionsComponent], +}) +export class PermissionsModule {} diff --git a/src/app/views/settings/settings-routing.module.ts b/src/app/views/settings/settings-routing.module.ts new file mode 100644 index 0000000..917a731 --- /dev/null +++ b/src/app/views/settings/settings-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { SettingsComponent } from './settings.component'; + +const routes: Routes = [ + { + path: '', + component: SettingsComponent, + data: { + title: $localize`Settings` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class SettingsRoutingModule { +} diff --git a/src/app/views/settings/settings.component.html b/src/app/views/settings/settings.component.html new file mode 100644 index 0000000..1e39bd9 --- /dev/null +++ b/src/app/views/settings/settings.component.html @@ -0,0 +1,227 @@ + + + + Firmware Manager + + +
    Firmware in repository:
    + + + +   {{value}} + + + + {{value}} + + + + + {{value}} + + + +
    + +
    + + + + + +
    + Add new Permission + + + + + + + + + + {{firm}} + + + + + + +
    + +
    + + + + + * Choose how Mikrowizard should update old v6 firmwares + + + + + + + * The version of firmware to install routers + + + + + + + * The version of firmware to install on V6 routers + + +
    + +
    + + System Settings + + + + Rad Secret + + + * Radius Secret of Mikrowizard Radius Server + + + + + System URL + + + * Default system access URl + + + + Default IP + + + * Default Mikrowizard Access IP + + + System Time Zone + + Select event type + + + + + + {{tz.text}} + + + + + * Default TimeZone for the system + + + + + Default User + + Default password + + + * Default username and Password for searching new devices + + + License Username + + + * The username that you registred in Mikrowizard.com,Required for License Activation + + + + + + + * Force User Groups under user>groups configuration of each router to match Mikrowizard Permissions and + monitor for any change to prevent/fix the configuration. + + + + + + + * Force Radius config under radius>client and user>aaa setting of each router that added to Mikrowizard and + monitor for any change to prevent/fix the configuration. + + + + + + + * Force Syslog config under system>logs setting of each router that added to Mikrowizard and monitor syslog + setting for any change to prevent/fix the configuration. + + + + + + + * Download and install reqired firmware before installing the target firmware . for example it will install + latest 7.12 then upgrade to newer version >7.13 + + + + + + + +
    +
    + + + +
    Downloading RouterOS ver {{firmtodownload}}
    + +
    + + Are you sure that You want to download RouterOS version {{firmtodownload}} to the Repository? +
    +
    + + + + + +
    + + \ No newline at end of file diff --git a/src/app/views/settings/settings.component.scss b/src/app/views/settings/settings.component.scss new file mode 100644 index 0000000..0185fbf --- /dev/null +++ b/src/app/views/settings/settings.component.scss @@ -0,0 +1,10 @@ +:host { + .legend { + small { + font-size: x-small; + } + } +} +.mdc-line-ripple.mdc-line-ripple--deactivating.ng-star-inserted { + display: none!important; +} \ No newline at end of file diff --git a/src/app/views/settings/settings.component.ts b/src/app/views/settings/settings.component.ts new file mode 100644 index 0000000..5dd9271 --- /dev/null +++ b/src/app/views/settings/settings.component.ts @@ -0,0 +1,259 @@ +import { + Component, + OnInit, + QueryList, + ViewChildren, + ViewEncapsulation, +} from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiSelectedRow, + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { ToasterComponent } from "@coreui/angular"; +import { AppToastComponent } from "../toast-simple/toast.component"; +import { TimeZones } from "./timezones-data"; +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "settings.component.html", + styleUrls: ["settings.component.scss"], + encapsulation: ViewEncapsulation.None, +}) +export class SettingsComponent implements OnInit { + public uid: number; + public uname: string; + public filterText: string; + public filters: any = {}; + public firms: any = {}; + public firmtodownload: any = {}; + constructor( + private data_provider: dataProvider, + private router: Router, + private TimeZones: TimeZones, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function() { + _self.router.navigate(['login']); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + @ViewChildren(ToasterComponent) viewChildren!: QueryList; + + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public SysConfigloading: boolean = true; + + public ConfirmModalVisible: boolean = false; + public rows: any = []; + public Selectedrows: any; + public updateBehavior: string = "keep"; + public firmwaretoinstall: string = "none"; + public firmwaretoinstallv6: string = "none"; + public available_firmwares: any = []; + public available_firmwaresv6: any = []; + public sysconfigs: any = []; + + toasterForm = { + autohide: true, + delay: 3000, + position: "fixed", + fade: true, + closeButton: true, + }; + + public sorting = { + enabled: true, + multiSorting: true, + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 5, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + public timezones = this.TimeZones.timezones; + + ngOnInit(): void { + this.initAvailbleFirms(); + this.initFirmsTable(); + this.initsettings(); + } + + start_download() { + var _self = this; + this.loading = true; + this.data_provider + .download_firmware_to_repository(this.firmtodownload) + .then((res) => { + if (res.status == true) { + // show toast that we are already downloading + _self.show_toast( + "Firmware Download", + "Firmware download in progress", + "warning" + ); + } else { + // show toast that download started + _self.show_toast( + "Firmware Download", + "Firmware download started", + "success" + ); + } + _self.ConfirmModalVisible = !_self.ConfirmModalVisible; + _self.loading = false; + }); + } + + onSelectedRows(rows: Array): void { + this.rows = rows; + this.Selectedrows = rows.map((m: GuiSelectedRow) => m.source.id); + } + + show_toast(title: string, body: string, color: string) { + const { ...props } = { ...this.toasterForm, color, title, body }; + const componentRef = this.viewChildren.first.addToast( + AppToastComponent, + props, + {} + ); + componentRef.instance["closeButton"] = props.closeButton; + } + + saveFirmwareSetting() { + var _self = this; + this.data_provider + .save_firmware_setting( + this.updateBehavior, + this.firmwaretoinstall, + this.firmwaretoinstallv6 + ) + .then((res) => { + _self.initFirmsTable(); + }); + } + + saveSysSetting() { + var _self = this; + this.data_provider.save_sys_setting(this.sysconfigs).then((res) => { + _self.initsettings(); + }); + } + + initFirmsTable(): void { + var _self = this; + this.data_provider.get_firms(0, 10000, false).then((res) => { + let index = 1; + _self.source = res.firms; + _self.available_firmwares = [ + ...new Set( + res["firms"].map((x: any) => { + return x.version; + }) + ), + ]; + _self.available_firmwaresv6 = [ + ...new Set( + res["firms"].map((x: any) => { + return x.version; + }) + ), + ].filter((x: any) => x.match(/^6\./g)); + _self.firmwaretoinstall = res.firmwaretoinstall; + _self.firmwaretoinstallv6 = res.firmwaretoinstallv6; + }); + } + + initsettings(): void { + var _self = this; + this.data_provider.get_settings().then((res) => { + _self.sysconfigs = res.sysconfigs; + _self.sysconfigs["default_user"]["value"] = ""; + _self.sysconfigs["default_password"]["value"] = ""; + _self.timezones = _self.TimeZones.timezones; + _self.sysconfigs["force_syslog"]["value"] = /true/i.test( + _self.sysconfigs["force_syslog"]["value"] + ); + _self.sysconfigs["force_radius"]["value"] = /true/i.test( + _self.sysconfigs["force_radius"]["value"] + ); + _self.sysconfigs["force_perms"]["value"] = /true/i.test( + _self.sysconfigs["force_perms"]["value"] + ); + _self.sysconfigs["safe_install"]["value"] = /true/i.test( + _self.sysconfigs["safe_install"]["value"] + ); + _self.SysConfigloading = false; + }); + } + + initAvailbleFirms(): void { + var _self = this; + this.data_provider.get_downloadable_firms().then((res) => { + let index = 1; + _self.firms = res.versions; + _self.loading = false; + }); + } +} diff --git a/src/app/views/settings/settings.module.ts b/src/app/views/settings/settings.module.ts new file mode 100644 index 0000000..116d06d --- /dev/null +++ b/src/app/views/settings/settings.module.ts @@ -0,0 +1,41 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + SpinnerModule, + ToastModule, + ModalModule, +} from "@coreui/angular"; +import { SettingsRoutingModule } from "./settings-routing.module"; +import { SettingsComponent } from "./settings.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; + +import { FormsModule } from "@angular/forms"; +import { MatSelectModule } from "@angular/material/select"; +import { NgxMatSelectSearchModule } from "ngx-mat-select-search"; + +@NgModule({ + imports: [ + SettingsRoutingModule, + CardModule, + CommonModule, + GridModule, + FormsModule, + FormModule, + ButtonModule, + ButtonGroupModule, + GuiGridModule, + MatSelectModule, + NgxMatSelectSearchModule, + SpinnerModule, + ToastModule, + ModalModule, + ], + declarations: [SettingsComponent], +}) +export class SettingsModule {} diff --git a/src/app/views/settings/timezones-data.ts b/src/app/views/settings/timezones-data.ts new file mode 100644 index 0000000..7fd7477 --- /dev/null +++ b/src/app/views/settings/timezones-data.ts @@ -0,0 +1,1456 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'any' + }) + +export class TimeZones { +constructor() { + this.initMainChart(); +} + +timezones:any=[] + +initMainChart(){ +this.timezones=[ + { + "value": "Dateline Standard Time", + "abbr": "DST", + "offset": -12, + "isdst": false, + "text": "(UTC-12:00) International Date Line West", + "utc": [ + "Etc/GMT+12" + ] + }, + { + "value": "UTC-11", + "abbr": "U", + "offset": -11, + "isdst": false, + "text": "(UTC-11:00) Coordinated Universal Time-11", + "utc": [ + "Etc/GMT+11", + "Pacific/Midway", + "Pacific/Niue", + "Pacific/Pago_Pago" + ] + }, + { + "value": "Hawaiian Standard Time", + "abbr": "HST", + "offset": -10, + "isdst": false, + "text": "(UTC-10:00) Hawaii", + "utc": [ + "Etc/GMT+10", + "Pacific/Honolulu", + "Pacific/Johnston", + "Pacific/Rarotonga", + "Pacific/Tahiti" + ] + }, + { + "value": "Alaskan Standard Time", + "abbr": "AKDT", + "offset": -8, + "isdst": true, + "text": "(UTC-09:00) Alaska", + "utc": [ + "America/Anchorage", + "America/Juneau", + "America/Nome", + "America/Sitka", + "America/Yakutat" + ] + }, + { + "value": "Pacific Standard Time (Mexico)", + "abbr": "PDT", + "offset": -7, + "isdst": true, + "text": "(UTC-08:00) Baja California", + "utc": [ + "America/Santa_Isabel" + ] + }, + { + "value": "Pacific Daylight Time", + "abbr": "PDT", + "offset": -7, + "isdst": true, + "text": "(UTC-07:00) Pacific Daylight Time (US & Canada)", + "utc": [ + "America/Los_Angeles", + "America/Tijuana", + "America/Vancouver" + ] + }, + { + "value": "Pacific Standard Time", + "abbr": "PST", + "offset": -8, + "isdst": false, + "text": "(UTC-08:00) Pacific Standard Time (US & Canada)", + "utc": [ + "America/Los_Angeles", + "America/Tijuana", + "America/Vancouver", + "PST8PDT" + ] + }, + { + "value": "US Mountain Standard Time", + "abbr": "UMST", + "offset": -7, + "isdst": false, + "text": "(UTC-07:00) Arizona", + "utc": [ + "America/Creston", + "America/Dawson", + "America/Dawson_Creek", + "America/Hermosillo", + "America/Phoenix", + "America/Whitehorse", + "Etc/GMT+7" + ] + }, + { + "value": "Mountain Standard Time (Mexico)", + "abbr": "MDT", + "offset": -6, + "isdst": true, + "text": "(UTC-07:00) Chihuahua, La Paz, Mazatlan", + "utc": [ + "America/Chihuahua", + "America/Mazatlan" + ] + }, + { + "value": "Mountain Standard Time", + "abbr": "MDT", + "offset": -6, + "isdst": true, + "text": "(UTC-07:00) Mountain Time (US & Canada)", + "utc": [ + "America/Boise", + "America/Cambridge_Bay", + "America/Denver", + "America/Edmonton", + "America/Inuvik", + "America/Ojinaga", + "America/Yellowknife", + "MST7MDT" + ] + }, + { + "value": "Central America Standard Time", + "abbr": "CAST", + "offset": -6, + "isdst": false, + "text": "(UTC-06:00) Central America", + "utc": [ + "America/Belize", + "America/Costa_Rica", + "America/El_Salvador", + "America/Guatemala", + "America/Managua", + "America/Tegucigalpa", + "Etc/GMT+6", + "Pacific/Galapagos" + ] + }, + { + "value": "Central Standard Time", + "abbr": "CDT", + "offset": -5, + "isdst": true, + "text": "(UTC-06:00) Central Time (US & Canada)", + "utc": [ + "America/Chicago", + "America/Indiana/Knox", + "America/Indiana/Tell_City", + "America/Matamoros", + "America/Menominee", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Rainy_River", + "America/Rankin_Inlet", + "America/Resolute", + "America/Winnipeg", + "CST6CDT" + ] + }, + { + "value": "Central Standard Time (Mexico)", + "abbr": "CDT", + "offset": -5, + "isdst": true, + "text": "(UTC-06:00) Guadalajara, Mexico City, Monterrey", + "utc": [ + "America/Bahia_Banderas", + "America/Cancun", + "America/Merida", + "America/Mexico_City", + "America/Monterrey" + ] + }, + { + "value": "Canada Central Standard Time", + "abbr": "CCST", + "offset": -6, + "isdst": false, + "text": "(UTC-06:00) Saskatchewan", + "utc": [ + "America/Regina", + "America/Swift_Current" + ] + }, + { + "value": "SA Pacific Standard Time", + "abbr": "SPST", + "offset": -5, + "isdst": false, + "text": "(UTC-05:00) Bogota, Lima, Quito", + "utc": [ + "America/Bogota", + "America/Cayman", + "America/Coral_Harbour", + "America/Eirunepe", + "America/Guayaquil", + "America/Jamaica", + "America/Lima", + "America/Panama", + "America/Rio_Branco", + "Etc/GMT+5" + ] + }, + { + "value": "Eastern Standard Time", + "abbr": "EST", + "offset": -5, + "isdst": false, + "text": "(UTC-05:00) Eastern Time (US & Canada)", + "utc": [ + "America/Detroit", + "America/Havana", + "America/Indiana/Petersburg", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Iqaluit", + "America/Kentucky/Monticello", + "America/Louisville", + "America/Montreal", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Pangnirtung", + "America/Port-au-Prince", + "America/Thunder_Bay", + "America/Toronto" + ] + }, + { + "value": "Eastern Daylight Time", + "abbr": "EDT", + "offset": -4, + "isdst": true, + "text": "(UTC-04:00) Eastern Daylight Time (US & Canada)", + "utc": [ + "America/Detroit", + "America/Havana", + "America/Indiana/Petersburg", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Iqaluit", + "America/Kentucky/Monticello", + "America/Louisville", + "America/Montreal", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Pangnirtung", + "America/Port-au-Prince", + "America/Thunder_Bay", + "America/Toronto" + ] + }, + { + "value": "US Eastern Standard Time", + "abbr": "UEDT", + "offset": -5, + "isdst": false, + "text": "(UTC-05:00) Indiana (East)", + "utc": [ + "America/Indiana/Marengo", + "America/Indiana/Vevay", + "America/Indianapolis" + ] + }, + { + "value": "Venezuela Standard Time", + "abbr": "VST", + "offset": -4.5, + "isdst": false, + "text": "(UTC-04:30) Caracas", + "utc": [ + "America/Caracas" + ] + }, + { + "value": "Paraguay Standard Time", + "abbr": "PYT", + "offset": -4, + "isdst": false, + "text": "(UTC-04:00) Asuncion", + "utc": [ + "America/Asuncion" + ] + }, + { + "value": "Atlantic Standard Time", + "abbr": "ADT", + "offset": -3, + "isdst": true, + "text": "(UTC-04:00) Atlantic Time (Canada)", + "utc": [ + "America/Glace_Bay", + "America/Goose_Bay", + "America/Halifax", + "America/Moncton", + "America/Thule", + "Atlantic/Bermuda" + ] + }, + { + "value": "Central Brazilian Standard Time", + "abbr": "CBST", + "offset": -4, + "isdst": false, + "text": "(UTC-04:00) Cuiaba", + "utc": [ + "America/Campo_Grande", + "America/Cuiaba" + ] + }, + { + "value": "SA Western Standard Time", + "abbr": "SWST", + "offset": -4, + "isdst": false, + "text": "(UTC-04:00) Georgetown, La Paz, Manaus, San Juan", + "utc": [ + "America/Anguilla", + "America/Antigua", + "America/Aruba", + "America/Barbados", + "America/Blanc-Sablon", + "America/Boa_Vista", + "America/Curacao", + "America/Dominica", + "America/Grand_Turk", + "America/Grenada", + "America/Guadeloupe", + "America/Guyana", + "America/Kralendijk", + "America/La_Paz", + "America/Lower_Princes", + "America/Manaus", + "America/Marigot", + "America/Martinique", + "America/Montserrat", + "America/Port_of_Spain", + "America/Porto_Velho", + "America/Puerto_Rico", + "America/Santo_Domingo", + "America/St_Barthelemy", + "America/St_Kitts", + "America/St_Lucia", + "America/St_Thomas", + "America/St_Vincent", + "America/Tortola", + "Etc/GMT+4" + ] + }, + { + "value": "Pacific SA Standard Time", + "abbr": "PSST", + "offset": -4, + "isdst": false, + "text": "(UTC-04:00) Santiago", + "utc": [ + "America/Santiago", + "Antarctica/Palmer" + ] + }, + { + "value": "Newfoundland Standard Time", + "abbr": "NDT", + "offset": -2.5, + "isdst": true, + "text": "(UTC-03:30) Newfoundland", + "utc": [ + "America/St_Johns" + ] + }, + { + "value": "E. South America Standard Time", + "abbr": "ESAST", + "offset": -3, + "isdst": false, + "text": "(UTC-03:00) Brasilia", + "utc": [ + "America/Sao_Paulo" + ] + }, + { + "value": "Argentina Standard Time", + "abbr": "AST", + "offset": -3, + "isdst": false, + "text": "(UTC-03:00) Buenos Aires", + "utc": [ + "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Buenos_Aires", + "America/Catamarca", + "America/Cordoba", + "America/Jujuy", + "America/Mendoza" + ] + }, + { + "value": "SA Eastern Standard Time", + "abbr": "SEST", + "offset": -3, + "isdst": false, + "text": "(UTC-03:00) Cayenne, Fortaleza", + "utc": [ + "America/Araguaina", + "America/Belem", + "America/Cayenne", + "America/Fortaleza", + "America/Maceio", + "America/Paramaribo", + "America/Recife", + "America/Santarem", + "Antarctica/Rothera", + "Atlantic/Stanley", + "Etc/GMT+3" + ] + }, + { + "value": "Greenland Standard Time", + "abbr": "GDT", + "offset": -3, + "isdst": true, + "text": "(UTC-03:00) Greenland", + "utc": [ + "America/Godthab" + ] + }, + { + "value": "Montevideo Standard Time", + "abbr": "MST", + "offset": -3, + "isdst": false, + "text": "(UTC-03:00) Montevideo", + "utc": [ + "America/Montevideo" + ] + }, + { + "value": "Bahia Standard Time", + "abbr": "BST", + "offset": -3, + "isdst": false, + "text": "(UTC-03:00) Salvador", + "utc": [ + "America/Bahia" + ] + }, + { + "value": "UTC-02", + "abbr": "U", + "offset": -2, + "isdst": false, + "text": "(UTC-02:00) Coordinated Universal Time-02", + "utc": [ + "America/Noronha", + "Atlantic/South_Georgia", + "Etc/GMT+2" + ] + }, + { + "value": "Mid-Atlantic Standard Time", + "abbr": "MDT", + "offset": -1, + "isdst": true, + "text": "(UTC-02:00) Mid-Atlantic - Old", + "utc": [] + }, + { + "value": "Azores Standard Time", + "abbr": "ADT", + "offset": 0, + "isdst": true, + "text": "(UTC-01:00) Azores", + "utc": [ + "America/Scoresbysund", + "Atlantic/Azores" + ] + }, + { + "value": "Cape Verde Standard Time", + "abbr": "CVST", + "offset": -1, + "isdst": false, + "text": "(UTC-01:00) Cape Verde Is.", + "utc": [ + "Atlantic/Cape_Verde", + "Etc/GMT+1" + ] + }, + { + "value": "Morocco Standard Time", + "abbr": "MDT", + "offset": 1, + "isdst": true, + "text": "(UTC) Casablanca", + "utc": [ + "Africa/Casablanca", + "Africa/El_Aaiun" + ] + }, + { + "value": "UTC", + "abbr": "UTC", + "offset": 0, + "isdst": false, + "text": "(UTC) Coordinated Universal Time", + "utc": [ + "America/Danmarkshavn", + "Etc/GMT" + ] + }, + { + "value": "GMT Standard Time", + "abbr": "GMT", + "offset": 0, + "isdst": false, + "text": "(UTC) Edinburgh, London", + "utc": [ + "Europe/Isle_of_Man", + "Europe/Guernsey", + "Europe/Jersey", + "Europe/London" + ] + }, + { + "value": "British Summer Time", + "abbr": "BST", + "offset": 1, + "isdst": true, + "text": "(UTC+01:00) Edinburgh, London", + "utc": [ + "Europe/Isle_of_Man", + "Europe/Guernsey", + "Europe/Jersey", + "Europe/London" + ] + }, + { + "value": "GMT Standard Time", + "abbr": "GDT", + "offset": 1, + "isdst": true, + "text": "(UTC) Dublin, Lisbon", + "utc": [ + "Atlantic/Canary", + "Atlantic/Faeroe", + "Atlantic/Madeira", + "Europe/Dublin", + "Europe/Lisbon" + ] + }, + { + "value": "Greenwich Standard Time", + "abbr": "GST", + "offset": 0, + "isdst": false, + "text": "(UTC) Monrovia, Reykjavik", + "utc": [ + "Africa/Abidjan", + "Africa/Accra", + "Africa/Bamako", + "Africa/Banjul", + "Africa/Bissau", + "Africa/Conakry", + "Africa/Dakar", + "Africa/Freetown", + "Africa/Lome", + "Africa/Monrovia", + "Africa/Nouakchott", + "Africa/Ouagadougou", + "Africa/Sao_Tome", + "Atlantic/Reykjavik", + "Atlantic/St_Helena" + ] + }, + { + "value": "W. Europe Standard Time", + "abbr": "WEDT", + "offset": 2, + "isdst": true, + "text": "(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna", + "utc": [ + "Arctic/Longyearbyen", + "Europe/Amsterdam", + "Europe/Andorra", + "Europe/Berlin", + "Europe/Busingen", + "Europe/Gibraltar", + "Europe/Luxembourg", + "Europe/Malta", + "Europe/Monaco", + "Europe/Oslo", + "Europe/Rome", + "Europe/San_Marino", + "Europe/Stockholm", + "Europe/Vaduz", + "Europe/Vatican", + "Europe/Vienna", + "Europe/Zurich" + ] + }, + { + "value": "Central Europe Standard Time", + "abbr": "CEDT", + "offset": 2, + "isdst": true, + "text": "(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague", + "utc": [ + "Europe/Belgrade", + "Europe/Bratislava", + "Europe/Budapest", + "Europe/Ljubljana", + "Europe/Podgorica", + "Europe/Prague", + "Europe/Tirane" + ] + }, + { + "value": "Romance Standard Time", + "abbr": "RDT", + "offset": 2, + "isdst": true, + "text": "(UTC+01:00) Brussels, Copenhagen, Madrid, Paris", + "utc": [ + "Africa/Ceuta", + "Europe/Brussels", + "Europe/Copenhagen", + "Europe/Madrid", + "Europe/Paris" + ] + }, + { + "value": "Central European Standard Time", + "abbr": "CEDT", + "offset": 2, + "isdst": true, + "text": "(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb", + "utc": [ + "Europe/Sarajevo", + "Europe/Skopje", + "Europe/Warsaw", + "Europe/Zagreb" + ] + }, + { + "value": "W. Central Africa Standard Time", + "abbr": "WCAST", + "offset": 1, + "isdst": false, + "text": "(UTC+01:00) West Central Africa", + "utc": [ + "Africa/Algiers", + "Africa/Bangui", + "Africa/Brazzaville", + "Africa/Douala", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Libreville", + "Africa/Luanda", + "Africa/Malabo", + "Africa/Ndjamena", + "Africa/Niamey", + "Africa/Porto-Novo", + "Africa/Tunis", + "Etc/GMT-1" + ] + }, + { + "value": "Namibia Standard Time", + "abbr": "NST", + "offset": 1, + "isdst": false, + "text": "(UTC+01:00) Windhoek", + "utc": [ + "Africa/Windhoek" + ] + }, + { + "value": "GTB Standard Time", + "abbr": "GDT", + "offset": 3, + "isdst": true, + "text": "(UTC+02:00) Athens, Bucharest", + "utc": [ + "Asia/Nicosia", + "Europe/Athens", + "Europe/Bucharest", + "Europe/Chisinau" + ] + }, + { + "value": "Middle East Standard Time", + "abbr": "MEDT", + "offset": 3, + "isdst": true, + "text": "(UTC+02:00) Beirut", + "utc": [ + "Asia/Beirut" + ] + }, + { + "value": "Egypt Standard Time", + "abbr": "EST", + "offset": 2, + "isdst": false, + "text": "(UTC+02:00) Cairo", + "utc": [ + "Africa/Cairo" + ] + }, + { + "value": "Syria Standard Time", + "abbr": "SDT", + "offset": 3, + "isdst": true, + "text": "(UTC+02:00) Damascus", + "utc": [ + "Asia/Damascus" + ] + }, + { + "value": "E. Europe Standard Time", + "abbr": "EEDT", + "offset": 3, + "isdst": true, + "text": "(UTC+02:00) E. Europe", + "utc": [ + "Asia/Nicosia", + "Europe/Athens", + "Europe/Bucharest", + "Europe/Chisinau", + "Europe/Helsinki", + "Europe/Kyiv", + "Europe/Mariehamn", + "Europe/Nicosia", + "Europe/Riga", + "Europe/Sofia", + "Europe/Tallinn", + "Europe/Uzhhorod", + "Europe/Vilnius", + "Europe/Zaporizhzhia" + + ] + }, + { + "value": "South Africa Standard Time", + "abbr": "SAST", + "offset": 2, + "isdst": false, + "text": "(UTC+02:00) Harare, Pretoria", + "utc": [ + "Africa/Blantyre", + "Africa/Bujumbura", + "Africa/Gaborone", + "Africa/Harare", + "Africa/Johannesburg", + "Africa/Kigali", + "Africa/Lubumbashi", + "Africa/Lusaka", + "Africa/Maputo", + "Africa/Maseru", + "Africa/Mbabane", + "Etc/GMT-2" + ] + }, + { + "value": "FLE Standard Time", + "abbr": "FDT", + "offset": 3, + "isdst": true, + "text": "(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius", + "utc": [ + "Europe/Helsinki", + "Europe/Kyiv", + "Europe/Mariehamn", + "Europe/Riga", + "Europe/Sofia", + "Europe/Tallinn", + "Europe/Uzhhorod", + "Europe/Vilnius", + "Europe/Zaporizhzhia" + ] + }, + { + "value": "Turkey Standard Time", + "abbr": "TDT", + "offset": 3, + "isdst": false, + "text": "(UTC+03:00) Istanbul", + "utc": [ + "Europe/Istanbul" + ] + }, + { + "value": "Israel Standard Time", + "abbr": "JDT", + "offset": 3, + "isdst": true, + "text": "(UTC+02:00) Jerusalem", + "utc": [ + "Asia/Jerusalem" + ] + }, + { + "value": "Libya Standard Time", + "abbr": "LST", + "offset": 2, + "isdst": false, + "text": "(UTC+02:00) Tripoli", + "utc": [ + "Africa/Tripoli" + ] + }, + { + "value": "Jordan Standard Time", + "abbr": "JST", + "offset": 3, + "isdst": false, + "text": "(UTC+03:00) Amman", + "utc": [ + "Asia/Amman" + ] + }, + { + "value": "Arabic Standard Time", + "abbr": "AST", + "offset": 3, + "isdst": false, + "text": "(UTC+03:00) Baghdad", + "utc": [ + "Asia/Baghdad" + ] + }, + { + "value": "Kaliningrad Standard Time", + "abbr": "KST", + "offset": 3, + "isdst": false, + "text": "(UTC+02:00) Kaliningrad", + "utc": [ + "Europe/Kaliningrad" + ] + }, + { + "value": "Arab Standard Time", + "abbr": "AST", + "offset": 3, + "isdst": false, + "text": "(UTC+03:00) Kuwait, Riyadh", + "utc": [ + "Asia/Aden", + "Asia/Bahrain", + "Asia/Kuwait", + "Asia/Qatar", + "Asia/Riyadh" + ] + }, + { + "value": "E. Africa Standard Time", + "abbr": "EAST", + "offset": 3, + "isdst": false, + "text": "(UTC+03:00) Nairobi", + "utc": [ + "Africa/Addis_Ababa", + "Africa/Asmera", + "Africa/Dar_es_Salaam", + "Africa/Djibouti", + "Africa/Juba", + "Africa/Kampala", + "Africa/Khartoum", + "Africa/Mogadishu", + "Africa/Nairobi", + "Antarctica/Syowa", + "Etc/GMT-3", + "Indian/Antananarivo", + "Indian/Comoro", + "Indian/Mayotte" + ] + }, + { + "value": "Moscow Standard Time", + "abbr": "MSK", + "offset": 3, + "isdst": false, + "text": "(UTC+03:00) Moscow, St. Petersburg, Volgograd, Minsk", + "utc": [ + "Europe/Kirov", + "Europe/Moscow", + "Europe/Simferopol", + "Europe/Volgograd", + "Europe/Minsk" + ] + }, + { + "value": "Samara Time", + "abbr": "SAMT", + "offset": 4, + "isdst": false, + "text": "(UTC+04:00) Samara, Ulyanovsk, Saratov", + "utc": [ + "Europe/Astrakhan", + "Europe/Samara", + "Europe/Ulyanovsk" + ] + }, + { + "value": "Iran Standard Time", + "abbr": "IDT", + "offset": 4.5, + "isdst": true, + "text": "(UTC+03:30) Tehran", + "utc": [ + "Asia/Tehran" + ] + }, + { + "value": "Arabian Standard Time", + "abbr": "AST", + "offset": 4, + "isdst": false, + "text": "(UTC+04:00) Abu Dhabi, Muscat", + "utc": [ + "Asia/Dubai", + "Asia/Muscat", + "Etc/GMT-4" + ] + }, + { + "value": "Azerbaijan Standard Time", + "abbr": "ADT", + "offset": 5, + "isdst": true, + "text": "(UTC+04:00) Baku", + "utc": [ + "Asia/Baku" + ] + }, + { + "value": "Mauritius Standard Time", + "abbr": "MST", + "offset": 4, + "isdst": false, + "text": "(UTC+04:00) Port Louis", + "utc": [ + "Indian/Mahe", + "Indian/Mauritius", + "Indian/Reunion" + ] + }, + { + "value": "Georgian Standard Time", + "abbr": "GET", + "offset": 4, + "isdst": false, + "text": "(UTC+04:00) Tbilisi", + "utc": [ + "Asia/Tbilisi" + ] + }, + { + "value": "Caucasus Standard Time", + "abbr": "CST", + "offset": 4, + "isdst": false, + "text": "(UTC+04:00) Yerevan", + "utc": [ + "Asia/Yerevan" + ] + }, + { + "value": "Afghanistan Standard Time", + "abbr": "AST", + "offset": 4.5, + "isdst": false, + "text": "(UTC+04:30) Kabul", + "utc": [ + "Asia/Kabul" + ] + }, + { + "value": "West Asia Standard Time", + "abbr": "WAST", + "offset": 5, + "isdst": false, + "text": "(UTC+05:00) Ashgabat, Tashkent", + "utc": [ + "Antarctica/Mawson", + "Asia/Aqtau", + "Asia/Aqtobe", + "Asia/Ashgabat", + "Asia/Dushanbe", + "Asia/Oral", + "Asia/Samarkand", + "Asia/Tashkent", + "Etc/GMT-5", + "Indian/Kerguelen", + "Indian/Maldives" + ] + }, + { + "value": "Yekaterinburg Time", + "abbr": "YEKT", + "offset": 5, + "isdst": false, + "text": "(UTC+05:00) Yekaterinburg", + "utc": [ + "Asia/Yekaterinburg" + ] + }, + { + "value": "Pakistan Standard Time", + "abbr": "PKT", + "offset": 5, + "isdst": false, + "text": "(UTC+05:00) Islamabad, Karachi", + "utc": [ + "Asia/Karachi" + ] + }, + { + "value": "India Standard Time", + "abbr": "IST", + "offset": 5.5, + "isdst": false, + "text": "(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi", + "utc": [ + "Asia/Kolkata", + "Asia/Calcutta" + ] + }, + { + "value": "Sri Lanka Standard Time", + "abbr": "SLST", + "offset": 5.5, + "isdst": false, + "text": "(UTC+05:30) Sri Jayawardenepura", + "utc": [ + "Asia/Colombo" + ] + }, + { + "value": "Nepal Standard Time", + "abbr": "NST", + "offset": 5.75, + "isdst": false, + "text": "(UTC+05:45) Kathmandu", + "utc": [ + "Asia/Kathmandu" + ] + }, + { + "value": "Central Asia Standard Time", + "abbr": "CAST", + "offset": 6, + "isdst": false, + "text": "(UTC+06:00) Nur-Sultan (Astana)", + "utc": [ + "Antarctica/Vostok", + "Asia/Almaty", + "Asia/Bishkek", + "Asia/Qyzylorda", + "Asia/Urumqi", + "Etc/GMT-6", + "Indian/Chagos" + ] + }, + { + "value": "Bangladesh Standard Time", + "abbr": "BST", + "offset": 6, + "isdst": false, + "text": "(UTC+06:00) Dhaka", + "utc": [ + "Asia/Dhaka", + "Asia/Thimphu" + ] + }, + { + "value": "Myanmar Standard Time", + "abbr": "MST", + "offset": 6.5, + "isdst": false, + "text": "(UTC+06:30) Yangon (Rangoon)", + "utc": [ + "Asia/Rangoon", + "Indian/Cocos" + ] + }, + { + "value": "SE Asia Standard Time", + "abbr": "SAST", + "offset": 7, + "isdst": false, + "text": "(UTC+07:00) Bangkok, Hanoi, Jakarta", + "utc": [ + "Antarctica/Davis", + "Asia/Bangkok", + "Asia/Hovd", + "Asia/Jakarta", + "Asia/Phnom_Penh", + "Asia/Pontianak", + "Asia/Saigon", + "Asia/Vientiane", + "Etc/GMT-7", + "Indian/Christmas" + ] + }, + { + "value": "N. Central Asia Standard Time", + "abbr": "NCAST", + "offset": 7, + "isdst": false, + "text": "(UTC+07:00) Novosibirsk", + "utc": [ + "Asia/Novokuznetsk", + "Asia/Novosibirsk", + "Asia/Omsk" + ] + }, + { + "value": "China Standard Time", + "abbr": "CST", + "offset": 8, + "isdst": false, + "text": "(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi", + "utc": [ + "Asia/Hong_Kong", + "Asia/Macau", + "Asia/Shanghai" + ] + }, + { + "value": "North Asia Standard Time", + "abbr": "NAST", + "offset": 8, + "isdst": false, + "text": "(UTC+08:00) Krasnoyarsk", + "utc": [ + "Asia/Krasnoyarsk" + ] + }, + { + "value": "Singapore Standard Time", + "abbr": "MPST", + "offset": 8, + "isdst": false, + "text": "(UTC+08:00) Kuala Lumpur, Singapore", + "utc": [ + "Asia/Brunei", + "Asia/Kuala_Lumpur", + "Asia/Kuching", + "Asia/Makassar", + "Asia/Manila", + "Asia/Singapore", + "Etc/GMT-8" + ] + }, + { + "value": "W. Australia Standard Time", + "abbr": "WAST", + "offset": 8, + "isdst": false, + "text": "(UTC+08:00) Perth", + "utc": [ + "Antarctica/Casey", + "Australia/Perth" + ] + }, + { + "value": "Taipei Standard Time", + "abbr": "TST", + "offset": 8, + "isdst": false, + "text": "(UTC+08:00) Taipei", + "utc": [ + "Asia/Taipei" + ] + }, + { + "value": "Ulaanbaatar Standard Time", + "abbr": "UST", + "offset": 8, + "isdst": false, + "text": "(UTC+08:00) Ulaanbaatar", + "utc": [ + "Asia/Choibalsan", + "Asia/Ulaanbaatar" + ] + }, + { + "value": "North Asia East Standard Time", + "abbr": "NAEST", + "offset": 8, + "isdst": false, + "text": "(UTC+08:00) Irkutsk", + "utc": [ + "Asia/Irkutsk" + ] + }, + { + "value": "Japan Standard Time", + "abbr": "JST", + "offset": 9, + "isdst": false, + "text": "(UTC+09:00) Osaka, Sapporo, Tokyo", + "utc": [ + "Asia/Dili", + "Asia/Jayapura", + "Asia/Tokyo", + "Etc/GMT-9", + "Pacific/Palau" + ] + }, + { + "value": "Korea Standard Time", + "abbr": "KST", + "offset": 9, + "isdst": false, + "text": "(UTC+09:00) Seoul", + "utc": [ + "Asia/Pyongyang", + "Asia/Seoul" + ] + }, + { + "value": "Cen. Australia Standard Time", + "abbr": "CAST", + "offset": 9.5, + "isdst": false, + "text": "(UTC+09:30) Adelaide", + "utc": [ + "Australia/Adelaide", + "Australia/Broken_Hill" + ] + }, + { + "value": "AUS Central Standard Time", + "abbr": "ACST", + "offset": 9.5, + "isdst": false, + "text": "(UTC+09:30) Darwin", + "utc": [ + "Australia/Darwin" + ] + }, + { + "value": "E. Australia Standard Time", + "abbr": "EAST", + "offset": 10, + "isdst": false, + "text": "(UTC+10:00) Brisbane", + "utc": [ + "Australia/Brisbane", + "Australia/Lindeman" + ] + }, + { + "value": "AUS Eastern Standard Time", + "abbr": "AEST", + "offset": 10, + "isdst": false, + "text": "(UTC+10:00) Canberra, Melbourne, Sydney", + "utc": [ + "Australia/Melbourne", + "Australia/Sydney" + ] + }, + { + "value": "West Pacific Standard Time", + "abbr": "WPST", + "offset": 10, + "isdst": false, + "text": "(UTC+10:00) Guam, Port Moresby", + "utc": [ + "Antarctica/DumontDUrville", + "Etc/GMT-10", + "Pacific/Guam", + "Pacific/Port_Moresby", + "Pacific/Saipan", + "Pacific/Truk" + ] + }, + { + "value": "Tasmania Standard Time", + "abbr": "TST", + "offset": 10, + "isdst": false, + "text": "(UTC+10:00) Hobart", + "utc": [ + "Australia/Currie", + "Australia/Hobart" + ] + }, + { + "value": "Yakutsk Standard Time", + "abbr": "YST", + "offset": 9, + "isdst": false, + "text": "(UTC+09:00) Yakutsk", + "utc": [ + "Asia/Chita", + "Asia/Khandyga", + "Asia/Yakutsk" + ] + }, + { + "value": "Central Pacific Standard Time", + "abbr": "CPST", + "offset": 11, + "isdst": false, + "text": "(UTC+11:00) Solomon Is., New Caledonia", + "utc": [ + "Antarctica/Macquarie", + "Etc/GMT-11", + "Pacific/Efate", + "Pacific/Guadalcanal", + "Pacific/Kosrae", + "Pacific/Noumea", + "Pacific/Ponape" + ] + }, + { + "value": "Vladivostok Standard Time", + "abbr": "VST", + "offset": 11, + "isdst": false, + "text": "(UTC+11:00) Vladivostok", + "utc": [ + "Asia/Sakhalin", + "Asia/Ust-Nera", + "Asia/Vladivostok" + ] + }, + { + "value": "New Zealand Standard Time", + "abbr": "NZST", + "offset": 12, + "isdst": false, + "text": "(UTC+12:00) Auckland, Wellington", + "utc": [ + "Antarctica/McMurdo", + "Pacific/Auckland" + ] + }, + { + "value": "UTC+12", + "abbr": "U", + "offset": 12, + "isdst": false, + "text": "(UTC+12:00) Coordinated Universal Time+12", + "utc": [ + "Etc/GMT-12", + "Pacific/Funafuti", + "Pacific/Kwajalein", + "Pacific/Majuro", + "Pacific/Nauru", + "Pacific/Tarawa", + "Pacific/Wake", + "Pacific/Wallis" + ] + }, + { + "value": "Fiji Standard Time", + "abbr": "FST", + "offset": 12, + "isdst": false, + "text": "(UTC+12:00) Fiji", + "utc": [ + "Pacific/Fiji" + ] + }, + { + "value": "Magadan Standard Time", + "abbr": "MST", + "offset": 12, + "isdst": false, + "text": "(UTC+12:00) Magadan", + "utc": [ + "Asia/Anadyr", + "Asia/Kamchatka", + "Asia/Magadan", + "Asia/Srednekolymsk" + ] + }, + { + "value": "Kamchatka Standard Time", + "abbr": "KDT", + "offset": 13, + "isdst": true, + "text": "(UTC+12:00) Petropavlovsk-Kamchatsky - Old", + "utc": [ + "Asia/Kamchatka" + ] + }, + { + "value": "Tonga Standard Time", + "abbr": "TST", + "offset": 13, + "isdst": false, + "text": "(UTC+13:00) Nuku'alofa", + "utc": [ + "Etc/GMT-13", + "Pacific/Enderbury", + "Pacific/Fakaofo", + "Pacific/Tongatapu" + ] + }, + { + "value": "Samoa Standard Time", + "abbr": "SST", + "offset": 13, + "isdst": false, + "text": "(UTC+13:00) Samoa", + "utc": [ + "Pacific/Apia" + ] + } + ] +} +} \ No newline at end of file diff --git a/src/app/views/snippets/snippets-routing.module.ts b/src/app/views/snippets/snippets-routing.module.ts new file mode 100644 index 0000000..883afe5 --- /dev/null +++ b/src/app/views/snippets/snippets-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { SnippetsComponent } from './snippets.component'; + +const routes: Routes = [ + { + path: '', + component: SnippetsComponent, + data: { + title: $localize`Snippets` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class SnippetsRoutingModule { +} diff --git a/src/app/views/snippets/snippets.component.html b/src/app/views/snippets/snippets.component.html new file mode 100644 index 0000000..1a5ab88 --- /dev/null +++ b/src/app/views/snippets/snippets.component.html @@ -0,0 +1,130 @@ + + + + + + + Devices + + +
    + +
    +
    +
    +
    + + + + + + + + {{value}} + + + + + {{value}} + + + + + +
    {{value}}
    +
    +
    + + + + + + +
    +
    +
    +
    +
    + + + + + +
    Add New Snippet
    +
    Editing snippet {{current_snippet.name}}
    + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    +
    + + + + +
    + + + + + +
    Confirm delete {{ SelectedSnippet['name'] }}
    + +
    + + Are you sure that You want to delete following Snippet ? +
    +
    + + + + + + + + +
    Snippet name : {{ SelectedSnippet['name'] }} +
    +

    Warning: ALL Tasks related to this snippet Will be modifed or deleted and stop working!

    +
    +
    + + + + +
    + + + + + + + diff --git a/src/app/views/snippets/snippets.component.ts b/src/app/views/snippets/snippets.component.ts new file mode 100644 index 0000000..444df78 --- /dev/null +++ b/src/app/views/snippets/snippets.component.ts @@ -0,0 +1,214 @@ +import { Component, OnInit, OnDestroy, Inject, Renderer2, ViewChild, ElementRef, TemplateRef } from '@angular/core'; +import { UntypedFormControl, UntypedFormGroup } from '@angular/forms'; +import { dataProvider } from '../../providers/mikrowizard/data'; +import { Router } from "@angular/router"; +import { loginChecker } from '../../providers/login_checker'; +import { HttpClient, HttpClientModule, HttpParams } from '@angular/common/http'; +import { DOCUMENT } from '@angular/common'; +import { GuiCellView,GuiSearching, GuiSelectedRow, GuiInfoPanel, GuiColumn, GuiColumnMenu, GuiDataType, GuiPaging, GuiPagingDisplay, GuiRowColoring, GuiRowSelectionMode, GuiRowSelection, GuiRowSelectionType } from '@generic-ui/ngx-grid'; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: 'snippets.component.html', +}) + +export class SnippetsComponent implements OnInit, OnDestroy { + public uid: number; + public uname: string; + + constructor( + private data_provider: dataProvider, + private router: Router, + private login_checker: loginChecker, + private renderer: Renderer2, + private httpClient: HttpClient, + @Inject(DOCUMENT) _document?: any, + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + // setTimeout(function() { + // _self.router.navigate(['login']); + // }, 100); + } + this.data_provider.getSessionInfo().then(res => { + // console.dir("res",res) + _self.uid = res.uid; + _self.uname = res.name; + // console.dir("role",res.role); + const userId = _self.uid; + + if (res.role != "admin") { + // console.dir(res.role); + setTimeout(function () { + _self.router.navigate(['/user/dashboard']); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + @ViewChild('nameSummaryCell') + nameSummaryCell: TemplateRef; + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public rows: any=[]; + public Selectedrows: any; + public EditModalVisible:boolean=false; + public ModalAction:string="checkfirm"; + public lineNum:number=0; + public DeleteConfirmModalVisible:boolean = false; + public SelectedSnippet:any={'name':'',}; + + public current_snippet:any={ + "content": "", + "created": "", + "description": "", + "id": 0, + "name": "" + }; + + public default_snippet:any={ + "content": "", + "created": "", + "description": "", + "id": 0, + "name": "" + }; + + public sorting = { + enabled: true, + multiSorting: true + }; + + public ip_scanner:any; + + searching: GuiSearching = { + enabled: true, + placeholder: 'Search Devices' + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + + + ngOnInit(): void { + this.initGridTable(); + } + + confirm_delete(item: any="",del:boolean=false) { + if (!del){ + this.SelectedSnippet={...item}; + this.DeleteConfirmModalVisible = true; + console.dir(this.SelectedSnippet); + } + else{ + var _self=this; + this.data_provider.delete_snippet(_self.SelectedSnippet['id']).then(res => { + _self.initGridTable(); + _self.DeleteConfirmModalVisible = false; + }); + + } + + } + + Edit_Snippet(item: any,action:string="showadd") { + + if(action=="showadd"){ + this.current_snippet={...this.default_snippet}; + this.EditModalVisible=true; + this.ModalAction="add"; + } + else{ + this.current_snippet=item; + this.EditModalVisible=true; + this.lineNum = this.current_snippet['content'].match(/\n/g) .length ; + + this.ModalAction="edit"; + } + + } + + calcline($ev:any){ + if($ev) + this.lineNum = $ev.match(/\n/g) .length ; + else + this.lineNum = 0; + } + + save_snippet(){ + this.data_provider.save_snippet(this.current_snippet).then(res =>{ + this.EditModalVisible=false; + this.initGridTable(); + }) + } + + onSelectedRows(rows: Array): void { + this.rows = rows; + this.Selectedrows = rows.map((m: GuiSelectedRow) => m.source.id); + } + + remove(item: any) { + console.dir(item); + } + + logger(item: any) { + console.dir(item) + } + + initGridTable(): void { + var _self=this; + _self.data_provider.get_snippets("","","",0,1000).then(res => { + _self.source =res.map( (x:any) => { + x.created = [x.created.split("T")[0],x.created.split("T")[1].split(".")[0]].join(" ") + return x; + + }); + _self.loading = false; + }); + } + + + ngOnDestroy(): void { + } +} diff --git a/src/app/views/snippets/snippets.module.ts b/src/app/views/snippets/snippets.module.ts new file mode 100644 index 0000000..f980206 --- /dev/null +++ b/src/app/views/snippets/snippets.module.ts @@ -0,0 +1,34 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { FormsModule } from "@angular/forms"; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + ToastModule, + ModalModule, +} from "@coreui/angular"; +import { SnippetsRoutingModule } from "./snippets-routing.module"; +import { SnippetsComponent } from "./snippets.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; + +@NgModule({ + imports: [ + SnippetsRoutingModule, + CardModule, + CommonModule, + GridModule, + FormModule, + ButtonModule, + ButtonGroupModule, + GuiGridModule, + ModalModule, + ToastModule, + FormsModule, + ], + declarations: [SnippetsComponent], +}) +export class SnippetsModule {} diff --git a/src/app/views/syslog/syslog-routing.module.ts b/src/app/views/syslog/syslog-routing.module.ts new file mode 100644 index 0000000..dc207f4 --- /dev/null +++ b/src/app/views/syslog/syslog-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { SyslogComponent } from './syslog.component'; + +const routes: Routes = [ + { + path: '', + component: SyslogComponent, + data: { + title: $localize`Mikrowizard System Logs` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class SyslogRoutingModule { +} diff --git a/src/app/views/syslog/syslog.component.html b/src/app/views/syslog/syslog.component.html new file mode 100644 index 0000000..6be0bf3 --- /dev/null +++ b/src/app/views/syslog/syslog.component.html @@ -0,0 +1,104 @@ + + + + + + + Devices + + + + + + + + +
    + + + Start date + + + + + + End date + + + + + + Select section + + All + + {{sec}} + + + + + Select action + + All + + {{ac}} + + + + + IP + + + + +
    + +
    + + + + {{ value }} + + + + + +
    + {{ value }} + {{ item.first_name }} {{ item.last_name }} +
    +
    +
    + + + {{ value }} + + + + + {{ value }} + + + + + {{ value }} + + + + + {{ value }} + + +
    + +
    +
    +
    +
    \ No newline at end of file diff --git a/src/app/views/syslog/syslog.component.scss b/src/app/views/syslog/syslog.component.scss new file mode 100644 index 0000000..6d6d0be --- /dev/null +++ b/src/app/views/syslog/syslog.component.scss @@ -0,0 +1,128 @@ +@use '@angular/material' as mat; + +:host { + .legend { + small { + font-size: x-small; + } + } +} +// .gui-drawer-content{ +// background-color: #efefef!important; + +// } +.log-detail{ +padding:30px 10px; +box-sizing:border-box; +} +.log-detail h1{ +font-size:2em; +font-weight:bold; +margin:0; +padding:0; +} +.log-detail small{ +position:relative; +top:-7px; +padding:0; +font-weight:bold; +font-size:1.1em; +} +.log-detail table { +width: 100%; +border-collapse: collapse!important; +margin: 5px 0 0 0; +padding: 0; +background-color: #ffffff29 !important; +color: #000; +} +.log-detail th { +text-align: left; +} +.log-detail th, +.log-detail td { +border: 1px solid #ffffff4a!important; +padding: 0.3rem!important; +} +.gui-close-icon-wrapper .gui-close-icon:after,.gui-close-icon-wrapper .gui-close-icon:before { + background-color: #ffffff !important; + +} +.log-detail code{ + padding:5px!important; + display:block; + background:#1d1f21; + color:#c5c8c6; + border-bottom-left-radius:3px; + border-bottom-right-radius:3px; + width:100%; + min-height: unset!important; + height: 100px!important; + overflow-y: scroll!important; +} + +.log-detail .code-title{ + background-color:#393e42!important;; + width:100%; + padding:2px 15px; + display:inline-block; + margin-top:10px; + color:#d2d2d2; + border-top-left-radius:3px; + border-top-right-radius:3px; + font-weight:bold; +} + +.gui-row-detail{ + height:100%; +} + +.gui-dev-info { + display: inline-flex; + flex-direction: column; + align-items: stretch; + align-content: center; + justify-content: center; + white-space: normal; + line-height: 17px; +} + +.gui-dev-info-name { + font-weight: bold; +} + +.gui-dev-info-ip { + color: #525252; + font-style: italic; + font-size: 13px; + overflow: hidden; +} +.gui-row-detail > div{ + height:100%; +} +.gui-row-detail .log-detail{ + height:100%; +} + +.gui-structure{ + min-height: 550px; +} + + +.example-form { + @include mat.button-density(-5); + + @include mat.form-field-density(-5); + @include mat.button-toggle-density(-5); + @include mat.datepicker-density(-5); + @include mat.all-component-densities(-5); + @include mat.icon-button-density(-5); + @include mat.icon-density(-5); + .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label { display: inline; } + mat-form-field *{ + font-size:13px!important; + } + .mat-mdc-form-field-infix{ + width:150px; + } +} \ No newline at end of file diff --git a/src/app/views/syslog/syslog.component.ts b/src/app/views/syslog/syslog.component.ts new file mode 100644 index 0000000..9586b29 --- /dev/null +++ b/src/app/views/syslog/syslog.component.ts @@ -0,0 +1,204 @@ +import { Component, OnInit, ViewEncapsulation } from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router, ActivatedRoute } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiRowDetail, + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { formatInTimeZone } from "date-fns-tz"; + + +@Component({ + templateUrl: "syslog.component.html", + styleUrls: ["syslog.component.scss"], + encapsulation: ViewEncapsulation.None, +}) +export class SyslogComponent implements OnInit { + public uid: number; + public uname: string; + public tz: string= "UTC"; + public filterText: string; + public filters: any = { + start_time: false, + end_time: false, + section: "All", + action: "All", + ip: "", + }; + public event_section: any = []; + public event_action: any = []; + public filters_visible: boolean = false; + constructor( + private data_provider: dataProvider, + private router: Router, + private route: ActivatedRoute, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + _self.tz = res.tz; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public rows: any = []; + public Selectedrows: any; + public userid: number = 0; + public sorting = { + enabled: true, + multiSorting: true, + }; + public campaignOnestart: any; + public campaignOneend: any; + rowDetail: GuiRowDetail = { + enabled: true, + template: (item) => { + return ` +
    +

    System Log :

    + + + + + + + + + + + + + +
    Section${item.section}
    Action${item.action}
    Time${item.created}
    +

    User Detail : +

    + + + + + + + + + + + + + + + + + + + + + +
    User${item.username}
    FirstName${item.first_name}
    LastName${item.last_name}
    IP${item.ip}
    Agent
    ${item.agent}
    +
    data
    + + ${item.data} + +
    `; + }, + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + ngOnInit(): void { + var _self = this; + this.userid = Number(this.route.snapshot.paramMap.get("userid")); + if (this.userid > 0) { + this.filters["userid"] = this.userid; + } + this.initGridTable(); + } + toggleCollapse(): void { + this.filters_visible = !this.filters_visible; + } + logger(item: any) { + console.dir(item); + } + reinitgrid(field: string, $event: any) { + if (field == "start") this.filters["start_time"] = $event.target.value; + else if (field == "end") this.filters["end_time"] = $event.target.value; + else if (field == "section") this.filters["section"] = $event; + else if (field == "action") this.filters["action"] = $event; + else if (field == "ip") this.filters["ip"] = $event; + this.initGridTable(); + } + initGridTable(): void { + var _self = this; + _self.event_section = []; + _self.event_action = []; + this.data_provider.get_syslog(this.filters).then((res) => { + let index = 1; + this.source = res.map((d: any) => { + d.index = index; + if (!_self.event_section.includes(d.section)) + _self.event_section.push(d.section); + + if (!_self.event_action.includes(d.action)) + _self.event_action.push(d.action); + d.created = formatInTimeZone( + d.created.split(".")[0] + ".000Z", + _self.tz, + "yyyy-MM-dd HH:mm:ss XXX" + ); + index += 1; + return d; + }); + this.loading = false; + }); + } +} diff --git a/src/app/views/syslog/syslog.module.ts b/src/app/views/syslog/syslog.module.ts new file mode 100644 index 0000000..36be911 --- /dev/null +++ b/src/app/views/syslog/syslog.module.ts @@ -0,0 +1,41 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; + +import { + ButtonModule, + CardModule, + GridModule, + CollapseModule, + DropdownModule, +} from "@coreui/angular"; +import { NgxMatSelectSearchModule } from "ngx-mat-select-search"; +import { SyslogRoutingModule } from "./syslog-routing.module"; +import { SyslogComponent } from "./syslog.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; +import { MatDatepickerModule } from "@angular/material/datepicker"; +import { MatInputModule } from "@angular/material/input"; +import { MatFormFieldModule } from "@angular/material/form-field"; +import { FormsModule } from "@angular/forms"; + +import { MatSelectModule } from "@angular/material/select"; + +@NgModule({ + imports: [ + SyslogRoutingModule, + CardModule, + CommonModule, + GridModule, + FormsModule, + ButtonModule, + GuiGridModule, + CollapseModule, + DropdownModule, + MatInputModule, + MatFormFieldModule, + MatSelectModule, + NgxMatSelectSearchModule, + MatDatepickerModule, + ], + declarations: [SyslogComponent], +}) +export class SyslogModule {} diff --git a/src/app/views/toast-simple/toast-sample-icon.component.svg b/src/app/views/toast-simple/toast-sample-icon.component.svg new file mode 100644 index 0000000..64a6cdc --- /dev/null +++ b/src/app/views/toast-simple/toast-sample-icon.component.svg @@ -0,0 +1,11 @@ + + + diff --git a/src/app/views/toast-simple/toast-sample-icon.component.ts b/src/app/views/toast-simple/toast-sample-icon.component.ts new file mode 100644 index 0000000..e55408b --- /dev/null +++ b/src/app/views/toast-simple/toast-sample-icon.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'toast-sample-icon', + templateUrl: './toast-sample-icon.component.svg', +}) +export class ToastSampleIconComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/views/toast-simple/toast.component.html b/src/app/views/toast-simple/toast.component.html new file mode 100644 index 0000000..25e5806 --- /dev/null +++ b/src/app/views/toast-simple/toast.component.html @@ -0,0 +1,12 @@ + + + + + + {{ title }} + + +

    {{ body }}

    + +
    +
    diff --git a/src/app/views/toast-simple/toast.component.scss b/src/app/views/toast-simple/toast.component.scss new file mode 100644 index 0000000..20947d5 --- /dev/null +++ b/src/app/views/toast-simple/toast.component.scss @@ -0,0 +1,4 @@ +:host { + display: block; + overflow: hidden; +} diff --git a/src/app/views/toast-simple/toast.component.spec.ts b/src/app/views/toast-simple/toast.component.spec.ts new file mode 100644 index 0000000..d512040 --- /dev/null +++ b/src/app/views/toast-simple/toast.component.spec.ts @@ -0,0 +1,34 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; + +import { ButtonModule, ProgressModule, ToastModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../../icons/icon-subset'; +import { AppToastComponent } from './toast.component'; + +describe('ToastComponent', () => { + let component: AppToastComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [NoopAnimationsModule, ToastModule, ProgressModule, ButtonModule, AppToastComponent], + providers: [IconSetService] +}) + .compileComponents(); + })); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(AppToastComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/toast-simple/toast.component.ts b/src/app/views/toast-simple/toast.component.ts new file mode 100644 index 0000000..c68f6db --- /dev/null +++ b/src/app/views/toast-simple/toast.component.ts @@ -0,0 +1,28 @@ +import { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, Renderer2 } from '@angular/core'; + +import { ToastComponent, ToasterService, ToastHeaderComponent, ToastBodyComponent, ToastCloseDirective, ProgressComponent } from '@coreui/angular'; +import { CommonModule } from '@angular/common'; + +@Component({ + selector: 'app-toast-simple', + templateUrl: './toast.component.html', + styleUrls: ['./toast.component.scss'], + providers: [{ provide: ToastComponent, useExisting: forwardRef(() => AppToastComponent) }], + standalone: true, + imports: [ToastHeaderComponent, ToastBodyComponent, ToastCloseDirective, ProgressComponent,CommonModule] +}) +export class AppToastComponent extends ToastComponent { + + @Input() closeButton = true; + @Input() title = ''; + @Input() body = ''; + + constructor( + public override hostElement: ElementRef, + public override renderer: Renderer2, + public override toasterService: ToasterService, + public override changeDetectorRef: ChangeDetectorRef + ) { + super(hostElement, renderer, toasterService, changeDetectorRef); + } +} diff --git a/src/app/views/user_manager/user_manager-routing.module.ts b/src/app/views/user_manager/user_manager-routing.module.ts new file mode 100644 index 0000000..16235f7 --- /dev/null +++ b/src/app/views/user_manager/user_manager-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { UserManagerComponent } from './user_manager.component'; + +const routes: Routes = [ + { + path: '', + component: UserManagerComponent, + data: { + title: $localize`User Managment` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class UserManagerRoutingModule { +} diff --git a/src/app/views/user_manager/user_manager.component.html b/src/app/views/user_manager/user_manager.component.html new file mode 100644 index 0000000..0894f5d --- /dev/null +++ b/src/app/views/user_manager/user_manager.component.html @@ -0,0 +1,261 @@ + + + + + + + Users + + + + + + + + + + +   {{value}} + + + + {{value}} + + + + + {{value}} + + + + + {{value}} + + + + + + + + + + + + + + + + + + +
    Editing User {{SelectedUser['name']}}
    +
    Adding new User
    + +
    + +
    + + +
    + + + First Name + + + Last Name + + + +
    + + +
    + +
    + + +
    + + + +
    MikroWizard permisssions :
    + + + + + + + + + + + + + + + + + +
    + +
    Mikrotik permisssions :
    + + + +   {{value}} + + + + {{value}} + + + + + + + + +
    +
    + + + + + +
    + Add new Permission + + + + + + + + {{group.name}} + + + + + + + + + + + {{perm.name}} + + + + + + + +
    + +
    + + + + + + +
    + + + + +
    Confirm delete {{ SelectedUser['name'] }}
    + +
    + + Are you sure that You want to delete following task ? +
    +
    + + + + + + + + + + + + + +
    User name : {{ SelectedUser['username'] }}
    Name : {{ SelectedUser['first_name'] }}
    Last Name : {{ SelectedUser['last_name'] }}
    +
    +

    + All Related data will be deleted :
    + * User Permision Related to this user
    + * All Logs related to this user
    +

    +
    + + + + +
    + + + +
    Confirm delete {{ SelectedUser['name'] }}
    + +
    + + Are you sure that You want to delete following task ? +
    +
    + + + + + + + + + + + + + +
    Taks name : {{ SelectedUser['name'] }}
    Description : {{ SelectedUser['description'] }}
    Cron exec : {{ SelectedUser['desc_cron'] }}
    +
    + + + + +
    + + + \ No newline at end of file diff --git a/src/app/views/user_manager/user_manager.component.ts b/src/app/views/user_manager/user_manager.component.ts new file mode 100644 index 0000000..9c11153 --- /dev/null +++ b/src/app/views/user_manager/user_manager.component.ts @@ -0,0 +1,296 @@ +import { Component, OnInit, QueryList, ViewChildren } from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiGridComponent, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { NgxSuperSelectOptions } from "ngx-super-select"; +import { AppToastComponent } from "../toast-simple/toast.component"; +import { ToasterComponent } from "@coreui/angular"; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "user_manager.component.html", +}) +export class UserManagerComponent implements OnInit { + public uid: number; + public uname: string; + gridComponent: GuiGridComponent; + toasterForm = { + autohide: true, + delay: 10000, + position: "fixed", + fade: true, + closeButton: true, + }; + + constructor( + private data_provider: dataProvider, + private router: Router, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + @ViewChildren(ToasterComponent) viewChildren!: QueryList; + public source: Array = []; + public columns: Array = []; + public loading: boolean = false; + public rows: any = []; + public SelectedUser: any = {}; + public SelectedUserItems: string = ""; + public EditTaskModalVisible: boolean = false; + public DeleteConfirmModalVisible: boolean = false; + public Members: any = ""; + + public devgroup: any = {}; + public permission: any = {}; + public allDevGroups: any = []; + public allPerms: any = []; + public DeletePermConfirmModalVisible: boolean = false; + public userperms: any = {}; + public adminperms: { [index: string]: string }; + public defadminperms: { [index: string]: string } = { + device: "none", + device_group: "none", + task: "none", + backup: "none", + snippet: "none", + accounting: "none", + authentication: "none", + users: "none", + permissions: "none", + settings: "none", + system_backup: "none", + }; + + public sorting = { + enabled: true, + multiSorting: true, + }; + + options: Partial = { + actionsEnabled: false, + displayExpr: "name", + valueExpr: "id", + placeholder: "Members", + searchEnabled: true, + enableDarkMode: false, + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + setRadioValue(key: string, value: string): void { + this.adminperms[key] = value; + } + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + + ngOnInit(): void { + this.initGridTable(); + } + + show_toast(title: string, body: string, color: string) { + const { ...props } = { ...this.toasterForm, color, title, body }; + const componentRef = this.viewChildren.first.addToast( + AppToastComponent, + props, + {} + ); + componentRef.instance["closeButton"] = props.closeButton; + } + + submit(action: string) { + var _self = this; + if (action == "add") { + if (_self.SelectedUser["role"] == "admin") { + _self.adminperms = { ..._self.defadminperms }; + if (_self.userperms.length > 0) { + _self.SelectedUser["userperms"] = _self.userperms; + } else { + _self.SelectedUser["userperms"] = []; + } + } + _self.SelectedUser["adminperms"] = _self.adminperms; + this.data_provider.create_user(_self.SelectedUser).then((res) => { + if ("id" in res && !("status" in res)) { + _self.initGridTable(); + this.EditTaskModalVisible = false; + } else { + //show error + _self.show_toast("Error", res.err, "danger"); + } + }); + } else { + _self.SelectedUser["adminperms"] = _self.adminperms; + this.data_provider.edit_user(_self.SelectedUser).then((res) => { + _self.initGridTable(); + _self.EditTaskModalVisible = false; + }); + } + // + } + + editAddUser(item: any, action: string) { + var _self = this; + this.data_provider.get_perms(1, 1000, "").then((res) => { + _self.allPerms = res.map((x: any) => { + return { id: x["id"], name: x.name }; + }); + _self.data_provider.get_devgroup_list().then((res) => { + _self.allDevGroups = res.map((x: any) => { + return { id: x["id"], name: x.name }; + }); + }); + }); + if (action == "showadd") { + this.userperms = []; + this.SelectedUser = { + email: "", + first_name: "", + fullname: "", + last_name: "", + role: "admin", + password: "", + action: "add", + }; + this.adminperms = { ...this.defadminperms }; + this.EditTaskModalVisible = true; + return; + } + this.SelectedUser = { ...item }; + if (this.SelectedUser["adminperms"].length > 0) { + this.adminperms = JSON.parse(this.SelectedUser["adminperms"]); + } else this.adminperms = { ...this.defadminperms }; + _self.SelectedUser["action"] = "edit"; + _self.get_user_perms(_self.SelectedUser["id"]); + _self.EditTaskModalVisible = true; + } + + add_user_perm() { + var _self = this; + this.data_provider + .Add_user_perm( + this.SelectedUser["id"], + this.permission["id"], + this.devgroup["id"] + ) + .then((res) => { + _self.get_user_perms(_self.SelectedUser["id"]); + _self.permission = 0; + _self.devgroup = 0; + }); + } + + add_new_user_perm() { + var _self = this; + const userperms = [..._self.userperms]; + userperms.push({ + group_id: this.devgroup["id"], + group_name: this.devgroup["name"], + perm_id: this.permission["id"], + perm_name: this.permission["name"], + }); + this.userperms = userperms; + } + + confirm_delete(item: any = "", del: boolean = false) { + if (!del) { + this.SelectedUser = { ...item }; + this.DeleteConfirmModalVisible = true; + } else { + var _self = this; + this.data_provider.delete_user(_self.SelectedUser["id"]).then((res) => { + _self.initGridTable(); + _self.DeleteConfirmModalVisible = false; + }); + } + } + + get_user_perms(uid: string) { + if (this.SelectedUser["action"] == "add") return; + var _self = this; + this.data_provider.user_perms(uid).then((res) => { + _self.userperms = res; + }); + } + + confirm_delete_perm(item: any) { + this.data_provider.Delete_user_perm(item.id).then((res) => { + this.get_user_perms(this.SelectedUser["id"]); + }); + } + logger(item: any) { + console.dir(item); + } + + initGridTable(): void { + var _self = this; + var page = 1; + var pageSize = 10; + var searchstr = ""; + this.data_provider.get_users(page, pageSize, searchstr).then((res) => { + _self.source = res.map((x: any) => { + return x; + }); + _self.SelectedUser = {}; + _self.loading = false; + }); + } +} diff --git a/src/app/views/user_manager/user_manager.module.ts b/src/app/views/user_manager/user_manager.module.ts new file mode 100644 index 0000000..f80c910 --- /dev/null +++ b/src/app/views/user_manager/user_manager.module.ts @@ -0,0 +1,39 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { FormsModule } from "@angular/forms"; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + ModalModule, + ToastModule, +} from "@coreui/angular"; +import { MatSelectModule } from "@angular/material/select"; +import { NgxMatSelectSearchModule } from "ngx-mat-select-search"; + +import { UserManagerRoutingModule } from "./user_manager-routing.module"; +import { UserManagerComponent } from "./user_manager.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; + +@NgModule({ + imports: [ + MatSelectModule, + NgxMatSelectSearchModule, + UserManagerRoutingModule, + CardModule, + CommonModule, + GridModule, + FormModule, + ButtonModule, + ButtonGroupModule, + GuiGridModule, + ModalModule, + FormsModule, + ToastModule, + ], + declarations: [UserManagerComponent], +}) +export class UserManagerModule {} diff --git a/src/app/views/user_tasks/user_tasks-routing.module.ts b/src/app/views/user_tasks/user_tasks-routing.module.ts new file mode 100644 index 0000000..8494e52 --- /dev/null +++ b/src/app/views/user_tasks/user_tasks-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { UserTasksComponent } from './user_tasks.component'; + +const routes: Routes = [ + { + path: '', + component: UserTasksComponent, + data: { + title: $localize`System Tasks` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class UserTasksRoutingModule { +} diff --git a/src/app/views/user_tasks/user_tasks.component.html b/src/app/views/user_tasks/user_tasks.component.html new file mode 100644 index 0000000..b99ab5f --- /dev/null +++ b/src/app/views/user_tasks/user_tasks.component.html @@ -0,0 +1,268 @@ + + + + + + + Tasks + + + + + + + + + + + +   {{value}} + + + + {{value}} + + + + + {{value}} + + + + + + {{value}} + + + + + + + + + + + + + + + + + + + + +
    Editing device {{SelectedTask['name']}}
    +
    Adding new task
    + +
    + +
    + + +
    + +
    + + +
    + + + + + + + + + + +
    + + +
    + + + + + + +
    Members :
    + + + +   {{value}} + + + + {{value}} + + + + + + + + +
    + + + + + + +
    + + + + + +
    + + + + +
    Editing Group
    + +
    + + +
    Group Members :
    + + + +   {{value}} + + + + {{value}} + + + + + {{value}} + + + +
    +
    +
    +
    + + + + + +
    + + + + +
    Confirm delete {{ SelectedTask['name'] }}
    + +
    + + Are you sure that You want to delete following task ? +
    +
    + + + + + + + + + + +
    Taks name : {{ SelectedTask['name'] }}
    Description : {{ SelectedTask['description'] }}
    Cron exec : {{ SelectedTask['desc_cron'] }}
    +
    + + + + +
    + + + + + +
    Confirm RUN {{ SelectedTask['name'] }}
    + +
    + + Are you sure that You want to run following task ? +
    +
    + + + + + + + + + + +
    Taks name : {{ SelectedTask['name'] }}
    Description : {{ SelectedTask['description'] }}
    Cron exec : {{ SelectedTask['desc_cron'] }}
    +
    + + + + +
    diff --git a/src/app/views/user_tasks/user_tasks.component.ts b/src/app/views/user_tasks/user_tasks.component.ts new file mode 100644 index 0000000..a9a6814 --- /dev/null +++ b/src/app/views/user_tasks/user_tasks.component.ts @@ -0,0 +1,306 @@ +import { Component, OnInit, OnDestroy } from "@angular/core"; +import { dataProvider } from "../../providers/mikrowizard/data"; +import { Router } from "@angular/router"; +import { loginChecker } from "../../providers/login_checker"; +import { + GuiSelectedRow, + GuiSearching, + GuiInfoPanel, + GuiColumn, + GuiColumnMenu, + GuiPaging, + GuiPagingDisplay, + GuiRowSelectionMode, + GuiRowSelection, + GuiRowSelectionType, +} from "@generic-ui/ngx-grid"; +import { NgxSuperSelectOptions } from "ngx-super-select"; +import { _getFocusedElementPierceShadowDom } from "@angular/cdk/platform"; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: "user_tasks.component.html", +}) +export class UserTasksComponent implements OnInit { + public uid: number; + public uname: string; + + constructor( + private data_provider: dataProvider, + private router: Router, + private login_checker: loginChecker + ) { + var _self = this; + if (!this.login_checker.isLoggedIn()) { + setTimeout(function () { + _self.router.navigate(["login"]); + }, 100); + } + this.data_provider.getSessionInfo().then((res) => { + _self.uid = res.uid; + _self.uname = res.name; + const userId = _self.uid; + + if (res.role != "admin") { + setTimeout(function () { + _self.router.navigate(["/user/dashboard"]); + }, 100); + } + }); + //get datagrid data + function isNotEmpty(value: any): boolean { + return value !== undefined && value !== null && value !== ""; + } + } + public source: Array = []; + public columns: Array = []; + public loading: boolean = true; + public rows: any = []; + public SelectedTask: any = {}; + public SelectedTaskItems: any = ""; + public runConfirmModalVisible: boolean = false; + public EditTaskModalVisible: boolean = false; + public DeleteConfirmModalVisible: boolean = false; + public Members: any = ""; + public Snippets: any; + public SelectedMembers: any = []; + public NewMemberModalVisible: boolean = false; + public availbleMembers: any = []; + public NewMemberRows: any = []; + public SelectedNewMemberRows: any; + + public sorting = { + enabled: true, + multiSorting: true, + }; + searching: GuiSearching = { + enabled: true, + placeholder: "Search Devices", + }; + + options: Partial = { + selectionMode: "single", + actionsEnabled: false, + displayExpr: "name", + valueExpr: "id", + placeholder: "Snippet", + searchEnabled: true, + enableDarkMode: false, + }; + + public paging: GuiPaging = { + enabled: true, + page: 1, + pageSize: 10, + pageSizes: [5, 10, 25, 50], + display: GuiPagingDisplay.ADVANCED, + }; + + public columnMenu: GuiColumnMenu = { + enabled: true, + sort: true, + columnsManager: true, + }; + + public infoPanel: GuiInfoPanel = { + enabled: true, + infoDialog: false, + columnsManager: true, + schemaManager: true, + }; + + public rowSelection: boolean | GuiRowSelection = { + enabled: true, + type: GuiRowSelectionType.CHECKBOX, + mode: GuiRowSelectionMode.MULTIPLE, + }; + + show_new_member_form() { + this.NewMemberModalVisible = true; + var _self = this; + _self.availbleMembers = []; + this.SelectedNewMemberRows = []; + this.NewMemberRows = []; + + var data = { + group_id: false, + search: false, + page: false, + size: 10000, + }; + + if (this.SelectedTask["selection_type"] == "devices") + _self.data_provider.get_dev_list(data).then((res) => { + _self.availbleMembers = res.filter( + (x: any) => !_self.SelectedTaskItems.includes(x.id) + ); + _self.NewMemberModalVisible = true; + }); + else + _self.data_provider.get_devgroup_list().then((res) => { + _self.availbleMembers = res.filter( + (x: any) => !_self.SelectedTaskItems.includes(x.id) + ); + _self.NewMemberModalVisible = true; + }); + } + + ngOnInit(): void { + this.initGridTable(); + } + + submit(action: string) { + var _self = this; + if (action == "add") { + this.data_provider + .Add_task(_self.SelectedTask, _self.SelectedTaskItems) + .then((res) => { + _self.initGridTable(); + }); + } else { + this.data_provider + .Edit_task(_self.SelectedTask, _self.SelectedTaskItems) + .then((res) => { + _self.initGridTable(); + }); + } + this.EditTaskModalVisible = false; + } + + onSelectedRowsNewMembers(rows: Array): void { + this.NewMemberRows = rows; + this.SelectedNewMemberRows = rows.map((m: GuiSelectedRow) => m.source); + } + + add_new_members() { + var _self = this; + _self.SelectedMembers = [ + ...new Set(_self.SelectedMembers.concat(_self.SelectedNewMemberRows)), + ]; + + _self.SelectedTaskItems = _self.SelectedMembers.map((x: any) => { + return x.id; + }); + + this.NewMemberModalVisible = false; + } + + editAddTask(item: any, action: string) { + if (action == "showadd") { + this.SelectedTask = { + id: 0, + action: "add", + taskcron: "* * * * *", + desc_cron: "", + description: "", + members: "", + name: "", + selection_type: "devices", + snippetid: "", + task_type: "backup", + }; + this.SelectedMembers = []; + this.SelectedTaskItems = []; + this.EditTaskModalVisible = true; + return; + } + + var _self = this; + this.SelectedTask = { ...item }; + _self.data_provider.get_snippets("", "", "", 0, 1000).then((res) => { + _self.Snippets = res.map((x: any) => { + return { id: x.id, name: x.name }; + }); + }); + if (action != "select_change") { + this.SelectedTask["action"] = "edit"; + this.data_provider.get_task_members(_self.SelectedTask.id).then((res) => { + _self.SelectedMembers = res; + _self.EditTaskModalVisible = true; + _self.SelectedTaskItems = res.map((x: any) => { + return x.id; + }); + }); + } else { + _self.SelectedMembers = []; + this.SelectedTaskItems = []; + } + } + + remove_member(item: any) { + var _self = this; + _self.SelectedMembers = _self.SelectedMembers.filter( + (x: any) => x.id != item.id + ); + _self.SelectedTaskItems = _self.SelectedMembers.map((x: any) => { + return x.id; + }); + } + onSelectValueChanged($event: any) { + this.SelectedTask["snippetid"] = $event; + } + onSnippetsValueChanged(v: any) { + var _self = this; + if (v == "" || v.length < 3) return; + _self.data_provider.get_snippets(v, "", "", 0, 1000).then((res) => { + _self.Snippets = res.map((x: any) => { + return { id: String(x.id), name: x.name }; + }); + }); + } + + get_member_by_id(id: string) { + return this.Members.find((x: any) => x.id == id); + } + + confirm_delete(item: any = "", del: boolean = false) { + if (!del) { + this.SelectedTask = { ...item }; + this.DeleteConfirmModalVisible = true; + } else { + var _self = this; + this.data_provider.Delete_task(_self.SelectedTask["id"]).then((res) => { + _self.initGridTable(); + _self.DeleteConfirmModalVisible = false; + }); + } + } + + form_changed() { + this.editAddTask(this.SelectedTask, "select_change"); + } + + confirm_run(item: any) { + this.SelectedTask = { ...item }; + this.DeleteConfirmModalVisible = true; + } + runTask() { + console.dir(this.SelectedTask); + } + logger(item: any) { + console.dir(item); + } + + initGridTable(): void { + var _self = this; + this.data_provider.get_user_task_list().then((res) => { + _self.source = res.map((x: any) => { + return x; + }); + _self.loading = false; + }); + } +} diff --git a/src/app/views/user_tasks/user_tasks.module.ts b/src/app/views/user_tasks/user_tasks.module.ts new file mode 100644 index 0000000..1bc59f2 --- /dev/null +++ b/src/app/views/user_tasks/user_tasks.module.ts @@ -0,0 +1,33 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { FormsModule } from "@angular/forms"; + +import { + ButtonModule, + CardModule, + FormModule, + GridModule, + ModalModule, +} from "@coreui/angular"; +import { UserTasksRoutingModule } from "./user_tasks-routing.module"; +import { UserTasksComponent } from "./user_tasks.component"; +import { GuiGridModule } from "@generic-ui/ngx-grid"; + +import { NgxSuperSelectModule} from "ngx-super-select"; + +@NgModule({ + imports: [ + UserTasksRoutingModule, + CardModule, + CommonModule, + GridModule, + FormModule, + ButtonModule, + GuiGridModule, + ModalModule, + FormsModule, + NgxSuperSelectModule, + ], + declarations: [UserTasksComponent], +}) +export class UserTasksModule {} diff --git a/src/app/views/widgets/widgets-brand/widgets-brand.component.html b/src/app/views/widgets/widgets-brand/widgets-brand.component.html new file mode 100644 index 0000000..c992c9a --- /dev/null +++ b/src/app/views/widgets/widgets-brand/widgets-brand.component.html @@ -0,0 +1,22 @@ + + + + + + {{ chart.id }} + + + + diff --git a/src/app/views/widgets/widgets-brand/widgets-brand.component.scss b/src/app/views/widgets/widgets-brand/widgets-brand.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/widgets/widgets-brand/widgets-brand.component.spec.ts b/src/app/views/widgets/widgets-brand/widgets-brand.component.spec.ts new file mode 100644 index 0000000..b5b944f --- /dev/null +++ b/src/app/views/widgets/widgets-brand/widgets-brand.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GridModule, WidgetModule } from '@coreui/angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { WidgetsBrandComponent } from './widgets-brand.component'; + +describe('WidgetsBrandComponent', () => { + let component: WidgetsBrandComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ WidgetsBrandComponent ], + imports: [WidgetModule, GridModule, ChartjsModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(WidgetsBrandComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/widgets/widgets-brand/widgets-brand.component.ts b/src/app/views/widgets/widgets-brand/widgets-brand.component.ts new file mode 100644 index 0000000..96087b9 --- /dev/null +++ b/src/app/views/widgets/widgets-brand/widgets-brand.component.ts @@ -0,0 +1,102 @@ +import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core'; + +@Component({ + selector: 'app-widgets-brand', + templateUrl: './widgets-brand.component.html', + styleUrls: ['./widgets-brand.component.scss'], + changeDetection: ChangeDetectionStrategy.Default +}) +export class WidgetsBrandComponent implements AfterContentInit { + + constructor( + private changeDetectorRef: ChangeDetectorRef + ) {} + + @Input() withCharts?: boolean; + // @ts-ignore + chartOptions = { + elements: { + line: { + tension: 0.4 + }, + point: { + radius: 0, + hitRadius: 10, + hoverRadius: 4, + hoverBorderWidth: 3 + } + }, + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + display: false + }, + y: { + display: false + } + } + }; + labels = ['January', 'February', 'March', 'April', 'May', 'June', 'July']; + datasets = { + borderWidth: 2, + fill: true + }; + colors = { + backgroundColor: 'rgba(255,255,255,.1)', + borderColor: 'rgba(255,255,255,.55)', + pointHoverBackgroundColor: '#fff', + pointBackgroundColor: 'rgba(255,255,255,.55)' + }; + brandData = [ + { + icon: 'cibFacebook', + values: [{ title: 'friends', value: '89K' }, { title: 'feeds', value: '459' }], + capBg: { '--cui-card-cap-bg': '#3b5998' }, + labels: [...this.labels], + data: { + labels: [...this.labels], + datasets: [{ ...this.datasets, data: [65, 59, 84, 84, 51, 55, 40], label: 'Facebook', ...this.colors }] + } + }, + { + icon: 'cibTwitter', + values: [{ title: 'followers', value: '973k' }, { title: 'tweets', value: '1.792' }], + capBg: { '--cui-card-cap-bg': '#00aced' }, + data: { + labels: [...this.labels], + datasets: [{ ...this.datasets, data: [1, 13, 9, 17, 34, 41, 38], label: 'Twitter', ...this.colors }] + } + }, + { + icon: 'cib-linkedin', + values: [{ title: 'contacts', value: '500' }, { title: 'feeds', value: '1.292' }], + capBg: { '--cui-card-cap-bg': '#4875b4' }, + data: { + labels: [...this.labels], + datasets: [{ ...this.datasets, data: [78, 81, 80, 45, 34, 12, 40], label: 'LinkedIn', ...this.colors }] + } + }, + { + icon: 'cilCalendar', + values: [{ title: 'events', value: '12+' }, { title: 'meetings', value: '4' }], + color: 'warning', + data: { + labels: [...this.labels], + datasets: [{ ...this.datasets, data: [35, 23, 56, 22, 97, 23, 64], label: 'Events', ...this.colors }] + } + } + ]; + + capStyle(value: string) { + return !!value ? { '--cui-card-cap-bg': value } : {}; + } + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + } +} diff --git a/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.html b/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.html new file mode 100644 index 0000000..b810e41 --- /dev/null +++ b/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.html @@ -0,0 +1,28 @@ + + + + + {{show_number(sensor,devicedata)}} + + + + + +
    +
    +
    + +
    +
    \ No newline at end of file diff --git a/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.scss b/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.spec.ts b/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.spec.ts new file mode 100644 index 0000000..e0ea365 --- /dev/null +++ b/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, DropdownModule, GridModule, WidgetModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { WidgetsDropdownComponent } from './widgets-dropdown.component'; + +describe('WidgetsDropdownComponent', () => { + let component: WidgetsDropdownComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ WidgetsDropdownComponent ], + imports: [WidgetModule, DropdownModule, IconModule, ButtonModule, ChartjsModule, GridModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(WidgetsDropdownComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.ts b/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.ts new file mode 100644 index 0000000..9c11226 --- /dev/null +++ b/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.ts @@ -0,0 +1,423 @@ +import { + AfterContentInit, + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + OnInit, + Input, + ViewChild +} from '@angular/core'; +import { getStyle } from '@coreui/utils'; +import { ChartjsComponent } from '@coreui/angular-chartjs'; +import { dataProvider } from '../../../providers/mikrowizard/data'; + +@Component({ + selector: 'app-widgets-dropdown', + templateUrl: './widgets-dropdown.component.html', + styleUrls: ['./widgets-dropdown.component.scss'], + changeDetection: ChangeDetectionStrategy.Default +}) +export class WidgetsDropdownComponent implements OnInit, AfterContentInit { + + constructor( + private changeDetectorRef: ChangeDetectorRef, + private data_provider: dataProvider, + + ) {} + + data: any[] = []; + options: any[] = []; + @Input() devicedata: any; + labels = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + 'January', + 'February', + 'March', + 'April' + ]; + colors = [ + 'primary', + 'success', + 'danger', + 'warning', + 'info', + 'light', + 'dark', + 'primary', + 'success', + 'danger', + 'warning', + 'info', + 'light', + 'dark', + 'primary', + 'success', + 'danger', + 'warning', + 'info', + 'light', + 'dark', + 'light', + 'dark', + 'primary', + 'success', + 'danger', + 'warning', + 'info', + 'light', + 'dark', + 'primary', + 'success', + 'danger', + 'warning', + 'info', + 'light', + 'dark' + ]; + datasets = [ + [{ + label: 'My First dataset', + backgroundColor: 'transparent', + borderColor: 'rgba(255,255,255,.55)', + pointBackgroundColor: getStyle('--cui-primary'), + pointHoverBorderColor: getStyle('--cui-primary'), + data: [65, 59, 84, 84, 51, 55, 40] + }], [{ + label: 'My Second dataset', + backgroundColor: 'transparent', + borderColor: 'rgba(255,255,255,.55)', + pointBackgroundColor: getStyle('--cui-info'), + pointHoverBorderColor: getStyle('--cui-info'), + data: [1, 18, 9, 17, 34, 22, 11] + }], [{ + label: 'My Third dataset', + backgroundColor: 'rgba(255,255,255,.2)', + borderColor: 'rgba(255,255,255,.55)', + pointBackgroundColor: getStyle('--cui-warning'), + pointHoverBorderColor: getStyle('--cui-warning'), + data: [78, 81, 80, 45, 34, 12, 40], + fill: true + }], [{ + label: 'My Fourth dataset', + backgroundColor: 'rgba(255,255,255,.2)', + borderColor: 'rgba(255,255,255,.55)', + data: [78, 81, 80, 45, 34, 12, 40, 85, 65, 23, 12, 98, 34, 84, 67, 82], + barPercentage: 0.7 + }] + ]; + optionsDefault = { + plugins: { + legend: { + display: false + } + }, + maintainAspectRatio: true, + scales: { + x: { + grid: { + display: false, + drawBorder: false + }, + ticks: { + display: false + } + }, + y: { + display: false, + grid: { + display: false + }, + ticks: { + display: false + } + } + }, + elements: { + line: { + borderWidth: 1, + tension: 0.4 + }, + point: { + radius: 4, + hitRadius: 10, + hoverRadius: 6 + } + } + }; + logger(data: any){ + console.dir(data) + } + + ngOnInit(): void { + + this.setData(); + } + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + + } + + convert_bw_human(mynumber:number=0,unit:string){ + const units = ['bit', 'Kib', 'Mib', 'Gib', 'Tib']; + let unitIndex = 0; + while (mynumber >= 1024 && unitIndex < units.length - 1) { + mynumber /= 1024; + unitIndex++; + } + console.dir(mynumber) + switch (unit) { + case 'rx': + return mynumber.toFixed(3) + ' ' + units[unitIndex]; + break; + case 'tx': + return mynumber.toFixed(3) + ' ' + units[unitIndex]; + break; + default: + return mynumber; + break; + } + } + + show_number(sensor:string,data:any){ + if(sensor=='rxp/txp-total'){ + let mynumber=data[sensor]["datasets"][0]["data"][data[sensor]["datasets"][0]["data"].length-1]; + let mynumber1=data[sensor]["datasets"][1]["data"][data[sensor]["datasets"][1]["data"].length-1]; + let res1=this.convert_bw_human(mynumber,data[sensor]["datasets"][0]['unit']); + let res2=this.convert_bw_human(mynumber1,data[sensor]["datasets"][1]['unit']); + return res1 + " / " + res2; + } + else{ + let mynumber=data[sensor]["datasets"][0]["data"][data[sensor]["datasets"][0]["data"].length-1]; + return mynumber + } + } + + count_calc(data:any){ + if(data.sensors.length > 4) + return 2 + else if(data.sensors.length <= 4) + return 3 + else + return 3 + } + + setData() { + for (let idx = 0; idx < 4; idx++) { + this.data[idx] = { + labels: idx < 3 ? this.labels.slice(0, 7) : this.labels, + datasets: this.datasets[idx] + }; + } + this.setOptions(); + } + + show_date(date:string){ + if(typeof date === "undefined") + return "" + + if(date=='') + return '' + else if(date.split("T").length>1) + return "Last data : " + date.split("T")[0] + else if(date.split("T").length==1) + return "Last data : " + date.split("T").join(' ') + else + return date; + + + } + setOptions() { + for (let idx = 0; idx < 5; idx++) { + const options = JSON.parse(JSON.stringify(this.optionsDefault)); + switch (idx) { + case 0: { + this.options.push(options); + break; + } + case 1: { + options.scales.y.min = -9; + options.scales.y.max = 39; + this.options.push(options); + break; + } + case 2: { + options.scales.x = { display: false }; + options.scales.y = { display: false }; + options.elements.line.borderWidth = 2; + options.elements.point.radius = 2; + this.options.push(options); + break; + } + case 3: { + options.scales.x.grid = { display: false, drawTicks: false }; + options.scales.x.grid = { display: false, drawTicks: false, drawBorder: false }; + options.scales.y.min = undefined; + options.scales.y.max = undefined; + options.elements = {}; + this.options.push(options); + break; + } + case 4: { + options.plugins={ + tooltip: { + callbacks: { + label: function(context:any) { + const units = ['bit', 'Kib', 'Mib', 'Gib', 'Tib']; + let label = context.dataset.label || ''; + var res=context.parsed.y + let unitIndex = 0; + // if (res>8) res /=8; + while (res >= 1024 && unitIndex < units.length - 1) { + res /= 1024; + unitIndex++; + } + console.dir(res) + switch (context.dataset.unit) { + case 'rx': + return "rx/s :" + res.toFixed(3) + ' ' + units[unitIndex]; + break; + case 'tx': + return "tx/s :" + res.toFixed(3) + ' ' + units[unitIndex]; + break; + case 'rxp': + return "rxp/s :" + context.parsed.y; + break; + case 'txp': + return "txp/s :" + context.parsed.y; + break; + default: + return context.parsed.y; + break; + } + } + } + } + , + legend: { + display:false + } + } + options.scales={ + 'x':{ display: false }, + 'yA': { + display: false , + stacked: true, + position: 'left', + type: 'linear', + scaleLabel: { + display: true, + }, + }, + 'yB': { + display: false , + stacked: true, + position: 'right', + type: 'linear', + + } + }; + options.elements.line.borderWidth = 2; + options.elements.point.radius = 2; + this.options.push(options); + break; + } + } + } + } +} + +@Component({ + selector: 'app-chart-sample', + template: '' +}) +export class ChartSample implements AfterViewInit { + + constructor() {} + + @ViewChild('chart') chartComponent!: ChartjsComponent; + + colors = { + label: 'My dataset', + backgroundColor: 'rgba(77,189,116,.2)', + borderColor: '#4dbd74', + pointHoverBackgroundColor: '#fff' + }; + + labels = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; + + data = { + labels: this.labels, + datasets: [{ + data: [65, 59, 84, 84, 51, 55, 40], + ...this.colors, + fill: { value: 65 } + }] + }; + + options = { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + elements: { + line: { + tension: 0.4 + } + } + }; + + ngAfterViewInit(): void { + setTimeout(() => { + const data = () => { + return { + ...this.data, + labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May'], + datasets: [{ + ...this.data.datasets[0], + data: [42, 88, 42, 66, 77], + fill: { value: 55 } + }, { ...this.data.datasets[0], borderColor: '#ffbd47', data: [88, 42, 66, 77, 42] }] + }; + }; + const newLabels = ['Jan', 'Feb', 'Mar', 'Apr', 'May']; + const newData = [42, 88, 42, 66, 77]; + let { datasets, labels } = { ...this.data }; + // @ts-ignore + const before = this.chartComponent?.chart?.data.datasets.length; + console.log('before', before); + // console.log('datasets, labels', datasets, labels) + // @ts-ignore + // this.data = data() + this.data = { + ...this.data, + datasets: [{ ...this.data.datasets[0], data: newData }, { + ...this.data.datasets[0], + borderColor: '#ffbd47', + data: [88, 42, 66, 77, 42] + }], + labels: newLabels + }; + // console.log('datasets, labels', { datasets, labels } = {...this.data}) + // @ts-ignore + setTimeout(() => { + const after = this.chartComponent?.chart?.data.datasets.length; + console.log('after', after); + }); + }, 5000); + } +} diff --git a/src/app/views/widgets/widgets-e/widgets-e.component.html b/src/app/views/widgets/widgets-e/widgets-e.component.html new file mode 100644 index 0000000..65e796f --- /dev/null +++ b/src/app/views/widgets/widgets-e/widgets-e.component.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/views/widgets/widgets-e/widgets-e.component.scss b/src/app/views/widgets/widgets-e/widgets-e.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/widgets/widgets-e/widgets-e.component.spec.ts b/src/app/views/widgets/widgets-e/widgets-e.component.spec.ts new file mode 100644 index 0000000..85469b9 --- /dev/null +++ b/src/app/views/widgets/widgets-e/widgets-e.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GridModule, WidgetModule } from '@coreui/angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { WidgetsEComponent } from './widgets-e.component'; + +describe('WidgetsEComponent', () => { + let component: WidgetsEComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ WidgetsEComponent ], + imports: [WidgetModule, GridModule, ChartjsModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(WidgetsEComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/widgets/widgets-e/widgets-e.component.ts b/src/app/views/widgets/widgets-e/widgets-e.component.ts new file mode 100644 index 0000000..606ebc1 --- /dev/null +++ b/src/app/views/widgets/widgets-e/widgets-e.component.ts @@ -0,0 +1,138 @@ +import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core'; +import { getStyle } from '@coreui/utils'; + +@Component({ + selector: 'app-widgets-e', + templateUrl: './widgets-e.component.html', + styleUrls: ['./widgets-e.component.scss'], + changeDetection: ChangeDetectionStrategy.Default +}) +export class WidgetsEComponent implements AfterContentInit { + + constructor( + private changeDetectorRef: ChangeDetectorRef + ) { + this.prepareLabels(); + this.prepareDatasets(); + this.prepareData(); + } + + datasets: any[] = []; + labels: string[] = []; + data: any[] = []; + barOptions = { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + display: false + }, + y: { + display: false + } + } + }; + lineOptions = { + maintainAspectRatio: false, + elements: { + line: { + tension: 0.4 + }, + point: { + radius: 0 + } + }, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + display: false + }, + y: { + display: false + } + } + }; + + get random() { + const min = 40, + max = 100; + return Math.floor(Math.random() * (max - min + 1) + min); + } + + get randomData() { + const data = []; + for (let i = 0; i < 15; i++) { + data.push(this.random); + } + return data; + } + + get baseDatasets(): Array { + return [ + { + data: this.randomData, + barThickness: 'flex', + borderColor: 'transparent', + backgroundColor: 'transparent', + pointBackgroundColor: 'transparent', + pointHoverBorderColor: 'transparent', + borderWidth: 1 + } + ]; + } + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + } + + prepareData() { + for (let i = 0; i < 6; i++) { + this.data.push({ labels: this.labels, datasets: this.datasets[i] }); + } + } + + prepareLabels() { + for (let i = 0; i < 15; i++) { + this.labels.push(this.getDayName(i)); + } + } + + prepareDatasets() { + const params = [ + { backgroundColor: 'danger' }, + { backgroundColor: 'primary' }, + { backgroundColor: 'dark' }, + { borderColor: 'danger', borderWidth: 2 }, + { borderColor: 'success', borderWidth: 2 }, + { borderColor: 'info', borderWidth: 2 } + ]; + for (let i = 0; i < 6; i++) { + this.datasets.push(this.getDataset(params[i])); + } + } + + getDataset({ backgroundColor = 'transparent', borderColor = 'transparent', borderWidth = 1 }) { + const dataset = this.baseDatasets; + dataset[0].backgroundColor = backgroundColor !== 'transparent' ? getStyle(`--cui-${backgroundColor}`) : backgroundColor; + dataset[0].borderColor = borderColor !== 'transparent' ? getStyle(`--cui-${borderColor}`) : borderColor; + dataset[0].pointBackgroundColor = getStyle(`--cui-${borderColor}`); + dataset[0].borderWidth = borderWidth; + return dataset; + } + + getDayName(shift = 0) { + // @ts-ignore + const locale = navigator.language ?? navigator.userLanguage ?? navigator.systemLanguage ?? navigator.browserLanguage ?? 'en-US'; + const baseDate = new Date(Date.UTC(2000, 1, 0)); // Monday + baseDate.setDate(baseDate.getDate() + shift); + return baseDate.toLocaleDateString(locale, { weekday: 'short' }); + } +} diff --git a/src/app/views/widgets/widgets-routing.module.ts b/src/app/views/widgets/widgets-routing.module.ts new file mode 100644 index 0000000..5d95afe --- /dev/null +++ b/src/app/views/widgets/widgets-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { WidgetsComponent } from './widgets/widgets.component'; + +const routes: Routes = [ + { + path: '', + component: WidgetsComponent, + data: { + title: 'Widgets' + } + } +]; + + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class WidgetsRoutingModule { +} diff --git a/src/app/views/widgets/widgets.module.ts b/src/app/views/widgets/widgets.module.ts new file mode 100644 index 0000000..1736936 --- /dev/null +++ b/src/app/views/widgets/widgets.module.ts @@ -0,0 +1,52 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { + ButtonModule, + CardModule, + DropdownModule, + GridModule, + ProgressModule, + SharedModule, + WidgetModule +} from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; + +import { DocsComponentsModule } from '@docs-components/docs-components.module'; + +import { WidgetsRoutingModule } from './widgets-routing.module'; +import { WidgetsComponent } from './widgets/widgets.component'; +import { WidgetsBrandComponent } from './widgets-brand/widgets-brand.component'; +import { ChartSample, WidgetsDropdownComponent } from './widgets-dropdown/widgets-dropdown.component'; +import { WidgetsEComponent } from './widgets-e/widgets-e.component'; + +@NgModule({ + declarations: [ + WidgetsComponent, + WidgetsBrandComponent, + WidgetsDropdownComponent, + ChartSample, + WidgetsEComponent + ], + imports: [ + CommonModule, + WidgetsRoutingModule, + GridModule, + WidgetModule, + IconModule, + DropdownModule, + SharedModule, + ButtonModule, + CardModule, + DocsComponentsModule, + ProgressModule, + ChartjsModule + ], + exports: [ + WidgetsBrandComponent, + WidgetsDropdownComponent + ] +}) +export class WidgetsModule { +} diff --git a/src/app/views/widgets/widgets/widgets.component.html b/src/app/views/widgets/widgets/widgets.component.html new file mode 100644 index 0000000..d799437 --- /dev/null +++ b/src/app/views/widgets/widgets/widgets.component.html @@ -0,0 +1,616 @@ + + Widgets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + View more + + + + + + + + + + + + + View more + + + + + + + + + + + + + View more + + + + + + + + + + + + + View more + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/views/widgets/widgets/widgets.component.scss b/src/app/views/widgets/widgets/widgets.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/widgets/widgets/widgets.component.spec.ts b/src/app/views/widgets/widgets/widgets.component.spec.ts new file mode 100644 index 0000000..6ff2dd3 --- /dev/null +++ b/src/app/views/widgets/widgets/widgets.component.spec.ts @@ -0,0 +1,40 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, GridModule, ProgressModule, WidgetModule } from '@coreui/angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconModule, IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { WidgetsBrandComponent } from '../widgets-brand/widgets-brand.component'; +import { WidgetsDropdownComponent } from '../widgets-dropdown/widgets-dropdown.component'; +import { WidgetsEComponent } from '../widgets-e/widgets-e.component'; +import { WidgetsComponent } from './widgets.component'; + +describe('WidgetsComponent', () => { + let component: WidgetsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [WidgetsComponent, WidgetsBrandComponent, WidgetsDropdownComponent, WidgetsEComponent], + imports: [WidgetModule, ProgressModule, GridModule, DocsComponentsModule, CardModule, RouterTestingModule, ChartjsModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(WidgetsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/widgets/widgets/widgets.component.ts b/src/app/views/widgets/widgets/widgets.component.ts new file mode 100644 index 0000000..1b49a6d --- /dev/null +++ b/src/app/views/widgets/widgets/widgets.component.ts @@ -0,0 +1,17 @@ +import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core'; + +@Component({ + selector: 'app-widgets', + templateUrl: './widgets.component.html', + styleUrls: ['./widgets.component.scss'], + changeDetection: ChangeDetectionStrategy.Default +}) +export class WidgetsComponent implements AfterContentInit { + constructor( + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + } +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/angular.ico b/src/assets/angular.ico new file mode 100644 index 0000000000000000000000000000000000000000..997406ad22c29aae95893fb3d666c30258a09537 GIT binary patch literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}700001T2^$Q$<@u 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 ILLd764`m5erT_o{ literal 0 HcmV?d00001 diff --git a/src/assets/images/angular.jpg b/src/assets/images/angular.jpg new file mode 100644 index 0000000000000000000000000000000000000000..504481122cd7896e131d13b273e3a2179d89f42b GIT binary patch literal 169234 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%0D-R(|eR3Q|WoW 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 mVQ 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 Mvbo(-I{yy*AHhh21^@s6 literal 0 HcmV?d00001 diff --git a/src/assets/img/avatars/1.jpg b/src/assets/img/avatars/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b5f8091c54e5577fb38c18affb9e1c83590c8b6 GIT binary patch literal 13887 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

    SZdMO^*g{Y(GgM>mtvN`A7g)|A6a_jDOXa5 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

    sNq#sE;JYkmiUO$ZL|Pt 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/avatars/6.jpg b/src/assets/img/avatars/6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57bbf9685c083c2b3c912342b52ce12dd5acab97 GIT binary patch literal 11918 zcmbVycT^PJ)8>#QgGkOI2r5Z(W&|ZmmYh^jlH{Cb6vfLGfxcNjt9pUar(r*VSWf1lkfQAI{5%7@!j|PBGgGWGvhwTM$;@*M? z?_c@18?M2_Cm1h`sd;B_(5EWMXD{$jkTW@e^?gNhxU=+2=1*RMpfqG!0)F z8Jn1zncLdEdvEXH=;YgYie5hx9=H0^9u@#ic3n%>gpRH zjZMuht=&DneX#z4!J)~i>6zKNKl2Og8}QAo?VZ27d&ra1v-68f)YbJrxNzU|f5O7G z{}b8&feZH$@bC!<2?&Y*!G(wK_YZIyLLx4aJNK0IiQjn8J`nvxLZ_URSKCF(EoOkA zf9p9x#=s-K{t)>Ow11KP-vJB#|3da(!2TQ8BH%eLF#k8f|M%*j7XN<<0RbVwKZ1`N zNSywU;Qu>%IG}`tSe%ppc)<0-jVsRT|5>ohxUjs7T>wxJ;NgOafCc~rUr`IZr|6ZFq|l1i8QZ7u%8CrPU0auknviwxozJ4YWIl$#spvtn!z z%i|lm7&0v^fS48Sj_Th4(xO-|)R2l0gzeh2Uu>}hhJUI7B@T_@5NcF@nV#{c9{h%;L?iio)g%7LWqW;$*>0*wBHv_gW*WH&!`N zZG9{e`B6u1!Acvf%dQuPhJ1GQ<6?vNIiHlgmnHzbCYzYl0`H&l?TdmbD>sudo$yh6 z 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 Knm1urGye+{BBaLv literal 0 HcmV?d00001 diff --git a/src/assets/img/avatars/9.jpg b/src/assets/img/avatars/9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f690e78cc762abc07415b0a1797d28e88130f1ee GIT binary patch literal 12451 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/brand/logo-MIkroWizard-big-color.svg b/src/assets/img/brand/logo-MIkroWizard-big-color.svg new file mode 100644 index 0000000..409ab32 --- /dev/null +++ b/src/assets/img/brand/logo-MIkroWizard-big-color.svg @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/brand/logo-MIkroWizard-big-white.svg b/src/assets/img/brand/logo-MIkroWizard-big-white.svg new file mode 100644 index 0000000..c9a3a13 --- /dev/null +++ b/src/assets/img/brand/logo-MIkroWizard-big-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/brand/logo-MIkroWizard-small-color.svg b/src/assets/img/brand/logo-MIkroWizard-small-color.svg new file mode 100644 index 0000000..9a6c4ee --- /dev/null +++ b/src/assets/img/brand/logo-MIkroWizard-small-color.svg @@ -0,0 +1,325 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/brand/logo-MIkroWizard-small-white.svg b/src/assets/img/brand/logo-MIkroWizard-small-white.svg new file mode 100644 index 0000000..540bf50 --- /dev/null +++ b/src/assets/img/brand/logo-MIkroWizard-small-white.svg @@ -0,0 +1,325 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/brand/mikrowizard-full.jpg b/src/assets/img/brand/mikrowizard-full.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b078ba52897f445da6dce6f3f13e24be6222b8e1 GIT binary patch literal 88478 zcmeFYWmp`|wkSLV0wh=n5(paH6Wk#<0}MWcySuvu5AJS(0S0&15M&rMxLdH`1lQ#9 z?)}~8oM-QSuAF-W_5K<_o`K0wXD{k`9JG`S8~!oX#f%u5`g&W0Q~uZG!K-J zFi=)ik_IYBJ>38RkOl!y3FQL-U}x{@tSTc;si~z+iM9?vdOH4=j7(e{{|^1j@~PF; z?BCl?vHr^z|Le*Zre-cCPfbprP8#Q@mp|cz{{-V({2gZa3pV~cEc6%b;p*u6)JFL) z*jZgw;t4i=f*CCS9c=vXU=v5@zuHGXwGpzjb^GgGf2F^AhiPUHR(twIe>zD4E&x@4 z3_$#^{y$wmC5Hk4fbS9jK#u>nI^zrgpg9x(AX@ylI+`y408R)1&@}#Ub^k^aMB764m-8GsT11lR*i z0BlbX2jByM9l-Nv2_W&;IR8JTzaH}c^nkzq{O2nG7yX&$GfiY9T);D2BxGEqKYaj- zCvqbr0iGfM^~wD`y?BX%j*5ni^8DFf4UAs_0I1K9o}nNkqrAYxz0NeNS~| zVT<$(fQ*as`rUJOJTX)%6(f8Or@#biPA+b7RcF`y+PZoILP=wnpx}_if`%R%2`RNC zXkl;P#HqT8soA&5sm-nAjbF5X76F)lbsQHN7a$6#YB|Qs`znd@@xSwbQ{cZT@ZS{p z4=A9-R;2u1kjkmi!a$v+*#@IGIVRuwdmU$;T>7fR`;&tv<;he&QTR*dJJN?F z@2<4UfL}UjjSCugt*o~+1qV1UQ@SC;M1%vBh7e^TIS`^`x`>XOYVn5DLxUNj|-cT!|c{&EB- z6gD+;Nbi@YC>MN7H|YxEySaKog>L5IYu@n1RSwYLbl)XA`aw78#iYFV;*XZ;6|#`$6I?Yq@xhgA3d3`zY`5&fxcp zlPhMi-zJZCYY#~W?WcbL7g^4_Ddg`vjIz_3u&2DvNOuPOyHlb?7RP}*caIBn@)z)} z$H(7sK!NX%^Ekt>$v*%$Dqmsdj{$wSXF49&^A@GHxg=E?=aM=b1eM*&>f2+lN9bnL zd=u%$?H4W%kLZ(?TaL1C6}mX{cmkNOyL1tI8W4l%3(*Z#=*7$54w;_96w*EzZ@O(> zJgi^+0X$}hdY)GNWCXv_FmO(?QWLrvZx-*BuGD{hs#B@`iXR^AjBrE^kD~Xn@Y%d&Nn6 z?dAO{eI8Zp<@;mm-pz3q2y_-$AQ1X*rs^@cI&B$c){l() zyon48g%VqVw)Nz_W>N5FhR=RCN%$9jtcE1Kx@%pu8Y0_jw}_;)sz&q1Y3_kbG7Yg3 zo3>uvH|RZT%oA?&YwS+h-a}1M)(gDYpd_N9Hm6Ws7MC0;F#ni|d8gg%>h^K%k;^rN zlmC{ZZ`~*SH3*kkxv{JujuwD}5V|nQ-JSM+j5aYNm+iD7A0_nwPt7qj*rtjc@3XZ| z$)=xN9GjRR|3rxg(Byu_OgckC2}JObPw{IQpHGE)r!gm)IA=*s&)MyKi!N-EGM(gS z_sun?emg7Hd(E^trf>&ZVk&mZy?JkcJFu-MXy7iyN?vq6A89}V1R$Nz<00=i%slw) z8#uX*Ph{t1IzNx9I+3%UEEZd1q1w`T@84Iof3##GyVCA)))hKCZW16OXgZD&?B}Sv zOFPEi(G`1{c2q#=e|IGCTe^Yb3&>@Li}|+@MFOj6@;i!DPma}hA}Nd(XS_!#@VOHi z;IZ+hsQ$_yKo!GJi{{9`uzsoYZ92Qlm6+-TwgBeGh0(J#9osNbYSGj- zMAE+gz<749Esra9tpRI(%^v{jjLt1n?Z{xKjO6@4KC1r>$D?2}lAv)Q;+XG9{c~5- z>Rs$vVhdvuw}BD3n4=gg$*@%+x`=@Pek<%~n=Qa6`*9xk%JNb@Tc^0I{{Ai}Kwvba zE$t?Cb}eY%udDZ%bJcT)l>h%4FQx#!@EYg%82KX zdrwi_giODLomyYL>?kd(ot*066lgYIPO%~)_w(Q-gDNp6eKb+39!1e&As%l$z;;QN=B_+1%E$;=1sz$HZdIa@(HAs6UYEXBvub04(d*f<*f@1E-;*-qagkpA7iZCe zWH`I5c=|4Xjq0lwM6?NsaE)pj(U^kmF5duqv<3h86w+(&mgnEmQgqww&}y1~ME=T? z9;p#31ZR%EUUV?hUfPhc6ussANi_sH|745Ob ziEEdMe!G0>I2a8n6tZw@*V6pt&uY|4qFFjd%hk#BC`~>xp+b!L^^N^w5@oFKk|ms4 z$b5VG!(L!-?u%OUT{#=ns6!4JpBHw$uDY`^N$e>vfAPve*)Cd)AX1wi!|ZNka?w>X zoraRQ3HG<@BO7vT-Q@>u5!5P9r}ZfXwRJ^D(Iwl1)RgnO!SjKiSOokC^W@ONHP@m^ zNM>Eugz}=|9mPXYJQ6Xf>6W*#6Yl0Lkf;hnh)DvSFxt#_PO19AfAiD$XcH=UM0wC{2)|i20t=eUfRmy z`TGn()*vQ?w_s9o%TT%bq-0I8qWNfMae!>oOJR~dt`aO5Z_8HatRUWllvy?TQBHf( zs`SE)TN7TCl;Pv3C6t06b8R+3rjFk#fBcuuOr7)erBEIUV`R{| zQf^M0zvPrcNq+Jql~r*Dy6UUYzEO2G@x$V>eO;uc26a*&_rSbd%g$6y7nAlp8+Mah zU~U_+#b@+Sf6F<%(A&JBW1fnjOx}1wdEF+5Y%@MfdG(-_=&i0Q`4nqsIgyGMgmc>f zovvhgBC$kzYfnse3`jays{EcB1cIGpp#A}543N5?S!Gs&E*`B9Ug1!}9WE3#Ms9%~ zo81xb^91rIbnJyDyjb-RwMo?0)x8Jz+9+%UXN3df)kX!-hcJ$ip)!RT3)1wG_=pzy z5tp}k;Gfl?7V|hf*|iSyMjU%N?GgWvRnXi?@!Z<7ibplO;X^~*F7uCQldxtK;OwSM zL_o;BqA+1c(5JRvku$*w+^0v;0}D_-j zf`6M4FN!s+pTlLb)vDw(;SD269y&ivu#`0%ds!%vrKgk2$$0N~;=zTdd|WRB zG7_t;X3IFU`y{-Z>gxjlb%D5aPuu5gPzdA2*cP$cF=IShOBMTaFk|TG?+nt$b($f` zm1!aV{2>w7q1vXsScLIh6KNBtua^?#a$!P+s1BQ2ucuFlEedp;XLMyYf7z4LE5XA@WEtb7l@9RL;L7w>l+ihmbRw|i>hS)wz^}>U`!5rrUigQVU z<7ip7a=#ITBnM7f`ho1*<-e2<%xE*~ZhU;6vo!yiW5f?eq%!=9KjY`rN~vFRzR7a# z5Oi_GlOp>Hkl`zm?T2|Y)l+161)3hcKA|=teGLqQ*GRQQSE}gcKvRc!<}RR!L79R& z8c%2ADZ`P%yI2z5gwOpZ^eTZ~bLto28q>UBeb+?@2}n-N2UTpe$&lPpSaPvt(C%?N z4>-j*Wwf+Ehb>X_4MySEN__*TAF(^4yV2N6j>)yZG}y>Pez}8Vf5zyvKR%*x$eJ-1&=#QN#r`x;29>jMh6qdhU{io4^j{PNHJ9 zpnQ_kdRakDMAhg^iprclDy-NJD*6E*UQf{W9&?Jl+2G9OO&RAK!-So%3rTh?Zy67X z?S+H*vZ_){_p(~-{3sVkYv_c3*hRV(@f3FY^JsHR%ZRB-F^Y#n1wO`+zLr{U9UO%; z`{6*zMCA|kv745I-hNkY9PrczM`l0HeV#=Q{M507tTJ=S>!gKG#~#A(lCWz8h<1qy zL?5R)HGLuK{~LUc;Fqb|Dl8LSgB#WM5ON@ZJ|oGdwwUaddsOm3@8?qYIB2$saGG^7d+fZ!)I?duOi3wQ zWqWya^u5?IY+gM`xPHZbK@F{Rfyk>AKH~fNnl!@v7}qn~olN(#>Q$44(s1i9cRiIv(lw>picu-V^?KIBL*k>xDk>Yswy*n#l*;@hCYbWvazw_T z*CrG<)XyprV_4BnQPa;6K3g`^NZ>9$P;A#w%^Fa&Q$R(|Hv2%(`gM>Q&PS)C5wl#e zxyJUB;jl~Kh-qh}jLht92ZZ5x9@Ntb0w)Y(2t({D%nGV*6}}XVW{&s5SuS%`;!QPh zk97nfDPYeYG?Ry~P({8k+Uau=Y@}r^P(wBB+&H3>#SLX`GIjIGSIC3sK z2`?B{e_W#6F6a5ISx)BcFTAX^kabbvws?MAp z|6Nq}x*^2W%+*{*l~@Z1fuKqpb+mXj#2ui zYo%yrED?jSlHF)E)tFI(6h!PocGja$O%)H%(3}R4D%Y&veECWxczZftkxLW_2%t8i@$BIwL?_(~Gp}Qct5CT)t ztA`X>F$%0WAyqr7cHD>PoEws4>07)b0-*z=kJLD??j0Q#R+PwzN63*03{7@ro^sZp<%6e=wbB}m5 z9bqi8jWnQ?Ae=U@geMlu`zuM-i5}8xHHs`5o3CONyN%G|1}}$XH)PGkZd}ZSd4oJ$ z@Fq_Pl~+CL9CXQ0`y9xJu}rk;&DS#b8@*%fM*WL>&0+!*0WYC-WhF1mgg;?sCnW-T z+N{bIgWBS$VjVev^sO{oiGGFm?MjrZBugs4nziSfQBOO?4=P>2z~|<+N#@S3swzv# z8SJM0!Kf#+X4^F6Y*Csw>0$2+*Z9;UxGhW1=RK$PPG+$zgod_?N| zO>#O1=G4edqN8vX7!<6gR#IwLTAS2M?N2#!+*C?ULIT)bQO7Wwue=DQ|=0 z&4#@lZerbvr^UNV`Ny)|i|6~Tzp;m%$0_^)n0p}1^x7oGZA0T?-Zk1rEafu5{H16a zP!^;aCHK3c^nf;ZPP{XTirJ6eMPF~Cb@qGtH)m?FzF@qd(RB6GV_DLN zq2B;>t}&hcKOj$UlAaZA*7I5DzIjdQPoT@w%Bn+mjY~rqL3UN1(!eGZsfy%jT+3tI#FHFcg;hS ze~U3_dHZq~ZTcv%oVYIzGR`ijYzE0hDx1tXR zKk#0;<+jhI!OE=~3V9mCD;!_$1-|Ub(2{ExXfDeR{FN1rn!2~bw=dhYE(JIhBvGRL zB=%e#7jb?lG}sMRg=rPce%YHIM9*wgZG1aR{;U(Fzr$2gNQWje3c`N)mM+PCbV8wp zQ8t4;dbc%Zd4RosbY&H8!(#5?td$eNGUAh{M3Z3!1|z9I2NS(~a>maC_@2q6sdSZO zqQO|Ph?y6Q+m8;I3G@#9=+Q4BoK1a8qQ;1e?1l}h?ak80`LhnrP}&`x3@esK*Rf|J zM*G;x4vdp+(y%g3sQ|TnY}V-y&z0k4!MdfjW9*?D&KM~u7HV3R<+2$L+TS=*f`gVn z0r}p29CtySp$!WwTDf#5beu2n&9`6uu#zk|yX~Zl!;Yo;d4V22OjlOxmM$4>oFa7^ ztSdVTWcuxIII3f=2t<%@gSr*IyB@sB^|dfLM0|^8+FHlVp1u?) zZ&d1<9pfO7LH}}#bdH&n=*Z!T7c+1%_rDUgBX~RCw=JBAptOh1zB!4sw`V2r0Osil zd9MiabZ})s+dVidV5?MRG0N04X$d~EiJCK|Qfa&)JR8Z&b^3Yf`)r|)rjM^dPMaYj3OE)>5{ zFEMq>604rRIOxCg=sEo9Y||(-*^grC72M0XEz3Co1wo4I^~w`gG#v;1ZnNFsp~2Xw(p8jDyZkkR`mJ3eD*piQi|>CSO6x{`Uf-Zuxg-r;%KTf zwj3V{b6|ABAvGn(E#3|~eMn#Qe}!rlAwovjCMJ8{v>h|kK}}Q80+mkTw6Hr*o2a_h zy<-?`c2cPvk(QU1m*~^j!ZY5PGqIEs+8!THkf*2HIKL6t)ju$SX{=if+L;AYo=Rct z#~)V|Y1YtC<$W{yge>QJoa+Yqp^cueL>+G{6!Rqr9q?dI5yX#pi!ClLF}tzJe0ekQ zp~kV|ZGWGnG`Cc;tE~%->$*CQi9 z79fHq7f7F|(D>=EJw2FD3IO)k7no$a0$&e)=eeN??0@nsA7`>t;fFLUt4J`vsoKn= z$<@|7@s~cJPOi)B`q8a9RMMFT7Gmkr?n^#S$^F@hy;}TZ$wLDweYtjANqMg48@wIn z`>HccCy=aq|3#r{R9I(tS;vOheeovwX)9uLI3sspX(@}|=TJv+VX5iXX0^9XHWPxd z$OLnC#=9j?iBY9+;fX`17hcyLE_nvBR1D8zNP!KP}mog9%&Q|igeQF`E*lBju{ z!V5^(U;D{R0zrjl-S{Xc0m|KJY-BJJ%>n|Qk(ESYuL zpyiPlXf8|VH*w=b3zufEBuV{sH`8$?PMrV#Wqqp zX2KhMd~gS8ly=iQgr`W?CwYWP+SX5hzt$}DK{7U0PpqG)7b2#MJwMNB(gU3bg;Mi_=D&e=_s=r_nnie-kvv*Ah8i_{jfwi-D5m*NyQk{|~ zoPshMqOHqIj^BdY2b(j7Dm$eFnw93Jrd<)Gh3gcMA;d7)5ZRd*nQ!pjr(Q-(!6A2; zl6mTESdzQ(dVzoPojVmw-6XqUJfLDqCqOUbU+QJC zoGJI2mv6n5zhBn>W^>jkCu-aoX=3gm4XFPH%jH4p4B+8@jq~nWW{bvxzov;`$!4Wu ziNa*TjO|TUa((GAcdFHZE<%1tkmt!P@zR|UBiaN7h=NN6T5JZpkMZSL&+BUwg@pQ4$5I1y>ewxzKRpJ(oW)n<;>L7xf~6OW z0=d~!9%Toq#p@h1{6x#B(%XDU-?KkleSnZ?gY+`xC16aRuJqvs7A8SLS;Q3YDEAx& zMCA7Ub@#OOZzrez06wTxMbE0V&f0E7XG=EtgqrL!*Q*>)N)0o5@b$(QYH1E61^sf*Vd~cY4CKA7(^BQoVW)N^n4(zd>Ya;>l|}T8N^2! zyn}-_Jo5U31?T05y}hct2&XG~?Rnu4)R9V~>DkN$<|gNDZ>fBfTEQ(1`(75f|r6=8M)7>&9 zXQq|c`F5HI-im{Mlx z?Gq zeumxarR8EjEnu1~t_8hVF#aRD-1&1d{t;J97ZiNG-i~(H%|thmd;lbp_GT)5&DS>|x(u#{N_hk^+kB6^@c5u0(iY$xA?lDPv^J}YvN@XNWh+#~ zN)@ISHg`djcmKjJ+{N2CCB~n>M_ZIr`X_CQ>CU#gWgV^)<_aG>funh)?!#WE$Z=5_ zNLat*W_BsM5*&LdEe+&*+4?-<$~3H8HB&nizI7!vhEaPqh7CAYLt=^6WH;UNl2yvz=GmO=M$mn%^G*hXArqKfHA<(*Ms^ zaCw-lNO3A#&iz(#oq!)boVDPLht~x{!aF>tvTYh2Y$*na>@vt+bgwRCA; zYkf8WM@}cIUT~*`HKIwmW|N>6jSW^eFNj)WJB=D~3uDR5&|l^)P@MyjsCla>Eo3Z< zB@;nG;e``>GvKpHT02qhE~8o%4Ni_GFmx0n|8CZ!`2n+#z!04}UTh1O+2#kqUSinq znb_7O*q0%@QJCTRRSM4A87YIqQOgZG$wO&hObYUyFtMzm}Skk%?)sAkO#Jm>!-NuwxMiH(qKEkbfgMsBUu7?9C=6 zG(;bDhEH5%sqg1V?+n6(XQaXDKD_RvzA8Pv^1AZFQeUNjW21wd5n*9*Ud*h_R2y{B z)F#wRB}eDiRcY+Fwi8fwu;YfCqWXjsXNikp(U=nm%+jMyX#NiT5kZp;0Bk*3tvom! zxcwE>|(nf`z1V1CKX^a~cT++sEt6ZC>_?%&L;ai2~&UrIh5h#hap3^Vj zRmf6^{>JcU&y&!(p*`0hkKY~*3N9Msq7|GixHK?ZhI3J`f$-V$I_p z`B&^8)8K8;6TBzI=2!_F#?5sJ3`~k1tir>S{zplLX3<9Elio)URA_-c$d90mj@jpR zEwO!djazL-pF$>`UM*Q|Z?dT-)hL=AO|j6=l8YjR`9m|w=c|dXL+_iSw70#pp|~n$ z%N?YzfM12&6M>VB5J(e!m_&&g$*HVxdn`6Rv9m#OHJ@i#k5=b3eArE{D&bT@w_xR? zo>kv~b1b?Ap|xaZ*t_uT;X+jy&358E|05?2_@(ii0N{+bf5Xv~waVJV0+wDLhh_?UD)H-XP$6{9=R{S{*6x zR193e+7+7>5w>o#NmCqLp65^mp0K32bUSCLs4!Ye?}}DqBLrlMgqf+Y6hpU++)RYw zWhslOKC!r`{LeM7j4ke@>nYZo$oaXF&Qrw$n08k==jCHcG6>#Hs)wl1qMJ^G#Mif! z!w2M?Ny7%@jEPzi3Th^NJe*Jd!vQIhW-FtNPPgX0L&cZQrNjFyA|?%}XMHKXYPg&k z>W2CsXdv(LgBhSOML~^Xvv`j;X+#p^&)MGwNvg5TsR=86aT8r2BO>H+6Y$jtXbc<= zw=fiTQ^n>yU_|Vw-K8e2H|IbJbW*EVqV4s!PL;@i&~Qd9Q2gh2Tj15-`8g3fWcxNu zKe$EtR&eQ+sVrA64rEDm^xKDO82)gdVGM~ZpuM({sT&dEd83DVpfuFi2sRz+&U#Cx zq}?eh|IUz!8w*{)@p4g|2PZahYgV?Qqn2$#&w& z;N5TuqScrkF&L1Ywvjeq<(NU!K{bMgj}I=~Ima-kOg8&YZD^nlRXbd06ni%FsHmCnD2hfrE8TeMa8;d(v<{czW5RW1)7*MLzI z4tt?zd~Rm!i1VMY^*Cc$7-B3_;=z>g@{N48#U7Q%7G=yK5GJEq0jp=meC4kqQchqv zBx^<)Bp8G(mKp3iwbO?q?3q)2?PJRs*KS0xe-Eiya4z#+xqEI>pGa@~WxmKnXoaWg z$(0nL#$wv;etWo4A2PM&rvd8*&FaATxp)28WZrFPDGA25h7TeOjaiSVz5xH)QMrBi-hTfaA z757B1oVI_3sXw%yWdsSC?+Y&#<1Dd_p1)zP_na7#5gXP3rEsv3@JT5UNNR`~KMjI% zk$^RRAI}F{3*^dY=qRtA+<1boyij~TC)c6VkfZZa&r9BI9{#6UwfvH&`Hg!MY*T7H z72=wn3rBdN6fo==)yc_<+h95Ii(h(6Q4<_i`txym6`D`k|_N)G6J|7)yS~iJ!{9|CJdp1kNEgOFMuM*a-N3-LMOLvEQ z+w&a0H(-~{lfWz$61zXnrg+KQ6{sVaHY81qzjL&TWl3+T4ByfpY!ls-?39-5O9Q7M ztZFK~A%oVV_*$iHWsG{Wy8E96o#DhZr-0+WQvl5=O=Bu6xHHzVq$vG9e3!lkIZ^hR znbHuszQ`X$bM^~&omJtB#;WYq=w0~a+qs7 zU!Sgs-te|AzfR51i$=?a={+l=s^rBN$0I-s7sO@GF#p-}&j8F9GF`h}bFJeQM|qB9 zDKf1e0Y2eEt;^yf!8Pk&i>)`;L(*ejyV2*n^vztTW2(i2V^zHjiMx}cD1%kP3t zof!R4Zg1GiwJpSJ6*SEBTpE+(0rZ;=&1p{BI+a$CHIeGX4m}vPKd$j_B8AhlG7Yhw zz5eG8DW!$CXTdgcJ}m9Et0&rCiZa9zgK`{?9H?bUE=YiLZ-3YpU4Rk(w9GU=zMM1W z)Opc{mhTRc5hd5;xJ=sTop!$HM75vT=|^r?@0Th+e~vBqAdWVWn8U2LZvEWWN$&=7 z{Q;}yVe3freVe5&e{z$;xvzu}-#7_>&57+C5hYyvECD*ag#jr^p`kh<*r{R9;$UfE zDl`3krY|nA5~?VD({p6QDMeZc$6%cDBcAhp4~x{@IU**grBAJldaF}&_yv~Nhv4T+ zQLKcWy3u|8khUF8ibjMj;w%wBG>A*cPw<~)!FWp#0h4ps()ObUPzILRyOoA2#}xFC z;q7mBqYQ^3UUYjB>81G;IOH16lZxu>sy5_^;ZOzjNgk(QwUTOiSi6eVH#Hs2)kkP3 z`6T=$S_Y*;3S>?@g<)9mIR*dL!za@`$ISi%JvYT^?W?46?h6j?eV&eTu_4{1; z&YsAh_y8}wCABA1PzmsvVs8M3&R!yCUc%!Xb^7#U`iSoh17#cA(x6DiW++_as45UU zvu^NUA7xtnq9o}{xtZglz?`p`m#r+1^TILV99k^AoPwG%F?C$hRebn(j*o9D5KK>A z+BD_BG6f8lB4 zKAuzds<7Fowd_B8+X<==OHYT}zG43mt!diXzT2F}dhdRc*M2g-%9m2vHB51`vUI1Q zbUl2ARZ@PaES&QRZzMco{~5jL87#KJU+dR_&960MDmSKk@sfQk8Ov=2fsjo5y4N#0 zf}}L<0V2{IgG;}tW%ESO3Jw|`O?GrxV+SRB~=X)8k+^k8zMc7WImJDl?Lr`C&O zq(RD0=FEHY``+1RdQNBL`@O3bNaVl9B!}4UW$F)@N8!49#@S-JmXL^jyE1~+7vb!X zx6{xPtMto9&XR;=E6UMtr~+~f31>=AWk#g$m0X2-=Yn5u}fSh58~ z#?(-Pn!wN}s4z$*K}g|WSi1beVpn9^tskR87dlNh&}>(l)PJ^G@6{D)wTB(hCzd4s zWO>?kSIDlI8Ok`EO+qwy^O5qeNQmJ1;2yN?PqLJ;==^B&lGE+Q-OR(Iif{JxZjPjH z8pnDBst*Z26Ll^al%BDbyDKS&*w1kJGwcYZq9O`cXdJ&8~DiU4;cf649Ek z7AyzQ>n3f@gwNC*tNC{wNDW^?+BQmNbPTsW?3BE}ETUhb4jlSCwkGV*>=gbpanAK@ zkh1jqzkpAb)Oh48A;>83Ro@ZCn%EwZv)}j2SC3aBPa-0PC)~!i41Pbf(p^ya2jF@U z>{9S}&TuD-r(fH*efJl4q4V{pA?HQx{SN3@MsHGRI0j9YUu(ixm*^JiecY(1=mI@M z$6n?~Z~wx;(`oARN=~2}XrszIuEKRLZL=s?%ntzJC;EbDV|1Q5%klF-R$9pGDM|B6 z^H}7b%%yYXJbt4?L_QfGr77Zh0{o6fs^{xuOa4jyjIhhYaG;mR@?Fyf)yieD9w&TQ zGSIHk+(D3xf`7ex6JR-=F1s?yiuF!6kq5gDm>;>BM3))asoY<5X8>K%&(e;%teakz z$?U?Ce26CV{r%x6LU@9$S4T{g2;-H{+`EpB0h|CfG&Bpz^9vuJY4D=B!U9)|WL_>uLXQO3m&zj)fmMH!8I zgldK}axB#KBaZPpjog6E!*lixf=?3`xz(z5Wc9;tm&qa93tzp(@v4^j)n1QW{wa7? zx$}J99fVq9!{zO#O!TW9^Q${HM-^HNpP}$%OljeSUqfDtF_Q35u6kaIENA+_a_@hR z3vyANuKhaZRlB%~SfcO2Z*W%pWz!BU-{P?0tek`ubN4Hf>E4BdjElW5E@KD=)yMZ1 z9aqG6S)&q0g&AkKA3-JeF|=0NaW?biHqFh)DLCt<9;sb%%GI(g_vIPs_d)DZ6!CeR zz_?y>U6JuO-FUZOQkfjnKir44HVhuNk{(%?q6 zPY9-K4Xi}AE2-%1Dzs>-xz9&JQ@C*!D-~yxiGci!Zl~@98RQ1tWO~&d(#MpS9`Cdp z?KM(!{=XJ0TtaUsIwn*(t)?a9QHQ&{bE{A` zPEaV#9=Q2Y<~7A6{q2bfyHR!8-I?>f&GdNRHT1#|ZCGbsX?@VXQN^0MAt2J1cYR?X zpb+2pEW)Hf?qB#nkJ++FL&gbPM+c7P>w|eCDs2fT2yNF_RT)*=;e#r6G&*fIZw57) zNiHLO3yPJsXtIlSSt2c10>D$goG|N)n_*$8q|*bczHx`P!I`c;N z^FZm}vke18CB)%+2a9v!NtA3HwJ?#lUbyjoda;(lRRRz)+GpUlJI zR;D^#asuR{~eJ$u zC9cXPcOE?x@#~Fj$?jOn(3< zR73H(yMt2L;_C~W0xM!O`xpm#Ko!Hd*}L z5%Cm1BG;-Ig)}C8{bB@4+E)@9ahRH`9xvl4F80w!04GlErjcGKSCY z5F6aGWnprNpJC}*71P#A)Jn2a*TP$$dh=+i`h_TBwg-&wX4);Q^0OCjMZPsg$9uvD z%=pGUleNiSLjIK-O(Ec8nUTG)ddsp~;$?=q&XIi9x2uzFF6qK{-bjt^EOG$wI)=Y$xO@m_!PqdJ z$(%=4H@&E*9xf1@x88OH$;Nzn>urv7LRtD`X_+5D4NujpB zr$#leIA}Pd60b>%HZ240LJwYK{a!K3F~E`kL07O=Mpe&D0axwK#=O#VMuN?_7b>4KER|m0+1%gb`lmj#5#sCX9AdvIy7~qY0Xy9*HYt}u%Nq(q zTlb=(O;~rDa$1)xFx8L6v*;Dy=xeN*h`7K)wjzQIBfaOx#V^EjGKE3Aor|A7`ClcY zP~=n^9bNjRr{p%9JCt?Plr)cF=dcYad_pFVq8;i4D(Lsd^V2C)*j-_Vu`vsiVzAnWyhkjb(rkq+mhIBUCvayFKQ#3fpsQ=i&nIy4}Lt8fo&ay4lC55z6gwz)-&{m{^4wUa#P$~BmS}Wgip$Z2v>z0Uv0TWAu5Yp@ zB|-tIh1={GkLM_>2S9L!%$f^D9$&w|ZFaqla-b*@FsbBeRI_&N*`D!xmc{nv^1^-4 z-q-|Hg=0U<&%spWY?F?SGt_whWQp-Q>jhh}tVG_B?!GIDFL`yo$wDP}K(S0=fEIk5 z(+z*EU>e65?GHeDX!ndUBQds~G5%kS+y7R|pv}t95i6Q2%X_^^0SkRAHD7&o?g973 zU7=R7#jusjsWE<(=f)yi5y+O|Yg#mt_(vCp$L5m6f! zP4cvVJP##fjJ6n#HX&1+XvCOk@FZ=Hg|8|Wf5*A_NWlfW6jy9Jy!ABn&3#L8a%U>= z0`ae`_^%K33GA#pM6$O1=bYylQ!fMN@aK2w;Q?C3ogs|~{tK7g@#NgA8`GHqbcOUI zM3U(ZmA@QLG0$(qb|gqd>YB+ET$!2VF$7OoPN9F=6+4>C?( zI5(lLbG`SqLycYIo%{|zjj?I*9Zg_ZEIhsBg{>|bQqXP2AtHvL&W8W6f;?TO8Jw0Z z>UK?Kw-%RGDXuoxHb$SD)@QrR?6e)#X0GbG4>*P5fP3n*vxLv1H;Ld5l^9d_&mJ*u z8#NezQ@^8tvG`%t>*xDlKE)Z!e)t2JV(A|gND{mXU%`)fW(46`(Fmv(RN@os zCC!w?Hz1#V8`EiQT-6(9$9I7uEWbg7*7C!!E%_|;uS~4=-MHB4TkBeiPzANQjBL?IW-DzFm8QwZHWf9a})J` zT>8nPF)NqlKWHa6e?RQqNyARf;sTo*c3q1OxG(yC`E%?a0*3>Lm;>mFAywP@#608r8pEQ?jE4Qi)(xH z?X%DR&)Iwb_nvX?AY{CGVT_EGtToq~^O0F+sZM8$;rQMHDbL;hzCT%T+3=8dZ^QWb zP!YXtBXMsdasnmkPNg)Ooa35okiC8Zei$xkRJeSTbX?R9nGf34>@GAUxCJJ>Vl4VM z*?03q*i#ePz1BgL%x&h5PunwHNQHWte8cPZ!G<$EHMo;trqGasc~K@~og zzy1IOUy6DS-ro!cemTe@I8qDw1$hV^dDk6doiDYA8yJB8kkvUQB3m&1uX7=X&EufW z|>Y0$c3as&Q74%x0XuAc5xXt_rIH ze)*gkc05|_%YoLC8Qye*0qtvz8t9Ugh!~}cH^?s|*%itR-bOnL$)K#y<|u2~7Z6%g z^D}a&-?gUq6|ddlN}AsUnFM-8bqiDcHomuMeU1V9kDbbfW{bq!BMT(d9zwvto@J!e zsj_&VMC%ifN|~5?aQ$8$P5of`EHbBfZ$k6JaxWh-SbK@`=pS*vBU6rLUwK_=8JMs6 zI7JZp5c{tqPMJC_#B(@$ZCPUcdqW8)m$v2Tx}q@Z)RJ$#+s}j6iD$WazI#1(;Y8(P z^fgYz^49u=L$%Z@lMmJ4jIW^H?eZVMu?hEYQ-3BshWIv> z%Jt*8@a@sXorTEB#nES6V7QOumwPHT^*f)zJzAi9VhkkUvIf_4X5kOOL()6nY-ehf zkK@4RrM_CJ-&ad*%LT)8{giRH*!5(o3Isv%pwsOg;gkU<-}(X6LZWuPNp$dy<0{qL zz~j}xd`R@;`X4}D#!R@tQqcX5loAV7w%n)B>D>P^{|P#L%n%JiCsH@%=jfEixj6jXgq5;Q8{p;=J^qWC%Uk`j$ANo@J5Pd$TJV>4TpU8jOu~!nUB;`z=+)3)_uSbS*E54kY zfK`?jb)of~_RZJoWA`imQj$J4d6n6){1XTX*N*NVz$|N)nT5XpCC$V3&uzp+*PECB zwwU7*i1EMzJ!dTzZz*-SEv@B{O28cx@^N#R zLrgS|`~j#MNQtQmqA{k5WHNo?%%TD97Y|`DMcz47#~XTVqdTo1PyPW|>WpL*O8I9$ z7Vp;sJ;z^MC{raaH@VGplGR8lOg~vG>T0_6^Q8y`&FP4i9nBjCJm~h`VRmP!gyl-m zefjV7N~U^9K=Sf^oqwaA`u_dZL~Vyu(b}s>?TiK~NmuCS0p6E~S!wi%G-`RH9EiMN zSmsJ}l2Fe{dqR2osXvNV^icj@X zpJGLGoO`FRGOL=IaA;55Ai3R+MtQG#fe@V^us7^E_cR?LtjEps_yc$oOI2EZmj@>6 zC=4e)EPiP>x8!;xaPh7Xg~740+f`mmo_tHzmL|M4&eq;~W_*b;KfH{!?Gv>#jWQL2 zvArMh%DiMY#x4KQTnJTq%hAEoh5@5zBX-x(y;E|`agnAAhs=|!pS`b2-o^JhWoO+< ze$FWU-*ZqUAY^wNbdZ!~a&wt006XPy_VtV*vMe7p$PtEyj1Cz|UL@+otvA_F*E?{I zRPD68ZRUlJ=6{i^gE5LC)*mTm=L>!!9R+e@-0jxAq*HnsKR zb$x&+=gQPAoBtESI&|0WT`v3N4hST|b|w`(Q8) zX~Z4_zCV)J`&|ZGxZd7LaOS|}divOB3^#`IXUOabX--vS4oW)Yx@D3^H+aC<3jB~H z8>Kv}alYHo7ArH%_^(&g!MH;T1d74Ms4o=~wgNufOa2qMt=#FQi*Ta7xgB{iRSGXL z7Hs6jF3akQ!p|^BGSIp{x9QS0oIwWj#MlK%$)Z1i{x3cjW};b?0k*2pz$6G&8be}k z6>H~1dOy{qR^X*F5xD4V-M}?9-WP8%N`5AWtDfV<=fy*<;umV41041wwSQYm@nGj% z*Jeg_#nyXNt7@EBT{2NV+7kkOm#s*o*5-~bSoj!f7kB;*R{F15+dto7YWDgAsG+cn zK@@w~Yn#O~i;2cLBR|zdRQ_i$QFW%_j^eY8Lgz%!GxBEVcDm<9xgObf>h>(PQU#%b ze#6=~9&_8rltw?P$6N-9Q-^`LM7oXd@w!?{n>AQ~G=4MJF@ZEYjLQ3T!Y>NOgNTh-y7@abF!N-zdlVuO1Ohm0VK@4YE&K3q=t){}UzNenny4q~10 zc`#8+HVP^M<&wY86mY7=rFw#b|D%ZKbdHynrCsrgC*+Be`oceL5(ioW%mo3fN;*+flTGc@Dxn^mN~q}#RQmH?vU zgcNx$`Ei(GBb6a?v(BtN@o?K?vW-BVW1qDbpZ{zIy$-}++Fj2714xK(s}k*k{sF8$ ziOc>2xE+8CDWKh7@8BjQzHUFBU4?CYa02Cux+Q~ zr16CzPuO1Ve3Sk5g4Nv(W@DpTG5cY?Z))9&-S^Om)U7vnM3`)YHy)QREozCi(_`6i zLA)79VI%usxrJ6w`|}!U44=25(`K&(>>T*rDl$24M(-r%oxtcKf7C4hvVzIlaCf&( zdMgcOE4ZP~m*D%YCF}##*xR4K;*Lt$x!TTt|5eyH_N8Oh4-xnrpsY9ZN%OaDkrm%Q zJ5de?W!sfG*M8>|mHP~_B+rxX9J4JXd_utipLoHk%KVTp>*jN%ruocdeuvOd(y92v zhj8+=-l*BOCo5SVHteTIrIzXZ3F4tjRhrK1W6{Z&u}&g;P-NbpGnRNe7J_HD`j%{y+xTU{wLB+q|Gi93DpFq_J$quxs+FF) zTj}7Od-(ob*;7e1opmBBY~|rlCqRx$W*>1Z4w8>?Nw(=^R2n8un`4 zL+)+8xQfk))9tPG+YkL*4&G2>5@e}pcYsTwjQBE!R3f3G;h}NnxO@JE#HG+;Zb$4P zkyO!s@m;~gIe+bJq3A!yMkF}+KX}+RPH%ga55FdG&2Sgh867c($hoADJU>~TEo*=! zliODESg#Av3fCCjua8F%&@rR-kfMpKaiBz{iI+uzE`NFnwLJOW4}VROWspuf26^`ZBlKn4R3vC=+*unl4_tzhi(T(lunA zCe)p2+&>*;?O~22Zrnp`wd>MFI27eGF@e(#E^rzV94Ym-ZICb)G9v-D_-iY9IRlMZ zR@m2?%axBhWe@g@A%(0@JW4&KAf+`Rbf(lEnqk08+_F{?)NSG-7NxgIp~$E0XGlnd zu#l5y`5BArGU))%1+rRTL3(GVT>$?BcuP&|*3AWEuO_$^PQq8>;;*Liq}BY8pScO4 zDy=${bA&EKTW5oF`FS1-HW&qv7p#7JV2l}D-6{&C?=6`K@({bxwb)sh zqI(dG%_T-uW3Gv~6D8ZWcmz2x7dagWdNd>oe8xj!=cCEA-zRmtjuAQC&J$_XN+AIw zO&cEREQ=?kB7?u`&&P1$;)0-_zoeV~d(5OpeCXb(qvwqH-a9hxg%}YWTbRRco{Vq9m)Hk^{Q)V#P(ozciQ)*Izjcu3l=X#7wvU7t#=WW zo;#f?Q#NTSm*7asWWQ%-lPIJw$R6YgEnj+9N$oi&>|KgBB2Z}{I+_7s*hoX^n91DfAJ2SRF?9DSMH*V0IvP>Wk1AjQY#0zV z^Z9L@Fe8dwtlU3f8uhGt8(iaN>q#OCQI9s&3?bQ8(ef6Pw*^rwFFU_Oh%|O+UO;Ua zd1|5lVAPKo;s9Rt8gvvUl-3PZo0i5R1J~_XQFX;yRr~2!PPb7mZmDGroHDZ9<;a7~+9;j@_4r2mY2YtXF{BWC!vYXmwPo!;Pag3+8 zhmtdz_HLap_H0ZcMwCRlPNUDi)x&tTOK)_YUcf?YK;BAsBz1Zm(^FTu({UQYTZ;|r zYopQDdoD6r??Y3JTRyX|xD}O5a(cosbc^4Nb{ZOa;Ne(Q);%s_ai)uQU314kjwYR4 z^1mrvevI`01Hfvg&2(5JG`bK^dj#U}9|}3rss|^vFfciGW_QR^7b!(z)gg=$x-;f9 zt>VI?>K%;fqb;MeT@ltv+SS!sVs`t_x9qQ~}`CVS;T%n^e8CAP^?Sy!qnijzDrpjM^%(>}#n)#lA+iO!g%SB6!xWPi$70 z-O7Vle!p<~i*nM1LUnhS3 zw(=Q=aa=1tE$?X3bfB&c8qi44UZvmFO@F7B16#Mc3K|KgD{#o7lFpz0nNxAe@QX!$ zARQ)zW(CfO@&M0af2tDXoby06t9aM0?Vld@17T!Qb65Fsql8)z#eyviUYD5}Mk+$k zcd$nMo8K=yk7P~xtp>=ZJCy;Lchd7_zlEG%b3RQgxG zvhiwxWVyMYczya3qhLlVvbZ^_QryuZcBK}@8*@aBF#c;$=F%U4NRMkGxp0pw6iHig zMQ*@@etSqqP0|6$*71PPUy-63OmW0Pb*~zApZfgItIt(HXT@t~g}T|htq*%2Eq`e< zq_P<`g$S396!3Y$)k=*A`d;;0e$TV*=fdnO@}(n}n(m~WKS+Dk=g65A#CV`LN0*6O zP}h#H;IYu|?>P8zvaPDPcsiIcx{?A_Wt=6i>!+Mfc|qlJ0YE8GQUiav zMWfFocw3mq#XV_U8^njFLxc%mEDYjo)|za-26(VWY{ztpnw zU=gZJtVsVw7-4?RPXQUD{OSGRBP2shPh{z9vTF`EnVQ5@LTLfwqzUF$TZ7xEh*i9& z#l(Z%8vNHNkPrG)_mA6C;-B|v1|Izx2iIovIGmc~MxPIWgF&nIFMn?)WqRwVzJ(c@ zv(i4HE8gRED*T~?NTX$0VyoPbO)Rpj)Q(_gtzPb$BZB+R8f3t=h4_iQmfAF+C5}gD z)Eu{pC_8-WG{X#2HV0d3aOtaV3D|T++-}ge2_|M`<`t(>Wz!!389`tjQZ5!{Jpvp6 zg3M#nl1wo=qr71yrjlCfg+6SBr#{ZH0fJQnfm=FbS|}3@B4-DW(9@FC`DRW%f&&louvS zSC12ZGFYy}lr7?w=Yjhju?u+Z-WU+hOSEd)yb$iy!kjM@l@3%B3d-P*rBpoGTo^V9 z>2{9V3-*^@uvWT=j`69+%H$Z)xffz)&yj*qh4H_lm@?e8GjVC@jpe>1Sk*k8ZM0vy zb`rH{ha4-JXGE`_`i7h$7 z65oFbRgx+KiQHg+#Sa;*%oyVHQu+A%r5@d>nqOf^ZrdL~sIGd2pAgE@^Nl{g(5e7U zPG;t_p8qKQh`+G0TlH*Xp2N0nEN#4h#GIO7XWF0paABEenQ=Q*7Ep${-Dclx!k^jT zvGTLs8bP1MZ$g5>m>SxzLd_U#P4S@kB}#2?WO($ zn1?5?taQCPlJvFnjD2;cZu^T@BjQ_HC<~*9IGbMrEq&U1#u$&1ceF8?J0s<6Y*r24 z-@6mqRJAyj?B!l3uh;j^+p^5X${$v$xLuEKE*ku1W$Kb$oIF@6c zdm?;Z*h%XfX5#EwP0`9$M=vyWwnzt~1ftS<1;W2(njzk-lSPk8r13pij_ZK;%51fnu)23fG3wp<1chu>R}C5I!N~y`{lqfZKrQgz43L7k)~PFs3PpWZz|*GPk;~dl>yqse@#_v76 zR@Cln`;F1f?=9u4n5ee~`%FFD?&%9B%@Gp;zn0Gc6VARP0^yPU#FvHNxO_BqD%T=-ShoIw|NHjO~1 zbIHNXJmlVvNfKL$P3920dESK^9q0QKIM&#sl=>9nlVvsMbD>uDwQutNASUr6ltubJ z*|CMcADPqQFY~+S1#Pr{8!y?_VHa#hdREM0Ugp+W5+=^KEhSg)O|jIy^@h#`)H2Q* zBk4OJ*;|$wE{lwci&yE{33&>rLg6PN>%_}eTth7WS>Snq81mAXBXSUq?MZuUk@H%xY zA!~sdP$5DyR0%VgUPAuIWT6fItV%)J_##YR#P62-aLGi}*8Ku;aFaAwg4>LeB5`Yx zB7V&q4XK1w+xyv=53XkS?vhgRUz|?x{3Cn&M_uE8a-q(iyISEhccQ)k!64e=a5v(o zY-?s-SYZ8ip1deHHR+5$?qa@iwALVJ>>XvkH@eWzm zqHjDlrHhVE9m(Q*^Xl(OQcX!ar|KGg+5 zp!iC4fyC+|c9@*BUTqbjb0W3nxRXHnv_byNYEkp{^!v98)+ouY!<#eVuf6ERM`r~q zXZ7s-j0m}}px03o_nmbd?7k=HJXLW%U$8=0=js^c>|_ zrg+q%)8YA;tMTP!AfsH&@xfgdLj5S>-k(Ly8+W@?HJ1WW0Fi-ZTRr#NH0A1MS5rUe z!K*+5HBPEm!NAuu;IegL8ucL@zrtq`3dtY-J`b~0zx~!fe2sr5W^%@5j8~6{(%u6q z&9Co0gEoPz)3^w%D-@|%xRMBxKY8phR!_?wn-?gJgNnEjFp+`mZaGtpspZ0E8V3}6 zoS*xibg_#|UoAb}CyNvCA*vk(hQVN+GhAye?vVfu-)pplp>!8lw$xYJ>FIWz?e30g zEFkF64>$u;1{! zX;s}&!DW5~J1FDlqt%^-fzkXng7fZ({-bmcd3?MA^=8uPSBsDket{*T*)S^$li58B zXlCqP!N>P0JVl<_R|Az_mf!dXF#b1%bGanLM-VSr6-5NeD&l1oK z$r-C^kfgY~tJQr%x?gctv_2Lus1~dmh^If@AC&BAG?4d?{(v${p-S}!a8zCLl$*jU zt>E4p9&%CS>pCG(JMCE@(Jtdu+U0nzZNC>UK3ty++1{Bn)HqGw`CdSuZ0>EzpyM%1 z4lPJ_+~;-x8Mb2M>PEi#PMr_7DEQSC0Xl%}yB|zn5I&H<`TR_gyb^QdAi3xCTMN6t zhmA#w)5hV?3v5t?c4;7q*2>;61}X(r8$AUM0Og~|mRA^9=^sl}QTl*kHY)e)kv2!A zKn2`=kX;aqHKw#iaU(9Wa?8{Qqh&#`0U8qSI3t}HMp*i-i-#mV@xo-Mt>!R?Vh$&4 zGN)vPqfv2E=j*~?93eD83ygspXA=Gv3Js@~zoY~s?3qK!SA6nMp4=l(j#D_i-iKJ@ zVOA;Nx+)6RykioOT&jsh8Ysm;8@^vw7V#I6g<=3n!nYh01Y6jMjDtl#BK_Nt(lrm1 zMOMD;zpsI8Rh41`L87*L*%h{< z%bVe1FND5MZ2o1krtlz)US-()T|e{fQSiI~j8aa`cyw`Rr@%#q*{?`}L9t8gWdRq( zyxqD%tv6&ZMnZjbVlqNl`j?t6YJJSrhI+Vwu9T{IxC;@s`S~!u4zu3hd*7RQo%oy zp#SmZ|9@Syo`jR9caxPlbm6W$e%g7IGd}EmhJMLM^zE|L1{~Ye7$C6tk`+y!*uPJ; zw!uCEE#62lnr|*tGt|D?M)smvx^aJ>s2KN>Lm9VQBQJ$c%00K79t-;uF1>aCBt%4S znh)I7`Q{NZ@#)Dmg`n77-xdBMvEd5#K)ZxyLqBg;#S%@y!5k@&9(`BT9N!l9YpOOb zBZrLkh^iLcu7^SX8ic2_Gcis3Id-Wv0&?GPV*%xFsQ|bMwG)6eDV6McnDyLSk!8I@Dk0!B z)AvkzL`GA2eA$X= zheVJ**5(rRhkq-s|5x<+3BjDNy_;PYt_p0y7xo9BH+Rtj+n8_=Y}Ne*jj|vuq{Tih z?erW^;)xDjtd$!r6#Km!Sqr@yRVA@=Akx%cw(!u=QlEgMb!?~;8<;4)8`RNU{k#$Q z_z(=@E0Kz{<6(45AN|OKbV_e^Sr&)3$flL+%JpPWT1*La=DnErsw*6ADokymo)lcu z;#})G94Tt|O;x$j*m2sI1&G|R3IeaZQu57k*2*k%geak}t1GYwr$TbhE4a}%@=Oa0&eMXdIn`^Pc|3M_PvbGoucGy$8#92Ve)Or6?QI%^>$vypo@hF4ayVM2bULLUapcdmV#37A zpOR5nj8U-R(#qpV(^}>2O)sS~4anrUqP|bMkAmTj4)W=AlC@o~(?N((Jomk4DtzuO z_0kv0!KDTD5S&#Dq=7U^rEyVoidF)?>YA)FHyGwbI$Y~9X-*`o8Z_AW%GbSlxwzHC z2x%6*aVCO_7ccXaOi>tVlrh?=%P?D50*>Xy-J>{<2jg}qf_|a6-*}HY@inczT4U*p zJ=zu{iyU}4sW~i?*mYo_r)g)xmR&{SP@4r>=G8qy&9NC2Bwe7T`<(U&Eh7$`tSaI+ z><(G_YI|v=Q;+}5qr@4z^D|h^ak;Hl7)Uwmo-HBCinXjr4|r~XJ7CHc{VQVV>r<79 zkM6BH|L3ERTyOuIyEL0h0tev$bIxFwFa!jZbtz8MV{(?WU=dmMa z%xgZmOJc+c183wFwek!2^T||EZHl_rc4S(yQ?`o|In%5p#PUSes#R+i-_2I!pQw?k z|I)`}$NM6#z5JXgA3Z?XwT$=-yp8JbIqR{l4ZpWw{XDXpD2B_2f2(~B?f^TaU zp)IUG*n?p>b4R6(zocrUcUT2q6T|%#1&T=9A@5G1uQYM|`gC8$*RW|RFi#ro?yX8u z{x5X*;l-E*2D24{yKo4?HKf( zJPXX1FwFD#(Ohz0R$0xoUb|@eQ_C{O-$-`Dy4OIWH{bQa4D+`EW7~3yxWx)~yk~{b zaejN=-m_8gS5x~q3XYK5hpr59MWV&}9Gc&sWxB*$PoU@-?uKm`B(~Mnl-D{NxJlbo zDNcnKi@!K3krr3Q-4mjyMJ%-;B*HwZP|G6DzdE7ZZ3~Y}B5fNl2V5_P=F)8L{&tck z_&Ka3FT)Rd=!ixyLfHSw0GD$z%IA&bSs6LHl)`~kJ!g4JuDs{dg6 z_J)l9$r002*WLMjt{#7Cx%2u~^`e7vp`JPqbfYx=!Z_GQI1jlD=(hm-kyi5CJ>~}M zx|RXoTQRfM=2C>eg63rw<@doW{_fzfHdhZ8&6$?`QMl5$Z{Ha{zSx7bLoPRELwkO|KgQGw5biM{UIfIL}c^l3?3%D%z(VfmPOL)k~9Xl z6fvh=SyhC$3Q)|-Hq3DuU92a^(!V$qsqBcuTZZa1i>478dc{R;8vbK;Boepu;K9UU`k{7? zx?L{&`r31goG%_ID*%F-5dOh`Y=089c^5_B;MS|Twv-@Dd!!$ag*wd>6X>^LA;nQL zqHGDDqmeyY)%>meSDnc)7dH>-5GK}*;$d!?_cL~^Qj{sE9OX9{f>)o(YoGpeIhZzf5vQkP+od%qHprUher)Qx$R9f3LoD&zC(sGn$}IT5`fJNC^6 zrus{;6&JFo4T;?Y>FZxV4l}JTxY8|GNr~faI^#0Ew{r``S~L1Z_6nzhRrtIO8mFpQ zclg2s)A|^n#>^hpH5oa7q5Nz3bNktXAgr95svmyc*EK0TV{oinw z;G7t+CNHj|&iU(p9e#_kNq?d+o9rCiDrUrpgap|~mnEC&-Joz!T9c0&R0Vu2hBk}WasaHC8MbR5`H_1?KTly!NbY@Pb z@tJk^b!h$ZwCrHce=5TJKF?}uDr(n=I(SU2VIE<07PTo}sQ~4_Tpi2dal@t^6`pV- z?{@C~?(_%HHR0!>t=er;RxTA9{+%Kahu@h^{>y6JyW2l!-SZD1@Z6#)|Dq}#Dd?3emSV7zQXmkXvrBEtTSp|`o*!lp z+0R~=hVb4RozuCHP_}!BLzR&3jJNZjw59$4{7<=me{)Z~503kpa0|UYeKdQVw3(9H zk<34?d<4Q>%-eT4w_i3vTJKVY$E5@VK2s^kA!M4uGBTkdpqBEK!djNzOPGsRWtZneR5BQm5;sz$E8mzVr&+Wl-l{A4iJ)v)n&`9h-Ii zB1`KvPr(-v-;N~5((4KCtgWy!M$73bAJiklO{89QD;;NIO)Z5 z8jUu~{`w1DlA8C)T2IKav9Dr^Qo|D4Ow`Qfw?)p8r?vW@0wv5c67H<-2)w#6`@wUxK!>ol_Bbz=BxH660n&@US5q=J_Fs72$J~nn-Vx zIiw)e<1?>_7@c;9O!hQ(`mXrTLV<&B-=4m-2qy6aTX7kciMB6|zs1#UlvI*@KT1)1 zWkVSnTgxKwKf##(Z~w#eQ+8D8jnaVHH%0MJ>0$9!9C&OLJGx*zSi-oL*Ei{q1{}Gi z4$C9L%tmnJP}z$DIc*U&V;f|7o<;XB=unFn9ZAOVLNakA`tC6PN`!*ZkI~_HC(ms) zr(TrOlW44oG{)D6$Jz|V=uR=BdFzrkgBM$~C3Oudt*?neWQ|sz+n1Sz!1mlRnj?_g zfTV?%e6$!b;qm*i9EB^0?O&4zBisU)epuhwL}nY(|Xd(TMtatEb+ekA@zz1qeBa}} zSu|G#ymEzU_exunRakRIwv6)?M`H2O3fG*Evqo{LZK9@T&yl0$PFek!QBcBeC6ssL zdWdjLH|?USQGMt*Zb9^xn@so$4-S?%kAD6z_kT{QpZ=aG{hK?H7C51+4D&nvw{c9@ zt2RvAj4kQfL`xT=;;*H=R_TVRXY~s@S>)pqOQ#rysc6i+%1L;1G3Z^jRmK%#5(J3? z72AGH>bm>b`~kdZ^!Lyn&#n*2?sKjM6WXv!fJIbBFUHWmQJ8+X3nmDY+9pLA^gGfH zRyX%Ib>dpnN(y5^*NPA0#6)(-WKq)Eu0{SfaT{A8xphcfe?ZLQr$|S`h?`f8Pv-j( z7^P%G!!cGcV~p>xcN3!uqN3If!=~&&Q0=j{{?Wm_KC_v<=UB?)N}$=QCn5aW$>oV%1r>4s#Al>E@eX^zCUl}`#-Om#vASh5 z35HU7T)g5JCrr%^R~7Lp95DfY&!SRWPd9V~`al}dfXs{AHhAX(h@Zvw@)L8#7A6JJ zDKM8a$4tSI>}-SK#$MY`5xBWI_)Ac7IA{hMO#0IQ%U>S) zFS1DHkqvz+c8n0HE;?}^kcyR9^z5vCyssQ`GeUA*GZ}Qxg6jH93aV-r$4FnxyBRJf zgCetlgEf7j=Dd^B>;aumvz8k1%pM?< zN2}mi7lk?&To4kcS6Hp5S$Xq*M3Pst1&##`evU5r?tv^lmHDQ#rNz7T$dJuT_uQl% zlhdzjS5PHE9Zl*oxgimNA6D!=_r$Au3KjV##j5gI z&APWIy=*Aq@@VlR0SQQ7D8?**V%tNzN>Z!a9<+F*4-J)qMTp2xM-`2~m*f9&B>mS5 zM)HCt zc|i*j2on;jWL0}EtLjaai|ri!t;+mf#nH&W5nK+54`DJB7UX6X#u=sg@}sHpY|-## z%+W$K>Y>c;AT*~HjS2SU=lq*5(*jnk)m4yHC(c~?!f&-zv*p~Cr*oXduLSVFj3vq< z2{J?JR>u&KXmpGIh_Fjpd0Ae>&YXeOoJ3Q*L<*0mhlsVc2z|~SO3jv0GKfeM0Md9G zwD4r-55VLBE`FK4pO5{OLoA)MA=T_UnOv7+$>+Clp$)Z(H!3LJk*>}GN+IYs{W_dj zv+^yY=2HeK?u=Anw$DFVWYtA}_=rK+9+Y)rDA~oehkhB65tgF9_HE}>VnGQWu?*Cl z$L8>T`S`A99|xx=lY}~0Vg%PMhuYd5TnE#JfeEy6vw)+@5)cL^`dbJ^XCU>hTdUWv z| z|0dr3zl6en{Zk|pC6{RGVRpuHp}mT>f*vKGpO#4M-t17-aNgX9o2IiNY4tb24!b=b z!SwvdVldt<&2oLFgQo`XNZ#tUH|bDz^_1Oy1FAXOj9y}KJL(}vLtS045Zw{rn$=|# zhVHmZTzlbh{JPOG$lUkMIJ&T~)iB)jFI{cj9C0#V~}SGV%nMw+yGV2U-cE0{KN`gGziWh%9Z*sgqxJ zV&&$~W(dL>!NxrG5CI}0J-$CcB> zS=Yshm#Z&vuFKO|ek;}AWfckE`f7H~D>WB{g_m<88*!+{?5f1&uMlB;uu-_u`kpR) zmh`9~Q#}oN_3X}OMNIVd>!x!(Q@TSs*4|`#rPzE`r}SQve6+Tjn<|MizsKzsakAkM zkAEZX|8El{Qizi2j{ivQiy-<~Mh%ds;wB4^IhWBnAd-ARQ2SGHKxmAzUb9DfsPTde zY_eWYk0UjxnlocyEK*3czmHXe(xz&9nsD~ra$|*r;dyciUi`I1Gb!6U8R4Ewop4^m z*ICvT5e|ibv)@h%5b4_&9u(Kqk-4u6XWG_f57M&>W^``sh+FgfQ)sI}L2rf>2KX+M z-CNJB)XIyi;Z(v91`amr&6$F}^1(V-9OaNWc;}ss|JA;u?@4V%Q*Y~Pd*Xt}R{#K@ zf&2jgP#fnBb)rq|@Q`gJ4y8I0R}zu^VRl`bwF3&<>WiOeFjReuHVW8i%X@6fnArtC zMjrFxIn$(%BNrcUY=RPIv%WpD?khL?T}W5IPmP#*H{gVgKLH`ZcwFu+$JoY3z3%a3 zfs_XXq9^ubeS<<1z~{mZX>1$0fE+s;4opOtO4g!21p>kV$fgxnWPE}qI~{^?^d60) zkYjtJ<*K1B#bO4F8cAAoGB-i%B|(WqK}US)BzGMZZAMK^9%#IDrk}lFB{{t;j1x^~ z8iAP7O7|DV+^=|9#_J0M(!*1%>1&Zool*O!@wm34wplDQaTyNy3+qDzsB1%~DgG&E z_}{z)sv?4Bg`C|t7Nc5Y=?;#=S|z1Tii?x{R!bQO9s2Ku?*-lh5A+HvmbO4X8DYtG z>Fky4Y55pZ&;-&nVf}#W$)Ed;W?Pl2W;a4XnU=v?U(we>u>fisS);2V&L0}*KCDAK zRpjr^p&KvBfa7yy6SW_E&gkTEM9!2|z`Z*2*J=@MbsZY)0SMwLjvt<{e@n^*@7XiF z5W}VqF;F!4w8xUg#GcbAJE+dw`N2kWe6hoI^wLoILQgP9+n{RZ7`foRu_`dI3c%=+ z+rj9>OHS3A`gKKE#XG1}+(`TVLn$GGQxVO+m>1uV4Csn)pDEb7mWdfKO^zp;c$IU! zvuYj6H&`k}_FYU2Nt8vzM_bh`+AvPA$$hU+h;%=S`rY8OsusK%klt$)i~iLTa;_)S zi<@NmS|=P3mpZANi|tWjB@t(>eWZJgJG|lo7EZf^u>D*fip@U5Pt_UeTG`fp$1Tt1 z{&ujSN0Fg0RXT%NHO5f&A*8G!#d4*Pc)&PXtWvG49;+eViuvIOR+}F1pzU1|as4Is zI}ArLe3@scDW#_V{P(UU z|0#W!YJednpmK!cb)yuK^e|auccr}W9s*VVVJNbXdwp`6NY228L)KG)kjC^*M{TFlBi`~a`Suw0 z97b8tS)mFawdC;Wi#cL_FGu~JsxEKCx9GySbm)JkF^`x|7a06Yhv0C3GvKGK_C z3hq}I__+SyiFB)3F#gz}@P4;x3Tubh{5LQyhrYkRY?F0LQls%zXaE*Mw~DHn?!agl z=Y9EyD(iYJ7p+yMd^^#?t}44}n*O%nR=~Cx8*0@(E*W6+3D(U>_|)7%`DC%Muf9(* zO0f69E;VJDc;wC}8ee?Abhs2PQmM?^v|8+WBIXud)Zbi&v}he^cuzX{JON5B*Du#E zD<^0}LO??HYOG!!y3i<_mB^P$W^xdrmb(ASgyWScfqJpD324s_jtmd=d_3&m`;h&7 z7q|gW^C5Gl7Do0?9s_CsQWU^nt-b(MTz+W?p4$HZ`d~VFi2B z{QQgC84eO|{93Ig4#N7Ex|*c7;k&AG`Rfh6#qytO`pFtPw93mvQw$O#Doh41UuP8U zyWbdwiKV)h&2EjPg=1(hgaoycvo4U40b;T^t5)ewDo$NHar<4w<7(mXbXm3hZq6Dt zoF#yP?5R1;{%!Uisu5VI-7>sH_H%P8CL#`oBmGQ7=G%gVc>DYBE+{z=;!p*SCf#G7WZzY z%5p~uSph`+^Fr6Hyz|R`6yl)43d|NVras2Ec6XwZrpi&vFgq!{I4Z)#eeX+A@8lD;_AXR&mtj^ z1cF0wcMTBS-QC^Y-6cTK0)o4HVZq(qgA`V{ySt_9>t1tZ?w!@stMAMoGpksO!m3Vj z>g@gO_kH&7!Eg!^@j*8JxB-pvi8zAEHu-lN<6ksp#5z93Vfh%6uO?q{bZ*X0_@VlA z@2VQZy%D^k9;xNpjBLG zvMgzBA)IIrlILJcX11LF^)rq&QO%~h^hic_Ky@sy^AhOHBb2~Jwv_)B0p z!x!8{3)mFJQrt~eZBEyLtR}qge+u9UU`+Fv+d|%UI+t(Q7#}a z-(guLpwF&PbEG-qSf?S0T|9^+LO?Oij}#n&p#=X46d5MFcnWGOx2_bcZNfG+N-{bp zN`<=E#&2S7f4dr2l#nED1YeCMxb9q%saA;w&AmKIWf4w?B-ujZz5y{F#ruyboy$e- z=Rhl{(F&e|^m@xGNeFZ;6Hsu7l5jRGx3M4<(tA%iBNfhAB~9G3PD0imhBgw!`JcLzMWm^ZPEihT3aOvBa7OykUh;qjP?m=eT_&$V$oLQraRLSQIN zBGf8Dyn}kiI+q!=%^$ui_u;K}2dS>gcGTv@&tz}LdG*G7k=q*c1T%Pm;+*#^be)*rGQUZmzVX`J@ zNs<>y2u@8Q?G2j-1KFhAG0d{?5pf$S|3-bfM~7Q-kww1^o1mgFS*Mw1c688qX7=OU z2uO6s$6PTg4XT2IXExk5=4g6O+`eBS6D((%x~voszEEL*^UjX+vSZy}Qp-sd$jKRe zznc`kBY@UI(f^EwX)kI8$*xH9N=W9?x}&a!XEdFaGmC<^40oc?%H;k;A0P7xmGNd` z7^G$JX;avv@zAYR&-&}ky51HPsQKIMtX%r0BaCJEc^kN~PuoElm@2_JdWpt%(|KU)Z#ESnRNFP5 zbA7ye$S#DEn>QUohk)8j=8bF0nn^pi6PW4zW?FYF^;rh6o1JR>sQQHb-COF%z*19S zqs1C~s9T71B)E>$?Dtki^-Z}(>4)!D7vH%)Ts7);KVz3_zq}FC^X9O4C`=zzoVB#O zpMCv+;+xCNaGgoScAh~XBq#*l+&;c7^&EY{kTGVB3Jo=0W?|$5`MpFheKU_|$RO3- z=jydA6uzHyfpofLf|t@3>!9R<_;D%nXDQw^Mt~xwAheVK2O!+!V;WvlI$)%*x#!{e z)yDE(M-@c{ijbj8aiE~o-x)!v0WY73SRs4}6&bJ9;*qo*0yRm=a=C@zCW%Gl$P~;S z+hH79+vr{icB>Kjp7qlr`=ETl*RDOj`ddcd}l4vx|9~HcWfwrk}s)&XDWnZjF>P zL@U-PmW)O$2+XiuA|18g3^~_KFlcyvAuXHOb=@5E&1%_pd!-VaOL-x!1_6Y1LyDr} zVz$HZk=6Q;I01p;^BFp&GdX1fAfJLS!~XUg*Q=8JD`U})<^589o#MHJ4IOi@QFwg4 z(Mx$mR(=#_3-0jNM!E!&(Sg0~BZ(w(hj9v4&Ni^Z)Vu8TJG&`Vph`T0gTXdw87SSM zj|PW4_mg$(x~gXKqYb_1h#Fd7@zJtRAXW~{Yjk|bb0#9x`n8V3;%~f5Mn#q;(>we- zB_iH7VfavT$ZmZ|z_P{BRgc9RET+S4U&9()So=AP4IvY|c#?HReMw77{evbxrlAn5 z2P~n`Jr4CpXjukYbA$?_kLUbZF?G7lB79X4VxyBkEHs-`7tlb`-Tbu@;Km|ZGV-(@ zXc20ANSKpcBDoAssi^^OA3=dB;-*H!W)zZ-AA3*)ji75TBS38Ku+ff2*nSEBJ#S%$ zhpw!pj%&$o8BeJ#8gtwS1H$BQHPi`oV>8nPop zZn-s)$i+Ko{Sbp8>|uO{`z)!jiJYV?Hp}!!PB)j(HB7eeQC$iu{Ycy-bxRH0GQY{Wpp=ZMH)~Kx_mtf9$?klSPhR$` z)QL(tpwmH4$n;Ujw97)9PEZ?u>mF5nC2oFvcqCW0t%}T&Z!pTH5g4Eg8Ta8$T}sYZ zP-Z$w5$)8UM3c|6NQskT^}1Z*0OB?e`Yv+Aj>rLJ)fQUi79katQqLJ!qr-3M)K8xX zAM;;1w9_UK1+SH>kZ&||3g45RT^8T%)v2kvGgdFEisbtimrUG1zPP6HBP!qZ)=p2L z^Rt*Fd|*a0&X_b{blGF_;yy24uhdgZ!?`8UiQP(I!)-&~E~wt5A<9(H`5(!;e*w@9 ziBMQFl%xGm_X0Y&yh1+_LC2ft->BU1I+r{N8Gd8t%VUD4kYc^RfIAPAL_D(aT^=Z+ z+Mm|)W*Y(ch`c+pngZSWi+!GHYNJy*qxh*!Ma=UIw;$GbX=*1;IjVxQsvM8M-OA`@T1|_&qhAQupy?aU7O>HFWhSLXZhIE%-)-IZ=VI z5g{Rqv#o>t5F)H)PJ+*b7&WXvFN! z;#HgavCd+YxA;{L(G;(G_*#3GXu;&<^?ZsdAexVi+aC(|*6J`BIy#9Ssrr-^Gx#sIe$=(dUi=`-;$CP=Uu`gvKO(eyN({M{(`E~-Vl-CnZF=nc?uV=95_5k z?oTs~)I{auNC@tER><^;E*|UlG)vTc1F)Ud%gQzfM-Lh)oh4lOBY`$7&{wSH0P+-& zFAuRjVz(ujOwY%O^(WjlE*Rc?Z*d;V^>gmF2uF_gj94 zRxj4y6z<9Qi;V6}YVf-wWLZWumx)^W%Gc{}7k zHc0*_-$AeSY@0()<^AsU)APEWK{Yj@`sbR;N;3DfSlp!ZHf_=>`^>0uS1?10ysU?u zW`n<2(pVuu{z(L*9D#-GpW{I`ZK!vy0!Idp8L0VFXV_5+dn1T51H<|j*P&v0ly`13 z@%}j(*6W#-K55Vaqt=U_&m|e(hf5(S4u>zR^aPtr-qyQ?HHCZ4p0h;(=XDJJyIqg` z<4A3$m(vZVoB+)HUUJjwh<+Z}mM9>stD)@`vj9)~d}XF3d`MO95AQI%7j zR4L9w24aVijAbV7FuMSuW2~bslrrW53~y-?_#N?*8KN30CyXgNshhaN<>-uGJY<_V zz|NxbmGcSuYfezZMqtG8r&WR?J8Ts!J&_7}!s-AOR#n=HwAjqM^USOh<-uz|=10Bf z`$5+A&Tp)Y1&XOleq%8ZJEzBV6YFx@vq~hNU7@$bW2#K*EyPflluWbfawr`&b6-m} z;`S-v!O8S5AUO8zJ@papCPbt3FF^J$;JG9=*y=A}9Q+D3a-}r;q2G`-dkuUnh?9I{ zKiC^m;2SnRda}CGy`S{i28Z$UUt63*tub##7sm}Hoz;rIogEf$hc{OB+YM|1LIJyc zZ3YY4PsPrJm0~68F)7om3&$wGh7<_uV*0dE3~BQ8wtOMJ}&W3Qclb=16W#=C*#B97>vpf3n0$iM7&-IxsERsdCzBYC6C9h zKso8CoH)8M$nL1TO*zS&W2Lj$Vba&^$oW@gx8rbj~zXL*d)S9tJ>;W;9=#QBHD1A=g5OT04#yf@7^E{?w-Hzz$;?Tgkpn2t&&I3a*4OZS0wAmF z9`b{YCu2S<`*iX;#RSqVBws?t619qJUh94AN2q{ohQa2GS6^#2Pk&exD2S)ms9{p5 z#f(N`_&)69c#%Kv$R%spVAU)wKGsZ4@4z=3DySpQ_W#=j?|<=q`LLOlhMffh0@7ni z2fma_#~)Yuwl?Z%loy@8PiZ4_fqG^e^X$&GEhEXXDqN#slP)Vu!{9ElLNKEB_gkHF z*AHEV-`11Os-8hlt5rEcLqrk|Baej{$3!UWDy#mjA95gW1U1+(GO?j240>XuX)@US zhzdYuBdb~KQrjH3-YHYU%wj0tI`QQ&oAO+oTdV~lGNX{Cp|yTtYlGn%hYO7p9kvV5%29nyk zGy2?*v?X&-iPY~T=-2KL3V~#puR}%HQ>wK2**>nVa2XVUZT+?WG)!TFai$Wm&M+V( zUCa}@Yv1l1?%xW@vunyc&KFy*c4ghqGrj6|2jxI-p^N;K9e7J!@*|I8Q;!{QhpBGh z=So)O_&@&o2UK+s&oa+WXA>sQiOxSNO>@yjx5u@Ht8XXN6~|;21f89>CBXY9uK>obHK*7mD2H=s0m=)8&pU80pVBHJBGnAwU%I#*^)3DVQc>{cGJ8jadCh_&dX$Op z+~NX!Qn2OyDV0}~Q({|&gIAoru{gEs(PI_?Y2>lsyM}N-;rgGKBFDM5ycAzPvEm#T zoVl*cExrWRJ?=Bx5@Dp!TPUhAxaHk+cBu}qqq@-FO?fHNLw8#qp^6<_R>t44^I(!k z<*@T?Uj@+FSBrj^_Af7;(>YU2f<_38GtHlKEvZ?ZjF=B~odtZ4wM$#j08vhk)e}0K z3umF7gessc@5NPHl{U#fFd~Ukl371CWWZl-cj{^CrZ$g^riF`S7RQ%Nuf@rKoI$|$ z12^iJ2SgfJ{0YALRQjr*{Rp>JuoxNjD17#$EiT@@tV3rjo84Deea{fg=|b%gsap|$ z$5HmwslcVEtpzFIkX)2wd7}2VGA#R5MEO~G8|_v_jjl1hyv+ZuUX{>a8qO!D*s3Ge zXsnIvt`6&Ee}(D?Fya5nOYlDw$N!5j@&8XgzWnXhx~#sFi;Tgz9V6=@Q9X$K!=UgF z2A;d5QmeHY$k$K$H3AV2W^aE1YH0?4LK_6z?@tTnfg0=2uKJ~i<#TvLHr!1Lf3)k5 zZV54?H5)W~JI4!Hscpe3rDJ4>=-I456nQW%gM1OftokjYV%BXHHbAnkHG3S%DaPkM zn_!Ibo%2F)0P)+XoWh;KUEa0EaM$U%ww^!NmBv^Ol#dDTLFdrNk8^G3^Y-E^u=XPI z8hh_QecyPWf27TrxAlT_j@Pra}~yDz?Gy2dOZLC$wB>}e(B+X&Sbc(Zx1i<{!#=f8 zKYT*Ks?;y&t@)!_zG+~tSVzqTYEn9;LqtQy8T^=`YT3Y@#3bhf*0JI_*8K+9Mmq9A z9md{oe<9Rxz1f5RNOq{)o;N38PR~v@(){H77a(x-Trxz|n$C(k zbW4G5oDl1@Ywb1}xhpdtRd(S0)BVfv=oHoWt1;GuGdG zb0BTVz8^b&tzXIRot3OWrl(?EvF2Ia2sfSTxC8*jP=Xf3?Hd(ofvyBC=qao zn1M#wu->buDUdHOe(0v%h*Zsxzg-+qZzNvKJv;bbqE@O(oSw2!|M-C*g$ouB8T8Eq zAOjFiE1}-0-DfSn#PFxVvv`Cl?$U59D0yPK%g@<#cr{95tiH2(`w);%j*ox{OqsiA zdLw!czUf~iD%0mjayblu&QV z0O&9lnf~f=&vXTa3RvHjL>(`Csq5qA_h zK!Ky9OpmRhH{!0zoF}d?=OO~52IGGLTg6>^uVXJ=&uQ|Po=Fe?dHFOY_@c+jpu6t6L!!Dtg-;;*dm>8$Qtq-)3PbsZL>{h8HL^$Jo2S!|W z$4Ap_`3~B7zm4WBnD*3|saM1fkon^QM9d0%*Ru|QX6(X7r=G}8k-ILb1V)gpQa<`l zg|r{fJjaaDzAer&%5LjBano_9C&7i%Gdsq}@ zu=<4nokQ2-ySCaDZj~vBIN}dnqw-4#_eAYgk)^S z=zd<(S;#@8P1)!8^Gc)JT@;nOGt7=(vPHspv>rB zKQn&*@>LU!VRl`l8x(6&*Hbfu4uUv>U1 zqGsK&7&_#|AYk%)xG_BVC(tsRrJxK)iz8aI);62PZKWz+bWqk7Ip$ECFZr8jrPk`= zrWy*CIn^*VY{Cf&NGnMdZCtpNV1x>Q>_vsH(Mjbrn$>U5X?4b_grvdtsvv8m&)bMw z(S2uwHp;~0($W&EEv~~{ZGTTgbL{faZ>q-{foBO?|oWgq*>P z{3-lh5DcKy_bcQ_eGNPn`A~O4`Y+V)iWiSgn6Y@C2ntKAD4z#T8C7YMHyhi0HIoeX z!t>TyXPg)e257sgb@YQ;d2nemgZ2}ml9%SitCdX~U-Dnc#2v-?vj2M)P8@2iT2(2ndFCy}2XD0g3uPPZL=*dh~7Y~#=!<84>1!Y*j3 zsF015h4}sgL|sWI#Fp>j?K3@9@$vC0mFW$80w-Lvif}YhJ?(MC-CE}h?A#9LfXg0B z!;}4FmSpgu{z9<$^Af~qdfDLykzptS$s9~zxd(0Tzkp>wj|;1(qa6jgXC8$Ixu>Rd z(-;Lt6@tqZDuMsp?(pwBM=32Ab${Y+Zd# zN5|P=m%32Z`9lAudA5E<*@(v<`sz~Z50`OMmD+mVKkJX#l}1rmUvj}#CeV_E@B)s+ zcz)~hxM=jxkZOHvGT2}`h}f^aL{+&|c2uc}yLNPOIya^?Dq3QXk4%Y-w=L(w9^u@N zpr3g0xwD}MA5%$!pdqDdLavEYB40VdX__qY6@@Id@i?0JK_7RZL1^|W0 z0-5Yx(l6w;b=WuF`;tfR%Pg(uewEv6w@te=Fv{8wiVM2YSXb#- zFJjc8NEIEs4oQ`I*Ge1m**e8XXIcOh@1X_DEbZ?N;lJ7NALot;$ssgmimSes4Xnvd@XtFIe^Nm`%} z%0_#6wVS{agAMLtV={1|_=EcnN+&}zc@C&`S8CapqJo7E4sCO`KIcO&oUWcZ?wU)? zGy2jI&5p}47V$69l()kbe*whb7mm&_T>k>Z-sV(Zpz~`5OA+{OBA~na zMl|?`QCva|=i?lF8oo-g)bS+m`B+Rv(fHEZ$}ZjQj-jgQ)ifC<0^FUMinPcuXI}{_ z+oHHc4;C$dqB9Py7{4mljhh~;P~~qO&@9C~?dLvbM`1W~grncsh$lW4X*KHAO2Uc7 z^J4UxKY&=o@4VoLVXhUhcRX0VgvP290!(AJ>rSid&QtwmAET*V-wYn>HUgM^1VRSI zA3N!;=Ds%H6E-=7<{f(b&E4`Hy5jO7M_fpw<$Se>sIOVAb00r5e`teX54oi6oyt8$ zcd|vBkDpF*t^&6K9?Sd@<0AG(|Ap#gJ6k$Mx=NOIbcY7WH+=}LPWRBd#MF~)YgMplGig7tN@&`?7J8^p6Xwm{ z;+hSGj}pcUayB+11!8q8pp=#6kXiE(iVH1I8(i4Qsb`+TmjB2J?=HtjdUk0>W>B`o?NJaOf~8r`sNuI2TUmte^OWq6)#*w^8#T&=N#~hIVz#O;yZv zGHqP<3I*x{ldk=x_JcSGNeDWR@dk0h=}E$(2ts)nP+ZAI>^E~I-KlMcgwU75RbQ+6 z_J@K~4JU0{Mh8yA_+)9IhPor=h_ABzhC4q` z(!Xfi)O-7BBO;Wqj7^mp$0z5K(-FL zffw?~q%J6sR6|m$f$8lOhnAdfJFePO))7tiBrY5Rfo8ppnW!%1=W5y23@fjNnQ)2- z1cK$zySSSDEOF4$xA+t)`af!z>CJ{y32qZ8f86Mf#2|7Z27PR#=w;8TK`#*#}BtFNyJk;7rda}o*4<#u* zEH@-=Ez(Z1(LKXm{(_{F^o};`FrCCQ3^~-5WRa$SY0r>nCPk+!-fvi+ju1s4QcV_#OBr!U%!7RmjMWF&T>VFgYr8Up$ zy&0fp81}2-m}UCS!pK|U7Dl;B_tjW|oY zBaK0;Z3{`N!f6F(P&lZG+v+6gkC2ez5D}PG_WvsHNN~dYLL+y;&0Klps(#p+-ek>) zBWqiZ_nvNtn{N=b3Lr0N0=ygJnRDRwqX1SmtYfPC*`E3DU_Mlo5+p?cSYq}8d*0mb z#oeMuYe-I^8flqz)9sd#zs9-Te-2md?@88~>IqLD*C=Zcgt6j;g(wxIm8KK850Sy+ zZ*(RW_L(!6Fn>Fq)Z@=9*Mo~vDmQBDsitk;tT4x%E5ZM1gYzEsQZ-?h^{|vX>ZlOk z!4~~Q5rGTmOgKpJnv>8)eed*-WzZMx+$i&jIJq|SiCI!=4k0wm?}|bgqpCAvG7UP2i$Mn7!mr{t3MB=CA}XzbUN`n-)`swpNdBaOAV(kj_fCXjv142gDt498`F8{s zw$?Jb(L~0xdfYym4WdbTJ4UN~FH3!V48W70OS2c324 z6b&52etNM7OA3x3FIvcz+oX>6>D*_R}jaV0OmVkMd_Ye?lQPurQ>qXf9HzhuZ1W&RsSb4IAoPj7_7I6nX9LJN7S$z$ksM{28q(uu4%m z-kDzuIRKQ~5#uZ_tX{Dzw9?~VN-xN6b0){fuKTzgm5I0$FQ|qM{~`6~$c6=Z;HR9g z$c+poP^w^5hV|8H+jG_Qc5(b-6Z`}YM~vm&towXY2Ez}C=3R(f0o<8c;c7(`Wm)km z$b$Ccud-t0&8jl$`D5w|R6XuWG09KlAyo@vu-Q_d;iPu%qj?$h;D%9ds>62K?;04OQpvTB?4)d<*~ONYBEepdsTQ9ss7< ze(m%2ADOBNNaDZ@R`IR8W4enzfBPW4uz(!<;&5slaq71)6@c`h(To2?^!YvjO=sOl z-EFew5dK8H=sPs-`$7B(>lB(tc~R3kreePiH@@9BdD_QQ6T@QmU5{fkiLH|(tg%mj z9ogTpbZIKQ%MWNW#kk2E$g}8%{zaY-TvJ7V0k)+t;?<|PX_f~$ z###@3Z&hVO{`3J`2rp1aSi!Hg8`hVim#H^eo7?r3F6e~Rl6d|#!XPkW247*z|70)w zq{33~lg4A@zR|6Lq<}A|g0?=g;DZhok59*BTw8v(s^RC;8hzeAi+C1i1=4c1)UspW zSMLtG^2+(c8(fdMBLh2|?)ND*lkN-JJNE89-NOJl4>K`y-8m)m;sH?67zcSarmBZI zzclZZvm*!r~n0KYP!cydc0N8j(@{t3> zck&eg81i&S=)NtfHUP{BRXxakr^@DY=v0gP_sQ|(mDW)t9cD0J5nFZUQBz8&9fX6f zWyccvB)NtAM5au@FC4?%Y>e~n3+Ex%uy%jjLPKd(60*yz&bsup3!{Egy)GSjCQUsl zoFOw5migsZ#nJnEf*+VmHZI2Re>!I%AhZ6iLt)J{-2tLu#OEt;%e!X2fxbe{U)TNn zI{P}u1g^F2(yk?zEtUn|E^q$=diX!x1^fjxyir^RyaX=>==Zy2*FB?NI9xb{_>v9& z1rTi7UbHhkmwVV>2KYpGdTo0M-5MbDF5TnZJFGw746^%N=g>PJ4b8YbrF0n@ z-1|K{L2oL50TUKWInc~O^8gE?=b=R+yodE=__yH)hh70_1u@{&^kCKE&R|nuV;%lM zAoz`EV14VM>t4+cvg!ZK(_S-Xko)lU=dHolf%SVl_LHUO`$>=Inpob;5ndYTyK7`J zK)>*i*R7}_*-rC;cHww8U8}>z;JEql9#j(@S1(r~!KAJ+muT*u`Rc6I)XFQ?yQ|1hFK2jed4g3}P4UPrI!n6WQaS{P>W7dih%&e`7(!6%! z7>*36*}0y47itVcjDlF_-+ob~i1RoP!5?Z~d^KlaNpx?Y`&C~ZI^yMQvCBJ=eCYoG z!N*^e${YIt*ceb?#3FI-#N#M~943Vwb7SbDPc${888E5QRa;&2*Ts^YCeZx(r#MF{#%G0x+s7yUz_nS5U={ZBg(9A;0E5?*{r0Vg@0-WMZz5XMx!} zbf^heTi(CTv&kWj0=f4rTtzqvOX#O2o|i+%A=2#Bc0~bVG&Y#oohOs%CS+n@=BoVrajDJyUN0%goenzB%lE{ZTtI!%%opP&JZve6ps@pBu8&*vEV#}N&Xm$)5@ zz11*Aq>8;ptIAtB$CL50t7+JydGD&-1i4Xav+pb1Yy+xUv?>)D>>>Op@@)>qxP!ja zg|q6Zgq6jR9DWOLzV|pM>`tf9wVW$A;HhZ7&PS2LgeYjt=<(in_P(+cOCO7`a-1#S zp;Jly^thgxn2MqHDgRgp=$DW{;livM3QqhaHJGaK8Dl(6w|oqHk2KX^x!82>Dm&Gt zudGh4z!iR8Rj1sUFY?qaPoaH&o&07MT~-KUx7i+ryZHWGFPlJir@AW1)Pr0g4ck)5R*83bo+>#OqclC6EEB-3+-Csym#luM&5cV9?S>0n~C zst-@@O^FbQhmH8amj2yC^p@QjYfgXJ<$T;nMa{bx|XoMPY;m{W9T)zJenf z`dY)5?2a&xa#rm?=>^(}@-_xgiR(R`)X1Q;6z6Vd+(Ari+45+H71%^c2`@6)kk={x z8@66YBMk}a@!)#^!z*-}Ad(DhJf?lh*avK&Z)WpEXNYf)nAz?GnesgpbJi|}R1-c% zt5Gn^D`Q?)q)+;Z)RdPXGmGjch~#L>bJ=&j(qNh2h_`M?_(b8@vcc$UGUQ zKId)&=P>jNVPR!hABoHhydN(F8XlAi7f?a)eA2t_iu0w&YWgJ0Pq zf4%lT_pZaaB%3gIBG&K&LcAX+Uv52oDk2VY9>mn7tLqxvk{~#CPdaW-D3PTvKKZHlli3ed&L4iXtK3Ek^TW@>~1$-R9;@n@3u1 zhKWv=hWTlt!bv?QD$dSypg-z)9zIex8H!QMMhczK;<7W#1bAxSoSNCh1&U;R>Aw=v zOYIqtJmz>v|5=Fm`D?N5wqmZm!i8WA!=hLS9&zC{L}2defO5CT2UfSf=I& z{;1hI4#p%JV5IqDwR2Vl_fJ|{()nLY*y5bpHRY?VAS}|X($ZsDi-FkyE>sob6p=+Gd2M6&R z35_{WO@bS@!bQ}l6}a1}z})H&FLsTv#+WnZtj+IAd_YGZxFr-9eL9N^g4}be@QE1G zlm&;)bq#-sI~SCW0*^XTE)(v|oC_44a`pr2VjHZ|QggEWwI91S1U`ZkmR^U(0*K0A zR91YE7oQ9WV{SSYT5d6K_*$3!L^Li42%fr-2QE}O!n({)T8lYO{kot#z3zrOEoN0N zqK-@4r%>YB>`#nje08gQOq!F;UdyKLUZ8!yp{K#foYSel0BAiDTBE!g$ysE2(Rhk| zJN&1A_sHEr?@jv`pxPy8`=#ZX!hgVDY-y5h3aa=_0xbUmFm7lY$~gx88SctO?)U>z z{Zjfmaj(ZtUZ*;zn(q!YT8H#sBRWC+pDtq2;_T0fdLb#UkfxqGfv;S{=Rl_fs=UK> z#LAP)cD~p;Lc*7)yt=Hzn1?~+G4k`f5&_8d8y(RxE~$Whz@x)6l%A%%Xt>iS@EIL&&e&;=3~69F3wqe?PO>Gw{7|~KE$BA^CPlC z1E6qDwi&#dz6Y;HTIvdGV6n68VgV~^WuimW=I@#!+>S!*Sq zg4-R1nmWtb4s9tp%*eGli7H~UF_fzH{;YLvK^5B0g6i54{`Fr_0UHQI9*9`8j?2sB zo3o^5cA}fKGS|sG(n7+DAR1cLu+D*jA*^f`e6^BNrGI!s{e9kil+YSRI_umpU6|i? zSe`;78R&#vsiSe|9$)gQFn>am2zSt=xMEi|7Lm`v#4uTXT~CuPX{`{4NkOb*E~7#l zIX;lVeun^}r|J%CXEDrsN`|Ji+0MX=ElkUYhjg|JEZnkFCa(apl_+!%@cIO8BQ(c` z`W2lxkl~j4?@48(9hxaI8E0KR4&{71Jq%EycR#!la_KhhNJTa>@_y&Hsj-t$kZ<*y zL&uBXl+6(R46c!EXXMc$+_w7jKBk#Xi(N?z)i5nX-72xKoNY1pzRiN;a0#Ps(}Z!g z<}8|)Ypo|Uir2L}n!Rt57^md6)CmYw5>Zp5=oqj_>m*68G_+M&b+Hw_O9&sNXq&pZpK)dslFT+fmZL(Mf3g1$_fU3`B!iFO{s+V0n0?=z-v_|p6o zG~)Zyw4pEzSy~&flJggAx?z=tv1J{5r9t!Avi$Ch>{G9~{IVgGV zM;@uP-M9}dUga6N`yJMo#O_8e_42gm*J)lOUbDT4zI8(=-`FnK8^)%}Pu?`{){!1q z{I}P=*B+7W4moEI34gtf9%aZ~2)wsrvWF(nc(yFxR;_k^@VnpVX&(IM5|^Vh%MUNv zG<3;oT)d8K;bxNg5Dl?sj^%%mjM-*FYr!1XgPKk z_gT~-KYyIa$rld{;xNuL`ykHQQx?@Of5t;YcSx1sN(Udiw&J$isf{UHyyr4^`SmS4 zFKc+1oHnaG*_N8za#n0PY)Sg7{XRB~1QmV%Po+V)Ef!B4@=umo0-N$OOM)W~Yx-rE zAM(Ky*=Z%Waej%e(=Ur+oCImEHJe_kjjxgU<&xHxUmbY&B*U3+E@~U_UYU18Geo)_ zl*i6?sG>(xuIXMK)xkyGXb?#bjA# zwaho9Cn64L(N}Im}B$jQ`Tox z<>-ClGMePHUYq{S8?ik^NI#A*)q9E%jBzrbVS`WgeJP_At2{P6EG5abaL(0RW^~2E z?S`)Pri$K;i_W8wTnCyYq;eA_HoJ5v=%!sr%tq}_ieE-L7Fk=iERTsbkJN@w>G6qy zO12BSbf7H?6=|aH%Zbt?&KBH_e21jkWWrbPfbbQ`(LNR_YFPc?|f*JqMOHRE6Op{MbXBEgys4$|0^$C)nwgqE+uRA$Z1E z{(T#8XLm@9pg8_b06kjHUl@QF9gVa)MUvyK`7Rx|V(S zF%?=JQjB0zo_w5hqqA0`jIvnZ_*y}>I4t=+#=lOp9D_VqxPzM_qD|d80ZjlY!4H{; z0%?54yvg;gJpaggNcOY?z^-C^(f~vLPFzb9-`9F|&P)Vl2<@v%L6@XpgZMl-UD*my z5H`@0_swE0;po@qGY-#bJF$^|9OA zySMN})}w+Ef~bD}4xg~NIl{ zbUbQ!S4(b)HCbD@iw2c*o?j_P{NPEup)*FQsF?_9caDbEaa6o^Uqa=6_^1kIG(H#F zhW=up=W_T|l%f$mY)uBu3=xAex6`ClfG9{p@NoLaLJo3vBUv2P9)o#V6j6F7qfhLg zPhw4HUE}=R7NtdG*rhCBjSMR%YU8VxNUvH!qEiD>;uS8me;)DARZ5zq{90`m%o^C| z3H5%cs|>2mg^E8H8A^CrfaY538|xCCeg%-gFRJc*yCROI$>Gpl%Za$~NI}{^P-{*< zC-6c|^XW{F4fFkTdhGmXSYxb#nh1{6jzFlceCdRKw_FbIH=kDrB}6?eA~}HSld%c% z%q!thKrJqDV;g(9Ok>;F`xJGC4M^LsfobU$DyJHP$iPwUvbmcaxH+`I&-P>LFob2; zYpL5Xnn4BF%cC&l_`=QEakKZ}0D3EiUEja~YAi0_G*ex*)`X*&=cG$cU0Mu~<* z%2$Tr{HCle2T@1F;gAzs<#CMvgfdF4yg$~e9%}|fMTHt)0zr`otjxTCTr{Z-n6z89 zv?Nt5a}qVd5qf#R`|)^3*tv`n4@4W?Ph0+t+wF9zBV`Y!IZN(lquk7ePSrdtf40|` zN;0W~v5<<8lQM)O)InmB&03PZ`}koXoAojqJMcH!$`DYk)Wwldh*G>D zRR%s2$kxLU&I}?|qQ~$_vWJZR1b~;-VzOw8gekReUCLLa=qtT)XV=uk<`ANaxw4lw zq}8tD-kz_JXCMM;!Z%?wIvmXDQ|KE6-m5@*ARmn6KHZ^o$r2$glQDAlCXXpk9lrKF8Q9;A_dP4K;X+ z`bC+2>gv6mf7Pah(2c>Vm_YCPQy-n4!O6nQXQ&57k`oIDhpBAS;YHvc{xIUVfO5Mp z{{GBgK%=TZnZ{kTY`v>O4gHG|)EK9_-GwD^`QZ(^R+%1l@Wy#leuJuFOtz=d$WsS;WUoC>#;N#B^L!xoMJOOk z;KmtmEi@pp3u?$1kn?YQPI(NtXUW>Sq`NL`&gfr-Oz1&0|D>bUTz?tuITDDE_su`C zcGb?nTrS}8>zphE@6p{ny%Dm}4gIvfla`k|k<+h17jXQoVKcMbx@w;zRN^OJbT{7) z_@+NZoCGQ&x3Br_$O3@LTC!0$n-Ie~veO3X*6bwo=Et1vXHrj5!NvTO9Gskwes(Y0#QZ*SX&)IfSo@4COb>bWzhr`1qVG7EXDs)zz@iyWG-{U;KDo44$ z&bEAdcD)_kw%GMkC_CaVE*NM6i;YeT$15k2J96Tk_`Wv_fpZ4{N*m@=zEH+j66l~O zbFyoS<1Bh*KdYLa%KpmDmccSF<o8qzPAJ(YA*E~6$4j|l*Q;wc3 z)5=?)=+UORz-o1K(AP03T<%%mTbizuY;T!?0m;cJG}A{m7?7DoYHqJePo0D(u|JTjTl?o%?BT!!1Oz;wog z^i<(asq@F})&t*CTDiB7ooKL<{%~hJ^Mg7T-`D8jtv=K6zI&xh&0p~rM1Qz{`msuZ z-5A@3?Y_8aWEGF;Yk?>P-|UA13<=k>pueM?S;( z{2qBvF0EE=>8Mj=L0Ec=pw=5ZxJsfdw8Gw2Qgt_Env-y^jzKWFRi9a}rX+&@;%Rs?Yu_ac{cEh)W?R*Q)+uU6b)t9nNYq(SJI9JR(%u`^7Bw-kll zklU-1$tzP!v#NAP^&-EX1mk5*>d*@sv$n)${x~h!`aS2E>{2s}FWhxv9dG%Sh}l-J z{C(-3y0=PdIc9@?m-Grl9YLlch|PO%bo!`Yz=9bukx>PU+YhNDf#Vodc6~`(RISK& zHm~S%3iI)fInH5$?n~rEK2npkn8j-`G!W&~Sbs&lQf2>czioX~wbcP_(~p zb+9&v0R01;02rzh;480JP5x=>gI8(v%rqJ2nSy6C7`)QxXYM;CxO}=RPFUB_YQS1y zknGf9*AiL7u0$oD5_fo67ddirg30}{IM;1#_4<)Mj9U2)RIcKof~6fV*bLa8fA6K} zmlC5t^`R=SvPjR@?db{UYVcD(YX7TGZ$52y5oyO5cp0WhF-A%?{@vd-=#QDd{~cRw zitm+>H8!p?VPuEWk!X8#YBsmzv#Hl;1wO6gR_YlTk+j676t{t~NL>@m72!jZffWm; zoHKK-4dE_N;N*ro!tLbmbb7{LVMl)*7YdPt+&F$)@(z9TW)usiWdXp>_`Qkw8BYR` zq-%DwU9wVr;IR_($991nJdPLhL^69rkHY!-tO|4OrD|n3_x-Iqc=+Tf!6rFE3^yqI z)|yw!H-_qHqJ*M2v~yPDFaX0Ffm%KX1(*qysKzCjx;MItRe6v%>3awn=I|1Bdi4bs zsB#DUG}NatDC25#-NsFyzxLju86E_Vsbub%y19us@SK_RrfT5E*>cp1vfg`1js{RV z8}k{^FVNMqj)!a+V8O-Btf@*_VO0F8{^`DqMYe-9of__W;4RQef?zGBruW7An_KEV zslCld-K<>CrDyZrXRAZK3DAu^@N`Ik{HK*U4l^|uBH6_feF(^ROza<^+UWI0GAtz{vF123x(F}p0WZp|Y6|@3D&fRK=Ky)HQ$SOd z2f@c{f2Vp^ovk2;J#hjkh&U*&~SyS+F zv6hlyg=WLK9p=^(=Pxhbi@Z+0%*{@EH(GCOSO4^kr1Jf=wCoh>OL5Bq7?! zEcVI@op|mUy9t$4%I|si^9)q)1~##Ce(bE;lg0C!7pK`fFW|O2>;R^QBYEfTxD3_J zo-4t4>&~*?1<>5EWsKBIoxU%uH+;tG|55LKVYWl#M?;9aNtI_Rgxf=zY4Z|&ha}0c zG`giR_p{*WZD4CE(?^c%G7wvf`W2cs%JE#2d!68iLN3(ZAFbAvpL@HkNZDExo#Nl> z!H`SaL`B79W-3b@9%30!?R1m`fNVs6!pz!^(&LQHmig2S1{TU^O_lao$?HnDzPHHq z*jTPwMqsJUG=7|;vOH-N4wm5FNwvHprD7Onn%?ns({LY*Bd!(KI8*vYv!S8G>f&xR z?9VMSRvT;`YUu<@tIi!%r19$e2iR&<^=CJ$Q&sZSd`Vp~t24vK_~F{5at>8i&F6ZH zg?0YA_9k}(yQzG<-C|2Y@YHIBG&*l+i$_<5iVmZ%%0oz#Tp4|oPo5v>UV(P?bh`5V zX&$cj(ks%e`o^RT03V0r)K|>1tRw| zS(3+7hW$U{P49m3WJD_|ge4@EYfq}gT{5E0G?$!pPb3*xst=)iW=5%zF~K@pj9|pf zg$YN-qQkXJ5oFdm1dUyaCkN@}iJQ!b(7zpM2I(0c=Fud%Mun}KP$_BqSa~V=Wa~Ra zq-xY-S@tgL0>c^{{gI&($DOR{sETq{{eQ*(VK4J zzhfue)5O=HpwomE{2S0ez%0u855D8{11V!;Uc!Gi?Ee5s=$ke0|Nk4)jt`IA4sI{L z#r+nTe5^Arm3ERuobgmFIo;Ef35w_;Pa2ozGbL1uUth;O%)C>aq+v#+-P|@nbQ;>g zW5;_WsobdxWTi(p9KhM5Wk*&gesN>F6TuKw9H=(WnKg;g(lKFh(+`e&Kc`c~(A-jz z1y0-TOUuB=NNu2dD}C_&Y8tIiceTAfClR|Nu!`5&zf622@9p#{An8m*KT5PPdJ=DPzT#;UPvxZ=W==f;JRvoTN_**nD3!bJE|Bi= z*TCI5_C|Jd{6d?zokLXWi#>y(e0NIix09wd)9Wr-$(E~4@4A~T&b#`s{Y0fCQ&6!( za1{`*8V5Nxo@Ka!Nv^L>>3m+1G5gBVT=gBjs#*#JJadew@KT__-G%#ZeRH!jSg}8% z_$GqvGq_y>d_o0yldE@$wiBb!N9jl+<`rRs$xOyLR7SufMB z{QkrbD#+U|^)fDlCEo=#!I!{Nr~UfbhD;+{&3DP_}q=;k7$2ELwTeda3y-*)i?#3sXbMlOSs8n{!?Ff*S{UT zOQ@>EK%7QnmC$_rzCn$ewyApTe#K7Eu5yZ4&c+A#W@5d&ZKN*5_}%7lk_&`~a@x32 zRcUUdDrbbP0CBCXzLl*QkRnSJeLmQb+>CnD!`B$RK|R{?S(9WFuU6TlQH658NdQpi z8;=uUB|j!OY|B8!>b1IW+75JE1C7#ywAa7}>qCzS_lfsi2(VFIN`gD*x~$Hh7g^|> zj+&UvcprLUN;Wb!T0WW~`Opwb^>tB2G-J8JOeyb-Z@O%bx$1a?D71npl|WK=Ox}P1 zABM{m5@iXWYo!=ll#*aGdLkSwzxf#*TZr~ONM_#O%pZ;GZ)&kQ{mcp!#nqI#!pBz) zG6jwN_=!4fik1T1A(Pd3S`p;Iy#iFp70Y`w>~6|iaU)?{s-b?$Sf$mh4<)|RD8>p$ zGk3N|DLYW(C7_mf)u|pI4qr4xrr2lwg1vrIh?u)}E@{=UCI{mw?w;EAKt@@UMl3XC z#lFdyX2?_2NMx-S?iK&GGj;=C6g;+Yq@Fg-THPP|HH&?f_KBEpv-* zZzkMPvh-R3WaWl(a-J0gM9*}GzMA^@jLKM-he)<*zGCzyTr!~4=b3lkIPlQ`NcWV^H5>eoY>?HJNx6nw=Ba>nv9BUL|}$$XSM{{6^E zx5o@O1%u>MZ?ajfqAg~l?zBXkNndP{mGVZ;!ltGbTBnz>X)@C-01P{;xA5SJx50|A zanfREUW>>g-r>(rf5AQhynuiwDx_tvD}JaV$ZebFTD*tv_u?sN212;24%d>!6b4NT zsLMi2if3lYhpty%&;kt?jc)8=50cbDUs6-zU=j)rcp2QEsTB#4-UmpP z9xwjUxeOO$A!nrHWBX{s7W-9N-hBRYqRsaUV9TW;=N0{Qc)QBzU2&J^I41{YX5+8u zp!C|NmW6D+_&;u~-(f7P>V}XXV$k}=E~!}4GCGHq-1uKj1>2GH>XY=HEO5Fh8>+AS zlGrS!QmQ(6Yh4kC(a$vzAhR4-XMfs6FX612HmY440;3jIvcy*&WhQetIAe~s2h8F{ z3=;hmH3W2I$8_-$Q;Jb{$m#dEH%Z@{&Nw8=Nbdu`zjeM{8H`I$O|Dg}H9OaRuUjUy zCXsUPDY`=E%$0RMy5MdMcBsSGahc`4$(>Q{=*1tZFTG(1E7y2ikF7@Bdz11<_sy1> z<^^Fco+133ZtwQXYy^=_Ck;|Sy8^*PI)0yEFTQ`QS${|YZbl#suVX?I#~Hr1Tzmo}s3)k$Au?B_oXOIRaHIik3) zGbS87v5rk~`sN)kR7nl&S!?zH5nx3K{I6>b>Hl79FfIhLXI~=!jPkLS$bCTqA1BJq z_bau_Hqdo5tp0jgW8nt9*1`ySr+y~&5Xfg*`}c?3;cV%!*0uW?f6VXc+x9&*_+x(1 zm3c*#Do40=ULEKx!hTb1q+Y!n>4M|6&?QlWE<}Pien`(yRKCN^%YY8)gXeBv(QdI0siG)*(NR>=7_YRdsQxA#nEM-U1Jqka6^v zyRIEB7t%LW0S(7>iJ6V%?R9#4Y{#$O2A5%a=PWM3n{kZ2(H3sQHAy;^`4!!+db5Ng z`{K@h+Ci7)I?c{Xy=1ZM5T~4g+qT=@DjP-(1~5ZIZcVz&!amz^%^^kg_qM2`w&M#) zks48_7uI}gJG?@b-X>uU*vr%P{j2a(o33_^OQiJtD>}<#4hf>xp4VT(bw_|BW-B$S zQ5h_0Q^t}WlRJ=QX@@psuBaC*QqpA)n*esU%2c5O=P9fp$g1GfEzb%QBr>I?9+FyQ zLO)KQCn__AEQah8l-yqMnQdik#)b_$Ew}CkMkd+o&Q++MoRJg-ljA^hlO4hm!xy39 zaPb;(|02Qwl~ftia#hr>vjJXi{MN+l6+ia+WQREEnW;ja5-Etwv$du*B}p#bS5Aq0 zDw9q8e-II%ava@sOb#irl*Tx?2Xr9?A@||*)v4svbIo=A3W3Cr%xSjAUnXw@n?yw+0wq!tgLyqI-*UCTG)#vs*A2j3#-Z(QNqZ%IQHDL9)ZNvim7K! zo;g081iLmiT!3KtOuq?rH6z;+j)Of`dk%Y6b9D_3by;r?K0!YAJ;OR(7)%Rfwi_B7 zGB^+Y{j)L6>uhYSstwLvFrC)|M_&b?Hy{vzyPOLDs|5gky?XjYcNA@tLBBXy(P5K$ zK#ta|lIx2!S%d+FH9;LohrPB zVOsdn((QR3MXz&6f%so*0Y`$f(`9+EqwmGp$7|q?{bz9@TXicD9^=YPV=Ikkl_o73 zl-18Q`Y+Ot(Cm-^rl}Bld!}2V5~`br2;x)p?;ksG{J$3%U)MZWzc-J46$jjOlFOVR#_IjrM;1lKS-C6spVN277Ki3--HGT=&O199 z2%2lr8X{~QjY(0slX`S<(IY3tb`;#FBO{FW_D zTk^ejtlU*TLq@SVbObqcR(9lL47zSp)^5@i*BebYuD{0d)iX#&McpZ}O{?D(+b}z& zN>H$B%Hp(>M9m5D(Q>4dlJXay3RkmL&gyyV%D4lIW)B_AWHZGKT4lzC>%FEGfWEs(eW%l7nd^1Og*Gy&RfxmC(nmcSmOxB z?N;l;@{B1}go0=l5DH^vw=9RCwO7fG*|cCbr-4St_IZBl*EOV~MSV%|<8lrDA_NT~ zQJI0#j)spSQ=$tLd`y6$SF?E35sYh^G?IDUfacr4<$Itv@g8qEd3SA|Cw^(#waCGP z54?K^3gi~T!4Z-rB_fqcc_$*G!2Z2f=eZ6NW=~H|O*hGET$5li`2t*LgL;uI>HS%jR1Hvu#KXr>6Xt!ePKw z4i@#%_nlTcikcO1GzQ&ie3pd|(skz5>QC*D&CvFn74ukD;v=o?va3){Rks#ep~XmU zKkQA4AsoU`H_1_ITp&KHb(CWX23fI0>R4QDKjANhUG}VW)_}TH=6oND>kLoxR+RY; zq06r0!#)ARGj$$9*E{A7@j z`V|y8F3K=iS;tu#GdCVDSv?~bVq88Wx$5Z8<9TAxBcu6-^$Ds@&@{I=^>x&zSyRy$ zAP=hbR+c;}(kdLk&pn_0d!};=4I>#NFItwSAG-P?s!4eat`ei&eEsI_a-qFy?S1vG z?Jw6xC#k)->cf7no&=TJ-|}L6+W6ORfDg#uUKl+@EyI>ipY*eE9QE~0 zEU{ZTH!fy!onZaR#x>%Uu;aJcXScI8V;vG==N5&jbtJ-)eA@^XYaODe%-W3E4_OQ0 zB$;;;@XCo^ki4B86L&c^@4zMizzXwt${qlKp*>A#nmbGj0FXovlIi!WOoeyY?8E<< z&HQnw=oD#y!plm?S)@}o#QCx|1eor>2Q{(wDd{>+Nc-6ydktH=Vn!JvdCvAoLlaDR zsl>QGt#_kOM(6?Zj$`XD?9Ed}3~u$$1A$?VWvr?XE_7GW0)Qy|zZeN-G-Cp|Guk8O26%6uuxmD3&` z)oJKlN0wCXL!KJpaxW^XBizBQ)hTDNOz4(xQ1mhQx9tv}NktWkdQ;fo{6!vlq^#b4 z>6h}tW#G`w<^#2g4aX|glmFVd$XVQT{akES(%i8rGHbPDp?j>G*m&hXY26GRJyFKe z=r?pVWiKQ$;m>krsT62 zZ&^?8eD5NECH=WYoZ)4NUHP_0$H7*h=|Z@j!ekrsno4r217co-@vaNSgOq*NErPnmbM$;VlAs1rqtOtm)9jUD}lRCDH&6O*a%z zQcBTrT;9rW@_6*PwB@Rg+9%N4D_9`>wc7gYjFcFWt;T>iRbMS-*iv1Ep>-3AGdI`z zr6!eY;|^T3lksg+y-Z8$t+Aotw~B3=6i)A69IVMHEkC;Dt00?){Dpmx4oKTd;a*Fy zp!O%e&ni>4*?OO5zq=0DTV2Xj4sc_h^SEtlp_=PcoJsT z>3g$WW;WaGmM#_3`e6_9!ni*yMGC>~U0yKZZL@Ux=0DE}0084N+Sl+DfU&45`2RSz zg^v?z*~|+mw+jXs_u|HH^a4p9gU)2z??fIU-hQQzxn+OYA5A8OlsVG5;_uGM(2FoM zBd+!z;4Obrm5=4e=)H)ST;(m>`yKhFjobl4gyWH#N+#CJTFMggNxHew9-YL-E6>A% zYytrQ>%u?tdx?p34l#b>5Rmu zwj;c)6AvD4gxTFquG3y_YAHiKOW8QK#w)IMp6}Fefj?$|h!5H>-zjRpll%~z%!5C3z=+_I7N!QFd%m?Af*n z&W-43Oz$-7)%*zn6#($$Gx~evK!zJ{2L!i&P(lc@q+{9a_1n8qr`qD9KB^}}W5jvH zduyVrXkI>EX{1RK6ykM4-^IRdHF^5`OQMGm24E+V2oLb9m&wLw(+|sLhkB>$b)9g? zPn$>f0MA=A*Mn`$pUV&IhziPRd#l=4*mwwx(`e*s)Dvg{V4u$O@K^<0AsB|prXXLzj)ar@dT!)ooL zS0tDh=;%Xp%gCwTYSB9+7NbU1*Q{L(y+TlA?aGp=j}H0r`GHWnUxnJT+{&-sV3VxV z(nm4i$>;U1khxbHFe**w(B#s2Zg^gfOefy_yeiK;Aj;EkTAHdmFJm&4(Hbrv6 zoNu%&Xd+BaZ|;57>QYRsRHUG$)%RD~xC`QlzVAs_V!sVEG{RpswnTS=+vnTt)n~6K zB}$W8S8yIiFwQ-QD}AJOyc8k9Z=d+s+kY%|x`8^KiOJy$@l?_woloiOhT|qb8^!m& zg7fo>mc+YCs<8!kx^zFEOR8Cj_{(Yy7nsrNZhG*t}4W#PJVYh~cSfX=|c%P^fG+euj9Al~{lQto)(UmW^ zGLHmAt0v=)IL=y$&sDiRdY$Oq)mOy&o0ymla8C3m?+tkKnR>+MsD1EH%XLxF_3AnZ zveYiszhpur9|3m0cws5o6lkeK9vV{_oyUicQ}RW} zDYd^q6cHe}&T;e>Vibn$B>m=fgfFBT`orA)kY%d`U-XFe7UJ=e~r z5z;g{$-bg=-fN@z)wqiKx7cS%?RRQt ztaU$N7v<6v4W~b#S>r#4UqcblhY!zYEhU3~Q9>8A!(Pta~Y(#RB2$i}V^SrL|P)%he7;C+0 zIwGz)@3@}*^;gi4wnHs~TRRs4bzj$As$QDh#VxfacQ=WJ`V_q?$pLjPexnx9am9 zE5B_X#ala#@#YJ=Qwqu9D5mfAQ751@U8`{kD1o)rUq0T;S{+Z%7H5X#R0PTdIcEaz z2yvZkZHnatV1smEZwt8#chi=Oyah*v=Vns$Q|58sQT-YKUCx#hV?5UX&UwG+<5p+`}Ki%$Su|wqkFOp+r`r~|;wuGJK?lTItq2yBy zf$i(RNL!i?MaF2QrN3_+t5K_*hq5t`>Kb3}Q+GBGWYZt(ihj^^H#pfA6$V7v?-1X&l|_6ClgMmut#0>qKh(f8 z`W?Ju@tCTG9?0ePbEgs&j}B9R%kADc(02H>cMl0#Z$Jx*9d0#s|05`_CbMW+;`0JtU#Dy4vThh0qd7UROkEg>(pIIz!IJGfZVOFyZfz=^zR_x( zzXNm4f7KBjzQFM!w&oU0FmLhriyk4GoC&tym-E3vY~`>YzTN8a|4N}P$Rsv6Okt1+rpro zv~OV^tFTAX%vJd;=(*lI^OQ8T_71(F;FJ_iV?nJ-dwoqL&tP^;KRoeDN0VpxnYSeV z%9&4E-z!DSl?Lr@9OPft^?vJy1Tp`;hjK(KT%rXj{{W@z-H)nQ1P=Giw`2bR1FnC+ zmuAzupP~naR9dJNP6H_sM9;h0r{PLTMvXUAwbNRPCCogPca!z}*Xd4Fd#~AYABT;c z(JhokIF}~8VKT%mOc2yN8p<{=`z#DUbKK~gFA}v zd#Z`iKx|6Ml2&cZOZ$8N{)4o=mOXp?ysU*b4*85mn7CzZp(`CcDGY zcuUjZ8$tg^C}f<0nSA&8zWA=+!1y6#RP8_9#;Ahf@L!IPU#~~u`dti4L6+?yuE!It z%yWVzT>`Jhq5kr^`BdEYTC@>cpI#aZ`DluY3g?3q1>A2=`6w_lb@t>${d6i{d&iR*NT~1%P_8{R$FIVcSA4*Yg|;hnV7ldI?^uncY!ZBl z0mzK9SmF!4s#^8V6#PN)gD{<0g7*QUpahgz>QGJ9vy``D7c;P3jjwNf{iXU`0+iX1 zVM|L%MoT)=*=TpBWqDxMKj;*pGx>~?Rz~t=idNzMPRTKg<^VpVsLyp!|5>82_7XSH zYOq3|pdf2ga~sZnU^pAo@ZU!HXE;LW8&1Chnm z_>8e%{(KqO(3|^2qrAN0(tHeg2(Ug$idQ0o(w-YtXOdl9E9~{hn|}C%BBMaK@%g#y z*eR%;eI!z2`;ibeYdFezRnNaq|2oJbrOs(VKQnX1z0G6UcX@mI0j|qiyeRnl2q)5^ zEq5%cF8fD$F@ft~z9|SF08$H!uJ{ak;zOdfo?R{#$7Y)iN!@S9oAT;@0rN7dBWJ7g zTIuM0QXcqHmcD%_L9+N4>kAVKsrIxwsQ5H>=42_J=W`#Mr4r}(D;RCei!mu;&KZ;?N zCz_dPZ60fU24sCUwT_kOsrkqXQ}Ob^5VNqydE-$#(pr!o;T@@dch*Z4&?`=IFK2%> zcrPv1=cvTbvfeO%8PCq#Fd&7uudyPDYmC2Ap;7WoBpJ7Pn$}gX2CD4(vWSkz_DHtn zxGhGzl2D4t(Ue5KF}SH90gh|2+Q1S_+S(iBjKAmb7I}LLR3z+kzx< z_mhvoD96+;c9$9pYfq|5`<*8*T3J3TR7mcSvr_^wF-Sr8%z@l=@_&t1yFubx#0!7X zwIW1o!BD)-eQ7zU&mGk<%j)Ihm2nZjCHV(EPf4jt2@pP)0gCsbibiDM4gpsCojl#{ zKZw4@S%-$zuvvM65p#tlIeUg;F+ZboCRkn0t?UZ8913s0OHvDG+#Ms+7%Oj_?hSHe zF^}B{L{P6>W5;Wx+c~#*h$;=e8bd>MTlurw=*gV;;UZ`~senCbU)~2f>U!z9d zFajtKz2UCV2Yk&TBG)HE1Ieg&a%wTz?eeEJon5K|u9S90WMWqnfn(1*uyI0XK)VA< zO$#2!5|hweYNj9TrT%qFA8zf2`C~swI}>(U^;)=MW3B6OLS;-!54n%pz}G1H#c^Xx zZ6q26cuOMurAObiRv)B0p|qokaxw>bga6ovz5(Kf)CK$fPLrUvQUTBriPFx#f5IAd zNmlxlODf8kzNpl>wx(^YQFiQ^m0Naku%N!LNm&x9u%n=S1rZW9QE@}&d1~f({1*jp=mPumz7}H}gQpO^i7bAE#KMK5i0Eul6?hdCIe4++2ntKVEf1DZ$TOV04C_(iS>^D1Ll#?R(&YxcHe2LF}AM8 ziP_P}Y^y_IR7U8B)dc8Hlbu;>T$nCTQ+zh{Tgqq6#=N=00Sqw6SNS^&37PnOwUBd( zuXK!_PZ!?>4m!w9SpPQZ?i$?A*o9C-g55CgW#G30O?Igx|e8CP5>BW_|B>n&GWex*#&!m&=^r_DwTo^>pYs z6?M&6=*eG7-5|A87NmYTr4`+Yub2_<25zItVi_0WzFtq~kLGTP%ny(>gMaIyN=J5Q z4ur5;S9u?Zww$}yO5You8)oyK^{rSY2@*5Q*w?E{W#wi1e;CQK^WoyYSvgSB5E-#u zkX3z~F2OJD3Mo-ZH7MXgQZ(o+=>R}F=lJL(T26wA)2V?pJKlj`yu+;dJ{-bB5v^C~ zl#TZXebbMjCJWaUHG$R0X4IM?A_H}#`heH=%$}&15xG6IOzR{@v{E6b$ifA z)}qTj?afrd9gX`;o7G7-nZ}*LUz;@8On%RN@!x%Yfu9DPdjBJ=g8k%vE$DN1Av-iT zpqrw~2%Qs~f9*JHU3M>io38lh;KA&w1Qj^l{aavefq7L^<+ofQ!@4h7bVswA;yQzf zYnhKdvuWYTnB04nlG3wJ7cm7D2VkbYm(Dz*jhY%2NPBJV8l7^x1#GWcW1~LpG^eZP zBXNy8yO=HVVE6A&YdA5FQ*ul9SnIB$ySV>YK}8+HDzQ|ra}B=)g)UxRa2My?Hxb;~ zSTIoKM%3JdP+&-YOYxR;PRv{|FMk&Q+>?6H+T6Gl@j7zXu>=j9GQdOZuA??B=Bq0j zFGi+Wv-p^Hc~I>HAFy4=9mQ_L(@t`I2hDBHO5A*|-=W!mogxrI2R|KiwUQOv;{nU1 zkWZp#yEXQ@Q@EVEO-f8{;c>^l)gg|zMdWR#NE>@@oY%_J7H<=uN{77S`2nOJB`V^6 z^<32S2u&Qkw7!6U}6 z7^jzz6hJYL8uB}d(y`aD^o+Db<94dUeL`JOKU#DS#Coni#_5$#J%T8diEo^*JU=CW zj$vnK{TYt7SHA|}0AZ(NaN|gjwwfRl;3+Fwxk$9HZH_oFS@|V!!FjC73wCWAkCob9 zcrHij7y;qY?sjWm6LT%zv$q~=c{9OFP6N^Hr)0E1eVE7%9n&MQZc^N1|HaBJ>S{P6 z#Zh!~==|d*GVS~V~ z3>~eIHwaR}rVL4>?{tNyA&S%gwZmg`Od&F zGu*|)gkYB;RFuzkf%Ry}+}^kBN={{7tL-ult~K`(aWxeA`wt800mAkiPGDX~m9pfBn?(Af)bI z05urdDXzV{VkC!U$2&BZYMcdAkr3gAWxCKrB0-7@9}Eq@yI3R23F8u|05}V*81{kw zZ{N5Hch9q?OTckkRXG1Ylq}L@gUok9Xn^4?nfc!m9~_YYk_X$MZ87x!^sGjF^DSFY zEXVO#3J*OEX!E7kMR>Erp!44n7j7?JGwF{V9}MPE-!y4+N>qgmm{7>M`h${D;#8Un zys~|3mA9EJmZu?#LjI}3>?P4!<8hze^!xR`Y!^rM`XgQ?zC8PK zrTjUIYo_d}f%4e9HbY$^xvo7*Y#)W90xP;jK8i;jslPFRNvNyol#4HL#k{dWO4EkE z#$rY2<5(voDM$9xQWm!9SesGgbMbrJkp=DLcSw}G^-tXHyT;rYWEo-O? zv$65FdaC41pRt{-D_G9aGc^PHUTjU=mnLl*=sr4!#KpemV0}&-`jKZok8}!DBtWxB7ObJ6v0IBDtvxAMJSS6g5i?s^o6; z)LY(-P5IKAMBj&%s312qz|Bd%^ZO76A5c?W5P{!rkeMxC>6-vs6QhJzX!>WMSFEfx zHz$7`&W8lz-vaJi8|)tz*c=IeFpI+Z2}^T(_l)LS8ufRoLOC z6?Ox$bfLN4WX8E+8j_Lw&q@$gGwkiaKv;iRTU|k`G#$x}ahMI?)?)dCIN$-=3|Gl) z_$8KieEwd;6(&KOvMaS4KD5W%UZZ-zlE{wGxj2+gFcVC+D)F{*TB}fXdCV#W<~%Ch z$aly;?}reCgf1jxRT-bug^KB#v1N`7$zE}1Me;29?5|_+BfVrc@K&_MII8?KjlVNlZd!*}oFThrO4);)2o>Aw`!}MIo_#qb*gy z#m$tuj?}m7^wCG%4#dq~amA{#g=w>Ew!B`>E|@*5#W+em9JDFnLqOBbD}ruw`8@Wf zou^s>w&LRYzdt&AQLegmM(%AVX|d72TTJ)R05V<}eKm|Nq&Y4G9q7SF+dmvPJ2k9! z_6gQ`c_kfsC#c+%8P1_?!PiHgW#xpu3Y-j*y%M}`>+L-l-+6ku;kIQZXb>JVPt$l; z`R`s*Wq?kcrOi}4%m(#n1&qC+{-@yqc`a|@TvI)C!~;dYky_T_It$^1exf)*&eJ?0hz;NzUTRtv{o~9T9iPtGc%`QM53x5pep`C}v6oBqt zi22qI13efO)LNq5t9{&YRsFLofK(a!+fdEU=!WG+n=D;Y0u+R4+f2D>(v@1@nwdKD zglI4XvY#0AjGF4=phSwf0$r!@w1?Kn+%Xiyj*&KMUjUofePGj&MkmW2tNsh+4phZu zyqFWtEDVPpQ-}^7Jv{Q_Ic%pDK+6lc+ZHC$`0#g8T*9ffOst!_#`U{`|0MVUj~%5_ zVqDf{O$VGzj6s;n)~MPY-Zm3GrsT#?zbPpm0k zEdq(&yvO{s;!M;Ns>VC@O${#|QAX)#7Q8Gd6n}WP}3r5Jg;6W%I0>mhHq3bB{jsEzw>Pro=rXT6JrA{muK(F z@Tdxki)mN`LOUtyq6FjZVa+xZ<-)Ex&qX2_Ky?owN=Uky1qf@evTg`qQ@fX$-TFEiX1ke! zd`8D@P@MOQ{DsY>G~lU)G!eVrYW;59YqVN;3NsA-> z{b`z^fiz$VcP2T8t|RZZOh;_JgMM*|S3`E0Gh(p;48E2Ei!^$rd^KC$TZPRV$@7KS z#!l&zzG$KZU~v9gU5=@2eOO!?W`M_&djY0U7~ZitHdpEgo{g`1-lYcq&j~jQH)yiS z{l(_&4Qlc{`xcsinSJ9fGD??cS}MKMq8WriR(khkptE~2_eNvqZ(4}1>ZqOP1qTNu z&^%rAkt_Nv%4U(0V|TcW8eH}Dh*5h;yfZ7~Be8xpT7Ye2VYv$tU0#+7%$n3V3zZKu zZ)@r!8bdI+?fOR-mRsPOC{00?=o{)glMK56Sz>^LEvAT`S7Hmb z;t`UMHu@s9^iYlS=S?RWY>=-U4jkm)RS9yQK;fT_7t^ffrG-t8N|9{LWO(2w6Q^%R zhrq*bI37a49<-?XD~A00+FY&EP6hG4A1{vV)my5|_lkEKkPek}{S}TM3LR@RSJL*U zRa1&a9}G+~QX_xcP^G1+jdP}b(=jmiJI&25{vex}E38g4_|(`pq})GzQ5uP>3?~;p zN#z)*=QU1p#xppknME|?dn(#Q4+*x9EG`}J{bJg2+O!b#vYgXYxx>x-xx*jYcomZf z4oditOx+pdy1~R%4t!uMPOMf|>0q}%OIU2yAzvMs<2h0Vvy&?7qbBqfCQ7~XsYVu1 z$9l@8-5`4&MORDeUaP0@&v}^AmXxn;L&r5V0vhK!Pd!?PJn;4+f8q-budo=J}Ky?pepnZZ8(b=P_6hqnm|V40f*I4Z#y=>cxA(hn?_ z3%}f$nS&0>4#$hO_*9eqGNFZwHpe?t)ZnSn&`Xdq1(acgoAGRXnQ>ieDPhd`M3qQE zUPsWnXV^Y9Hr!UuKn`I!-R7>Hcc(LZh1&HuhYiSSo5nh+V7%9QaC5w*h}0Do`VRI;l~V*GtK3#QA;|1TdOGVI_?)Yf z({veaPLM#1Zy#U$>kBWUFE);Pu|~d-<+yvk!l+o60hvoO{`u{<=O~E-?ss$Y{i2wh?Nif5cUD;IB{-qG9HFRq?L{&Q^=vIIpx6@0RHH=Fo`*km&SpWOci zBs>6Jsrz~%jyoT`CWGeQx`PK+i#3A1Rw{U zValh)jY;C|X$68)YKBH@`jkE3e23xQCaO!bgT@-jnJC3{1H8NZxoe1Y*DLtXUJF{+ zJf?8zqO=T`6h|p=LAOk)Eh*q#GCXdH@d??`DA!XD%KCsOOknRKxA=WcF7u6>NamSy z(G`JA+qM~GORqw@`cnfv{DU!Y+*_#Ib9I$%tN6MT5#hxu78B5>(PC+yb!J$#yo5w= z!PWWfTY{;H}F0sphw{m^4a?#X>?EtIZk_hfQT)} z4plN|lM8^HI$s?kEjRC0@(-}x9Xs_is-PVF^DX`t&bNWW`Tjqe zh3#{b_>Xif9%Q0KS{}>IS)b~dn&9i#Wi&{I+E>3heX`zoYu6tz?7mG9=s$IaQiCO_FO)!qjzcYxvsV&6qqqG|*d0YK3u!y}|T|V`8{|i1LFsQr3r;0h_Q+ zU_GF;#JXg7XkbgHUiU~awgzOKH8`OtZE}qCVYu53|HivT`yR=OWumHVn=)JPLD7aD z0;x3B>T-G*5ynylO?;ke+^Q{_>qyycd2(XSMe{52YFwOS?w4q@qW;_wybri9OJhT!s1u}p}Pe8 z)?>q`b{fH@Q%5TL)e0pVmYH_=F@>U{aY_t7T16A!cy$Rl%zKrf{M-@HNTs&KSjp?p z*l|7;7^noi0GYH_q{`v0)8XuJ+PHlZ=VhzLt^6=`bMuYLbbpcWb(4?XOJ^k^plurt-Gg zR18kDu%AY0nhS@N$}SoxO3>U1V56Cwib&|Sm{F~`;5NSR%j<{tES!XWC7 znk8r))*g`_7Uy*Fs^2UbI^xtMMazOFMoY^}@jHRa^^SAa#D+AlYUOK1fhQ_bO(ISI z#mI9jnR~!0g=sk*IfC`ud;jAIF(m&5)sOv|g#ME}pB zXBVsZ4}^?OMT6=_i(1+56s9RkECObT2emFT?%#J2q1oxG%-$YT-u*H5@j7I-aj{;~ zPEHk|ID%Wj%cbFm^F1o{{Ah-$wuNBuQSwzgYt5;nd_Yxt${JP-UI=5Uuu5`ohl*1d zT(rI{Bb}4-m=lkWO&bNk9R=b7tpC_CyzheAxoD%MJ4j0}9FlxBY`3MSDAO$MR_I#% zZjr_xQoV5ef$(5Zu1{X^EwBxz^!>-i=w)8(c}DVD>t#klAfq;`>Tp{2pq+=Er{&m~ zDt{XlN+E<|5i@2csB7@;0rc>4*-8OuT>yMkX9GZSe#gYhOL&dkQZp$-J;B*3!V5|g z7S-;nUMw>NiSP8MR()yc4Fw9}Z!x3&k{_*J-UA`^2MyT^Mb54teo`s5z5f>3ftbEx zDRIAhdje<04Xym%mkjIK7&R3>iv}FtnS0AuGNC&`%qaUgJuys* zhA6WKsFE31S|uL2zRtO|1~sv;yxC17(5T1HB^W7K4c~guZ`JH|JuVf(xYog2y}jdF zsns~90j*e!QZ2`C3CM#K9cGC9GZhRBrw}LU0#??L9YM-u>wNZ3w1rxNlo;1cOqKQKf2%dxB)|}Vy0P}s7L#nY=B++ zIMbp@w4(S?x`%)OEqwxV;nCTv&VJURX21~3Hw)5rV<5paZdFTRk2)!YsRtRkpC&4v zF_7t3^COp(S@Y}MGbyppY!+p7$=TGp4&FvrFW6s&d1U0^uX!U%xg7$OFe@P^qzo=- zip)w!P88l8Eg`a8($}@GwNT;~l!yQuus>qM!q3ZXnVMXq&tz?9S7M!`1{@zl$y>R3 zxtR}9^47Y#|Eaun;C~`-)%t(RTXQ5_2cx>g~H+R1G|LtCyvqgq)>7jgj%DV*Q9 z!d|7}%n#y)VT==@nnxR^9J z!aTUz^R#hD&d`Z@Yg>Uv*M{G{BL#D7fKnp?l4D&#C{vD68}Dh zJZNwvWeRwWt+*f0F~w9R2glW(K<)d8JUE|+DDjKj?zJi1QJdT;ilwKnP=0PF!!G+p z9{95|e&meF(~*U4bRv6qPRnG3hr>7?rA<+d%VQvk zN7{XrokUjEz}Cfz=g8Pm*l8VNNbJx}-a5|Xq^_@ZT5D|tOU>mACuQzbv}A?uj*SC- zE7|v7M;uOn&h)Hhw*k9dlXU*o;SR~~4<|^$x4TsRBMUKx%aasd;ubxeuVL32S%n*1 zT!g;!mu@K#?Vi5?Gq6^)>-dg)vZd`->Jz7}4EpBFgW}l1#m3V3dbzYgatCK4cDQ-a zQShr4x9#)>Q1Kf1y} ze`;I&%bj~@s~<`hKRwB*s&aPUtZzU$i*HtV6)Wvr?DB3>_qhGurCJRsJMwZhoz?&HrYWiYfqzUP=W0RS@f~!Lvo#V+e@BI32*i9&Ylh# z!ND+&WRK^`u^6>55%-B(tQ{KMk#c5=!kazyXL0NSGZ@-T?YJMR|r9q_w5g^(s2`co>)gM7S-c@ z3vA`wWIs$0ilF6V1+fe<+z`&69`&sZWb@^EVU(N;^9P&qqBf>^<(k~J@9Zm(L0U!? z>|)=)aJx$3=%&w-zg|yh_OGaZl~`Q(095C6;&LWf8XqBeF6ybe4NYB3P@g#MbSkzjCPnK51%d**kuHw9Z_`|y) z<;K?&Y4|ozpB+APwo_avXSK!E3ntiN>!^S_$FnO~ojq}OAJAL0AANylXPndFy-w^~ z^cC$Vzg&zaq{Z=YAV$vq4LRAZ*Lr_};6}xll$72e`TkKT+q1wTY6eD7IQ(GxBwICq zcaM^>BC1JQjXrJeB2~Os+4T_VZSoF%R3Sej4NRE^sWtwb%_sZaF6t&_wL)+fCLI7R zAL*9(?9PTeD2#c@XO<8h9~%FOkgNMdw?Su7tIj0>2)1INr0<7Ow3|O97S6bi9}A)K zUuVI%%x$n)EhZiMU|yHyZhQ<@EL7<0KMn{oR4)`!8nYyARFXMrIDpfQ`9TIdPUehd zhSqKfCpGui#4pr;r^vlyW>;aVS{&Z86G2?M{_Z*7aG&o?dVY0ynVxftlikBPT7A)e z!F)x6HhJWt=G%c+w_uH<)Q_H%B0r1L?+~Q31w}#8tTh`WGG^r0)uEZb5IrSdUNrcd zE(s`BMuB~L>&6Y)d1FL3nIy%|+0W%+vLS3dG8=vJO=`bRT+{!Ay;Ei_g{C{347vBE zmbo)fedN=B`be0Ypvydyq@iL@(?il)%Hwy!PPpOsQg4fEn#A+OyAqU-Im#^@Q%X%0 z19|<2$;;~D$EO)1V8mj;T#*0NOx&b+oB%yzJsp;xrnH-D}H?Mi4)VT zt`uAEo1IyMh@(4ZOBjsRNwNx!F(4PKhP&oX@AqHmjcXsHSR1+d+Rki!kFwA^ zr?0cb%SMkAog;rJN_0Z53%wXmqK%cr4D4J9$mRRx<>l-A_{GHd?j#91v1u8EgcxXF z(wzSwtM16+6g2aT)Dz&^_m}_-p-fl*G0!RGK&9GqNJ}19p2DgSTxTE3#S+&pJ^%nj zC_NA^BS3A|v$zB&-`oG3Epo8W#sa=@#mG{Xp>T{%cEprCXknOb0iK+NB4<|5>znE# zS?S5JAToVElCS#ff_*}G?Y9;m(=dT+1@+297R6f|7NZhvn4vpzS^;ZG<8ZkC+4+vrCZ$U*0A#q2Q@?E zhDsC5oYxL>MjR)`onF<|__ax{2d5O0G2)fpgD(n>=CeswCdj#ZWLS&Gd2Ol}b_!Tc z*vpJ&kgBE9rgeB`An8{NzI8Ia3>MP?*bMe!5Nr>Xnsh^Mi+Y*qo7J^=s9om5W{mP}2hA*gTk5hd0uOWEQxM{hWb`Oqjd)f(=4_ zd8<6sgunONnzmoU_T0Z7I1gc~x-&M=E2pNi!!K#VL@)HPF(=n2F(-S$n!+%5Y7(J0 zm24v^=QAKfV~)}a)5Xc8O#QbL2LJzX!VvpkYNWYXcVBvgK{D|gVs4i4^JJ?o5hgBnijE+eYir&3GH z<_-gk8xaEpBrv7+3RfjPgn~SX<~hlVEY!Qm+fz$aXUkA|w)W@n+r;%GfU>N=D8V3C zkjJjifwaE+PX>gREqh)1ji_8~Sh1?K8FKvyb>QMQx7*rCq$Li>j?_O?mY(br z2lg;S*`xGwXPd+niS7}_D zC@k{r7cHm#z(O`JYsK+{NNGS-5XfEBdRHSLFk7LOU_^s8C=qhhU5fRH!7^T`w@#|| zTY!J&W7lL@5GsHBCnE|Q{k+2x=Ca-Mv)}O(&xUh6Wr_6#%aRiFE<*ds>&DmumD=l{ zgrY(ct!O0L5M7>4 zRqawBO$FK{83X^g1W~X^>tGx97mOZlks;_Sx83Nf_HUOQz;c*E>2`K`#Zi`qZnXoa zMrCd+ty#7FjU6E_@!A9yhM_ zYAYF&sJi{tk5lqR3kM_RWTHU}1pRr&kYS-?C{2CXVgf40u>F%9tep=jw+R!T(|&Tg zS|O#YhllIo4GaqpBp>mh%Oy*AHcHHq$b0(3eN8SZ;c2ybbWRAoy?xn+oggtf z8iwnWr$4W5VkO7<+~?|@teybH{Yx6=H?y^CxbjTZ<~VqInV`=DN{|yX@WQ&uv3C^0 z(8f73gA;>nO@STr29s-#y{oruKT6lw#2Oz{^~*?8Gc_NKq8M!S8u7JJMLN}vIKgFB#^Yt`-*mY zuGu09W7!BdKS+J>R2x63E0U5Apgnj|aC3T^Nqo|Xhl*u5lp@3!v*Rmlpzme7&s zFioG0{SZuOP^OS;G2^OTGs9zVKAXInGLYDDf;abVwB%9+d|Dd?)=OmOc%6SYDLa*g z4a_ewX)?(8Ne;bD*~aVcUxh-|U{%z&@pt~6?Wp=Mo_4rK6#CYSd)6O2XDLX-zYVpIn zBUT+^!TT4N*;MM;>49mv5EE&;UthM}&Ys*ftKjbDjYK-W)~_&gx*Hh!qPZXM9eEE# zne!Ksrni*#h#K-${kr-{&l8cx%dGCb&Jy4KemaD-lcQ(bb>wxfMFs>ktW zFP%MNZ__HKXgwDD@?`QE^*+6p5OL|YCDz+j zh237lF6geS%2tiMnH0qBp;PKd?PG2J`n?+}?C#U5)So)iYt(6+F+JAH1N6~b14(ZqWsG+pXcGcV0 zh%(NzYP?OMce*uoX%F0|#UdYYi;B9JyLfnM$?wZ9rk6oOz~AsP>b8V@uugXaVO^sG z{qX88b1utiUN0k}4g}SVHC7nw(x=;e&H7A$kbYV&izhKM9`-ECWh0au zff{GM>bHgw#K2?VXdnlG8|VpGv+4X;-ipZ78F z;W-*M%u#M)I$G!2NG%f(+{?RI@d?xVk&CDQ0=IWTpCPCrF%*w*QApxdr2q_@>=hRl zBI+*6EoM8}99Nrv5cBMbtB}@4kgw-{^zy)7sR`4^!wxvV+3D_W_h#ug)*Xn*-@`N+E8v2D`L!p%9TaZIJ=YtY7_fBaD^%rdkRW@w|$2CpeQ zVp^V9m3K1GueX7M8Sn_>bt}vl+*=XAAM6y4jHKpID+2NqH0uJSF|d@VZ=Ns`61eyi zKP(~IK|01Q^R-u09A%ny{l^*5_I8C^`rq<;@6YzWZ)q9G<1Llv0)tx!=|@Wy+0$C> zTQeoU9$wqHgDHKdRwB~2|CocU_9uhIoA<-cr%u*`N~Lpr2_ru#(tR>j`T5jW^bha0 zSd!yvH>}00R)2`(#A^JDiF$SUYa*y;vvbIbSHnXBS65p|HD1z$pg_b8&Xxy<**odQ z%);8tcMcD47LU4t!W3*_y?7aZ9K~J70n`811kgk zkKBwj&&8Gpr0F;=6ds`N6Wd4f1COuHTgS2AFX{+MWV~#-aVSb-P-{??hL|K&3YkJ$ zMDSmvJh{l=lWes9NytXTw{%{}A%VM_O)%m`>i=ANPHP5X_@K>ah?tqP?_%x)wN?|Y z2HbwJ=T2W;kT!th41d14R%sJRIxI6EGU!jqbhKpmD>IO|*z&XJeSz-uERo%}YMZNh zPl~oth|*)`TA|@t`UoL>b;UPB-{-A2vQ3V91W$!R<`1;bo7)Pmx0KqaF3YSgF>RDp za80nnRfioq4LO}Ug3N2bSkJogO z?$6km)-RsZ#nR*au*n+c)E`uEW$`-{9=6k&ZuN0L74<&vDjlf{w_za1SEU0#NW~14?~B%y zFu#~92@Bgyx5+t=OAS|A7_Y4`BS~sumGGEoT$>05`FK6Opd$TFtJg2zj_`R9=mj+p zJKfQ^@`>uDe;J^vSDnxh;+i|Go-w|HutO@1>Go9P14FuelNXog?;HXqP-5r7Ts1o8A#K|#wNBBX8}PZeU)tT3M0q?vLyc&ppN zc0-s)-$CLt-*SxgB!!8}t!Km5;PWA_vZe-?NSiCucqAtgr_rpAHUQKS-KN3;)Wx%b1*;s+}XZ8ER&yqm1wkW<`e}dee^k}|{H}(hJd3pzdkv>tP#ycx7 zHLbkzrfp7?9gWrGoLp|K%Q=BWh<(XBIBhwEI&~=wk#oqeFIB;!YWjWy^D1vTL-t0s zd{%g~^lN-pHDrUa&=C|q?8Y-;d3?$QO%Zttdz>kEE=q|i(6Y)>-dT9czI0^bx$Th( z+^JYN5=}Lj(=my)Ex$}Et|26GJLbjt%%)B%s4tDwq@;zQGtN|Ug_PLn71xG%Fn!JZ zz}Hvb#DZ5KUW?b_WEE622r6k;Y?&VZilMj{4ret?;8KmgTao20Pw6i^zww9{V>jP~ zx*WFKIwa@Ini=lS1K~fAN157MaWK~Grg<KWlnvOR}q*>)x1*K_p0R8-nsGgd8j z9p{;Mr%}A}FY*M=KPl5&ct|!f+ChIB#lxmR?dp+0X7QCo1k=%>0dZ9JdX%-=t$>RU z2h~ksvwa-;zJpJ=4_vtki!9T#L?=Lye3-}WU(DO4+g55U`D|dx6K);!#9Ggadrwcc z$tjyycQYxkHgW$rGji0MdnPMw#4N>fkW`SbFLC#j@0(~xtu$Ii7vOnWOz-D?`ldwR zxaGCx4N@oBGsRjWN(S>kO_!8IZ$f_Ys`{2`1r)x!*Do&Sd*&xhF=wcHXFFN76DcBO z1&3N%DHoNz_X#m1+$R<$IGs z$29-%c@1-p9`gE#sTdj3Joh%kw%So`-d!}LskA9>ek$Sl6kO|gdOi%(v{Mht_IpK3 z%MoYyM>8tkg>^xa$7&xP{inj6&5e;?xJ%tJ2V$uCbH@PJ64`er7K|Zf;-l8qX?9Sx za$_aH1 zDcExG`alFWZ$);HA%d!QN zisfw*Nt)9(UGBlv%zOVgnN*Cn@Pso8q}?711~T|8Z+qu~f-TLeLj@Wxh$@3g*6))G z?T-J=-*3CbCU`maT6qF(2q6$Ioh+n40PNn(YF8 zQ^6b9D3Sdv`KM(+8zKS0l0Ybe(=v?LtT!=-m-{9`y|PkXZ=1BOhPgTJ)~i_xvr@3V_@A{4Lm*>Bw4HJamLa0#FMkE zbWXD9k1D!z7goGS3P$4z6%jUITeu4~w)SBO&O#M>_UEb4weZ-SrR2h++V9c5^eDfI zHQz6ncB31;n{PBM4t)?3kL>FsE<0(`{P`r)|V^3E5yG+4h)H7T(NM(qx_UVRw|jm+e9k$v*$j_FX8vq66U z0&T)1p=kq%oTL6)g<3ED72DQZdGZXJ^vE~s(EYKsuM?cu@>5sG=?{EM9Nyz{?Oz54 ztlhdXvWC9h^PgrTC>|8buso93s;C?_OFrNi zMRFm|9FUR$1>M9@ci@W@yvk_7U{n)+O(D_4)~lKs7s?nMLRVyCPCeZ1tDwkpwzPXc zR#^g{dXGFRtH|TRa}7QNt8KrA$~L}%KI_(h(zQl_IjKG9n+)`>d^? zj*A(UX~pOLc0a-)NiRpf>U_K7>#CaJAn*IcR*wEA4FfZA=-Q!Jaz=a{7y_mejR)hj z>V0F9Z0&CC*oihQT(>5)Gwz&vVAwfCf@hRjUa^@5yo@Wy4(vjUdn!iLmmo7%nQ_Id3Yl6?%TmNF8*tn#!-` ze+J;52-(z#;U~DPC5|Ohn;8NqD}<@X9TI;EcMabFBm$HYcfhX&bJ&{Xk3Tt;Ei3?2 zYiSk5YgOvPq5^G_^5}jXzu+CS%%^Cuo{nO2BBCKlkzk^RFG#Qusc#N*oL+`ka;0R^ zWVZ`usmyD>ma!aMutgne5>&eXEh=z;1V}PRHuEP3NF^TG6E;5(SesmluA;o=Lbw+l7n>8+ z?s6jHsQCk>8RB#UpHl@YHf07r=hH9tm2X$y-P*O(SxR3ayNItY2ms6jciblHv}Q7EGvUDc>qMuEzz)P zES+hpE9s(#_;7~c)^=ld3=E?|bj|vO)+m?|Qv>F*`U$Ge<>bwLKR5AX=|sZyQC6ky z48n<9+F+tAtGu{QzGjq2f^9wK-q!OXf|88B7-;OT{jsaNd{z&RGT`k-MXpy7pF*GD z^C&v$swJ&l={GJ094H${#mG>_O5!G5-dmlONS%*re+qo_{O%n49&{+>_36&zFCZ!I z;p@T!^3%cKpB;jK0;=W*)DdgPKO|!d&yRu2h&BJF#Z5ln<_S;ZJ`I(EOOsarpS)*9 zCTx1^-iZqa@|wt}u`;#OP}3c`mNBmCT=!F_{BgZw`^NQ*krh2ZIm1OfY?^W|zY=EW z**S!vcS`yQCUDg?Ajcq*D)U}{()V%czHIW3>s-$F2#m*X4*v748XIPhS)IFlk7Ex0 zcb!*Ok1qf6>wi5|xaWN9d=UFIB4sPk>1TGw`xhYmP@OhG|6jgI3bM}fllw0~ee)uAIof#>{229V!k;>)Ph>88)39c4&+)EE$w!U~ z;b99Qb{QRn@Cq}+ z(wa-2Hn>qC-)0H%`q}cuJDa^5mv3b|PyCQT#8Y=l)8F}V8WoBM$}cItn^}RAxql$n zN5}d88|6u?@DEM@1WpITin>3b~0%< zIv1j>A&k*X7W^bgg7HkP?fG>+_OuZrPw(l(_erl99jpr)j_nBa5l}Den8La3?xGI>VI!P|6!FXrX~yqp0Zfo%!z6%V^4b&ErC)11iNj`^RyF-r zpC{DSZcL}o!9U4up~FSZ$>ndJ5BcuiXBE^q-uq=F-EY^D*Ov9aM}E!0y0l{Bd`*XP z3=%4eB4rY6mkhO^%L#UHYVg8?sNnoo%~J3;uV+V&;@o9tz4)E#QR9clHaKHVeUVeP zDJqhM8T~HKIG}F%AbLamBhb$*5`Mh$u3jWQI_Z5@L|gS1yIR#Ix(^`@!e;*GD|?Eg z(yAY?j}^7~9NKFR?iAIhc>M&^h*dg}(qMEUgLT0geE5&gwJPDL(3q*9 zs5*uC`z^*rRFcF?1FS^)GOEzmz;JXl%oixbXq+L`@?Zzzd=J`y1peb8ErMcBP=`s% zsbWout34>%&y%gJM=(U+o7%*f?an{`1;C-x3x`qS{)gMX%6#)}q=r*7eL9{v{XDnw z%GgFQfpBAQ)(Qm@?*=GQs6b7t!znEFzZ> z7;LxbZa&B&9*o4z%4 zw#2-z1dN|XqpdZa-p~_a(Mk@aqPk_t5M+a>u$D($uopL!p^1pGYepvSd3;XXvo>m} z-540yxAhoA#S9A5ykmCveENHPND|Zdba6vmWx*0E=;Btyzl9S$c! z`SWJ8Tz(#X2DNR3R(2HW>YryD3?q=bocSwFC!F>+$mt4b8P#3Y(lw2(PisnrmX3~v zY;2Rq3yh;0iwVDSMwRfgynjIWm-)@}qfSa6?tb}&4~)0i&x7oqP0Z+g-?v~fsYQ&E z3*rbg%|M~W_F(4e;n7YQ-k0)ro+RSdu!&y6s98bnXGoYgCs%9dQ?RUYz^@0L~RU^KrSKcY(VB$#cd*L$yI z`WZ=ZV}_PLiU7O#)DI%uQ_9@NBeHwy`f)$T`smpE3&6<4<2zb>`dW@XgRAu;lGvx@ zkWRcf=T;{$(J*dPF7n3MH9%;_*3w&($ltX|^rW&gI@tM~ExEW%T$Vqk4B( zM5j?E>$wlb&6G(-At~e>TdQuGXu2x9SD*coqmYgxj)+L}<$0ZEoyJo0s2}l>eO=_S zkv+nrRq%ttKY45*Z47o+{3r}od^8&N+9Oz9h;(;KcXyX`cizMIec$^(+_mlx zEEe#2&U0eU%$_}a2v=5=MnNP%gn)oR`5+^q3IXv(>-7u%4fqWkG+HG12I-Pd_!}E;s>wM^@# z^cSz0_vG&khc@iNDlUJ1b zq$(z_uP7xZrmLtSDHz$!ho~H9DH8t&kkYJGUkB!ZN z>>%TT^}!&+pZ$FTh9c{ILIMUxn|%U5UxQVdg2}TNP1pc5U|M6IZ{EDI{gw^5o-#SH^OqBJ^hGxN5psh?MK=Pw%}PDz2WB~#GJh?0l?R8&>f71xv05qAst{-yEHk6%H&1v(E66u5X!2=MThzv(?Re^@IMM?{oc z@xKq*I6b&2E=!q54-Gg0ruq{deK$Wa#Q(gq$Aw0Th(}#kHE@#nEPzzI0ga@s_4ASb z2P;WWN$i3}$N*+A_KP^ioVXlu^vli&p2M7`fxLPU_;~WtqZ5Yr6uRQ96ge|jQd6#ZA>hV|!30OhUFp?6%Umd zMmCB#uY`KIaj)f2`M5WdpCrPkslHU(_^4w(b3@vor2h+SAos;oy)2PeR2`nHOFXRgymh4Z zX)NutpOMo-10fn|+eX_N%77%NJZGlh2T@T)S+OYMET*4ME{0m27n&#I*(uvfs1P>b zd`T#2DW}WINC;r|Evr6Db8@Cy5#BxZJtwC49?j$qWi_ZX2s=nJv#|UrD-yKZ=*tx3 z9P=M*|6Vg`Gd_B;H|XJgL;8}EFgrHa)oB46Py>v3RODnTt_NkYvg2Fu=!b&Iv{aqS z$_s}TU$5J)?)wla93egj6&2O$I$i$HBBY+4_~fFZI4c6oEc6~%sQr)Mp`76B--0DV zVj*fv>nx9(Z||-{X>nOwSy|E37x~8kc5R7L(5Z%acclocecly+&{K2j&XCy$mY`(51V^l)~3 zODRF}!X~aJ-tF>~+S=kuP1W^*3I`co=l7JrP1eIvn3b*NPjQkrrI4cV_3;4#0l$Lg z()Tu#@RTNJ)DQ08suor|q|B4H`NRk~Vn)j~J_kvNkjJ51Rx@ibk4=uNYN{FcJ3h`w zdW3#6_CUDqkO((39yAdWq&Yhy-Q@jRZoP?W(}Z+}lJuNUQR^+%dM~H1FIA4@ zZyl|m0H-=iMas7df4~Sq`#Q?nwsDQ+GnVtLB7xWSdB#^Ah-lcmP#!m~yyUTAf_**y zv)o|WW&DPht@(rEeMATvV7jPkDjK@){r6Kp_GI{lBqk;{2ma_wj`xny?;Ju>{GRwD zS->T5KEl(PT{WXMTa;2v^CY&8lzo4HO_??T1jBZ=-6QAoTca;R2LdhDgx&i0O{~}U z&%?v&$&sTdbf%T9r8A`&`sdE<8Gb(^2CO$f9u%$h83f>hNAZ7BbmA06X)>kKj~BvV z(!Cj9G#hF)v0z;e9DUOe9oSqvAJKsHPZ0z6?a>lPe0)5dB-M)VEs^;c1QA#-YVtex zO8cwH->EdBhOHScLN zbDupfJV*$&#se=FK+2v%RAaJvN*$mh$*NVz0!+ux;MVvr#t!AW0>_4C+G$XGOew4@sw z@8#y=IZ@)v@WJ9HT4x0Abp*A@ToHdVyk$PK&Ff?jS6g4D`&$o$5qOdt6Zfs2iM4I5 zF-hJgW3f_3+xOUb4K4Kn@OO(G_`|${mX!|I-E2Q%U#3O|=Sz4WaJd8spt_(%;pbpl z<{S7@nKOkIWPY1uA>@2nYYAoLxecl+WNW83HT(7Lc(ss>b#Xk$$WBl2{_6AjBeQ%K zBolBFb7Ex$GhW_t-~Yn8?uv_Ewq9=^j9z7ShrJkD@-u8tu?YE?O&lrV6oHF z@%;DgE=ec0%NS5iqX8@+Vlr`iKAzUhFnU=Qy6vho+)3{4Kc8R0IaWm`2L%VuBopYA zvLEk;EPEUa-=IW%Dg2eq2uzAGJOVyTFWi>~di<4WM*A_fQ>z(@My~*{Z)APzV zVm*_K>!&2HZ$g{|OO!AfU~ja{JJS1S%p=u5^4H35i0r52S|vrwt9#@ zm|li`A@*9km_2!VV{*Qp&%cWW?hS!6`-D{}h3PNq6o2>(#WuH-d8t+SAC)*s= z`B}U*m7hN;)M$`zE?jrV1|n{se&G8ajc|IU` zCOx9xh@xiF?oS@q|3zqIk|x^pnS6JazAgLnnKjQ`1iULeH2Ln2?u!ELG}ir6vffAW z75~TmT0SfxEa;(KlkB%`gJt4ykF7oz7|}>oE=Y5;*lQfLU*(?kCT$sul@J=J3C!lY6u^! zY>yC6`QgRJAkUpANJeb(l?b{`eLW>V4pboZOOJFM(YG^TAyT_GE#8icCl@=|*)0s}wQZVQtR&Bu;IsAKhXsC4T1Sn`waI&w zgg|~q`12zJoe!z)5Xv)1>EGoSmio~7h5n*aOZyEjQO0{0yV(_W29%w!H`karnDS98 zGrifgahsh0C}=49eVl$5j`fHFUL_){O3^p!IaLlRKSL_)%SBFKQe7Naq6axvYT(d9 z>~}D&-o&9zikIlPv%x&)3j2r+9y0W=et{5&GB2&)bG=VUL#sOu3*PgDQ2K$nQTX5v zk{=E=U4zwF=flU9C)&AX>@{-Wga?x`zIH+h0^c))CG3|-LXz>w%#pUN2YHI-Vi9%Y zT!V>?ZIoaCr*UR#hLN@|7W_pY__F7?z4Hc}l0+mVj+%L=ol)JzD;>E(LpZK>{1z0~ zYpGiqwwn*`Aa)AmUi&}(=szxnPzoS}_NO5ub6lSz`G}n_TAKW5*Skr2~B?c6?i=+`JLQ4?2v@r0sg(dhGbu9E6zCy z6vxc$?6og=F9t{qc)0#gnZ)P>NzX!GpL`)pL0bC!K}YTCwAGO2A92vJ(C7Un6kcO= zM>GIC6zpdxL$59Jc?Ig)m;78L&A6JH-Yg*pqCZ9_|CR}BJNUgWzl_Dq#Gq}pjo?5L zu(*3*O&YdBLqjtl@1%U&I{D9`R@umm+zBk{g_4X6op@i+8BZ-~qHIDKCWIQ~OMk&e z?FO0kOcEC-$$gN0S6p0L7_IQ$kMoEfRS)tQIN9fzKe9K~TaFkQM&=Q-c1vfsdxUe+ zD2}uUPHatFatetf=KsyFYoMyOG!q=xe-BAZ%lRtJ(O^?ch9m%_72aQPL;csNAYidu z`VN(3EHp*@S4?_ywZ{v>98G328N4VVB;=O>W<`#IZ)W+o`@^B+O{j?pe-}L4k9wj> zHjd1f^;EtYnW=oxmYMpJ=8?5AhP}oOTwQc)sfMg>Ec#p8V-1aICJql)7Utd@Mu9QfDB#;hjC@i zYxgP=p{_6^Gb?S$sg)@t&Ewa(k)Q`j&@xjyok>LTzGW=6wmHB}ZH#YMP-*`ff_z9w zyu(b@cf0d)P?uGb?z87QM;|Ui29KbirA7C-Xb`v{JdMQokDu?Qnq^;t#5Er!L_|bn zWYAk)et!2bF>#TTLn3xJ-Ht^W!9n_`fPrKDXte$n?=smJ zU`08r*Fvy@_!^z&7!pvTGP)qPX-*iY%zNb)H#@KYxtiuWEnPMete$FKwu436y*Tlg z$Wt|FdrE&M-+ca?q|FEOahmJ4PMXt;KNaoG0Zhs^q?*->$!ks za((1kf;#0w6}C`SCEcz9Mxor?lGgdZ=GiI^QK_Wbo|f>==Z7^>4#In`^-cr&P3~UN zBy6!=matYJyHa(z0R)pz3VEs5wcy0B+(pmf4w)+ORa8lKft)(q$~T~nZwww4bD%3 z0wD;_7Ed_jj0m3~TF4<-%}y@1o=L5f!E^)+e#o$l%2&CX_XW5-|Huu^bo@a7Z#-x2O&WRy|?87K8{7 z?=Owti*A;+nwv}ak~Tb?!lX66QRyJ;jlzp6g|8R{nM`7G6AxDh5t|U4sEowSP9!l? z5*w5E^?pl}hl~QVZU3rg%cb|NZS_G(+2lAJ4pw5l1H!}Yoq#~&o2vY1H>YEkYw@vukB zh3#^|55@L~)oeT|C$@DFM)PSN29JTpmCol*mI#i3UZ{xe-`c7dxjY^!$9x(#Fh5>_ zZYp$BXj^IY(?-R*gVqQ8o2co$u7_`g z^dP?lkWt}We)D-Wr29+#RM39h;D8tVNf!4(`X+RD-;%w!`C_f%AU{@PjxZHl3iXI|_h9JsE1h}s=ckSyPsYcF za-4|vxc+rZ%P>6+gVp3%*YmaYs#{kWM_5rAtWN}g3Q#54b$NqJJ(J4jMZWspXqyi8 ziFWAdCC@MYz=tGvDqvX((wQmd^62@j**lHQssRoPH>I)D0HqZgj35_P;NVHb__|IUYqJ-5zF{~a#pEZ_*n1wM0kR)o8y-i1u~TGBGh^G%bCX4R%6cyy71F z5ROC(Hg#~2vfcvBN;Ka#88F@o2TX!o1wkLKr>hQAuC%zGvPSd9d}RPrGsf zWyiQYv43LzSaGM=SCNxK+jvJq{Y}w(Z7Xn;gz3z`^6P8@5X8q-r_ce%Bj<6(yo(-RvxiUx2 z3nWiEM+iNZ{2wE>N99c^I>nNddItJrjFMVBZ{~enw6r~`!PNm7{W%8+qH3WOHC!Jn z27jyXcYb66-21JoBppaEKx8%Q<>2Aw9@cNf8BwxeW~>UnP8=-fNwu=HT}X0ue#zme zcY~Qj35?C^myug(EzdHV?=HIGc36!T7ly{ds5a_M&aw46_x)fs{_w4GuRq*sEI??* zeujTxf6fdL+FB>rQA%GpAa)- zZ6Mi}&SEq1zY)9`y~(AC%7KN01CP1Eqw$vbFF^+Va%fG z$o^zC^ML_Iad+ZouM2W}J;-ZdT}qf6#y4eDY)p$uJ`DVj--Il1RaDlcXHhF2KCMLeED-yuX#f`7FYII~!wY zhK%rHLR2&im;g3e-$EQ#0{%*4(Q|VWlMVlBQYiwZeLc8%_O9jg6J#hZ1?rE0_Gp&} zJVnz+00M9Gnad1*tLZPx=K3>74x%u%n zqvzBYb8+bip*7K5SR6N^hp6kya2OLK zhS`Yc_FNA$t=ds#YAi{ZhUkOYY~C)GuMN3A5P`9)mVb)U z1v}T`JsA?X-M+X{6E$|3g9~Ik0Oca{K zD`1Z;13oN@l!J;Qw&R~FAYeFf1(XZbeHtlfFpS87n+6B;_un=_T517vd1+xVl!^9h zQs8Qh<&JXi&1v4VPcwIxkR*zJj%{Q_t`kX(LxWU4sGsLw>3aFPf*%Rr&$TRsT=unm z^uNjG4r@2o{>I~0vY>V~^L+66SzS%#p0a#zr)1Fjw}AR}BYY$kHTd0DQGt`6GqYdG zsXG?z2IEXjDbH_N3;KkS+n3dk^K2}XNY}RziP}0>ne!I6`JSW{dB6)jLAVEyZ7~8m zw>!k4qtwbiUoqWA#Q?2WpK-x-+pXC>33wSU98~zML)VCPx`Th->$0?sB zu-UtsTG%i$32Qj9wA1sI?;NMJN^&|tEXRQ+e1)W zO~&WAEXUrNWn!mWeftVh{yW=pllnF^n~e9~f@GW|qncEK^OL=HtA{~)P=q+=pnU#p zG^Z)-$@(>eIZ|%Gg4Hdc$%40>U8j1+i*JNAH6gCeFppz|b>Ig1vO4D2;vH^&cDd;c zCY;YbBomxyA8nuMIf#2c+zUoYf}UqHE8V17iSQ%-Rh#L1$f#204T(7WL45DtMs&+i zO+;5A%n>?H?v<$FXlb^ycr+sf#wvlbChtP2ZiOX{ySA9>r=ix|+iD3%Z;;H88V6lO zPFPmsM;^)zGC2C_wc?U)3%Du^9}@hF7C0943Re<-t(V*d{S372EG_v&z%XYPDX+)A ze#@z=D}-NE++`?AJ6Ka&%c6aB{UnV#QZ{&_QI=e{(t*{qGY}1@uY+$Z4)t0p$$B?7 zEtHNI)v{1n`N!*Am(k0H(OwTDF(9CQGA$GahW@s#da@@QE=GU-rSZ`Yq}Jrm_JG00 z;}WjA(D-C;YiZjF&Vd0KXJ?0X!_~gz92XpF#yoaXgpx3HXip%hh<#5|gLopOi-eIXkfp;7Jc|h zL4n7mFg(0zp31{hw>E?QT>&s?|F|{3HM^RaOy17hq^21a(nT`s@h%T`BjyGu78o?T zlcFFx*&vhycq| zH&o(yE==#@6`&9z_j;m%r^o)sA-gNs`;9+hE4uOz#TyAgLPFxgsZDOX@J)+6cD$_! z?*$`0Mx;=dwE-Mt+mj*y`O2%_b;N%0ed~T_H0v`sqz~Xxl6#nesV)A0t6AoWa*II!V%mJhIynofr~< z+e(Y^Ebc45nY?FSQmz;>tw|sm|iX}7g|~ZUy|~ACI$7FoP+}Q%9PPZK5Zxi621`jb{b^d zop0XvnHE2#eamR9q@=*8ON5XEi0VBG*Y;Ep@sDJ-Cdj=__Z?OvgZIolTcQ^tw5_o5fyy1#YyB!G zkiD2t-6FfZ&A0e>X0647btN!7w>a+?-O0M`7eRyk=AQ#2-K0V>|CqsvjgFfK=k19d z61Y4J@13-*O`>%msM5uhl7hN^x*g^7T7Sz!j5vB_B5;LqM+1OgHl9-dIP3Lr5?E5_ zi3BEZ@|hB~h45Q?BjWM&+Se34KS#%-8OpK}6<7X@$>>vT%y3g9_SJE7YAFSA6E)zB z#e0o5=vYCN_q6KA;1`@?Lj-(-v?BMH97v%tNrXnubywVF{kA9Dqb<3wWTrKe7y0(r z?F$0=dBI*(N2(I8i1y51O22~VmF#~ZA|V-JscU>xO8;Adk{#Z&WZGJ_%%JG;<#}xJ zTC1Rg40nYF5I6rQ zzCtBCUqtS(xO5ee2C8X(Ja@0dXPXL}jIOS5z4T3Z{ywR9O6aRsVge^tVFPMD4x2+{ zOpuyj6YQ3;w@WjP%SBEt+*>QcIbMCwi{CvR{1tEA;I6?Pv{Y6o7e{e^PQK6auKi)^ z<&DA65zpo%njr#sdwxlwJAXn)0S5kRRbomL_;tr{CbxTBT6A(Ud;y_Vob#d2ZKkQB zM~4GQpdAe6VqUT9KXxRv*LVUc+PC;$m_h3(y}P7#$;18{R|6?mtXIC0M<*#!BbMgEMezKt0$2q{to{nRatrF`lzRnju!Zsr`H672Kso zkDlg7w2vS41dM87?4JT&t;KFr8ZCV3i`xTI3n7V+ z6TRz=Xfrr-|<*Fb3jELW#Mz{A7@VdF=T zvEudaYUud(Z+(q~7Dqu8!sT|U8N;T9w)*Upb0d;pT)o9&_HzpxB2Y$2D{*v}kp5?8 zb^}2eAbR1!(80g`v4Bd^UP9ejX;3xQV~kMHbel$hQ8GBd$hQpB79M$t&pn5pn_W?8 zwS_g}Pz9F^BL1SeJPGkuD3?l_V!=tcurt{eGFWJPc) zHii;?I{$4!p$U`^o{tnBzBk?WuIJJxihRlkkL!tpjy;y=en6SuKd`>OHwf;tJP{9a zE`%f*qS(?sq~7Zxj3v-F3cao!uj%Es^%p02nhe8e{Xz2w9TqzpRUQn1&E+)>ze zrSwN{rQJIXmjkFY(fD(Z3_#EzO4naOfue3~T{MZ1p%TDLkcgdCxDIwGE0H>K61jOf z`v+D$WAHW?9~8rdKVv?H!U6=sz)USBtwWrf{io5q^N{QRhCm^;t>>A5%Y}ehA8t|- ztPKL8Z9EFkcx&4{uduXpPwJWMuJ3O7tWcc+nw(KjfVk{8S)_`xhCZKJE7$+s+YsN& zADeF~Y$jIy+3HrK0KTiXo+q*pc#9bPI>Or29iixYxH>}u@X~02)WG%lW_*$!n`Xf2 zkwW>up~CLI@l!8qknya~z-`3@ri~cNE+VUD5eV^o%iURejee`FboqHOfw5*1lEI{U z0zrBgl#CAR48$~X6AJJ zAb(fQ_$Ds~)TW*P(m5@)If(zBMLe&Z9qlriHQmNy(h9G6K;GrV40k;Msa8BRFrBIb z)|HY)ys0H*(LQ#-*;$}U8_hNYx~9_z3FJ?SuV!!jlLD=bO^Z@XOP$}P;uWBx%(CP; z++08568VqQ2%; zBM|$KSPHhW-Gy~=%Pr}g*x(>&daQu}KiItO zgrm^MXo8v5$!S?}g_KE@=YomKh=#!o0>ZS$r+Z#}Ups4iDRCUdo9?2Z;2_&sriypk z0V-;mv*jGtFAakpr`Cw&5CGRy)o2;lg>x(P@1lm4*v|R(^RtBshg2-)`h=qH-^}{o@5$}_EhtmUYSUKHUS3*yG1;Ba4-F_-RZ|z>& z?$y-!jXUSqWY2HWHbNxLlF((J&##bD?W0E2>UKf?1aU6dHOCd_4MKtC&_c4722n@0wU7*T5Oc-|l=Df8g+u(UzQE z=`yK15iI)s=ZnN+Xvfn-5S*vX2jinG$A29zxMdl@Lbcui3#Di13%PB&IGJiFX98=OAcEwLX4~^V*n*oIPnX+nJh~{)>NelpjS}F}aHEJ#W8%hLqD3 z=Lm8?fTl*{eqedH=?ePKNE}vPWeOY%`GhOU>B=d`2L2cwoc=SJ_H({u_4;yK;Bxqs zT*{mBvms##8;8d1^mML+`^hB%N9A80XBB9_;h}4ks8>l$7x{gpd7~|=d-P4MUQ+2Q zz-RyEX=o@4Ly4nq<)6Ok)e0P+K8qKeS%oiVGu|FYoC8m}a?C9oq1TwwFgJAd5R+~% zUrf7+xoNIF^_WUb0Jz=9UGllylowTl)qo9Qav-8^``wuTZCdag*_?$YvDp0~F(n#M z1s`8?%Kw5GzC4ld`9?`gq_EJFW5T+4^x-TM7a&pvv%>H#WjK8%1`-W=AMU&sn3Dxl zuu&>!e>Eh6bZs{+9=*vUr6bfIR1`RH=GOuE zCWjaE%g>O8YNOx^f#t{r)VP^lpg^spe`gUHq2Vu^Y4vj3c`dB9zp@jkmKx4~|5 zVFi|-$;X*HrFE>d{+FG?B5K0!&E%cyezi3n-w|74g^tqlmS}@2GJr~Sv_4?oq zRbjK@`)F<6gplP2fdoJ>l#|mqfE^X9>p)#gGg|da)r$A3i+oplT*tsdDJ-eH{M}&I zV^@j|xR=X*!||e`MTH|RX+=-m-r?eYMhN#beY2hmzs8FZJKgC}$8}y{vm7~hw;l{i z`Zq&E?LB%+Jx^~FCShSiIU!k~0pm16G7o}vpi00>70qx>aq%CJ?LUHB0t5ogG&G$* z2m@YfDJjn83K@6Pf?W!D7t;*OfW2HK3T$s-|8#g$Tb#yb<~l1(_f!YSDX^zC_K-gB zIjQ3Mxr=b;wU|171D!124|hI_)Yr`5b&cWZ{&nUhsvU*5s9y9j7Pe zYjGmy+0Y+{eO-0|q8R5fXWZe_V#dWWwnh=MVAg72VJv{~t@4eW9HKXw!w5P8c_dNI z&Di1%zRw+Bb#r=D+NAX*RM&6OSxA+NP@od}rla|vp>}~P_)`mUg$;?2@6qnanmDTd zR9TFEI}Yt3q|+cDZ||#P$8^CupufIM_-i@mqZ% zC9)1EnM&50`0}KDuj(A!C)%6w^>tNSX9OW;6i+DtJDyXL=YA*xe=TH$f)c%Hp>sOP z5(YXZ_N`?LR4M4N5St8&8XCGs%m@i?vQL&XG}4&N%F9#bn7BM%?gf#2tAHT^O0j|q z9)lpm?_?cGsZHi`)A#^s-F9Ox2h{dpU@H8EL47z)%ih*N59-yUW&w!`@~L*OBO3Gn z%VfLT2$1=GUB0Bxm6V+OEO1$un%Y=H0(m0jbJPQLppVzyzC1#rbH~5|{B9|{Aw3&a zluBDFPGU+9(R-Wrndy1$0{{rcFu+2T@#eIc*bMkco1z@J#U$u0r$*Ndk^OX_Ik|Wi z8*ba~xF}q;ZLDj3NbFgctx8Ht)OK`|fRy0m@7MPle<4 ziPb#qzsrQ&qoXfo{yFZ`I)D-jDF`kL*oVRYA+zs=NTl)>r}LHqHVdEA3yMBJoHV+Y z*b#o<phxSmJ#h%D;Sd(^}pPk=HN1db62p^-Y)LGZhmHyLSwE0m9jJc<*s-&?~Ryj z2cTl8n*XbzqgFGi6kIB~>&l-XEAEhe7o1ng{=?as-Sh`UioE%HHZub^_4XVLLCMkb zovXFFCc$xf-3iAKG55uNFfIYoPYiN*lyujgN#H0$tK+*eBH_wyEIAi`@g+{zyl-}> z{F3ReUT%SVGjf~`d<@`a#}@e`03Y;r(#%ERjA}P#Z8B-7{nR%v4;%aAblYr>TA!(t zlL|ID)Y$@$ID_h3^%nI_VU8W{*NXf_C)!fO{h-)dcTLWnYFn_etp3=$a+b| z+GdBARd1ROJK{7INy_6hK_kUE+9l65D1SJysT{JuW;Y~lodwkHym(E-52uo~_bo!i z(Xx}O6#V>N;^d8tEL>N&l7|gVgSf-4wHz3G3sl*QH(5>g_p1mMinTO08cyad(twS( z-8chk3+JurCPhV!1>X$5YeX?%$NNjs*LtB4tl*#-zX55~Fplx;ueJx{<8r|BYeiC# zy#pc~PNFSCG$6!2lv6A!a}d~{>2OW~Qm>)j>Cn+t@t>%_+Fs5d{6*;_NJ@XxY3k^# z3gvD4zch*P;9C{?Hr4H07I~B^UFQ4jKPqtE11alU1yD@^HPQ_4Kc(U?)}XA#bG8#0 zk@NNb&cVH_6-wok#vU%#)9D`JQsbLfOV>nx*r(=Lz)eBtu>OnT|~oQ_B-OP?EY*1n4B~89vuZz^OODU^#PN3kUYiJ#L4=)E%4T% zOYTFy2feH*K!mOMFxW~pAdBeqy)|QQoRg8(KP6aNZSuw3Hd7w;WL`WsSE=(8s6zf@ zS>CZl%c%PNtnT1Jc$k_sf493)8Bun_y5#`Ka7k6w_oitF03FPk0Ugyf6%nZT;Cy;# zF=6hZ^UY`MN)v=Ix#8s^{|xuY5ba$(=liYkIk}ReKQ^zz3g>go`%DQ;ys0*&_CzdILex5=d@0dtJ}p>*EXz zGdf?b++7Kr95rH+Zb!lf&v8{e#PpK#egTMp7#Mm4s6E~d+`X2Q2ZhW`ORJZ{l;oJ= zF>&Y0Vn_;_EZ+itVry$VF|pR$cS03Y!#q-h`R{_|&U)OezD};S->?e%ei7+fm7?Cq zy|#$)$N)f*sSUajJM;;B1g9XOKZBP;848He&+km%;A4EeKhOT4MT& zJ3ZR=DN$of6X%!R0yo1sM{<|Sx>pCe0v7kT)JXYH-iN`)R>9k_@k+bi*k;{;=A)u6 zSL8dnJ{T%4Uxs_-Wm`4llLXW8ipf|X47vdz21>G3|3`M9T6lUXGnt$o*E%uecix4V z$!wa!j>&A*J{U2?cvC0(b+3;MHYp0!0VkvEJblCAJHXu}{Frczi%&cexx!+>RLMwR z(q2HF2pTuuXJYjLHUsS*|M;7L&*4-;NKd|fTcxs0EW7WyWn5m>m0Qirr|=cJ0>Z@! z9UYb7K)yI1?ssm1cSV;M}B? z5~|4|sqDQcVb9ZbL+R8-dVI^0aIrE}-h+9T^)Y&h&(Dz!f=VMoP;IZXysW#C{Z#xj zkjQ=hY*O=U=gs;grW`Wy9FJcTDPS-Npif)|&DdZo}EvOz(Xgbvt zTAQk`RD$-OHahb8dq^XD1ZM~-Z;klo6&uIUt}9m7atJE>Qe_8D^k$Xwd1S=EO6w?H zQ88#~D*RoX|Lp4k?e;Nmn50(f>GEvezeaq3@ejaD8?Ly-W4$79Pw%`5cMYciPZpD} zhZ>{!S`2zEc3Q@zO#{Nd!sgE(n|$VSJNxw%{3FWHs~CjMo`d6!AC;514&6t>XEA9e zpe0Qd5ym%9)ynP4Zm>W4em@kZ-ehU(F|=Wj*ySQ(j0ZFXiHS8QC_3c)Y|rE3se62o z(p^05ww~|gi!(F(Rc}ppONe;x#4-H3jYH}DJs!C&?{+HVD$iwIMd$rwsb6)$J~EQp zY#=0giFdKQYC(uj%|+c#1><@^a!IWq))?$D{}Ml*R3Qa&C-74MSLsdhRO+z{m3l^he~% zQFXk!5*c-g&jTemICfm>o zB(+;X1U^_e2_w3;qkAmL!6D}! zEF^}!2AsU?XO;`tuWAlZNedklfz<1l3iUKe0=nd3ElVA}zl0Cpei|L;y=4Ogoi-IX{*tI&q0qtRUU*Apo*1J_Zci=-f4wJ z_XL`|rvb%Qh?1OM5UeU%DV0f?&Ob#UiT%W1yF8T;m*B2v!|i>~Yfkdl4oTHZTe*NJ4t!I1E-GHi$cqu z;&b-7TGazqn$zd;ae2!9ZH6?eii;cP!O|DB^y#Uo_bwH_4;d4XQZ1+w976KRvUz|8 zx3f@R)TY=)By$?A^=omPU!fDo@%MenaH=~I-gKpuPkCqlyDl_3FdbP+0klBwpG7up zsJ<4$L8)-n*}%fS(v;gBC0eS=ZRP%4SSW0R8zg@Zxli~cWgWqf?p>KJpNkgDlrpcS zZ1Jbs(A<4@Mwi?O1J4m7#&2>%(V~_rzKfA>j?*nRzuXRwnCUzmY9EKf9v3AJcVznL zsH@`O)t;>U#eG!@0c7RSKiL1P3+4|Uqj8d%&qG6}Go=zTqDll4SLX4t>BycG|Dm*o zKA^ELW=R{L8buq8&zOo{c&VVDM4MkOhsOo8^J`ld%Z5!xe@W$pt}U<>)l@4h6!V-9 zNaX^_DG)lz%6%|Q(rbNgXQc}X#UX=424);7mQ(DZ)$ORPwK~STJXc#=N|IID7^Y@1 z>48DuY0z@lxA@|pwIC}KR#L^4!ew_TELG>~bx?RQ3pB@3QXnz&<>xi;YS$BJ;T>a> z^L@TI$=jCFPsw_3>)2K=(}U!u+w8vLc}f)O2Z0JANQ%DF@FpC-tz5`T=8QMYs`o8s zR$?P6N`Wqsyr=yP@;x8vdmrw*zJ>vV(5viNkn)pSPBk_COfQbYY9#6(W(2LpNeOYQ z`breviR?78G2XGRAU+ozF1-Oc>8yk2=5U9~`I;Qwz9+G zyO3*tkAi-xi9Vwz@yF%Q#$U)_v9N)96}N2pr3HpKiIB@Dpf0WEkF3XGrA-})-DNZg zHUUr|llgaCzW{v^lApR(B3*qKHXhke=Vm++wO`^TX*?PeyO=sP4n&J%^D| z&iYrB*<=DjAcgfqBRHNKn{&PI9QKD6PFlo16M;Q&Zi7Xs^n zUbGN)BCRc4tWkr8Z?fCbgYMAVL1hJky=eL;(3~=ViX1*)?Mx0{#?0CaF)^3@R4ugB zozqhp`Cax561pod>q0tu$3_L5deCJ8#>DB>!(Spp{E?ts>doOhwPob%}d@wm+kbhiPKV`dr_3o|vF zStqZ-paxAiiju7SoS_&!rL6X!)gi)1O8YCE?jf$h2F9ZInX3By zTFr)RsTkaKZLH|O2j=S2Xj~%H;zcl;(rmec6(;`padwJ^Do?NF?)R_wB>T`>%I`9a zNkdYUVj&4maEjS4r%MSGhVX&0bmsE-Z?_JH%9;MBLhra6O8kqeyF`;!|DDB;pnALl zZ}M26@&>)%?$77MB+Cx+I%>m<%c<+M!<+kPOgE%MNFWbol)phN3E1v-SV5;P?X zG{UuhzJSasof8!k8yffO1}*5*>IuBdNLk()&wJNT|D+Z5f1dYw-3gyN*L>o1U`QD< zoZdO|9@T9T2lBWzpvJD<;Z$_ClLZelV3YmL8q73o)xPe zuSw@Fd2_29t;IGr)@tj`;bEQ*5aBa3zkiSTSYqIy=irg1e~)}^Dstwqz4Z_w{p|=k z142}W3BYm9i46&fpz^`7)yLCa)0GUa3uz$BiQG{-S{*gKMHl~o;G|ghmvF3G`GeKn zQ*T)&V9r%zL%G*YdX6*nO{7peOGW*0!QM2iaNuPnLP!H`FH*Qf1i}?)<^+uq+Me6Z z+lp5x(Y&s~w665;yt>*ULt37FiO6mlu^_thwsFgrz`sR+$}@yoeWC&XoPlHocgT@6 zBw}EH*(nsL$ikI0|C3|GQHwh3X6H8|{*`SbuK35gx*kLL>m@{Wth{Umv>(@SO?w^O zpkoI|TP<{!0U!ZNHd!2gx{ZFqj0FJ$gKv%A(a{e$0D{5mRwN{$S5YrK>Vwr*4f7k3 zP%!23jXSlLWjnk?5Xkm+G5W*{;9LW<$s|Fyc3-;?=#>0M${`{3=|}RxnaUcV!B!ex zHWp(Jfs*m3u&ZASgms*-NoA1O2f(bm0o&Tr2w`{BGd!t4T8l*cnARW>j(v5VNw1jl0q?B}*G}7H&!lnf2 z6r{U5&h+c-Zb5tf~8;;Wf7hDYd z0-W_OU}f%%^6@vmfF%tV^v&ED!UV?-!2e|0XtI@w_wEQHhDK)wyqW$AS{T11-w>e_ z{$Ymp`7+Rq>mf(WtabLA+DPQY6uj+|5Dx+|0lze5F50Wm@4|DHl$2uRDU_99Q^jv_ zBBl2$Uxx9u0RnQ9 zJbF&ej0QeEuYaG@W(SQ8!0qctr3|*XOR$ghcFbWGH4^2QnPQ&WpsJ+fPnll=TpRosW#*)6n_P zE3jx-RS&T6eE>PLm4xf+2K$}{R0Pkm+7zILVDBdr_G{E?Eodh2O+`ck9~))+yZc#j z3rwDnM9@hQ;M*J=l4GfTVNZk^R>y5T48(t_^A|^(>CyZYm><_5vA_q|nWIFjD`2xV znl>o!0HEU;Cy~)>)Gl?Ut2boEbqsS6sr$`WsktEQC1A)<{GUDXkGxd^E*8HsdF6`t z5-H&`B}4Qw)61^>%?NY8g)($JEHf>cyorCjdq^O7WK9JBypT8%7JQ54nC8Y|f{stn z%tP|ilUo2R0I@`ODl%e28{X!7&&$I2@^knr1kn=lL4T#>Mtg7w%Xku4xICo(8HhQlVvwrxQ9V94FuUdXy@oAxXVi^&6ag)Mg zKB!SyucCrEg8h5f`Co&80g3wrY!v9P3iJEmFZaubO&x6Y+kxI}$@7&>aK-S2b3Kr| zD$$yn?#3>w$x&g+htDSJrw>ruEk9E=;;aulsT;N}MTp z^@4V*jZ~e^GYYKNu&n)Gf^X9Tj@Z8H-jwm4+GM+91p(A-ynu@R)p3Y(EB|>m^32p! z@DZ>3(Ikm07pyxe@N~0af5BzguB_MYeh>rcS4owpwDim-hMNAzZ&*0KMxU8%*%zz= zt3&7g4UR_rD;r=qjR(4w`>Va7jf$ngN2zy|#wvfhsDB}XW)H|qLRs0Ppr-HH5L5fcN$z@pW$e_eY-IKQJ~qTALBD3cEMkxr=oHpjOw+YFkTSGJ(j zM0ZJzPkv0JHG%_IC%_iwEI?NlnnW0%J_Z3r24jNGjjY26_~PvVJ-0s{aWKPZ_C&5m zf7tz3^K-h`jx!kd6cEVLBCaEA9C)4v8tZJ&==6z%?ZQ@kKa}m+za*Y@+cEt&Ig95&jUKwMpP7DLOjFaNmSYl@hI4B{|6>4&VeTw+{)gI^q zeNdcJ{1EP3JfC;d3-ZwNAv-__*7XVy%b&lMTF4XhK8OKWYq#Xn!q3bJ4BS3ZFG)E8 z;IebG1}rM7Ak^A=3bgsa&S0~L1QZP*jzLs30GtV}N=lt~m}iRKrS9CdSN}lVY7BJU zxt3CwIK9XzMrDeBZ_>S8xl-wZ_I=_H>FXU9@JTj+Ub(g+G?`PEbEFaz)QS0Bs90~Y z(_3B%h-+zCei)?g74jUhqgWUlqC7c0Zv@E^7_gbZPOgQhKUPG2uv4&_C-zsAuYGz^ zcyFQn=SeJiZ0wLJ0N-UJxFEe^CwUu4+|wJ6L)6c|gO1M2h_HwVX7;Q#)7BcX=v?OTzqNv2)?R#*?e1d0#^m5oe^b1FuiPe zt5_R=bNqL60EH8|Wx)g=2S)qdL~9IiN6ql zj-Y1p-@PY{@;zNx1`vKtP2G30GCC`{R6VpI^7at4l`$rU6sma1jOai$hi7HQklM#N zw@|>w!aCgfm+PXK(e8V5)4x9H=z0NXZ!)F1+GE;%!z#wd7l8z%Eng#LnmzZ)8B^hb ze*(cifWm(0;m1CSJpbt&F8$@=^#P}KBL^2}Z5ylq>jZDO799uW4zTl#WPiNXl|yz( zjM}~)Ato&2fVBZB684;c_2Ddy3`JuFp)w$W!m!Bi3@r>a4U)Lw=7L12iLR#4o$L2< z3aF)byDB~%g6Vxt#+T`OU@oaB;kNSX46Ej)hkAdzbfC;y(TZ zNY6;$Y=4;qL|dRe61go8A~cSc*xTICCp^T^<)dEOz=|O7yw{O+d`KZTsL-Gw$>z9u zUT8%=q5T$u_D3_fkNkbrAC3e(x+8LF|3By%@BP;`mgFL=9YWXXg4UV4mzPOIUx|o` z>UHE?``(^WwK_4>db!O%AMgGy8a)~vSw39$v#@iOytX4=@j1B|tUf1tbbkPIUG0rb&2+DC%SHcMceG{LsV#vtCb5PZwJz*B_bK6BDdns98D< z=EK|LDT$+X4;#wGn#nWM^vTtAbuk(}-7xyK?!EVlb)$8|w#Ct-AY?mjWcj z2l3% z*^K4oU6?&Bd00F#zzmt%r=p^XS6pjRXl*>=!;B(}kIXlEYV)-vnl9C!USY1?Xgss- zYdm^A(CLm7(C;FmfFR0(D2zL_+NOMXRZa+{drQx^^=qQ`9<(1EADK%-US<{)NW{Y# zaF!-l8Z<`+2lpZ8v>dxd42&2wZEeh#X4~fwsf9vd;@{t)qoTSlKj_q1Z5`D@ItsxFeyrzZDR32Vr4cJ%x1EWQ)M5^jfHWYNB1adIUFU==y{yS*54#o zE_eT-W`PBRtPe!^iNncOv(O^h;7NHTZ!E&AGnXA`J=g_&yYjnGqA$i65*emD>OW*H zeV*5^9el?^NB3#F!(`DFcG>Gj&G*v_d4QUyv~_f*uF5v_OJ(&dp=HpA3*Lu~d4_1x zP9Dego}zI>`w0%tvw-c2E^00=`}>?c8s?>r>lB$UFUr7w zLotP3_@Ixz^JOC9K1ryG!7AF=*sxp8%@zW5`b2G%?p1J5$eNTm1A|;N1?)mynPI+C z$E({j)1*fRqi}BWkLeAEtIgMQjm4H4X0NJ1vQh16FIr2Pw%)@1ox28uW}Urn2o((# zRdAb+-_iPI(Rjc+gLWL^Ge!QtH@3F6NKMy;S3rnv_%XBXJm17Xu>lAuuQp9|; z&~a&w6|a*7@7j1_dgWv!Mn<+~a|b$uvMR5Y z3^Q3=2EAXI5AeNXhDeS=B4gx=866kn6_l*3)g#03MyMhP=8U!FqaR3vJ>9IuJh>dV zu5%;8!=ElTtxwV$D+5-uTHXJy#pBtHTE)&8OCWnGC*@i~y&-*?a2t*mq5uz*OjL4=xS^H0BPe48hQ6Y13Tz9=f{9QO!?bljg@-0oLh zlMQh{{rq5P(1vvTuvzNRc~@S>SZnS;{b(|I&Y;4Rt&2KK0lVzfV&>*pr`fXC)O4e| zU18AV?R1=@+Qd&f0)nmB5RfC}Z!L9^4`k1i{H!+x_u-Y^b2b9 zA-j6|9ieFlmiPlbkJ_$YT|*5t{U?*xRT=F0=1>+>gjZI^m?G-i=L`~(j7*Zmrh}o~ znPn-FpW|dgu0jXBG?8tvPC<~M$brepT#@CyL}>CwiH67-Tj&`THMMWljpW_8*wtKV zNlA&HL7`IK5#gxMgcw9bWJGw$2?@k_WZ4-B#Mv=1841|gG176vP-r*|{_djL-5R{y znLH!gJP31L(6MlEt*aeAI1qob-CsZ0*)hsyuyEyiAlk~yYl%JhHUXpuha8y zR(0CTE*Nn0)HG7}NM>?LO!^~@KN_Q=>Z{Yw{V?O>)}>zz{G{2XWZ~r{Cy#~s*mLcW zxJnsw@t1L^vlE_ts9S!fuk+dZAmo{Ba&@_7|Kw5^?emIK2{=WMOf1bC#Y*2P3=BR;V;M zpFSKlM=ldPiBg;_jNZ?FUgCGSf`ZY{&1F&GG6h2RU&PV5unY+dYwGn6*DsSQ9A{Mq zi$OgT^tjr)`5~uix8#LIXnwHuf)+spflxxF%KqiGP8N<_;?0EM2SpR^pK38rtE2pA zcFP{lYtVA34+h>3*q;w@U($l9{GCCqtKGd?l(QsZG<~sLsk?22hKSv4m4+-j-1lN* zv-Hm|_U(%0rt_1(MehbaWBZqY6r*P|yX1L6yRmFJ+;du$?<&D@psul-K}`=N>1gTs zLV{L<<+u$yP}^PieWiEqgJ4ErU+V-xVE#xtRv(P_3x;pJ)34ELC}Z|GZ;I_qnX*O6 zeG4jyU(~-$)w63_%n|d4l;xj_?x2(baJzlfla&TJ*@nDRwMZ7gh6GfR~9W zF>N8CJSAn$;$6UM`?LG=np0drbXJ=?))_OQ)5q8OplYFyLZNJ44Q0Z~Cy?bn%>D>I ze%>Y?Uh^@V{S8yQ$Kxp$`o_?UE9nNGM?wM|lJnyPI}9{ZLBGeX!>C2H)nK2#I*S+1 zAhlPUZE?Ze$z>>!y)~lNWQ@3CWA!s{4X@vGV`+R~dwhIg6z5+{dHJ{1*McVLjEOPD~N$?YyUzpcrV`n22bq8_fOy+Ui<>k=EVz3!hiYK9B=-= z_~-Kbce{Q!T!}v>bRHdFj4VK5{Sw}tlXaBeF#6}Z+8OL*(a>xclD>X!a(t|K>cj~8 z1nvwm~w|_+WykbIy$54eU*l|UP(EW7|hMd)MDl*=pvdRuZd4Wa~fF9K3 z$;JX6i?{AQYNq$oqyjb0t@~^WpD$#)5Xs;W6BCOnVOPEVVd)bkFSq*XRYX`=qLR6% z>HwO}j((t>wX?j9x}EUYKUhX#E>g_C7I-=JrT!c0RRRe*SQ@(pu^ohF@F8{tt6ySc zVzhEJ_(Nd#)IK$Ihoc7>i8BUP$t*r~lON-AD>Z4%32;ZDe9H+E{=6 zCk!+a%vCTJU;o{X>z`pv?Q5o^r*F}D95Y7V;P@!tStw-Stt;&PaIoA)v#J3wF2*oq zDs|&jR#;+M3_ZYp??FY2#V_lSXxrg)_}7Q6-QN;wpQu+zrocvBj1Nz~ixKBbJ`4vn zF|qYov-Iy?2G^ZoC1#FKO5`oUdVs28H39z3kTG!(9~Qr9urs_1f+)JlS{ds!L-N|< z-FB`E(d%orAH~u+-p^(C@lLAR<6J{SL$8K&P~tzjN80M~J_`3Eo!c(A9d<=}l+vL| zfu~xH)Sshp8TyN8R=FxH&T+4LsqNL zanDxHR*P@_I`q7CC435B^r_Gz=-$2Yd^&p*2q&wO>mK`NxCn98P!zo;0K%cV#bz3E zyf$tCbMH#X*sk4UHPIW3Laq1%GDUE?gXgQP29~@rQwnd3WMYlCF8?*~ysnr~3t1DapbaPKaq^JauQ&JtyafmT5H;1mcbvls%!P*Zw|%L@;M8WW?)VHA z=k)o=Zc6bS*yU6iZ-}#F(G)CKWIV-o7^Iw={Yj)=>y26*Q*6Ef@%4jau8n-W~gI!$w>Hc<@ zTkd(i!}6VMzav%QGb>L-1lIOUette8dlI5Bycuqg)tGn&>5nuHf4luO|4ig0*s3?8 z?3vbTW65}{Cc$;_&Oh6&)n%TqOSz9+$WB_jLsjJogsXDg-h7ItlH!bSZmq~dnerRt z{UK}`V%Nw`eoR=aOBFSl@*%r-pW~3Zgd^1{>a!MWdEW;K@##UmZ1Q+!y$-6|HLq8A zo1=%+w`;>1cG?}1>vm!p-g_F^clVVU=?ktTPdh`%cfI!ylMNQh8X4&u-V|f-wsrN@ z7?~@4CRo`$$+jNxO@pkX;F_4ST zD}Q^XxRyma8=^w5uD2KW{w{9Y&cQ3gT5%x^(M<*Cy)?G-+4}vI{10PTs3dGaMmCdd zpJxgZ;tG6fCz6HPceXM^_3tA8E<)K50CS*7_Ih8}FTHuq~V^1+* z#Z3~Cwprz=GAyj3LA+cvWM**M*KJ*VqNM!+bphHmcQ zz}FDUb)TFS1QBTQQlDWQ%O$1A*qCi=lFIQ{XTNFSIzHJSo+Vcyx_mxqN3IMIORp!B zo(HYOYSD66`GsF&vlbiQKYQz1bDTs!Pn2)oPGy3DT8)oK>rQvQWZ{dmISYj1(N@C^*~6D+Ztz>}A{ ziMyju`qd~XsG+OOyfxnG{W-oe>M=W)tF%2>sn)Sk)BG1~-{rHPHY)XRLxvJc=eg*@ zMlbQHvVKSgDE&dCz^blxNZfZ#c(7L%ad-b2elTByz^MJ?_Rag#LYEK%9Tq=EzPL(7 zF|I1{TuTC*_{mXVk*}a+!9yii;K|b38*pSlvwgHZ%WV%;L}HXRLPsT=s~6i3c{Pkp z8Wdp>U9Pih@ueU7*0via4=uIXci%TvMcCo9th_wqaepDd^rsi6PrcioO!*m-mgER{ zqlBso1C@H1&b#baTO_@BUOb3sJx)?w<_$Qk{t|yIM4GYXS5dA2;JAP>AJJ|1SbT|b zxJk1&q82DJcr~IgjUF!O3JXWR$x=Y+1CiyK2=npTd0iwGne7CKn@>zKd9wYJa!(tN z^VwLv+1o!+_a{oU1v|>)&~#Eov>=9`p@?KyfYcbtW(~L7hq~w{m*pU2Iot8cyIXB&#utJVtx=Y{=g^}Yzk=3{ae1c^)7%Z*5BBZdO1aF~y~n8FqMvP5oO z8wV-Ao;XjOJ*5-R_XJ|rBJSk0T>}GYcKd+)+Gd)El)MiVk?x3eg&Dz9FN}dKwfHKo z1suIXe!#_92D|uJYI`^~l)FkZlu&&bk#TQ5aj_l#19np_so7v;4C_))*khWKMal>O zcRKfIi5g`i5VbFky`w4-54fD3JrC^Ll>|$*hS#pkk3MgXsH<#u5fMc{`RD~6Vodi( zMn$F9x<4k7gihK)6WQ;N6p)#im~KeZ9Sg((NFeYW-h8LKkSmjUN@*#K7iOh0fGm2q z|L$;`!V{g)Tk7khl;S(X^YPNzoE`?88)R>Q3ImhcgFl#w3d>1HsduL0^SRDct0s#l zQs*RHyfv(lw*yPz(A(#x0m^HvAb{|JM5{FWRX}{#mNGS;w4x$)wk+a4R?O%1=3b&5 z_}aR7mOzo6v}r0!%>`wePkJ4$MXObGr>BTL`#8QfMX6E&0UVcIGgKNH8X3Ani$!1+ zBu#I5eWks?i#RtYJcL;*F!4KY-|X9U(uDt(P{V~Qh_HM7)o^^m?N}H?my(xb=%tlC z_ov?>>db~#yGyGmM;fg|@3K3+aSRwYU5w`F4%Utr8(V>x24B&)e90f8irPcvG@$-N zDb3Ehf8j9LZ^Eg=e{=!O9p^#A`0q`Gf

  • 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 VV@@wmVY~o8G7^g76{1D~{|`=1X*d7? literal 0 HcmV?d00001 diff --git a/src/assets/img/chip.png b/src/assets/img/chip.png new file mode 100644 index 0000000000000000000000000000000000000000..14771c2179dbb8063809574981a646f49afc78ef GIT binary patch literal 43692 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/tcpip.png b/src/assets/img/tcpip.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c73f6197b25dcd3294644d37a95ef879056e09 GIT binary patch literal 25147 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 + + + + +

    + An Angular {{name}} component{{plural ? 's' : ''}} {{plural ? 'have' : 'has'}} been created as a native Angular + version + of Bootstrap {{name}}. {{name}} {{plural ? 'are' : 'is'}} delivered with some new features, + variants, and unique design that matches CoreUI Design System requirements. +

    + + + +
    + For more information please visit our official
    documentation of CoreUI Components Library for Angular. + diff --git a/src/components/docs-callout/docs-callout.component.scss b/src/components/docs-callout/docs-callout.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/components/docs-callout/docs-callout.component.spec.ts b/src/components/docs-callout/docs-callout.component.spec.ts new file mode 100644 index 0000000..5343c73 --- /dev/null +++ b/src/components/docs-callout/docs-callout.component.spec.ts @@ -0,0 +1,27 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocsCalloutComponent } from './docs-callout.component'; +import { CalloutModule } from '@coreui/angular'; + +describe('DocsCalloutComponent', () => { + let component: DocsCalloutComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocsCalloutComponent ], + imports: [CalloutModule] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocsCalloutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/components/docs-callout/docs-callout.component.ts b/src/components/docs-callout/docs-callout.component.ts new file mode 100644 index 0000000..df19427 --- /dev/null +++ b/src/components/docs-callout/docs-callout.component.ts @@ -0,0 +1,34 @@ +import { Component, Input } from '@angular/core'; +import packageJson from '../../../package.json'; + +@Component({ + selector: 'app-docs-callout', + templateUrl: './docs-callout.component.html', + styleUrls: ['./docs-callout.component.scss'] +}) +export class DocsCalloutComponent { + + @Input() name: string = ''; + + constructor() { } + + private _href: string = 'https://coreui.io/angular/docs/'; + + get href(): string { + return this._href; + } + + @Input() + set href(value: string) { + const version = packageJson?.config?.coreui_library_short_version; + const docsUrl = packageJson?.config?.coreui_library_docs_url ?? 'https://coreui.io/angular/'; + // const path: string = version ? `${version}/${value}` : `${value}`; + const path: string = value; + this._href = `${docsUrl}${path}`; + } + + get plural() { + return this.name?.slice(-1) === 's'; + } + +} diff --git a/src/components/docs-components.module.ts b/src/components/docs-components.module.ts new file mode 100644 index 0000000..292ee3d --- /dev/null +++ b/src/components/docs-components.module.ts @@ -0,0 +1,33 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; + +import { CalloutModule, NavModule, TabsModule, UtilitiesModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { DocsExampleComponent } from './docs-example/docs-example.component'; +import { DocsLinkComponent } from './docs-link/docs-link.component'; +import { DocsCalloutComponent } from './docs-callout/docs-callout.component'; + +@NgModule({ + declarations: [ + DocsExampleComponent, + DocsLinkComponent, + DocsCalloutComponent + ], + exports: [ + DocsExampleComponent, + DocsLinkComponent, + DocsCalloutComponent + ], + imports: [ + CommonModule, + NavModule, + IconModule, + RouterModule, + TabsModule, + UtilitiesModule, + CalloutModule + ] +}) +export class DocsComponentsModule { +} diff --git a/src/components/docs-example/docs-example.component.html b/src/components/docs-example/docs-example.component.html new file mode 100644 index 0000000..ca2180d --- /dev/null +++ b/src/components/docs-example/docs-example.component.html @@ -0,0 +1,21 @@ +
    + + + + + Preview + + + + + + Code + + + +
    +
    + +
    +
    +
    diff --git a/src/components/docs-example/docs-example.component.scss b/src/components/docs-example/docs-example.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/components/docs-example/docs-example.component.spec.ts b/src/components/docs-example/docs-example.component.spec.ts new file mode 100644 index 0000000..45996fc --- /dev/null +++ b/src/components/docs-example/docs-example.component.spec.ts @@ -0,0 +1,25 @@ +// import { ComponentFixture, TestBed } from '@angular/core/testing'; +// +// import { DocsExampleComponent } from './docs-example.component'; +// +// describe('DocsExampleComponent', () => { +// let component: DocsExampleComponent; +// let fixture: ComponentFixture; +// +// beforeEach(async () => { +// await TestBed.configureTestingModule({ +// declarations: [ DocsExampleComponent ] +// }) +// .compileComponents(); +// }); +// +// beforeEach(() => { +// fixture = TestBed.createComponent(DocsExampleComponent); +// component = fixture.componentInstance; +// fixture.detectChanges(); +// }); +// +// it('should create', () => { +// expect(component).toBeTruthy(); +// }); +// }); diff --git a/src/components/docs-example/docs-example.component.ts b/src/components/docs-example/docs-example.component.ts new file mode 100644 index 0000000..baf7bc9 --- /dev/null +++ b/src/components/docs-example/docs-example.component.ts @@ -0,0 +1,48 @@ +import { + AfterContentInit, + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + Input +} from '@angular/core'; + +import packageJson from '../../../package.json'; + +@Component({ + selector: 'app-docs-example', + templateUrl: './docs-example.component.html', + styleUrls: ['./docs-example.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class DocsExampleComponent implements AfterContentInit, AfterViewInit { + + constructor( + private changeDetectorRef: ChangeDetectorRef + ) {} + + @Input() fragment?: string; + + private _href = 'https://coreui.io/angular/docs/'; + + get href(): string { + return this._href; + } + + @Input() + set href(value: string) { + const version = packageJson?.config?.coreui_library_short_version; + const docsUrl = packageJson?.config?.coreui_library_docs_url ?? 'https://coreui.io/angular/'; + // const path: string = version ? `${version}/#/${value}` : '#'; + // const path: string = version ? `${version}/${value}` : ''; + this._href = `${docsUrl}${value}`; + } + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + } + + ngAfterViewInit(): void { + this.changeDetectorRef.markForCheck(); + } +} diff --git a/src/components/docs-link/docs-link.component.html b/src/components/docs-link/docs-link.component.html new file mode 100644 index 0000000..46b295d --- /dev/null +++ b/src/components/docs-link/docs-link.component.html @@ -0,0 +1,9 @@ + diff --git a/src/components/docs-link/docs-link.component.scss b/src/components/docs-link/docs-link.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/components/docs-link/docs-link.component.spec.ts b/src/components/docs-link/docs-link.component.spec.ts new file mode 100644 index 0000000..f8f3c3d --- /dev/null +++ b/src/components/docs-link/docs-link.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocsLinkComponent } from './docs-link.component'; + +describe('DocsLinkComponent', () => { + let component: DocsLinkComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocsLinkComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocsLinkComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/components/docs-link/docs-link.component.ts b/src/components/docs-link/docs-link.component.ts new file mode 100644 index 0000000..540706e --- /dev/null +++ b/src/components/docs-link/docs-link.component.ts @@ -0,0 +1,27 @@ +import { Component, HostBinding, Input, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-docs-link', + templateUrl: './docs-link.component.html', + styleUrls: ['./docs-link.component.scss'] +}) +export class DocsLinkComponent implements OnInit { + + @Input() href?: string = 'https://coreui.io/angular/docs/'; + @Input() name?: string; + @Input() text?: string; + + constructor() { } + + @HostBinding('class') + get hostClasses(): any { + return { + 'float-end': true + }; + } + + ngOnInit(): void { + this.href = this.name ? `https://coreui.io/angular/docs/components/${this.name}` : this.href; + } + +} diff --git a/src/components/index.ts b/src/components/index.ts new file mode 100644 index 0000000..7e1a213 --- /dev/null +++ b/src/components/index.ts @@ -0,0 +1 @@ +export * from './public-api'; diff --git a/src/components/public-api.ts b/src/components/public-api.ts new file mode 100644 index 0000000..09f35d2 --- /dev/null +++ b/src/components/public-api.ts @@ -0,0 +1,4 @@ +export { DocsCalloutComponent } from './docs-callout/docs-callout.component' +export { DocsExampleComponent } from './docs-example/docs-example.component' +export { DocsLinkComponent } from './docs-link/docs-link.component' +export * from './docs-components.module'; diff --git a/src/declarations.d.ts b/src/declarations.d.ts new file mode 100644 index 0000000..f2027ca --- /dev/null +++ b/src/declarations.d.ts @@ -0,0 +1,5 @@ +declare module '*.json' { + const value: any; + export default value; +} + diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..c955373 --- /dev/null +++ b/src/index.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + MikroWizard | Router Managment + + + + +
    + + Loading... +
    +
    + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..be6bfab --- /dev/null +++ b/src/main.ts @@ -0,0 +1,9 @@ +/// + +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; + + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/src/scss/_animations.scss b/src/scss/_animations.scss new file mode 100644 index 0000000..5063a66 --- /dev/null +++ b/src/scss/_animations.scss @@ -0,0 +1,114 @@ +.cls-1 { + opacity: 0.15; + +} + +.cls-2 { + fill: #636363; + +} + +.cls-3 { + fill: #f2f2f2; + +} + +.cls-4 { + fill: #e2e2e2; + +} + +.cls-5 { + opacity: 0.1; + +} + +.cls-6 { + fill: #ffe131; + +} + +.cls-7 { + opacity: 0.05; + +} +.mwand{ + text-align: center; +} +.mwand svg { + width: 20%; + margin:20px auto; + overflow: visible; + +} + +#wand { + animation: magic 4s ease infinite; +} + +@keyframes magic { + + 0% {transform: rotate(0deg) translateX(0px) rotate(0deg) scale(1); transform-origin: 50% 50%;} + 15% {transform: rotate(0deg) translateX(50px) rotate(0deg) scale(1); transform-origin: 50% 50%;} + 70% {transform: rotate(360deg) translateX(0px) rotate(-360deg) scale(1); transform-origin: 50% 50%;} + 77% {transform: rotate(360deg) translateX(0px) rotate(-360deg) scale(0.9); transform-origin: 50% 50%;} + 80% {transform: rotate(360deg) translateX(0px) rotate(-360deg) scale(1); transform-origin: 50% 50%;} + 100% {transform: rotate(360deg) translateX(0px) rotate(-360deg) scale(1); transform-origin: 50% 50%;} + + +} + +#star1 { + animation: twinkle 4s ease infinite; +} + +@keyframes twinkle { + + 0% {transform: scale(0); opacity: 0; transform-origin: 60% 40%;} + 77% {transform: scale(0); opacity: 0; transform-origin: 60% 40%;} + 82% {transform: scale(1.2); opacity: 1; transform-origin: 60% 40%;} + 87% {transform: scale(1); opacity: 1; transform-origin: 60% 40%;} + 100% {transform: scale(1); opacity: 1; transform-origin: 60% 40%;} + +} + +#star2 { + animation: twinkle2 4s ease infinite; +} + +@keyframes twinkle2 { + + 0% {transform: scale(0); opacity: 0; transform-origin: 60% 40%;} + 82% {transform: scale(0); opacity: 0; transform-origin: 60% 40%;} + 87% {transform: scale(1.2); opacity: 1; transform-origin: 60% 40%;} + 92% {transform: scale(1); opacity: 1; transform-origin: 60% 40%;} + 100% {transform: scale(1); opacity: 1; transform-origin: 60% 40%;} + +} + +#star3 { + animation: twinkle3 4s ease infinite; +} + +@keyframes twinkle3 { + + 0% {transform: scale(0); opacity: 0; transform-origin: 60% 60%;} + 87% {transform: scale(0); opacity: 0; transform-origin: 60% 60%;} + 92% {transform: scale(1.2); opacity: 1; transform-origin: 60% 60%;} + 97% {transform: scale(1); opacity: 1; transform-origin: 60% 60%;} + 100% {transform: scale(1); opacity: 1; transform-origin: 60% 60%;} + +} + +#star4 { + animation: twinkle4 4s ease infinite; +} + +@keyframes twinkle4 { + + 0% {transform: scale(0); opacity: 0; transform-origin: 60% 60%;} + 92% {transform: scale(0); opacity: 0; transform-origin: 60% 60%;} + 97% {transform: scale(1.2); opacity: 1; transform-origin: 60% 60%;} + 100% {transform: scale(1); opacity: 1; transform-origin: 60% 60%;} + +} diff --git a/src/scss/_charts.scss b/src/scss/_charts.scss new file mode 100644 index 0000000..c55c261 --- /dev/null +++ b/src/scss/_charts.scss @@ -0,0 +1,7 @@ +// temp fix .chartjs-tooltip-body-item + +.chartjs-tooltip-body-item > td { + padding-bottom: 0 !important; + padding-top: 0 !important; + font-size: smaller; +} diff --git a/src/scss/_custom.scss b/src/scss/_custom.scss new file mode 100644 index 0000000..3ef6c68 --- /dev/null +++ b/src/scss/_custom.scss @@ -0,0 +1,125 @@ +// Here you can add other styles + + +ngx-super-select.styled>div > span{ + background:var(--cui-input-group-addon-bg, #d8dbe0); + height:100%; + padding:8px; + color:var(--cui-input-group-addon-color, rgba(44, 56, 74, 0.95))!important; +} +ngx-super-select.styled>div { + padding:0!important; + width:100%; +} +ngx-super-select.styled{ + width:100%; +} +ngx-super-select.styled.hiden .select-selected-items:before{ + content:"click for select" +} +ngx-super-select.styled.hiden .select-selected-items > *{ + display:none!important; +} +ngx-super-select.styled .selection-counter:before{ + content:"Selected Count : " +} +ngx-super-select.styled .selection-counter{ + color:#000!important; + background:#aaaaaa26!important; + margin:0!important; +} + +.cdk-overlay-container { + z-index: 10000; +} + +.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix { + padding-top: 6px; + padding-bottom: 6px; +} +.mat-mdc-form-field-infix { + min-height: 34px; +} + +.mdc-text-field--filled:not(.mdc-text-field--disabled){ + background: transparent!important; +} + + +/* Add application styles & imports to this file! */ + +pre { + display: flex!important; + margin-top: 0!important; + margin-bottom: 0!important; + word-wrap: break-word!important; + } + + code { + flex: 1!important; + line-height: 1.8em!important; + font-size: 14px!important; + min-height: 100%!important; + padding: 1em 1.2em!important; + overflow-x: unset!important; + overflow-y: unset!important; + } + + .hljs.hljs-line-numbers { + padding: 0 !important; + } + + pre .hljs { + border: none!important; + transition: border ease 1s!important; + } + + .hljs-ln { + tr { + &:first-child td { + padding-top: 10px !important; + } + + &:last-child td { + padding-bottom: 10px !important; + } + } + } + .row-highlighted{ + z-index: 0!important; + } + .mat-mdc-menu-panel,.mat-mdc-menu-content{ + background: transparent!important; + padding: 0!important; + } + table, + tbody, + tr, + td { + background: inherit!important; + } + + table { + border-collapse: separate!important; + border-spacing: 0!important; + background: inherit!important; + } + + /* for block of numbers */ + td.hljs-ln-numbers { + position: sticky!important; + left: 0!important; + user-select: none!important; + text-align: center!important; + color: #cccccc6b!important; + border-right: 1px solid #cccccc1c!important; + vertical-align: top!important; + padding-right: 10px !important; + padding-left: 10px !important; + } + + /* for block of code */ + td.hljs-ln-code { + padding-left: 10px !important; + } + \ No newline at end of file diff --git a/src/scss/_examples.scss b/src/scss/_examples.scss new file mode 100644 index 0000000..137b3ac --- /dev/null +++ b/src/scss/_examples.scss @@ -0,0 +1,113 @@ +.callout-info { + background-color: $light-50 !important; + + @at-root .dark-theme & { + background-color: rgba(255, 255, 255, .1) !important; + } +} + +.example { + &:not(:first-child) { + margin-top: 1.5rem; + } + + .tab-content { + background-color: $light-50 !important; + + @at-root .dark-theme & { + background-color: rgba(255, 255, 255, .1) !important; + } + } + + + & + p, + & + h2, + & + h3, + & + h4, + & + h5, + & + h6 { + margin-top: 1.5rem; + } + + // Components examples + .preview, + .preview .col { + + p { + margin-top: 2rem; + } + + > .form-control { + + .form-control { + margin-top: .5rem; + } + } + + > .nav + .nav, + > .alert + .alert, + > .navbar + .navbar, + > .progress + .progress { + margin-top: 1rem; + } + + > .dropdown-menu { + position: static; + display: block; + } + + > :last-child { + margin-bottom: 0; + } + + // Images + > svg + svg, + > img + img { + margin-left: .5rem; + } + + // Buttons + > .btn, + > .btn-group { + margin: .25rem .125rem; + } + > .btn-toolbar + .btn-toolbar { + margin-top: .5rem; + } + + // List groups + > .list-group { + max-width: 400px; + } + + > [class*="list-group-horizontal"] { + max-width: 100%; + } + + // Navbars + .fixed-top, + .sticky-top { + position: static; + margin: -1rem -1rem 1rem; + } + + .fixed-bottom { + position: static; + margin: 1rem -1rem -1rem; + } + + @include media-breakpoint-up(sm) { + .fixed-top, + .sticky-top { + margin: -1.5rem -1.5rem 1rem; + } + .fixed-bottom { + margin: 1rem -1.5rem -1.5rem; + } + } + + // Pagination + .pagination { + margin-top: .5rem; + margin-bottom: .5rem; + } + } +} diff --git a/src/scss/_fixes.scss b/src/scss/_fixes.scss new file mode 100644 index 0000000..7074618 --- /dev/null +++ b/src/scss/_fixes.scss @@ -0,0 +1,12 @@ +// Place for temp fixes + +.form-floating > .form-select { + padding-top: 1.625rem !important; + padding-bottom: 0.625rem !important; +} + +// temp fix for scrollbar styling (wip) +@import "scrollbar"; + +// temp fix .chartjs-tooltip-body-item padding +@import "charts"; diff --git a/src/scss/_layout.scss b/src/scss/_layout.scss new file mode 100644 index 0000000..dffcb95 --- /dev/null +++ b/src/scss/_layout.scss @@ -0,0 +1,7 @@ +.wrapper { + width: 100%; + @include ltr-rtl("padding-left", var(--cui-sidebar-occupy-start, 0)); + @include ltr-rtl("padding-right", var(--cui-sidebar-occupy-end, 0)); + will-change: auto; + @include transition(padding .15s); +} diff --git a/src/scss/_scrollbar.scss b/src/scss/_scrollbar.scss new file mode 100644 index 0000000..b51d07f --- /dev/null +++ b/src/scss/_scrollbar.scss @@ -0,0 +1,36 @@ +// scrollbar tinkering + +@supports (scrollbar-width: thin) { + * { + scrollbar-width: thin; + scrollbar-color: #444 transparent; + } +} + +::-webkit-scrollbar { + width: .7em; +} + +::-webkit-scrollbar-track { + background: var(--cui-body-bg, #fff); + border-radius: 100vw; + margin-block: .2em; +} + +::-webkit-scrollbar-thumb { + background: #999; + border: .15em solid var(--cui-body-bg, #fff); + border-radius: 100vw; +} + +::-webkit-scrollbar-thumb:hover { + background: #444; +} + +.dark-theme::-webkit-scrollbar-thumb { + background: #444; +} + +.dark-theme::-webkit-scrollbar-thumb:hover { + background: #999; +} diff --git a/src/scss/_variables.scss b/src/scss/_variables.scss new file mode 100644 index 0000000..2696d4b --- /dev/null +++ b/src/scss/_variables.scss @@ -0,0 +1,1668 @@ +// Variable overrides +$enable-deprecation-messages: false; + +// Variables +// +// Variables should follow the `$component-state-property-size` formula for +// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs. + +// Color system + +// $white: #fff; +// $gray-base: #3c4b64; +// $gray-100: #ebedef; +// $gray-200: #d8dbe0; +// $gray-300: #c4c9d0; +// $gray-400: #b1b7c1; +// $gray-500: #9da5b1; +// $gray-600: #8a93a2; +// $gray-700: #768192; +// $gray-800: #636f83; +// $gray-900: #4f5d73; +// $black: #000015; + +// fusv-disable +// $grays: ( +// "100": $gray-100, +// "200": $gray-200, +// "300": $gray-300, +// "400": $gray-400, +// "500": $gray-500, +// "600": $gray-600, +// "700": $gray-700, +// "800": $gray-800, +// "900": $gray-900 +// ); +// fusv-enable + +// $blue: #0d6efd; +// $indigo: #6610f2; +// $purple: #6f42c1; +// $pink: #d63384; +// $red: #dc3545; +// $orange: #fd7e14; +// $yellow: #ffc107; +// $green: #198754; +// $teal: #20c997; +// $cyan: #0dcaf0; + +// scss-docs-start colors-map +// $colors: ( +// "blue": $blue, +// "indigo": $indigo, +// "purple": $purple, +// "pink": $pink, +// "red": $red, +// "orange": $orange, +// "yellow": $yellow, +// "green": $green, +// "teal": $teal, +// "cyan": $cyan, +// "white": $white, +// "gray": $gray-600, +// "gray-dark": $gray-800 +// ); +// scss-docs-end colors-map + +// $primary-dark: #1f1498; +// $primary: #321fdb; +// $primary-50: #988fed; +// $primary-25: #ccc7f6; + +// $secondary-dark: #212233; +// $secondary: #9da5b1; +// $secondary-50: #9da5b1; +// $secondary-25: #ced2d8; + +// $success-dark: #1b9e3e; +// $success: #2eb85c; +// $success-50: #96dbad; +// $success-25: #cbedd6; + +// $info-dark: #2982cc; +// $info: #39f; +// $info-50: #80c6ff; +// $info-25: #c0e6ff; + +// $warning-dark: #f6960b; +// $warning: #f9b115; +// $warning-50: #fcd88a; +// $warning-25: #feecc5; + +// $danger-dark: #d93737; +// $danger: #e55353; +// $danger-50: #f2a9a9; +// $danger-25: #f9d4d4; + +// $light-dark: $gray-100; +// $light: $gray-100; +// $light-50: shift-color($light, -70); +// $light-25: shift-color($light, -80); + +// $dark-dark: $gray-900; +// $dark: $gray-900; +// $dark-50: shift-color($dark, -70); +// $dark-25: shift-color($dark, -80); + +// scss-docs-start theme-colors-map +// $theme-colors: ( +// "primary": $primary, +// "secondary": $secondary, +// "success": $success, +// "info": $info, +// "warning": $warning, +// "danger": $danger, +// "light": $light, +// "dark": $dark +// ); +// scss-docs-end theme-colors-map + +// Text colors +// $high-emphasis-dark: rgba(shift-color($gray-base, +26), .87); +// $medium-emphasis-dark: rgba(shift-color($gray-base, +26), .6); +// $disabled-dark: rgba(shift-color($gray-base, +26), .38); + +// $high-emphasis-light: rgba($white, .87); +// $medium-emphasis-light: rgba($white, .6); +// $disabled-light: rgba($white, .38); + +// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7. +// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast +// $min-contrast-ratio: 4.5; + +// Customize the light and dark text colors for use in our color contrast function. +// $color-contrast-dark: $high-emphasis-dark; +// $color-contrast-light: $high-emphasis-light; + +// fusv-disable +// $blue-100: tint-color($blue, 80%); +// $blue-200: tint-color($blue, 60%); +// $blue-300: tint-color($blue, 40%); +// $blue-400: tint-color($blue, 20%); +// $blue-500: $blue; +// $blue-600: shade-color($blue, 20%); +// $blue-700: shade-color($blue, 40%); +// $blue-800: shade-color($blue, 60%); +// $blue-900: shade-color($blue, 80%); + +// $indigo-100: tint-color($indigo, 80%); +// $indigo-200: tint-color($indigo, 60%); +// $indigo-300: tint-color($indigo, 40%); +// $indigo-400: tint-color($indigo, 20%); +// $indigo-500: $indigo; +// $indigo-600: shade-color($indigo, 20%); +// $indigo-700: shade-color($indigo, 40%); +// $indigo-800: shade-color($indigo, 60%); +// $indigo-900: shade-color($indigo, 80%); + +// $purple-100: tint-color($purple, 80%); +// $purple-200: tint-color($purple, 60%); +// $purple-300: tint-color($purple, 40%); +// $purple-400: tint-color($purple, 20%); +// $purple-500: $purple; +// $purple-600: shade-color($purple, 20%); +// $purple-700: shade-color($purple, 40%); +// $purple-800: shade-color($purple, 60%); +// $purple-900: shade-color($purple, 80%); + +// $pink-100: tint-color($pink, 80%); +// $pink-200: tint-color($pink, 60%); +// $pink-300: tint-color($pink, 40%); +// $pink-400: tint-color($pink, 20%); +// $pink-500: $pink; +// $pink-600: shade-color($pink, 20%); +// $pink-700: shade-color($pink, 40%); +// $pink-800: shade-color($pink, 60%); +// $pink-900: shade-color($pink, 80%); + +// $red-100: tint-color($red, 80%); +// $red-200: tint-color($red, 60%); +// $red-300: tint-color($red, 40%); +// $red-400: tint-color($red, 20%); +// $red-500: $red; +// $red-600: shade-color($red, 20%); +// $red-700: shade-color($red, 40%); +// $red-800: shade-color($red, 60%); +// $red-900: shade-color($red, 80%); + +// $orange-100: tint-color($orange, 80%); +// $orange-200: tint-color($orange, 60%); +// $orange-300: tint-color($orange, 40%); +// $orange-400: tint-color($orange, 20%); +// $orange-500: $orange; +// $orange-600: shade-color($orange, 20%); +// $orange-700: shade-color($orange, 40%); +// $orange-800: shade-color($orange, 60%); +// $orange-900: shade-color($orange, 80%); + +// $yellow-100: tint-color($yellow, 80%); +// $yellow-200: tint-color($yellow, 60%); +// $yellow-300: tint-color($yellow, 40%); +// $yellow-400: tint-color($yellow, 20%); +// $yellow-500: $yellow; +// $yellow-600: shade-color($yellow, 20%); +// $yellow-700: shade-color($yellow, 40%); +// $yellow-800: shade-color($yellow, 60%); +// $yellow-900: shade-color($yellow, 80%); + +// $green-100: tint-color($green, 80%); +// $green-200: tint-color($green, 60%); +// $green-300: tint-color($green, 40%); +// $green-400: tint-color($green, 20%); +// $green-500: $green; +// $green-600: shade-color($green, 20%); +// $green-700: shade-color($green, 40%); +// $green-800: shade-color($green, 60%); +// $green-900: shade-color($green, 80%); + +// $teal-100: tint-color($teal, 80%); +// $teal-200: tint-color($teal, 60%); +// $teal-300: tint-color($teal, 40%); +// $teal-400: tint-color($teal, 20%); +// $teal-500: $teal; +// $teal-600: shade-color($teal, 20%); +// $teal-700: shade-color($teal, 40%); +// $teal-800: shade-color($teal, 60%); +// $teal-900: shade-color($teal, 80%); + +// $cyan-100: tint-color($cyan, 80%); +// $cyan-200: tint-color($cyan, 60%); +// $cyan-300: tint-color($cyan, 40%); +// $cyan-400: tint-color($cyan, 20%); +// $cyan-500: $cyan; +// $cyan-600: shade-color($cyan, 20%); +// $cyan-700: shade-color($cyan, 40%); +// $cyan-800: shade-color($cyan, 60%); +// $cyan-900: shade-color($cyan, 80%); +// fusv-enable + +// Characters which are escaped by the escape-svg function +// $escaped-characters: ( +// ("<", "%3c"), +// (">", "%3e"), +// ("#", "%23"), +// ("(", "%28"), +// (")", "%29"), +// ); + +// Options +// +// Quickly modify global styling by enabling or disabling optional features. + +// $enable-caret: true; +// $enable-rounded: true; +// $enable-shadows: false; +// $enable-gradients: false; +// $enable-transitions: true; +// $enable-reduced-motion: true; +// $enable-smooth-scroll: true; +// $enable-grid-classes: true; +// $enable-button-pointers: true; +// $enable-rfs: true; +// $enable-validation-icons: true; +// $enable-negative-margins: false; +// $enable-deprecation-messages: true; +// $enable-important-utilities: true; + +// Set mobile breakpoint + +// $mobile-breakpoint: lg; + +// Prefix for :root CSS variables + +// $variable-prefix: cui-; + +// Gradient +// +// The gradient which is added to components if `$enable-gradients` is `true` +// This gradient is also added to elements with `.bg-gradient` +// $gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)); + +// Spacing +// +// Control the default styling of most Bootstrap elements by modifying these +// variables. Mostly focused on spacing. +// You can add more entries to the $spacers map, should you need more variation. + +// $spacer: 1rem; +// $spacers: ( +// 0: 0, +// 1: $spacer / 4, +// 2: $spacer / 2, +// 3: $spacer, +// 4: $spacer * 1.5, +// 5: $spacer * 3, +// ); + +// $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null); + +// Position +// +// Define the edge positioning anchors of the position utilities. + +// $position-values: ( +// 0: 0, +// 50: 50%, +// 100: 100% +// ); + + +// Body +// +// Settings for the `` element. + +// $body-bg: $white; +// $body-color: $high-emphasis-dark; +// $body-text-align: null; + + +// Links +// +// Style anchor elements. + +// $link-color: $primary; +// $link-decoration: underline; +// $link-shade-percentage: 20%; +// $link-hover-color: shift-color($link-color, $link-shade-percentage); +// $link-hover-decoration: null; + +// $stretched-link-pseudo-element: after; +// $stretched-link-z-index: 1; + +// Paragraphs +// +// Style p element. + +// $paragraph-margin-bottom: 1rem; + + +// Grid breakpoints +// +// Define the minimum dimensions at which your layout will change, +// adapting to different screen sizes, for use in media queries. + +// scss-docs-start grid-breakpoints +// $grid-breakpoints: ( +// xs: 0, +// sm: 576px, +// md: 768px, +// lg: 992px, +// xl: 1200px, +// xxl: 1400px +// ); +// scss-docs-end grid-breakpoints + +// @include _assert-ascending($grid-breakpoints, "$grid-breakpoints"); +// @include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints"); + + +// Grid containers +// +// Define the maximum width of `.container` for different screen sizes. + +// scss-docs-start container-max-widths +// $container-max-widths: ( +// sm: 540px, +// md: 720px, +// lg: 960px, +// xl: 1140px, +// xxl: 1320px +// ); +// scss-docs-end container-max-widths + +// @include _assert-ascending($container-max-widths, "$container-max-widths"); + + +// Grid columns +// +// Set the number of columns and specify the width of the gutters. + +// $grid-columns: 12; +// $grid-gutter-width: 1.5rem; +// $grid-row-columns: 6; + +// $gutters: $spacers; + +// Container padding + +// $container-padding-x: $grid-gutter-width / 2; + + +// Components +// +// Define common padding and border radius sizes and more. + +// $border-width: 1px; +// $border-widths: ( +// 0: 0, +// 1: 1px, +// 2: 2px, +// 3: 3px, +// 4: 4px, +// 5: 5px +// ); + +// $border-color: $gray-200; + +// $border-radius: .25rem; +// $border-radius-sm: .2rem; +// $border-radius-lg: .3rem; +// $border-radius-pill: 50rem; + +// $box-shadow: 0 .5rem 1rem rgba($black, .15); +// $box-shadow-sm: 0 .125rem .25rem rgba($black, .075); +// $box-shadow-lg: 0 1rem 3rem rgba($black, .175); +// $box-shadow-inset: inset 0 1px 2px rgba($black, .075); + +// $component-active-color: $high-emphasis-light; +// $component-active-bg: $primary; + +// $caret-width: .3em; +// $caret-vertical-align: $caret-width * .85; +// $caret-spacing: $caret-width * .85; + +// $transition-base: all .2s ease-in-out; +// $transition-fade: opacity .15s linear; +// $transition-collapse: height .35s ease; + +// stylelint-disable function-disallowed-list +// scss-docs-start aspect-ratios +// $aspect-ratios: ( +// "1x1": 100%, +// "4x3": calc(3 / 4 * 100%), +// "16x9": calc(9 / 16 * 100%), +// "21x9": calc(9 / 21 * 100%) +// ); +// scss-docs-end aspect-ratios +// stylelint-enable function-disallowed-list + +// Typography +// +// Font, line-height, and color for body text, headings, and more. + +// stylelint-disable value-keyword-case +// $font-family-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +// $font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +// stylelint-enable value-keyword-case +// $font-family-base: var(--#{$variable-prefix}font-sans-serif); +// $font-family-code: var(--#{$variable-prefix}font-monospace); + +// $font-size-root effects the value of `rem`, which is used for as well font sizes, paddings and margins +// $font-size-base effects the font size of the body text +// $font-size-root: null; +// $font-size-base: 1rem; // Assumes the browser default, typically `16px` +// $font-size-sm: $font-size-base * .875; +// $font-size-lg: $font-size-base * 1.25; + +// $font-weight-lighter: lighter; +// $font-weight-light: 300; +// $font-weight-normal: 400; +// $font-weight-medium: 500; +// $font-weight-semibold: 600; +// $font-weight-bold: 700; +// $font-weight-bolder: bolder; + +// $font-weight-base: $font-weight-normal; + +// $line-height-base: 1.5; +// $line-height-sm: 1.25; +// $line-height-lg: 2; + +// $h1-font-size: $font-size-base * 2.5; +// $h2-font-size: $font-size-base * 2; +// $h3-font-size: $font-size-base * 1.75; +// $h4-font-size: $font-size-base * 1.5; +// $h5-font-size: $font-size-base * 1.25; +// $h6-font-size: $font-size-base; + +// scss-docs-start font-sizes +// $font-sizes: ( +// 1: $h1-font-size, +// 2: $h2-font-size, +// 3: $h3-font-size, +// 4: $h4-font-size, +// 5: $h5-font-size, +// 6: $h6-font-size +// ); +// scss-docs-end font-sizes + +// $headings-margin-bottom: $spacer / 2; +// $headings-font-family: null; +// $headings-font-style: null; +// $headings-font-weight: 500; +// $headings-line-height: 1.2; +// $headings-color: unset; + +// scss-docs-start display-headings +// $display-font-sizes: ( +// 1: 5rem, +// 2: 4.5rem, +// 3: 4rem, +// 4: 3.5rem, +// 5: 3rem, +// 6: 2.5rem +// ); + +// $display-font-weight: 300; +// $display-line-height: $headings-line-height; +// scss-docs-end display-headings + +// $lead-font-size: $font-size-base * 1.25; +// $lead-font-weight: 300; + +// $small-font-size: .875em; + +// $sub-sup-font-size: .75em; + +// $text-muted: $disabled-dark; + +// $initialism-font-size: $small-font-size; + +// $blockquote-margin-y: $spacer; +// $blockquote-font-size: $font-size-base * 1.25; +// $blockquote-footer-color: $gray-600; +// $blockquote-footer-font-size: $small-font-size; + +// $hr-margin-y: $spacer; +// $hr-color: inherit; +// $hr-height: $border-width; +// $hr-opacity: .25; + +// $vr-color: inherit; +// $vr-width: $border-width; +// $vr-opacity: .25; + +// $legend-margin-bottom: .5rem; +// $legend-font-size: 1.5rem; +// $legend-font-weight: null; + +// $mark-padding: .2em; + +// $dt-font-weight: $font-weight-bold; + +// $nested-kbd-font-weight: $font-weight-bold; + +// $list-inline-padding: .5rem; + +// $mark-bg: #fcf8e3; + +// Icons +// $icon-size-base: 1rem; +// $icon-size-sm: $icon-size-base * .875; +// $icon-size-lg: $icon-size-base * 1.25; +// $icon-size-xl: $icon-size-base * 1.5; + + +// Tables +// +// Customizes the `.table` component with basic values, each used across all table variations. + +// scss-docs-start table-variables +// $table-cell-padding-y: .5rem; +// $table-cell-padding-x: .5rem; +// $table-cell-padding-y-sm: .25rem; +// $table-cell-padding-x-sm: .25rem; + +// $table-cell-vertical-align: top; + +// $table-color: $body-color; +// $table-bg: transparent; + +// $table-th-font-weight: 600; + +// $table-striped-color: $table-color; +// $table-striped-bg-factor: .05; +// $table-striped-bg: rgba($black, $table-striped-bg-factor); + +// $table-active-color: $table-color; +// $table-active-bg-factor: .1; +// $table-active-bg: rgba($black, $table-active-bg-factor); + +// $table-hover-color: $table-color; +// $table-hover-bg-factor: .075; +// $table-hover-bg: rgba($black, $table-hover-bg-factor); + +// $table-border-factor: .1; +// $table-border-width: $border-width; +// $table-border-color: $border-color; + +// $table-striped-order: odd; + +// $table-group-separator-color: currentColor; + +// $table-caption-color: $text-muted; + +// $table-bg-scale: -80%; + +// $table-variants: ( +// "primary": shift-color($primary, $table-bg-scale), +// "secondary": shift-color($secondary, $table-bg-scale), +// "success": shift-color($success, $table-bg-scale), +// "info": shift-color($info, $table-bg-scale), +// "warning": shift-color($warning, $table-bg-scale), +// "danger": shift-color($danger, $table-bg-scale), +// "light": $light, +// "dark": $dark, +// ); +// scss-docs-end table-variables + + +// Buttons + Forms +// +// Shared variables that are reassigned to `$input-` and `$btn-` specific variables. + +// scss-docs-start button-form-variables +// $input-btn-padding-y: .375rem; +// $input-btn-padding-x: .75rem; +// $input-btn-font-family: null; +// $input-btn-font-size: $font-size-base; +// $input-btn-line-height: $line-height-base; + +// $input-btn-focus-width: .25rem; +// $input-btn-focus-color-opacity: .25; +// $input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity); +// $input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color; + +// $input-btn-padding-y-sm: .25rem; +// $input-btn-padding-x-sm: .5rem; +// $input-btn-font-size-sm: $font-size-sm; + +// $input-btn-padding-y-lg: .5rem; +// $input-btn-padding-x-lg: 1rem; +// $input-btn-font-size-lg: $font-size-lg; + +// $input-btn-border-width: $border-width; +// scss-docs-end button-form-variables + +// Buttons +// +// For each of Bootstrap's buttons, define text, background, and border color. + +// scss-docs-start button-variables +// $btn-padding-y: $input-btn-padding-y; +// $btn-padding-x: $input-btn-padding-x; +// $btn-font-family: $input-btn-font-family; +// $btn-font-size: $input-btn-font-size; +// $btn-line-height: $input-btn-line-height; +// $btn-white-space: null; // Set to `nowrap` to prevent text wrapping + +// $btn-padding-y-sm: $input-btn-padding-y-sm; +// $btn-padding-x-sm: $input-btn-padding-x-sm; +// $btn-font-size-sm: $input-btn-font-size-sm; + +// $btn-padding-y-lg: $input-btn-padding-y-lg; +// $btn-padding-x-lg: $input-btn-padding-x-lg; +// $btn-font-size-lg: $input-btn-font-size-lg; + +// $btn-border-width: $input-btn-border-width; + +// $btn-font-weight: $font-weight-normal; +// $btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075); +// $btn-focus-width: $input-btn-focus-width; +// $btn-focus-box-shadow: $input-btn-focus-box-shadow; +// $btn-disabled-opacity: .65; +// $btn-active-box-shadow: inset 0 3px 5px rgba($black, .125); + +// $btn-link-color: $link-color; +// $btn-link-hover-color: $link-hover-color; +// $btn-link-disabled-color: $gray-600; + +// Allows for customizing button radius independently from global border radius +// $btn-border-radius: $border-radius; +// $btn-border-radius-sm: $border-radius-sm; +// $btn-border-radius-lg: $border-radius-lg; + +// $btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + +// $button-variants: ( +// "primary": btn-color-map($primary, $primary), +// "secondary": btn-color-map($secondary, $secondary), +// "success": btn-color-map($success, $success), +// "danger": btn-color-map($danger, $danger), +// "warning": btn-color-map($warning, $warning), +// "info": btn-color-map($info, $info), +// "light": btn-color-map($light, $light), +// "dark": btn-color-map($dark, $dark) +// ); +// scss-docs-end button-variables + + +// Forms +// scss-docs-start form-variables +// scss-docs-start form-control-variables +// $form-text-margin-top: .25rem; +// $form-text-font-size: $small-font-size; +// $form-text-font-style: null; +// $form-text-font-weight: null; +// $form-text-color: $text-muted; + +// $form-label-margin-bottom: .5rem; +// $form-label-font-size: null; +// $form-label-font-style: null; +// $form-label-font-weight: null; +// $form-label-color: inherit; + +// $input-padding-y: $input-btn-padding-y; +// $input-padding-x: $input-btn-padding-x; +// $input-font-family: $input-btn-font-family; +// $input-font-size: $input-btn-font-size; +// $input-font-weight: $font-weight-base; +// $input-line-height: $input-btn-line-height; + +// $input-padding-y-sm: $input-btn-padding-y-sm; +// $input-padding-x-sm: $input-btn-padding-x-sm; +// $input-font-size-sm: $input-btn-font-size-sm; + +// $input-padding-y-lg: $input-btn-padding-y-lg; +// $input-padding-x-lg: $input-btn-padding-x-lg; +// $input-font-size-lg: $input-btn-font-size-lg; + +// $input-bg: $white; +// $input-disabled-bg: $gray-200; +// $input-disabled-border-color: $gray-400; + +// $input-color: $body-color; +// $input-border-color: $gray-400; +// $input-border-width: $input-btn-border-width; +// $input-box-shadow: $box-shadow-inset; + +// $input-border-radius: $border-radius; +// $input-border-radius-sm: $border-radius-sm; +// $input-border-radius-lg: $border-radius-lg; + +// $input-focus-bg: $input-bg; +// $input-focus-border-color: tint-color($component-active-bg, 50%); +// $input-focus-color: $input-color; +// $input-focus-width: $input-btn-focus-width; +// $input-focus-box-shadow: $input-btn-focus-box-shadow; + +// $input-placeholder-color: $gray-600; +// $input-plaintext-color: $body-color; + +// $input-height-border: $input-border-width * 2; + +// $input-height-inner: add($input-line-height * 1em, $input-padding-y * 2); +// $input-height-inner-half: add($input-line-height * .5em, $input-padding-y); +// $input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2); + +// $input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)); +// $input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)); +// $input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)); + +// $input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; +// scss-docs-end form-control-variables + +// scss-docs-start form-check-variables +// $form-check-input-width: 1em; +// $form-check-min-height: $font-size-base * $line-height-base; +// $form-check-padding-start: .375em; +// $form-check-margin-bottom: .125rem; +// $form-check-label-color: unset; +// $form-check-label-cursor: null; +// $form-check-transition: background-color .15s ease-in-out, background-position .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + +// $form-check-input-active-filter: brightness(90%); + +// $form-check-input-bg: $body-bg; +// $form-check-input-border: 1px solid rgba(0, 0, 0, .25); +// $form-check-input-border-radius: .25em; +// $form-check-radio-border-radius: 50%; +// $form-check-input-focus-border: $input-focus-border-color; +// $form-check-input-focus-box-shadow: $input-btn-focus-box-shadow; + +// $form-check-input-checked-color: $component-active-color; +// $form-check-input-checked-bg-color: $component-active-bg; +// $form-check-input-checked-border-color: $form-check-input-checked-bg-color; +// $form-check-input-checked-bg-image: url("data:image/svg+xml,"); +// $form-check-radio-checked-bg-image: url("data:image/svg+xml,"); + +// $form-check-input-indeterminate-color: $component-active-color; +// $form-check-input-indeterminate-bg-color: $component-active-bg; +// $form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color; +// $form-check-input-indeterminate-bg-image: url("data:image/svg+xml,"); + +// $form-check-input-disabled-opacity: .5; +// $form-check-label-disabled-opacity: $form-check-input-disabled-opacity; +// $form-check-btn-check-disabled-opacity: $btn-disabled-opacity; +// scss-docs-end form-check-variables + +// scss-docs-start form-switch-variables +// $form-switch-color: rgba(0, 0, 0, .25); +// $form-switch-width: 1.5em; +// $form-switch-padding-start: .375em; +// $form-switch-bg-image: url("data:image/svg+xml,"); +// $form-switch-border-radius: $form-switch-width; + +// $form-switch-focus-color: $input-focus-border-color; +// $form-switch-focus-bg-image: url("data:image/svg+xml,"); + +// $form-switch-checked-color: $component-active-color; +// $form-switch-checked-bg-image: url("data:image/svg+xml,"); +// $form-switch-checked-bg-position: right center; + +// $form-switch-widths: ( +// lg: 2em, +// xl: 2.5em +// ); +// scss-docs-end form-switch-variables + +// $form-check-inline-margin-end: 1rem; + +// scss-docs-start input-group-variables +// $input-group-addon-padding-y: $input-padding-y; +// $input-group-addon-padding-x: $input-padding-x; +// $input-group-addon-font-weight: $input-font-weight; +// $input-group-addon-color: $input-color; +// $input-group-addon-bg: $gray-200; +// $input-group-addon-border-color: $input-border-color; +// scss-docs-end input-group-variables + +// scss-docs-start form-select-variables +// $form-select-padding-y: $input-padding-y; +// $form-select-padding-x: $input-padding-x; +// $form-select-font-family: $input-font-family; +// $form-select-font-size: $input-font-size; +// $form-select-indicator-padding: 1rem; // Extra padding to account for the presence of the background-image based indicator +// $form-select-font-weight: $input-font-weight; +// $form-select-line-height: $input-line-height; +// $form-select-color: $input-color; +// $form-select-disabled-color: $gray-600; +// $form-select-bg: $input-bg; +// $form-select-disabled-bg: $gray-200; +// $form-select-disabled-border-color: $input-disabled-border-color; +// $form-select-bg-position: right $form-select-padding-x center; +// $form-select-bg-size: 16px 12px; // In pixels because image dimensions +// $form-select-indicator-color: $gray-800; +// $form-select-indicator: url("data:image/svg+xml,"); + +// $form-select-feedback-icon-padding-end: add(1em * .75, (2 * $form-select-padding-y * .75) + $form-select-padding-x + $form-select-indicator-padding); +// $form-select-feedback-icon-position: center right ($form-select-padding-x + $form-select-indicator-padding); +// $form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half; + +// $form-select-border-width: $input-border-width; +// $form-select-border-color: $input-border-color; +// $form-select-border-radius: $border-radius; +// $form-select-box-shadow: $box-shadow-inset; + +// $form-select-focus-border-color: $input-focus-border-color; +// $form-select-focus-width: $input-focus-width; +// $form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color; + +// $form-select-padding-y-sm: $input-padding-y-sm; +// $form-select-padding-x-sm: $input-padding-x-sm; +// $form-select-font-size-sm: $input-font-size-sm; + +// $form-select-padding-y-lg: $input-padding-y-lg; +// $form-select-padding-x-lg: $input-padding-x-lg; +// $form-select-font-size-lg: $input-font-size-lg; +// scss-docs-end form-select-variables + +// scss-docs-start form-range-variables +// $form-range-track-width: 100%; +// $form-range-track-height: .5rem; +// $form-range-track-cursor: pointer; +// $form-range-track-bg: $gray-300; +// $form-range-track-border-radius: 1rem; +// $form-range-track-box-shadow: $box-shadow-inset; + +// $form-range-thumb-width: 1rem; +// $form-range-thumb-height: $form-range-thumb-width; +// $form-range-thumb-bg: $component-active-bg; +// $form-range-thumb-border: 0; +// $form-range-thumb-border-radius: 1rem; +// $form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1); +// $form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow; +// $form-range-thumb-focus-box-shadow-width: $input-focus-width; // For focus box shadow issue in Edge +// $form-range-thumb-active-bg: tint-color($component-active-bg, 70%); +// $form-range-thumb-disabled-bg: $gray-500; +// $form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; +// scss-docs-end form-range-variables + +// scss-docs-start form-file-variables +// $form-file-button-color: $input-color; +// $form-file-button-bg: $input-group-addon-bg; +// $form-file-button-hover-bg: shade-color($form-file-button-bg, 5%); +// scss-docs-end form-file-variables + +// scss-docs-start form-floating-variables +// $form-floating-height: add(3.5rem, $input-height-border); +// $form-floating-padding-x: $input-padding-x; +// $form-floating-padding-y: 1rem; +// $form-floating-input-padding-t: 1.625rem; +// $form-floating-input-padding-b: .625rem; +// $form-floating-label-opacity: .65; +// $form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem); +// $form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out; +// scss-docs-end form-floating-variables + +// Form validation + +// $form-feedback-margin-top: $form-text-margin-top; +// $form-feedback-font-size: $form-text-font-size; +// $form-feedback-font-style: $form-text-font-style; +// $form-feedback-valid-color: $success; +// $form-feedback-invalid-color: $danger; + +// $form-feedback-icon-valid-color: $form-feedback-valid-color; +// $form-feedback-icon-valid: url("data:image/svg+xml,"); +// $form-feedback-icon-invalid-color: $form-feedback-invalid-color; +// $form-feedback-icon-invalid: url("data:image/svg+xml,"); + +// scss-docs-start form-validation-states +// $form-validation-states: ( +// "valid": ( +// "color": $form-feedback-valid-color, +// "icon": $form-feedback-icon-valid +// ), +// "invalid": ( +// "color": $form-feedback-invalid-color, +// "icon": $form-feedback-icon-invalid +// ) +// ); +// scss-docs-end form-validation-states +// scss-docs-end form-variables +// Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. + +// scss-docs-start zindex-stack +// $zindex-dropdown: 1000; +// $zindex-sticky: 1020; +// $zindex-fixed: 1030; +// $zindex-modal-backdrop: 1040; +// $zindex-modal: 1050; +// $zindex-popover: 1060; +// $zindex-tooltip: 1070; +// scss-docs-end zindex-stack + + +// Navs +// scss-docs-start nav-variables +// $nav-link-padding-y: .5rem; +// $nav-link-padding-x: 1rem; +// $nav-link-font-size: null; +// $nav-link-font-weight: null; +// $nav-link-color: $link-color; +// $nav-link-hover-color: $link-hover-color; +// $nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out; +// $nav-link-disabled-color: $gray-600; + +// $nav-tabs-border-color: $gray-300; +// $nav-tabs-border-width: $border-width; +// $nav-tabs-border-radius: $border-radius; +// $nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color; +// $nav-tabs-link-active-color: $gray-700; +// $nav-tabs-link-active-bg: $body-bg; +// $nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg; + +// $nav-pills-border-radius: $border-radius; +// $nav-pills-link-active-color: $component-active-color; +// $nav-pills-link-active-bg: $component-active-bg; +// scss-docs-end nav-variables + +// Navbar +// scss-docs-start navbar-variables +// $navbar-padding-y: $spacer / 2; +// $navbar-padding-x: null; + +// $navbar-nav-link-padding-x: .5rem; + +// $navbar-brand-font-size: $font-size-lg; +// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link +// $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2; +// $navbar-brand-height: $navbar-brand-font-size * $line-height-base; +// $navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2; +// $navbar-brand-margin-end: 1rem; + +// $navbar-toggler-padding-y: .25rem; +// $navbar-toggler-padding-x: .75rem; +// $navbar-toggler-font-size: $font-size-lg; +// $navbar-toggler-border-radius: $btn-border-radius; +// $navbar-toggler-focus-width: $btn-focus-width; +// $navbar-toggler-transition: box-shadow .15s ease-in-out; + +// $navbar-dark-color: $medium-emphasis-light; +// $navbar-dark-hover-color: $high-emphasis-light; +// $navbar-dark-active-color: $high-emphasis-light; +// $navbar-dark-disabled-color: $disabled-light; +// $navbar-dark-toggler-icon-bg: url("data:image/svg+xml,"); +// $navbar-dark-toggler-border-color: rgba($white, .1); + +// $navbar-light-color: $medium-emphasis-dark; +// $navbar-light-hover-color: $high-emphasis-dark; +// $navbar-light-active-color: $high-emphasis-dark; +// $navbar-light-disabled-color: $disabled-dark; +// $navbar-light-toggler-icon-bg: url("data:image/svg+xml,"); +// $navbar-light-toggler-border-color: rgba($black, .1); + +// $navbar-light-brand-color: $navbar-light-active-color; +// $navbar-light-brand-hover-color: $navbar-light-active-color; +// $navbar-dark-brand-color: $navbar-dark-active-color; +// $navbar-dark-brand-hover-color: $navbar-dark-active-color; +// scss-docs-end navbar-variables + +// Dropdowns +// +// Dropdown menu container and contents. +// scss-docs-start dropdown-variables +// $dropdown-min-width: 10rem; +// $dropdown-padding-x: 0; +// $dropdown-padding-y: .5rem; +// $dropdown-spacer: .125rem; +// $dropdown-font-size: $font-size-base; +// $dropdown-color: $body-color; +// $dropdown-bg: $white; +// $dropdown-border-color: rgba($black, .15); +// $dropdown-border-radius: $border-radius; +// $dropdown-border-width: $border-width; +// $dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width); +// $dropdown-divider-bg: $dropdown-border-color; +// $dropdown-divider-margin-y: $spacer / 2; +// $dropdown-box-shadow: $box-shadow; + +// $dropdown-link-color: $gray-900; +// $dropdown-link-hover-color: shade-color($gray-900, 10%); +// $dropdown-link-hover-bg: $gray-100; + +// $dropdown-link-active-color: $component-active-color; +// $dropdown-link-active-bg: $component-active-bg; + +// $dropdown-link-disabled-color: $gray-600; + +// $dropdown-item-padding-y: $spacer / 4; +// $dropdown-item-padding-x: $spacer; + +// $dropdown-header-color: $gray-600; +// $dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x; + +// $dropdown-dark-color: $gray-300; +// $dropdown-dark-bg: $gray-800; +// $dropdown-dark-border-color: $dropdown-border-color; +// $dropdown-dark-divider-bg: $dropdown-divider-bg; +// $dropdown-dark-box-shadow: null; +// $dropdown-dark-link-color: $dropdown-dark-color; +// $dropdown-dark-link-hover-color: $high-emphasis-light; +// $dropdown-dark-link-hover-bg: rgba($white, .15); +// $dropdown-dark-link-active-color: $dropdown-link-active-color; +// $dropdown-dark-link-active-bg: $dropdown-link-active-bg; +// $dropdown-dark-link-disabled-color: $gray-500; +// $dropdown-dark-header-color: $gray-500; +// scss-docs-end dropdown-variables + + +// Pagination +// scss-docs-start pagination-variables +// $pagination-padding-y: .375rem; +// $pagination-padding-x: .75rem; +// $pagination-padding-y-sm: .25rem; +// $pagination-padding-x-sm: .5rem; +// $pagination-padding-y-lg: .75rem; +// $pagination-padding-x-lg: 1.5rem; + +// $pagination-color: $link-color; +// $pagination-bg: $white; +// $pagination-border-width: $border-width; +// $pagination-border-radius: $border-radius; +// $pagination-margin-start: -$pagination-border-width; +// $pagination-border-color: $gray-300; + +// $pagination-focus-color: $link-hover-color; +// $pagination-focus-bg: $gray-200; +// $pagination-focus-box-shadow: $input-btn-focus-box-shadow; +// $pagination-focus-outline: 0; + +// $pagination-hover-color: $link-hover-color; +// $pagination-hover-bg: $gray-200; +// $pagination-hover-border-color: $gray-300; + +// $pagination-active-color: $component-active-color; +// $pagination-active-bg: $component-active-bg; +// $pagination-active-border-color: $pagination-active-bg; + +// $pagination-disabled-color: $gray-600; +// $pagination-disabled-bg: $white; +// $pagination-disabled-border-color: $gray-300; + +// $pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; +// scss-docs-end pagination-variables + +// Cards +// scss-docs-start card-variables +// $card-spacer-y: $spacer; +// $card-spacer-x: $spacer; +// $card-title-spacer-y: $spacer / 2; +// $card-border-width: $border-width; +// $card-border-radius: $border-radius; +// $card-border-color: rgba($black, .125); +// $card-inner-border-radius: subtract($card-border-radius, $card-border-width); +// $card-cap-padding-y: $card-spacer-y / 2; +// $card-cap-padding-x: $card-spacer-x; +// $card-cap-bg: rgba($black, .03); +// $card-cap-color: unset; +// $card-height: null; +// $card-color: unset; +// $card-bg: $white; + +// $card-img-overlay-padding: $spacer; + +// $card-group-margin: $grid-gutter-width / 2; +// scss-docs-end card-variables + +// Accordion +// scss-docs-start accordion-variables +// $accordion-padding-y: 1rem; +// $accordion-padding-x: 1.25rem; +// $accordion-color: $body-color; +// $accordion-bg: transparent; +// $accordion-border-width: $border-width; +// $accordion-border-color: rgba($black, .125); +// $accordion-border-radius: $border-radius; + +// $accordion-body-padding-y: $accordion-padding-y; +// $accordion-body-padding-x: $accordion-padding-x; + +// $accordion-button-padding-y: $accordion-padding-y; +// $accordion-button-padding-x: $accordion-padding-x; +// $accordion-button-color: $accordion-color; +// $accordion-button-bg: $accordion-bg; +// $accordion-transition: $btn-transition, border-radius .15s ease; +// $accordion-button-active-bg: tint-color($component-active-bg, 90%); +// $accordion-button-active-color: shade-color($primary, 10%); + +// $accordion-button-focus-border-color: $input-focus-border-color; +// $accordion-button-focus-box-shadow: $btn-focus-box-shadow; + +// $accordion-icon-width: 1.25rem; +// $accordion-icon-color: $accordion-color; +// $accordion-icon-active-color: $accordion-button-active-color; +// $accordion-icon-transition: transform .2s ease-in-out; +// $accordion-icon-transform: rotate(180deg); + +// $accordion-button-icon: url("data:image/svg+xml,"); +// $accordion-button-active-icon: url("data:image/svg+xml,"); +// scss-docs-end accordion-variables + +// Tooltips + +// scss-docs-start tooltip-variables +// $tooltip-font-size: $font-size-sm; +// $tooltip-max-width: 200px; +// $tooltip-color: $high-emphasis-light; +// $tooltip-bg: $black; +// $tooltip-border-radius: $border-radius; +// $tooltip-opacity: .9; +// $tooltip-padding-y: $spacer / 4; +// $tooltip-padding-x: $spacer / 2; +// $tooltip-margin: 0; + +// $tooltip-arrow-width: .8rem; +// $tooltip-arrow-height: .4rem; +// $tooltip-arrow-color: $tooltip-bg; +// scss-docs-end tooltip-variables + +// Form tooltips must come after regular tooltips +// $form-feedback-tooltip-padding-y: $tooltip-padding-y; +// $form-feedback-tooltip-padding-x: $tooltip-padding-x; +// $form-feedback-tooltip-font-size: $tooltip-font-size; +// $form-feedback-tooltip-line-height: null; +// $form-feedback-tooltip-opacity: $tooltip-opacity; +// $form-feedback-tooltip-border-radius: $tooltip-border-radius; + + +// Popovers +// scss-docs-start popover-variables +// $popover-font-size: $font-size-sm; +// $popover-bg: $white; +// $popover-max-width: 276px; +// $popover-border-width: $border-width; +// $popover-border-color: rgba($black, .2); +// $popover-border-radius: $border-radius-lg; +// $popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width); +// $popover-box-shadow: $box-shadow; + +// $popover-header-bg: shade-color($popover-bg, 6%); +// $popover-header-color: $headings-color; +// $popover-header-padding-y: .5rem; +// $popover-header-padding-x: $spacer; + +// $popover-body-color: $body-color; +// $popover-body-padding-y: $spacer; +// $popover-body-padding-x: $spacer; + +// $popover-arrow-width: 1rem; +// $popover-arrow-height: .5rem; +// $popover-arrow-color: $popover-bg; + +// $popover-arrow-outer-color: fade-in($popover-border-color, .05); +// scss-docs-end popover-variables + + +// Toasts +// scss-docs-start toast-variables +// $toast-max-width: 350px; +// $toast-padding-x: .75rem; +// $toast-padding-y: .5rem; +// $toast-font-size: .875rem; +// $toast-color: unset; +// $toast-background-color: rgba($white, .85); +// $toast-border-width: 1px; +// $toast-border-color: rgba(0, 0, 0, .1); +// $toast-border-radius: $border-radius; +// $toast-box-shadow: $box-shadow; +// $toast-spacing: $container-padding-x; + +// $toast-header-color: $gray-600; +// $toast-header-background-color: rgba($white, .85); +// $toast-header-border-color: rgba(0, 0, 0, .05); +// scss-docs-end toast-variables + + +// Badges +// scss-docs-start badge-variables +// $badge-font-size: .75em; +// $badge-font-weight: $font-weight-bold; +// $badge-color: $high-emphasis-light; +// $badge-padding-y: .35em; +// $badge-padding-x: .65em; +// $badge-border-radius: $border-radius; + +// $badge-font-size-sm: .65em; +// $badge-padding-y-sm: .3em; +// $badge-padding-x-sm: .5em; +// scss-docs-end badge-variables + + +// Modals +// scss-docs-start modal-variables +// Padding applied to the modal body +// $modal-inner-padding: $spacer; + +// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding +// $modal-footer-margin-between: .5rem; + +// $modal-dialog-margin: .5rem; +// $modal-dialog-margin-y-sm-up: 1.75rem; + +// $modal-title-line-height: $line-height-base; + +// $modal-content-color: unset; +// $modal-content-bg: $white; +// $modal-content-border-color: rgba($black, .2); +// $modal-content-border-width: $border-width; +// $modal-content-border-radius: $border-radius-lg; +// $modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width); +// $modal-content-box-shadow-xs: $box-shadow-sm; +// $modal-content-box-shadow-sm-up: $box-shadow; + +// $modal-backdrop-bg: $black; +// $modal-backdrop-opacity: .5; +// $modal-header-border-color: $border-color; +// $modal-footer-border-color: $modal-header-border-color; +// $modal-header-border-width: $modal-content-border-width; +// $modal-footer-border-width: $modal-header-border-width; +// $modal-header-padding-y: $modal-inner-padding; +// $modal-header-padding-x: $modal-inner-padding; +// $modal-header-padding: $modal-header-padding-y $modal-header-padding-x; // Keep this for backwards compatibility + +// $modal-sm: 300px; +// $modal-md: 500px; +// $modal-lg: 800px; +// $modal-xl: 1140px; + +// $modal-fade-transform: translate(0, -50px); +// $modal-show-transform: none; +// $modal-transition: transform .3s ease-out; +// $modal-scale-transform: scale(1.02); +// scss-docs-end modal-variables + + +// Avatars +// scss-docs-start avatar-variables +// $avatar-width: 2rem; + +// $avatar-widths: ( +// sm: 1.5rem, +// lg: 3rem, +// xl: 4rem +// ); + +// $avatar-transition: margin .15s; +// scss-docs-end avatar-variables + +// Alerts +// +// Define alert colors, border radius, and padding. +// scss-docs-start alert-variables +// $alert-padding-y: $spacer; +// $alert-padding-x: $spacer; +// $alert-margin-bottom: 1rem; +// $alert-border-radius: $border-radius; +// $alert-link-font-weight: $font-weight-bold; +// $alert-border-width: $border-width; + +// $alert-bg-scale: -80%; +// $alert-border-scale: -70%; +// $alert-color-scale: 40%; + +// $alert-dismissible-padding-r: $alert-padding-x * 3; // 3x covers width of x plus default padding on either side + +// $alert-variants: ( +// "primary": alert-color-map($primary), +// "secondary": alert-color-map($secondary), +// "success": alert-color-map($success), +// "danger": alert-color-map($danger), +// "warning": alert-color-map($warning), +// "info": alert-color-map($info), +// "light": alert-color-map($light), +// "dark": alert-color-map($dark) +// ); +// scss-docs-end alert-variables + +// Callouts +// scss-docs-start callout-variables +// $callout-padding-y: $spacer; +// $callout-padding-x: $spacer; +// $callout-margin-y: $spacer; +// $callout-margin-x: 0; +// $callout-border-radius: $border-radius; +// $callout-border-width: $border-width; +// $callout-border-color: $border-color; +// $callout-border-left-width: (4 * $callout-border-width); + +// $callout-variants: ( +// "primary": $primary, +// "secondary": $secondary, +// "success": $success, +// "danger": $danger, +// "warning": $warning, +// "info": $info, +// "light": $light, +// "dark": $dark +// ); +// scss-docs-end callout-variables + + +// Progress bars + +// scss-docs-start progress-variables +// $progress-height: 1rem; +// $progress-font-size: $font-size-base * .75; +// $progress-bg: $gray-200; +// $progress-border-radius: $border-radius; +// $progress-box-shadow: $box-shadow-inset; +// $progress-bar-color: $high-emphasis-light; +// $progress-bar-bg: $primary; +// $progress-bar-animation-timing: 1s linear infinite; +// $progress-bar-transition: width .6s ease; +// scss-docs-end progress-variables + +// List group +// scss-docs-start list-group-variables +// $list-group-color: unset; +// $list-group-bg: $white; +// $list-group-border-color: rgba($black, .125); +// $list-group-border-width: $border-width; +// $list-group-border-radius: $border-radius; + +// $list-group-item-padding-y: $spacer / 2; +// $list-group-item-padding-x: $spacer; +// $list-group-item-bg-scale: -80%; +// $list-group-item-color-scale: 40%; + +// $list-group-hover-bg: $gray-100; +// $list-group-active-color: $component-active-color; +// $list-group-active-bg: $component-active-bg; +// $list-group-active-border-color: $list-group-active-bg; + +// $list-group-disabled-color: $gray-600; +// $list-group-disabled-bg: $list-group-bg; + +// $list-group-action-color: $gray-700; +// $list-group-action-hover-color: $list-group-action-color; + +// $list-group-action-active-color: $body-color; +// $list-group-action-active-bg: $gray-200; + +// $list-group-variants: ( +// "primary": list-group-color-map($primary), +// "secondary": list-group-color-map($secondary), +// "success": list-group-color-map($success), +// "danger": list-group-color-map($danger), +// "warning": list-group-color-map($warning), +// "info": list-group-color-map($info), +// "light": list-group-color-map($light), +// "dark": list-group-color-map($dark) +// ); +// scss-docs-end list-group-variables + + +// Header +// scss-docs-start header-variables +// $header-min-height: 4rem; +// $header-padding-y: $spacer / 2; +// $header-padding-x: $spacer / 2; +// $header-brand-font-size: $font-size-lg; +// $header-color: $medium-emphasis-dark; +// $header-bg: $white; +// $header-border-color: $border-color; +// $header-border-width: 1px; +// $header-hover-color: $high-emphasis-dark; +// $header-active-color: $high-emphasis-dark; +// $header-disabled-color: $disabled-dark; + +// Compute the header-brand padding-y so the header-brand will have the same height as header-text and nav-link +// $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2; +// $header-brand-height: $header-brand-font-size * $line-height-base; +// $header-brand-padding-y: ($nav-link-height - $header-brand-height) / 2; +// $header-brand-margin-end: 1rem; +// $header-brand-font-size: $font-size-lg; +// $header-brand-color: $gray-900; +// $header-brand-hover-color: shade-color($gray-900, 10%); + +// $header-toggler-padding-y: .25rem; +// $header-toggler-padding-x: .75rem; +// $header-toggler-font-size: $font-size-lg; +// $header-toggler-bg: transparent; +// $header-toggler-border: 0; +// $header-toggler-border-radius: $btn-border-radius; + +// $header-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$header-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23"); +// $header-toggler-hover-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$header-hover-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23"); +// $header-toggler-border-color: rgba($black, .1); + +// $header-nav-link-padding-x: .5rem; + +// $header-divider-border-width: 1px; +// $header-divider-border-color: $header-border-color; +// scss-docs-end header-variables + +// Subheader +// scss-docs-start subheader-variables +// $subheader-min-height: 3rem; +// $subheader-padding-y: $spacer / 2; +// $subheader-padding-x: $spacer; +// $subheader-border-color: $border-color; +// $subheader-border-width: 1px; + +// $subheader-nav-link-padding-x: .5rem; +// scss-docs-end subheader-variables + +// Default theme +// scss-docs-start subheader-default-themes +// $subheader-bg: $white; +// $subheader-color: $medium-emphasis-dark; +// $subheader-hover-color: $high-emphasis-dark; +// $subheader-active-color: $high-emphasis-dark; +// $subheader-disabled-color: $disabled-dark; +// scss-docs-end subheader-default-themes + + +// Image thumbnails + +// $thumbnail-padding: .25rem; +// $thumbnail-bg: $body-bg; +// $thumbnail-border-width: $border-width; +// $thumbnail-border-color: $gray-300; +// $thumbnail-border-radius: $border-radius; +// $thumbnail-box-shadow: $box-shadow-sm; + + +// Figures + +// $figure-caption-font-size: $small-font-size; +// $figure-caption-color: $gray-600; + + +// Breadcrumbs +// scss-docs-start breadcrumb-variables +// $breadcrumb-font-size: null; +// $breadcrumb-padding-y: 0; +// $breadcrumb-padding-x: 0; +// $breadcrumb-item-padding-x: .5rem; +// $breadcrumb-margin-bottom: 1rem; +// $breadcrumb-bg: unset; +// $breadcrumb-divider-color: $gray-600; +// $breadcrumb-active-color: $gray-600; +// $breadcrumb-divider: quote("/"); +// $breadcrumb-divider-flipped: $breadcrumb-divider; +// $breadcrumb-border-radius: null; +// scss-docs-end breadcrumb-variables + +// Carousel +// scss-docs-start carousel-variables +// $carousel-control-color: $high-emphasis-light; +// $carousel-control-width: 15%; +// $carousel-control-opacity: .5; +// $carousel-control-hover-opacity: .9; +// $carousel-control-transition: opacity .15s ease; + +// $carousel-indicator-width: 30px; +// $carousel-indicator-height: 3px; +// $carousel-indicator-hit-area-height: 10px; +// $carousel-indicator-spacer: 3px; +// $carousel-indicator-opacity: .5; +// $carousel-indicator-active-bg: $white; +// $carousel-indicator-active-opacity: 1; +// $carousel-indicator-transition: opacity .6s ease; + +// $carousel-caption-width: 70%; +// $carousel-caption-color: $high-emphasis-light; +// $carousel-caption-padding-y: 1.25rem; +// $carousel-caption-spacer: 1.25rem; + +// $carousel-control-icon-width: 2rem; + +// $carousel-control-prev-icon-bg: url("data:image/svg+xml,"); +// $carousel-control-next-icon-bg: url("data:image/svg+xml,"); + +// $carousel-transition-duration: .6s; +// $carousel-transition: transform $carousel-transition-duration ease-in-out; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`) + +// $carousel-dark-indicator-active-bg: $black; +// $carousel-dark-caption-color: $high-emphasis-dark; +// $carousel-dark-control-icon-filter: invert(1) grayscale(100); +// scss-docs-end carousel-variables + +// scss-docs-start sidebar-variables +// $sidebar-width: 16rem; +// $sidebar-widths: ( +// sm: 12rem, +// lg: 20rem, +// xl: 24rem +// ); +// $sidebar-padding-y: 0; +// $sidebar-padding-x: 0; +// $sidebar-color: $high-emphasis-light; +// $sidebar-bg: $gray-base; +// $sidebar-border-width: 0; +// $sidebar-border-color: transparent; +// $sidebar-transition: margin-left .15s, margin-right .15s, box-shadow .075s, transform .15s, width .15s, z-index 0s ease .15s; +// $sidebar-reliant-transition: width .15s; + +// $sidebar-brand-height: 4rem; +// $sidebar-brand-color: $high-emphasis-light; +// $sidebar-brand-bg: rgba($black, .2); + +// $sidebar-header-height: 4rem; +// $sidebar-header-padding-y: .75rem; +// $sidebar-header-padding-x: 1rem; +// $sidebar-header-bg: rgba($black, .2); +// $sidebar-header-height-transition: height .15s, padding .15s; + +// $sidebar-narrow-width: 4rem; + +// $sidebar-backdrop-bg: $black; +// $sidebar-backdrop-opacity: .5; +// $sidebar-backdrop-transition: opacity .15s linear; + +// $sidebar-nav-title-padding-y: .75rem; +// $sidebar-nav-title-padding-x: 1rem; +// $sidebar-nav-title-margin-top: 1rem; +// $sidebar-nav-title-color: $medium-emphasis-light; +// $sidebar-nav-title-transition: height .15s, margin .15s; + +// $sidebar-nav-link-padding-y: .8445rem; +// $sidebar-nav-link-padding-x: 1rem; +// $sidebar-nav-link-color: $medium-emphasis-light; +// $sidebar-nav-link-bg: transparent; +// $sidebar-nav-link-transition: background .15s ease, color .15s ease; +// $sidebar-nav-link-icon-color: $medium-emphasis-light; + +// $sidebar-nav-link-hover-color: $high-emphasis-light; +// $sidebar-nav-link-hover-bg: rgba($white, .05); +// $sidebar-nav-link-hover-icon-color: $high-emphasis-light; + +// $sidebar-nav-link-active-color: $high-emphasis-light; +// $sidebar-nav-link-active-bg: rgba($white, .05); +// $sidebar-nav-link-active-icon-color: $high-emphasis-light; + +// $sidebar-nav-link-disabled-color: $disabled-light; +// $sidebar-nav-link-disabled-icon-color: $sidebar-nav-link-icon-color; + +// $sidebar-nav-icon-width: 4rem; +// $sidebar-nav-icon-height: 1.25rem; +// $sidebar-nav-icon-font-size: $sidebar-nav-icon-height; + +// $sidebar-nav-group-bg: rgba(0, 0, 0, .2); +// $sidebar-nav-group-transition: background .15s ease-in-out; +// $sidebar-nav-group-items-transition: height .15s ease; +// $sidebar-nav-group-toggle-show-color: $sidebar-nav-link-color; + +// $sidebar-nav-group-indicator-color: $medium-emphasis-light; +// $sidebar-nav-group-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-nav-group-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23"); +// $sidebar-nav-group-indicator-hover-color: $sidebar-nav-link-hover-color; +// $sidebar-nav-group-indicator-hover: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-nav-group-indicator-hover-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23"); +// $sidebar-nav-group-indicator-transition: transform .15s; + +// $sidebar-footer-height: auto; +// $sidebar-footer-padding-y: .75rem; +// $sidebar-footer-padding-x: 1rem; +// $sidebar-footer-bg: rgba($black, .2); +// $sidebar-footer-height-transition: height .15s, padding .15s; + +// $sidebar-toggler-height: 3rem; +// $sidebar-toggler-bg: rgba($black, .2); +// $sidebar-toggler-transition: transform .15s; + +// $sidebar-toggler-indicator-width: 4rem; +// $sidebar-toggler-indicator-height: 3rem; +// $sidebar-toggler-indicator-color: $gray-600; +// $sidebar-toggler-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-toggler-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23"); +// $sidebar-toggler-hover-bg: rgba(0, 0, 0, .3); +// $sidebar-toggler-hover-indicator-color: $sidebar-nav-link-hover-color; +// $sidebar-toggler-hover-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-toggler-hover-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23"); +// scss-docs-end sidebar-variables + +// Footer +// scss-docs-start footer-variables +// $footer-min-height: 3rem; +// $footer-padding-y: $spacer / 2; +// $footer-padding-x: $spacer; +// $footer-bg: $gray-100; +// $footer-color: $body-color; +// $footer-border-width: 1px; +// $footer-border-color: $border-color; +// scss-docs-end footer-variables + +// Spinners +// scss-docs-start spinner-variables +// $spinner-width: 2rem; +// $spinner-height: $spinner-width; +// $spinner-border-width: .25em; +// $spinner-animation-speed: .75s; + +// $spinner-width-sm: 1rem; +// $spinner-height-sm: $spinner-width-sm; +// $spinner-border-width-sm: .2em; +// scss-docs-end spinner-variables + + +// Close +// scss-docs-start close-variables +// $btn-close-width: 1em; +// $btn-close-height: $btn-close-width; +// $btn-close-padding-x: .25em; +// $btn-close-padding-y: $btn-close-padding-x; +// $btn-close-color: $high-emphasis-dark; +// $btn-close-bg: url("data:image/svg+xml,"); +// $btn-close-focus-shadow: $input-btn-focus-box-shadow; +// $btn-close-opacity: .5; +// $btn-close-hover-opacity: .75; +// $btn-close-focus-opacity: 1; +// $btn-close-disabled-opacity: .25; +// $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); +// scss-docs-end close-variables + +// Code + +// $code-font-size: $small-font-size; +// $code-color: $pink; + +// $kbd-padding-y: .2rem; +// $kbd-padding-x: .4rem; +// $kbd-font-size: $code-font-size; +// $kbd-color: $high-emphasis-light; +// $kbd-bg: $gray-900; + +// $pre-color: unset; diff --git a/src/scss/styles.scss b/src/scss/styles.scss new file mode 100644 index 0000000..a143075 --- /dev/null +++ b/src/scss/styles.scss @@ -0,0 +1,28 @@ +/* You can add global styles to this file, and also import other style files */ +// If you want to override variables do it here +@import "variables"; + +$enable-ltr: true; +$enable-rtl: true; + +// Import styles with default layout. +@import "@coreui/coreui/scss/coreui"; + +// Import Chart.js custom tooltips styles +@import "@coreui/chartjs/scss/coreui-chartjs"; + +@import "layout"; + +// Some temp fixes +@import "fixes"; + +// Prism.js +@import "examples"; + +// If you want to add something do it here +@import "custom"; + +// animations +@import "animations"; + +@import "~@angular/material/prebuilt-themes/indigo-pink.css"; \ No newline at end of file diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 0000000..0c8df5a --- /dev/null +++ b/src/test.ts @@ -0,0 +1,15 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting(), + { teardown: { destroyAfterEach: true }}, +); diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..40e277b --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,19 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [ + "@angular/localize" + ], + "paths": { + "@docs-components/*": ["./src/components/*"] + } + }, + "files": [ + "src/main.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..d6f5c1c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,40 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "strictPropertyInitialization": false, + "useDefineForClassFields": false, + "lib": [ + "ES2022", + "dom" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true, + "types": [ "node" ] + }, + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.spec.json" }, + ] +} diff --git a/tsconfig.spec.json b/tsconfig.spec.json new file mode 100644 index 0000000..949359e --- /dev/null +++ b/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine", + "@angular/localize" + ] + }, + "files": [ + "src/test.ts", + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/version.json b/version.json new file mode 100644 index 0000000..289c63f --- /dev/null +++ b/version.json @@ -0,0 +1 @@ +{"version": "1.0.0", "name": "MikroWizard"} \ No newline at end of file diff --git a/version_generate.py b/version_generate.py new file mode 100644 index 0000000..07457fc --- /dev/null +++ b/version_generate.py @@ -0,0 +1,13 @@ +import json +import os +#load package.json and extract version infromation and write it to a file +with open('./package.json') as f: + data = json.load(f) + data ={ + 'version': data['version'], + 'name':data['name'] + } + with open('./dist/mikrowizard/version.json', 'w') as f: + json.dump(data, f) + print('Version information written to version.json') +