diff --git a/.389-ds-base.metadata b/.389-ds-base.metadata index f10c1e1..a112433 100644 --- a/.389-ds-base.metadata +++ b/.389-ds-base.metadata @@ -1,3 +1,3 @@ -25969f6e65d79aa29671eff7185e4307ff3c08a0 SOURCES/389-ds-base-2.6.1.tar.bz2 +e9ce5b0affef3f7a319958610c5382152f1b559f SOURCES/389-ds-base-2.7.0.tar.bz2 1c8f2d0dfbf39fa8cd86363bf3314351ab21f8d4 SOURCES/jemalloc-5.3.0.tar.bz2 -2a7e210570b6f8a8a962efe173d2ae31441da7fb SOURCES/vendor-2.6.1-3.tar.gz +b183c1ebee9c1d81d4b394df6de6521a8b333cbc SOURCES/vendor-2.7.0-1.tar.gz diff --git a/.gitignore b/.gitignore index 5011022..af6149d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -SOURCES/389-ds-base-2.6.1.tar.bz2 +SOURCES/389-ds-base-2.7.0.tar.bz2 SOURCES/jemalloc-5.3.0.tar.bz2 -SOURCES/vendor-2.6.1-3.tar.gz +SOURCES/vendor-2.7.0-1.tar.gz diff --git a/SOURCES/0056-Issue-6377-syntax-error-in-setup.py-6378.patch b/SOURCES/0001-Issue-6377-syntax-error-in-setup.py-6378.patch similarity index 96% rename from SOURCES/0056-Issue-6377-syntax-error-in-setup.py-6378.patch rename to SOURCES/0001-Issue-6377-syntax-error-in-setup.py-6378.patch index 98719dc..84ff8d0 100644 --- a/SOURCES/0056-Issue-6377-syntax-error-in-setup.py-6378.patch +++ b/SOURCES/0001-Issue-6377-syntax-error-in-setup.py-6378.patch @@ -1,4 +1,4 @@ -From e822bcb828c02c8f3ba3c0f0ab2e281a7ef23e32 Mon Sep 17 00:00:00 2001 +From 5903fac2334f984d18aea663735fb260d6b100ed Mon Sep 17 00:00:00 2001 From: progier389 Date: Tue, 22 Oct 2024 17:26:46 +0200 Subject: [PATCH] Issue 6377 - syntax error in setup.py (#6378) diff --git a/SOURCES/0001-Issue-6468-Fix-building-for-older-versions-of-Python.patch b/SOURCES/0001-Issue-6468-Fix-building-for-older-versions-of-Python.patch deleted file mode 100644 index b3e87c5..0000000 --- a/SOURCES/0001-Issue-6468-Fix-building-for-older-versions-of-Python.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 0921400a39b61687db2bc55ebd5021eef507e960 Mon Sep 17 00:00:00 2001 -From: Viktor Ashirov -Date: Tue, 28 Jan 2025 21:05:49 +0100 -Subject: [PATCH] Issue 6468 - Fix building for older versions of Python - -Bug Description: -Structural Pattern Matching has been added in Python 3.10, older version -do not support it. - -Fix Description: -Replace `match` and `case` statements with `if-elif`. - -Relates: https://github.com/389ds/389-ds-base/issues/6468 - -Reviewed by: @droideck (Thanks!) ---- - src/lib389/lib389/cli_conf/logging.py | 27 ++++++++++++++------------- - 1 file changed, 14 insertions(+), 13 deletions(-) - -diff --git a/src/lib389/lib389/cli_conf/logging.py b/src/lib389/lib389/cli_conf/logging.py -index 2e86f2de8..d1e32822c 100644 ---- a/src/lib389/lib389/cli_conf/logging.py -+++ b/src/lib389/lib389/cli_conf/logging.py -@@ -234,19 +234,20 @@ def get_log_config(inst, basedn, log, args): - attr_map = {} - levels = {} - -- match args.logtype: -- case "access": -- attr_map = ACCESS_ATTR_MAP -- levels = ACCESS_LEVELS -- case "error": -- attr_map = ERROR_ATTR_MAP -- levels = ERROR_LEVELS -- case "security": -- attr_map = SECURITY_ATTR_MAP -- case "audit": -- attr_map = AUDIT_ATTR_MAP -- case "auditfail": -- attr_map = AUDITFAIL_ATTR_MAP -+ if args.logtype == "access": -+ attr_map = ACCESS_ATTR_MAP -+ levels = ACCESS_LEVELS -+ elif args.logtype == "error": -+ attr_map = ERROR_ATTR_MAP -+ levels = ERROR_LEVELS -+ elif args.logtype == "security": -+ attr_map = SECURITY_ATTR_MAP -+ elif args.logtype == "audit": -+ attr_map = AUDIT_ATTR_MAP -+ elif args.logtype == "auditfail": -+ attr_map = AUDITFAIL_ATTR_MAP -+ else: -+ raise ValueError(f"Unknown logtype: {args.logtype}") - - sorted_results = [] - for attr, value in attrs.items(): --- -2.48.0 - diff --git a/SOURCES/0002-Issue-6489-After-log-rotation-refresh-the-FD-pointer.patch b/SOURCES/0002-Issue-6489-After-log-rotation-refresh-the-FD-pointer.patch deleted file mode 100644 index 42ca433..0000000 --- a/SOURCES/0002-Issue-6489-After-log-rotation-refresh-the-FD-pointer.patch +++ /dev/null @@ -1,146 +0,0 @@ -From 12f9bf81e834549db02b1243ecf769b511c9f69f Mon Sep 17 00:00:00 2001 -From: Mark Reynolds -Date: Fri, 31 Jan 2025 08:54:27 -0500 -Subject: [PATCH] Issue 6489 - After log rotation refresh the FD pointer - -Description: - -When flushing a log buffer we get a FD for log prior to checking if the -log should be rotated. If the log is rotated that FD reference is now -invalid, and it needs to be refrehed before proceeding - -Relates: https://github.com/389ds/389-ds-base/issues/6489 - -Reviewed by: tbordaz(Thanks!) ---- - .../suites/logging/log_flush_rotation_test.py | 81 +++++++++++++++++++ - ldap/servers/slapd/log.c | 18 +++++ - 2 files changed, 99 insertions(+) - create mode 100644 dirsrvtests/tests/suites/logging/log_flush_rotation_test.py - -diff --git a/dirsrvtests/tests/suites/logging/log_flush_rotation_test.py b/dirsrvtests/tests/suites/logging/log_flush_rotation_test.py -new file mode 100644 -index 000000000..b33a622e1 ---- /dev/null -+++ b/dirsrvtests/tests/suites/logging/log_flush_rotation_test.py -@@ -0,0 +1,81 @@ -+# --- BEGIN COPYRIGHT BLOCK --- -+# Copyright (C) 2025 Red Hat, Inc. -+# All rights reserved. -+# -+# License: GPL (version 3 or any later version). -+# See LICENSE for details. -+# --- END COPYRIGHT BLOCK --- -+# -+import os -+import logging -+import time -+import pytest -+from lib389._constants import DEFAULT_SUFFIX, PW_DM -+from lib389.tasks import ImportTask -+from lib389.idm.user import UserAccounts -+from lib389.topologies import topology_st as topo -+ -+ -+log = logging.getLogger(__name__) -+ -+ -+def test_log_flush_and_rotation_crash(topo): -+ """Make sure server does not crash whening flushing a buffer and rotating -+ the log at the same time -+ -+ :id: d4b0af2f-48b2-45f5-ae8b-f06f692c3133 -+ :setup: Standalone Instance -+ :steps: -+ 1. Enable all logs -+ 2. Enable log buffering for all logs -+ 3. Set rotation time unit to 1 minute -+ 4. Make sure server is still running after 1 minute -+ :expectedresults: -+ 1. Success -+ 2. Success -+ 3. Success -+ 4. Success -+ """ -+ -+ inst = topo.standalone -+ -+ # Enable logging and buffering -+ inst.config.set("nsslapd-auditlog-logging-enabled", "on") -+ inst.config.set("nsslapd-accesslog-logbuffering", "on") -+ inst.config.set("nsslapd-auditlog-logbuffering", "on") -+ inst.config.set("nsslapd-errorlog-logbuffering", "on") -+ inst.config.set("nsslapd-securitylog-logbuffering", "on") -+ -+ # Set rotation policy to trigger rotation asap -+ inst.config.set("nsslapd-accesslog-logrotationtimeunit", "minute") -+ inst.config.set("nsslapd-auditlog-logrotationtimeunit", "minute") -+ inst.config.set("nsslapd-errorlog-logrotationtimeunit", "minute") -+ inst.config.set("nsslapd-securitylog-logrotationtimeunit", "minute") -+ -+ # -+ # Performs ops to populate all the logs -+ # -+ # Access & audit log -+ users = UserAccounts(topo.standalone, DEFAULT_SUFFIX) -+ user = users.create_test_user() -+ user.set("userPassword", PW_DM) -+ # Security log -+ user.bind(PW_DM) -+ # Error log -+ import_task = ImportTask(inst) -+ import_task.import_suffix_from_ldif(ldiffile="/not/here", -+ suffix=DEFAULT_SUFFIX) -+ -+ # Wait a minute and make sure the server did not crash -+ log.info("Sleep until logs are flushed and rotated") -+ time.sleep(61) -+ -+ assert inst.status() -+ -+ -+if __name__ == '__main__': -+ # Run isolated -+ # -s for DEBUG mode -+ CURRENT_FILE = os.path.realpath(__file__) -+ pytest.main(["-s", CURRENT_FILE]) -+ -diff --git a/ldap/servers/slapd/log.c b/ldap/servers/slapd/log.c -index 8352f4abd..c1260a203 100644 ---- a/ldap/servers/slapd/log.c -+++ b/ldap/servers/slapd/log.c -@@ -6746,6 +6746,23 @@ log_refresh_state(int32_t log_type) - return 0; - } - } -+static LOGFD -+log_refresh_fd(int32_t log_type) -+{ -+ switch (log_type) { -+ case SLAPD_ACCESS_LOG: -+ return loginfo.log_access_fdes; -+ case SLAPD_SECURITY_LOG: -+ return loginfo.log_security_fdes; -+ case SLAPD_AUDIT_LOG: -+ return loginfo.log_audit_fdes; -+ case SLAPD_AUDITFAIL_LOG: -+ return loginfo.log_auditfail_fdes; -+ case SLAPD_ERROR_LOG: -+ return loginfo.log_error_fdes; -+ } -+ return NULL; -+} - - /* this function assumes the lock is already acquired */ - /* if sync_now is non-zero, data is flushed to physical storage */ -@@ -6857,6 +6874,7 @@ log_flush_buffer(LogBufferInfo *lbi, int log_type, int sync_now, int locked) - rotationtime_secs); - } - log_state = log_refresh_state(log_type); -+ fd = log_refresh_fd(log_type); - } - - if (log_state & LOGGING_NEED_TITLE) { --- -2.48.0 - diff --git a/SOURCES/0068-Issue-6838-lib389-replica.py-is-using-nonexistent-da.patch b/SOURCES/0002-Issue-6838-lib389-replica.py-is-using-nonexistent-da.patch similarity index 92% rename from SOURCES/0068-Issue-6838-lib389-replica.py-is-using-nonexistent-da.patch rename to SOURCES/0002-Issue-6838-lib389-replica.py-is-using-nonexistent-da.patch index ea88f70..5a04986 100644 --- a/SOURCES/0068-Issue-6838-lib389-replica.py-is-using-nonexistent-da.patch +++ b/SOURCES/0002-Issue-6838-lib389-replica.py-is-using-nonexistent-da.patch @@ -1,4 +1,4 @@ -From 70faa600c976e4f2d5486a7d680aae6edf7f20b4 Mon Sep 17 00:00:00 2001 +From a91c2641646824e44ef3b31a7eea238e3f55e5c3 Mon Sep 17 00:00:00 2001 From: Viktor Ashirov Date: Tue, 1 Jul 2025 12:44:04 +0200 Subject: [PATCH] Issue 6838 - lib389/replica.py is using nonexistent @@ -20,7 +20,7 @@ Reviewed by: @mreynolds389 (Thanks!) 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib389/lib389/replica.py b/src/lib389/lib389/replica.py -index 5183c41e9..5a33140be 100644 +index 8791f7f4c..78d6eb4eb 100644 --- a/src/lib389/lib389/replica.py +++ b/src/lib389/lib389/replica.py @@ -917,7 +917,7 @@ class RUV(object): diff --git a/SOURCES/0003-Issue-6374-nsslapd-mdb-max-dbs-autotuning-doesn-t-wo.patch b/SOURCES/0003-Issue-6374-nsslapd-mdb-max-dbs-autotuning-doesn-t-wo.patch deleted file mode 100644 index 44a0cb1..0000000 --- a/SOURCES/0003-Issue-6374-nsslapd-mdb-max-dbs-autotuning-doesn-t-wo.patch +++ /dev/null @@ -1,311 +0,0 @@ -From f077f9692d1625a1bc2dc6ee02a4fca71ee30b03 Mon Sep 17 00:00:00 2001 -From: progier389 -Date: Wed, 13 Nov 2024 15:31:35 +0100 -Subject: [PATCH] Issue 6374 - nsslapd-mdb-max-dbs autotuning doesn't work - properly (#6400) - -* Issue 6374 - nsslapd-mdb-max-dbs autotuning doesn't work properly - -Several issues: - -After restarting the server nsslapd-mdb-max-dbs may not be high enough to add a new backend -because the value computation is wrong. -dbscan fails to open the database if nsslapd-mdb-max-dbs has been increased. -dbscan crashes when closing the database (typically when using -S) -When starting the instance the nsslapd-mdb-max-dbs parameter is increased to ensure that a new backend may be added. -When dse.ldif path is not specified, the db environment is now open using the INFO.mdb data instead of using the default values. -synchronization between thread closure and database context destruction is hardened -Issue: #6374 - -Reviewed by: @tbordaz , @vashirov (Thanks!) - -(cherry picked from commit 56cd3389da608a3f6eeee58d20dffbcd286a8033) ---- - .../tests/suites/config/config_test.py | 86 +++++++++++++++++++ - ldap/servers/slapd/back-ldbm/back-ldbm.h | 2 + - .../slapd/back-ldbm/db-mdb/mdb_config.c | 17 ++-- - .../back-ldbm/db-mdb/mdb_import_threads.c | 9 +- - .../slapd/back-ldbm/db-mdb/mdb_instance.c | 8 ++ - ldap/servers/slapd/back-ldbm/dbimpl.c | 2 +- - ldap/servers/slapd/back-ldbm/import.c | 14 ++- - 7 files changed, 128 insertions(+), 10 deletions(-) - -diff --git a/dirsrvtests/tests/suites/config/config_test.py b/dirsrvtests/tests/suites/config/config_test.py -index 57b155af7..34dac36b6 100644 ---- a/dirsrvtests/tests/suites/config/config_test.py -+++ b/dirsrvtests/tests/suites/config/config_test.py -@@ -17,6 +17,7 @@ from lib389.topologies import topology_m2, topology_st as topo - from lib389.utils import * - from lib389._constants import DN_CONFIG, DEFAULT_SUFFIX, DEFAULT_BENAME - from lib389._mapped_object import DSLdapObjects -+from lib389.agreement import Agreements - from lib389.cli_base import FakeArgs - from lib389.cli_conf.backend import db_config_set - from lib389.idm.user import UserAccounts, TEST_USER_PROPERTIES -@@ -27,6 +28,8 @@ from lib389.cos import CosPointerDefinitions, CosTemplates - from lib389.backend import Backends, DatabaseConfig - from lib389.monitor import MonitorLDBM, Monitor - from lib389.plugins import ReferentialIntegrityPlugin -+from lib389.replica import BootstrapReplicationManager, Replicas -+from lib389.passwd import password_generate - - pytestmark = pytest.mark.tier0 - -@@ -36,6 +39,8 @@ PSTACK_CMD = '/usr/bin/pstack' - logging.getLogger(__name__).setLevel(logging.INFO) - log = logging.getLogger(__name__) - -+DEBUGGING = os.getenv("DEBUGGING", default=False) -+ - @pytest.fixture(scope="module") - def big_file(): - TEMP_BIG_FILE = '' -@@ -811,6 +816,87 @@ def test_numlisteners_limit(topo): - assert numlisteners[0] == '4' - - -+def bootstrap_replication(inst_from, inst_to, creds): -+ manager = BootstrapReplicationManager(inst_to) -+ rdn_val = 'replication manager' -+ if manager.exists(): -+ manager.delete() -+ manager.create(properties={ -+ 'cn': rdn_val, -+ 'uid': rdn_val, -+ 'userPassword': creds -+ }) -+ for replica in Replicas(inst_to).list(): -+ replica.remove_all('nsDS5ReplicaBindDNGroup') -+ replica.replace('nsDS5ReplicaBindDN', manager.dn) -+ for agmt in Agreements(inst_from).list(): -+ agmt.replace('nsDS5ReplicaBindDN', manager.dn) -+ agmt.replace('nsDS5ReplicaCredentials', creds) -+ -+ -+@pytest.mark.skipif(get_default_db_lib() != "mdb", reason="This test requires lmdb") -+def test_lmdb_autotuned_maxdbs(topology_m2, request): -+ """Verify that after restart, nsslapd-mdb-max-dbs is large enough to add a new backend. -+ -+ :id: 0272d432-9080-11ef-8f40-482ae39447e5 -+ :setup: Two suppliers configuration -+ :steps: -+ 1. loop 20 times -+ 3. In 1 loop: restart instance -+ 3. In 1 loop: add a new backend -+ 4. In 1 loop: check that instance is still alive -+ :expectedresults: -+ 1. Success -+ 2. Success -+ 3. Success -+ 4. Success -+ """ -+ -+ s1 = topology_m2.ms["supplier1"] -+ s2 = topology_m2.ms["supplier2"] -+ -+ backends = Backends(s1) -+ db_config = DatabaseConfig(s1) -+ # Generate the teardown finalizer -+ belist = [] -+ creds=password_generate() -+ bootstrap_replication(s2, s1, creds) -+ bootstrap_replication(s1, s2, creds) -+ -+ def fin(): -+ s1.start() -+ for be in belist: -+ be.delete() -+ -+ if not DEBUGGING: -+ request.addfinalizer(fin) -+ -+ # 1. Set autotuning (off-line to be able to decrease the value) -+ s1.stop() -+ dse_ldif = DSEldif(s1) -+ dse_ldif.replace(db_config.dn, 'nsslapd-mdb-max-dbs', '0') -+ os.remove(f'{s1.dbdir}/data.mdb') -+ s1.start() -+ -+ # 2. Reinitialize the db: -+ log.info("Bulk import...") -+ agmt = Agreements(s2).list()[0] -+ agmt.begin_reinit() -+ (done, error) = agmt.wait_reinit() -+ log.info(f'Bulk importresult is ({done}, {error})') -+ assert done is True -+ assert error is False -+ -+ # 3. loop 20 times -+ for idx in range(20): -+ s1.restart() -+ log.info(f'Adding backend test{idx}') -+ belist.append(backends.create(properties={'cn': f'test{idx}', -+ 'nsslapd-suffix': f'dc=test{idx}'})) -+ assert s1.status() -+ -+ -+ - if __name__ == '__main__': - # Run isolated - # -s for DEBUG mode -diff --git a/ldap/servers/slapd/back-ldbm/back-ldbm.h b/ldap/servers/slapd/back-ldbm/back-ldbm.h -index 8fea63e35..35d0ece04 100644 ---- a/ldap/servers/slapd/back-ldbm/back-ldbm.h -+++ b/ldap/servers/slapd/back-ldbm/back-ldbm.h -@@ -896,4 +896,6 @@ typedef struct _back_search_result_set - ((L)->size == (R)->size && !memcmp((L)->data, (R)->data, (L)->size)) - - typedef int backend_implement_init_fn(struct ldbminfo *li, config_info *config_array); -+ -+pthread_mutex_t *get_import_ctx_mutex(); - #endif /* _back_ldbm_h_ */ -diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_config.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_config.c -index 351f54037..1f7b71442 100644 ---- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_config.c -+++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_config.c -@@ -83,7 +83,7 @@ dbmdb_compute_limits(struct ldbminfo *li) - uint64_t total_space = 0; - uint64_t avail_space = 0; - uint64_t cur_dbsize = 0; -- int nbchangelogs = 0; -+ int nbvlvs = 0; - int nbsuffixes = 0; - int nbindexes = 0; - int nbagmt = 0; -@@ -99,8 +99,8 @@ dbmdb_compute_limits(struct ldbminfo *li) - * But some tunable may be autotuned. - */ - if (dbmdb_count_config_entries("(objectClass=nsMappingTree)", &nbsuffixes) || -- dbmdb_count_config_entries("(objectClass=nsIndex)", &nbsuffixes) || -- dbmdb_count_config_entries("(&(objectClass=nsds5Replica)(nsDS5Flags=1))", &nbchangelogs) || -+ dbmdb_count_config_entries("(objectClass=nsIndex)", &nbindexes) || -+ dbmdb_count_config_entries("(objectClass=vlvIndex)", &nbvlvs) || - dbmdb_count_config_entries("(objectClass=nsds5replicationagreement)", &nbagmt)) { - /* error message is already logged */ - return 1; -@@ -120,8 +120,15 @@ dbmdb_compute_limits(struct ldbminfo *li) - - info->pagesize = sysconf(_SC_PAGE_SIZE); - limits->min_readers = config_get_threadnumber() + nbagmt + DBMDB_READERS_MARGIN; -- /* Default indexes are counted in "nbindexes" so we should always have enough resource to add 1 new suffix */ -- limits->min_dbs = nbsuffixes + nbindexes + nbchangelogs + DBMDB_DBS_MARGIN; -+ /* -+ * For each suffix there are 4 databases instances: -+ * long-entryrdn, replication_changelog, id2entry and ancestorid -+ * then the indexes and the vlv and vlv cache -+ * -+ * Default indexes are counted in "nbindexes" so we should always have enough -+ * resource to add 1 new suffix -+ */ -+ limits->min_dbs = 4*nbsuffixes + nbindexes + 2*nbvlvs + DBMDB_DBS_MARGIN; - - total_space = ((uint64_t)(buf.f_blocks)) * ((uint64_t)(buf.f_bsize)); - avail_space = ((uint64_t)(buf.f_bavail)) * ((uint64_t)(buf.f_bsize)); -diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c -index 8c879da31..707a110c5 100644 ---- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c -+++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c -@@ -4312,9 +4312,12 @@ dbmdb_import_init_writer(ImportJob *job, ImportRole_t role) - void - dbmdb_free_import_ctx(ImportJob *job) - { -- if (job->writer_ctx) { -- ImportCtx_t *ctx = job->writer_ctx; -- job->writer_ctx = NULL; -+ ImportCtx_t *ctx = NULL; -+ pthread_mutex_lock(get_import_ctx_mutex()); -+ ctx = job->writer_ctx; -+ job->writer_ctx = NULL; -+ pthread_mutex_unlock(get_import_ctx_mutex()); -+ if (ctx) { - pthread_mutex_destroy(&ctx->workerq.mutex); - pthread_cond_destroy(&ctx->workerq.cv); - slapi_ch_free((void**)&ctx->workerq.slots); -diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_instance.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_instance.c -index 6386ecf06..05f1e348d 100644 ---- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_instance.c -+++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_instance.c -@@ -287,6 +287,13 @@ int add_dbi(dbi_open_ctx_t *octx, backend *be, const char *fname, int flags) - slapi_ch_free((void**)&treekey.dbname); - return octx->rc; - } -+ if (treekey.dbi >= ctx->dsecfg.max_dbs) { -+ octx->rc = MDB_DBS_FULL; -+ slapi_log_err(SLAPI_LOG_ERR, "add_dbi", "Failed to open database instance %s slots: %d/%d. Error is %d: %s.\n", -+ treekey.dbname, treekey.dbi, ctx->dsecfg.max_dbs, octx->rc, mdb_strerror(octx->rc)); -+ slapi_ch_free((void**)&treekey.dbname); -+ return octx->rc; -+ } - if (octx->ai && octx->ai->ai_key_cmp_fn) { - octx->rc = dbmdb_update_dbi_cmp_fn(ctx, &treekey, octx->ai->ai_key_cmp_fn, octx->txn); - if (octx->rc) { -@@ -689,6 +696,7 @@ int dbmdb_make_env(dbmdb_ctx_t *ctx, int readOnly, mdb_mode_t mode) - rc = dbmdb_write_infofile(ctx); - } else { - /* No Config ==> read it from info file */ -+ ctx->dsecfg = ctx->startcfg; - } - if (rc) { - return rc; -diff --git a/ldap/servers/slapd/back-ldbm/dbimpl.c b/ldap/servers/slapd/back-ldbm/dbimpl.c -index da4a4548e..42f4a0718 100644 ---- a/ldap/servers/slapd/back-ldbm/dbimpl.c -+++ b/ldap/servers/slapd/back-ldbm/dbimpl.c -@@ -463,7 +463,7 @@ int dblayer_show_statistics(const char *dbimpl_name, const char *dbhome, FILE *f - li->li_plugin = be->be_database; - li->li_plugin->plg_name = (char*) "back-ldbm-dbimpl"; - li->li_plugin->plg_libpath = (char*) "libback-ldbm"; -- li->li_directory = (char*)dbhome; -+ li->li_directory = get_li_directory(dbhome); - - /* Initialize database plugin */ - rc = dbimpl_setup(li, dbimpl_name); -diff --git a/ldap/servers/slapd/back-ldbm/import.c b/ldap/servers/slapd/back-ldbm/import.c -index 2bb8cb581..30ec462fa 100644 ---- a/ldap/servers/slapd/back-ldbm/import.c -+++ b/ldap/servers/slapd/back-ldbm/import.c -@@ -27,6 +27,9 @@ - #define NEED_DN_NORM_SP -25 - #define NEED_DN_NORM_BT -26 - -+/* Protect against import context destruction */ -+static pthread_mutex_t import_ctx_mutex = PTHREAD_MUTEX_INITIALIZER; -+ - - /********** routines to manipulate the entry fifo **********/ - -@@ -143,6 +146,14 @@ ldbm_back_wire_import(Slapi_PBlock *pb) - - /* Threads management */ - -+/* Return the mutex that protects against import context destruction */ -+pthread_mutex_t * -+get_import_ctx_mutex() -+{ -+ return &import_ctx_mutex; -+} -+ -+ - /* tell all the threads to abort */ - void - import_abort_all(ImportJob *job, int wait_for_them) -@@ -151,7 +162,7 @@ import_abort_all(ImportJob *job, int wait_for_them) - - /* tell all the worker threads to abort */ - job->flags |= FLAG_ABORT; -- -+ pthread_mutex_lock(&import_ctx_mutex); - for (worker = job->worker_list; worker; worker = worker->next) - worker->command = ABORT; - -@@ -167,6 +178,7 @@ import_abort_all(ImportJob *job, int wait_for_them) - } - } - } -+ pthread_mutex_unlock(&import_ctx_mutex); - } - - --- -2.48.0 - diff --git a/SOURCES/0003-Issue-6680-instance-read-only-mode-is-broken-6681.patch b/SOURCES/0003-Issue-6680-instance-read-only-mode-is-broken-6681.patch new file mode 100644 index 0000000..ac0af7b --- /dev/null +++ b/SOURCES/0003-Issue-6680-instance-read-only-mode-is-broken-6681.patch @@ -0,0 +1,351 @@ +From 4eef34cec551582d1de23266bc6cde84a7e38b5d Mon Sep 17 00:00:00 2001 +From: progier389 +Date: Mon, 24 Mar 2025 10:43:21 +0100 +Subject: [PATCH] Issue 6680 - instance read-only mode is broken (#6681) + +Read only mode is broken because some plugins fails to starts as they are not able to create/updates some entries in the dse backend. +Solution is to allow interrnal operations to write in dse.backend but not modify the dse.ldif (except for the special case when trying to modify nsslapd-readonly flags (to be allowed to set/unset the readonly mode) + +Issue: #6680 + +Reviewed by: @droideck, @tbordaz (thanks!) +--- + .../tests/suites/config/regression_test.py | 60 ++++++++++ + ldap/servers/slapd/dse.c | 110 +++++++++++++++++- + ldap/servers/slapd/mapping_tree.c | 90 ++++++++++++-- + 3 files changed, 247 insertions(+), 13 deletions(-) + +diff --git a/dirsrvtests/tests/suites/config/regression_test.py b/dirsrvtests/tests/suites/config/regression_test.py +index 8dbba8cd2..6e313ac8a 100644 +--- a/dirsrvtests/tests/suites/config/regression_test.py ++++ b/dirsrvtests/tests/suites/config/regression_test.py +@@ -28,6 +28,8 @@ CUSTOM_MEM = '9100100100' + IDLETIMEOUT = 5 + DN_TEST_USER = f'uid={TEST_USER_PROPERTIES["uid"]},ou=People,{DEFAULT_SUFFIX}' + ++RO_ATTR = 'nsslapd-readonly' ++ + + @pytest.fixture(scope="module") + def idletimeout_topo(topo, request): +@@ -190,3 +192,61 @@ def test_idletimeout(idletimeout_topo, dn, expected_result): + except ldap.SERVER_DOWN: + result = True + assert expected_result == result ++ ++ ++def test_instance_readonly_mode(topo): ++ """Check that readonly mode is supported ++ ++ :id: 34d2e28e-04d7-11f0-b0cf-482ae39447e5 ++ :setup: Standalone Instance ++ :steps: ++ 1. Set readonly mode ++ 2. Stop the instance ++ 3. Get dse.ldif modification time ++ 4. Start the instance ++ 5. Get dse.ldif modification time ++ 6. Check that modification time has not changed ++ 7. Check that readonly mode is set ++ 8. Try to modify another config attribute ++ 9. Unset readonly mode ++ 10. Restart the instance ++ 11. Check that modification time has not changed ++ 12. Check that modification time has changed ++ 13. Check that readonly mode is unset ++ 14. Try to modify another config attribute ++ :expectedresults: ++ 1. Success ++ 2. Success ++ 3. Success ++ 4. Success ++ 5. Success ++ 6. Success ++ 7. Success ++ 8. Should get ldap.UNWILLING_TO_PERFORM exception ++ 9. Success ++ 10. Success ++ 11. Success ++ 12. Success ++ 13. Success ++ 14. Success ++ """ ++ ++ inst = topo.standalone ++ dse_path = f'{topo.standalone.get_config_dir()}/dse.ldif' ++ inst.config.replace(RO_ATTR, 'on') ++ inst.stop() ++ dse_mtime = os.stat(dse_path).st_mtime ++ inst.start() ++ new_dse_mtime = os.stat(dse_path).st_mtime ++ assert dse_mtime == new_dse_mtime ++ assert inst.config.get_attr_val_utf8(RO_ATTR) == "on" ++ attr = 'nsslapd-errorlog-maxlogsize' ++ val = inst.config.get_attr_val_utf8(attr) ++ with pytest.raises(ldap.UNWILLING_TO_PERFORM): ++ inst.config.replace(attr, val) ++ inst.config.replace(RO_ATTR, 'off') ++ inst.restart() ++ new_dse_mtime = os.stat(dse_path).st_mtime ++ assert dse_mtime != new_dse_mtime ++ assert inst.config.get_attr_val_utf8(RO_ATTR) == "off" ++ inst.config.replace(attr, val) +diff --git a/ldap/servers/slapd/dse.c b/ldap/servers/slapd/dse.c +index e3157c1ce..0f266f0d7 100644 +--- a/ldap/servers/slapd/dse.c ++++ b/ldap/servers/slapd/dse.c +@@ -1031,6 +1031,114 @@ dse_check_for_readonly_error(Slapi_PBlock *pb, struct dse *pdse) + return rc; /* no error */ + } + ++/* Trivial wrapper around slapi_re_comp to handle errors */ ++static Slapi_Regex * ++recomp(const char *regexp) ++{ ++ char *error = ""; ++ Slapi_Regex *re = slapi_re_comp(regexp, &error); ++ if (re == NULL) { ++ slapi_log_err(SLAPI_LOG_ERR, "is_readonly_set_in_dse", ++ "Failed to compile '%s' regular expression. Error is %s\n", ++ regexp, error); ++ } ++ slapi_ch_free_string(&error); ++ return re; ++} ++ ++/* ++ * Check if "nsslapd-readonly: on" is in cn-config in dse.ldif file ++ * ( If the flag is set in memory but on in the file, the file should ++ * be written (to let dsconf able to modify the nsslapd-readonly flag) ++ */ ++static bool ++is_readonly_set_in_dse(const char *dsename) ++{ ++ Slapi_Regex *re_config = recomp("^dn:\\s+cn=config\\s*$"); ++ Slapi_Regex *re_isro = recomp("^" CONFIG_READONLY_ATTRIBUTE ":\\s+on\\s*$"); ++ Slapi_Regex *re_eoe = recomp("^$"); ++ bool isconfigentry = false; ++ bool isro = false; ++ FILE *fdse = NULL; ++ char line[128]; ++ char *error = NULL; ++ const char *regexp = ""; ++ ++ if (!dsename) { ++ goto done; ++ } ++ if (re_config == NULL || re_isro == NULL || re_eoe == NULL) { ++ goto done; ++ } ++ fdse = fopen(dsename, "r"); ++ if (fdse == NULL) { ++ /* No dse file, we need to write it */ ++ goto done; ++ } ++ while (fgets(line, (sizeof line), fdse)) { ++ /* Convert the read line to lowercase */ ++ for (char *pt=line; *pt; pt++) { ++ if (isalpha(*pt)) { ++ *pt = tolower(*pt); ++ } ++ } ++ if (slapi_re_exec_nt(re_config, line)) { ++ isconfigentry = true; ++ } ++ if (slapi_re_exec_nt(re_eoe, line)) { ++ if (isconfigentry) { ++ /* End of config entry ==> readonly flag is not set */ ++ break; ++ } ++ } ++ if (isconfigentry && slapi_re_exec_nt(re_isro, line)) { ++ /* Found readonly flag */ ++ isro = true; ++ break; ++ } ++ } ++done: ++ if (fdse) { ++ (void) fclose(fdse); ++ } ++ slapi_re_free(re_config); ++ slapi_re_free(re_isro); ++ slapi_re_free(re_eoe); ++ return isro; ++} ++ ++/* ++ * Check if dse.ldif can be written ++ * Beware that even in read-only mode dse.ldif file ++ * should still be written to change the nsslapd-readonly value ++ */ ++static bool ++check_if_readonly(struct dse *pdse) ++{ ++ static bool ro = false; ++ ++ if (pdse->dse_filename == NULL) { ++ return false; ++ } ++ if (!slapi_config_get_readonly()) { ++ ro = false; ++ return ro; ++ } ++ if (ro) { ++ /* read-only mode and dse is up to date ==> Do not modify it. */ ++ return ro; ++ } ++ /* First attempt to write the dse.ldif since readonly mode is enabled. ++ * Lets check if "nsslapd-readonly: on" is in cn=config entry ++ * and allow to write the dse.ldif if it is the case ++ */ ++ if (is_readonly_set_in_dse(pdse->dse_filename)) { ++ /* read-only mode and dse is up to date ==> Do not modify it. */ ++ ro = true; ++ } ++ /* Read only mode but nsslapd-readonly value is not up to date. */ ++ return ro; ++} + + /* + * Write the AVL tree of entries back to the LDIF file. +@@ -1041,7 +1149,7 @@ dse_write_file_nolock(struct dse *pdse) + FPWrapper fpw; + int rc = 0; + +- if (dont_ever_write_dse_files) { ++ if (dont_ever_write_dse_files || check_if_readonly(pdse)) { + return rc; + } + +diff --git a/ldap/servers/slapd/mapping_tree.c b/ldap/servers/slapd/mapping_tree.c +index dd7b1af37..e51b3b948 100644 +--- a/ldap/servers/slapd/mapping_tree.c ++++ b/ldap/servers/slapd/mapping_tree.c +@@ -2058,6 +2058,82 @@ slapi_dn_write_needs_referral(Slapi_DN *target_sdn, Slapi_Entry **referral) + done: + return ret; + } ++ ++/* ++ * This function dermines if an operation should be rejected ++ * when readonly mode is enabled. ++ * All operations are rejected except: ++ * - if they target a private backend that is not the DSE backend ++ * - if they are read operations (SEARCH, COMPARE, BIND, UNBIND) ++ * - if they are tombstone fixup operation (i.e: tombstone purging) ++ * - if they are internal operation that targets the DSE backend. ++ * (change will then be done in memory but not written in dse.ldif) ++ * - single modify modify operation on cn=config changing nsslapd-readonly ++ * (to allow "dsconf instance config replace nsslapd-readonly=xxx", ++ change will then be done both in memory and in dse.ldif) ++ */ ++static bool ++is_rejected_op(Slapi_Operation *op, Slapi_Backend *be) ++{ ++ const char *betype = slapi_be_gettype(be); ++ unsigned long be_op_type = operation_get_type(op); ++ int isdse = (betype && strcmp(betype, "DSE") == 0); ++ ++ /* Private backend operations are not rejected */ ++ ++ /* Read operations are not rejected */ ++ if ((be_op_type == SLAPI_OPERATION_SEARCH) || ++ (be_op_type == SLAPI_OPERATION_COMPARE) || ++ (be_op_type == SLAPI_OPERATION_BIND) || ++ (be_op_type == SLAPI_OPERATION_UNBIND)) { ++ return false; ++ } ++ ++ /* Tombstone fixup are not rejected. */ ++ if (operation_is_flag_set(op, OP_FLAG_TOMBSTONE_FIXUP)) { ++ return false; ++ } ++ ++ if (!isdse) { ++ /* write operation on readonly backends are rejected */ ++ if (be->be_readonly) { ++ return true; ++ } ++ ++ /* private backends (DSE excepted) are not backed on files ++ * so write operations are accepted. ++ * but other operations (not on DSE) are rejected. ++ */ ++ if (slapi_be_private(be)) { ++ return false; ++ } else { ++ return true; ++ } ++ } ++ ++ /* Allowed operations in dse backend are: ++ * - the internal operations and ++ * - modify of nsslapd-readonly flag in cn=config ++ */ ++ ++ if (operation_is_flag_set(op, OP_FLAG_INTERNAL)) { ++ return false; ++ } ++ if (be_op_type == SLAPI_OPERATION_MODIFY) { ++ Slapi_DN *sdn = operation_get_target_spec(op); ++ Slapi_DN config = {0}; ++ LDAPMod **mods = op->o_params.p.p_modify.modify_mods; ++ slapi_sdn_init_ndn_byref(&config, SLAPD_CONFIG_DN); ++ if (mods && mods[0] && !mods[1] && ++ slapi_sdn_compare(sdn, &config) == 0 && ++ strcasecmp(mods[0]->mod_type, CONFIG_READONLY_ATTRIBUTE) == 0) { ++ /* Single modifier impacting nsslapd-readonly */ ++ return false; ++ } ++ } ++ return true; ++} ++ + /* + * Description: + * The reason we have a mapping tree. This function selects a backend or +@@ -2095,7 +2171,6 @@ slapi_mapping_tree_select(Slapi_PBlock *pb, Slapi_Backend **be, Slapi_Entry **re + int ret; + int scope = LDAP_SCOPE_BASE; + int op_type; +- int fixup = 0; + + if (slapi_atomic_load_32(&mapping_tree_freed, __ATOMIC_RELAXED)) { + /* shutdown detected */ +@@ -2112,7 +2187,6 @@ slapi_mapping_tree_select(Slapi_PBlock *pb, Slapi_Backend **be, Slapi_Entry **re + + /* Get the target for this op */ + target_sdn = operation_get_target_spec(op); +- fixup = operation_is_flag_set(op, OP_FLAG_TOMBSTONE_FIXUP); + + PR_ASSERT(mapping_tree_inited == 1); + +@@ -2161,22 +2235,14 @@ slapi_mapping_tree_select(Slapi_PBlock *pb, Slapi_Backend **be, Slapi_Entry **re + * or if the whole server is readonly AND backend is public (!private) + */ + if ((ret == LDAP_SUCCESS) && *be && !be_isdeleted(*be) && +- (((*be)->be_readonly && !fixup) || +- ((slapi_config_get_readonly() && !fixup) && +- !slapi_be_private(*be)))) { +- unsigned long be_op_type = operation_get_type(op); +- +- if ((be_op_type != SLAPI_OPERATION_SEARCH) && +- (be_op_type != SLAPI_OPERATION_COMPARE) && +- (be_op_type != SLAPI_OPERATION_BIND) && +- (be_op_type != SLAPI_OPERATION_UNBIND)) { ++ ((*be)->be_readonly || slapi_config_get_readonly()) && ++ is_rejected_op(op, *be)) { + if (errorbuf) { + PL_strncpyz(errorbuf, slapi_config_get_readonly() ? "Server is read-only" : "database is read-only", ebuflen); + } + ret = LDAP_UNWILLING_TO_PERFORM; + slapi_be_Unlock(*be); + *be = NULL; +- } + } + + return ret; +-- +2.49.0 + diff --git a/SOURCES/0004-Issue-6090-Fix-dbscan-options-and-man-pages-6315.patch b/SOURCES/0004-Issue-6090-Fix-dbscan-options-and-man-pages-6315.patch deleted file mode 100644 index 648eea5..0000000 --- a/SOURCES/0004-Issue-6090-Fix-dbscan-options-and-man-pages-6315.patch +++ /dev/null @@ -1,894 +0,0 @@ -From b53faa9e7289383bbc02fc260b1b34958a317fdd Mon Sep 17 00:00:00 2001 -From: progier389 -Date: Fri, 6 Sep 2024 14:45:06 +0200 -Subject: [PATCH] Issue 6090 - Fix dbscan options and man pages (#6315) - -* Issue 6090 - Fix dbscan options and man pages - -dbscan -d option is dangerously confusing as it removes a database instance while in db_stat it identify the database -(cf issue #5609 ). -This fix implements long options in dbscan, rename -d in --remove, and requires a new --do-it option for action that change the database content. -The fix should also align both the usage and the dbscan man page with the new set of options - -Issue: #6090 - -Reviewed by: @tbordaz, @droideck (Thanks!) - -(cherry picked from commit 25e1d16887ebd299dfe0088080b9ee0deec1e41f) ---- - dirsrvtests/tests/suites/clu/dbscan_test.py | 253 ++++++++++++++++++ - .../tests/suites/clu/repl_monitor_test.py | 4 +- - .../slapd/back-ldbm/db-bdb/bdb_layer.c | 12 +- - ldap/servers/slapd/back-ldbm/dbimpl.c | 50 +++- - ldap/servers/slapd/tools/dbscan.c | 182 ++++++++++--- - man/man1/dbscan.1 | 74 +++-- - src/lib389/lib389/__init__.py | 9 +- - src/lib389/lib389/cli_ctl/dblib.py | 13 +- - 8 files changed, 531 insertions(+), 66 deletions(-) - create mode 100644 dirsrvtests/tests/suites/clu/dbscan_test.py - -diff --git a/dirsrvtests/tests/suites/clu/dbscan_test.py b/dirsrvtests/tests/suites/clu/dbscan_test.py -new file mode 100644 -index 000000000..2c9a9651a ---- /dev/null -+++ b/dirsrvtests/tests/suites/clu/dbscan_test.py -@@ -0,0 +1,253 @@ -+# --- BEGIN COPYRIGHT BLOCK --- -+# Copyright (C) 2024 Red Hat, Inc. -+# All rights reserved. -+# -+# License: GPL (version 3 or any later version). -+# See LICENSE for details. -+# --- END COPYRIGHT BLOCK --- -+# -+import logging -+import os -+import pytest -+import re -+import subprocess -+import sys -+ -+from lib389 import DirSrv -+from lib389._constants import DBSCAN -+from lib389.topologies import topology_m2 as topo_m2 -+from difflib import context_diff -+ -+pytestmark = pytest.mark.tier0 -+ -+logging.getLogger(__name__).setLevel(logging.DEBUG) -+log = logging.getLogger(__name__) -+ -+DEBUGGING = os.getenv("DEBUGGING", default=False) -+ -+ -+class CalledProcessUnexpectedReturnCode(subprocess.CalledProcessError): -+ def __init__(self, result, expected_rc): -+ super().__init__(cmd=result.args, returncode=result.returncode, output=result.stdout, stderr=result.stderr) -+ self.expected_rc = expected_rc -+ self.result = result -+ -+ def __str__(self): -+ return f'Command {self.result.args} returned {self.result.returncode} instead of {self.expected_rc}' -+ -+ -+class DbscanPaths: -+ @staticmethod -+ def list_instances(inst, dblib, dbhome): -+ # compute db instance pathnames -+ instances = dbscan(['-D', dblib, '-L', dbhome], inst=inst).stdout -+ dbis = [] -+ if dblib == 'bdb': -+ pattern = r'^ (.*) $' -+ prefix = f'{dbhome}/' -+ else: -+ pattern = r'^ (.*) flags:' -+ prefix = f'' -+ for match in re.finditer(pattern, instances, flags=re.MULTILINE): -+ dbis.append(prefix+match.group(1)) -+ return dbis -+ -+ @staticmethod -+ def list_options(inst): -+ # compute supported options -+ options = [] -+ usage = dbscan(['-h'], inst=inst, expected_rc=None).stdout -+ pattern = r'^\s+(?:(-[^-,]+), +)?(--[^ ]+).*$' -+ for match in re.finditer(pattern, usage, flags=re.MULTILINE): -+ for idx in range(1,3): -+ if match.group(idx) is not None: -+ options.append(match.group(idx)) -+ return options -+ -+ def __init__(self, inst): -+ dblib = inst.get_db_lib() -+ dbhome = inst.ds_paths.db_home_dir -+ self.inst = inst -+ self.dblib = dblib -+ self.dbhome = dbhome -+ self.options = DbscanPaths.list_options(inst) -+ self.dbis = DbscanPaths.list_instances(inst, dblib, dbhome) -+ self.ldif_dir = inst.ds_paths.ldif_dir -+ -+ def get_dbi(self, attr, backend='userroot'): -+ for dbi in self.dbis: -+ if f'{backend}/{attr}.'.lower() in dbi.lower(): -+ return dbi -+ raise KeyError(f'Unknown dbi {backend}/{attr}') -+ -+ def __repr__(self): -+ attrs = ['inst', 'dblib', 'dbhome', 'ldif_dir', 'options', 'dbis' ] -+ res = ", ".join(map(lambda x: f'{x}={self.__dict__[x]}', attrs)) -+ return f'DbscanPaths({res})' -+ -+ -+def dbscan(args, inst=None, expected_rc=0): -+ if inst is None: -+ prefix = os.environ.get('PREFIX', "") -+ prog = f'{prefix}/bin/dbscan' -+ else: -+ prog = os.path.join(inst.ds_paths.bin_dir, DBSCAN) -+ args.insert(0, prog) -+ output = subprocess.run(args, encoding='utf-8', stdout=subprocess.PIPE, stderr=subprocess.STDOUT) -+ log.debug(f'{args} result is {output.returncode} output is {output.stdout}') -+ if expected_rc is not None and expected_rc != output.returncode: -+ raise CalledProcessUnexpectedReturnCode(output, expected_rc) -+ return output -+ -+ -+def log_export_file(filename): -+ with open(filename, 'r') as file: -+ log.debug(f'=========== Dump of {filename} ================') -+ for line in file: -+ log.debug(line.rstrip('\n')) -+ log.debug(f'=========== Enf of {filename} =================') -+ -+ -+@pytest.fixture(scope='module') -+def paths(topo_m2, request): -+ inst = topo_m2.ms["supplier1"] -+ if sys.version_info < (3,5): -+ pytest.skip('requires python version >= 3.5') -+ paths = DbscanPaths(inst) -+ if '--do-it' not in paths.options: -+ pytest.skip('Not supported with this dbscan version') -+ inst.stop() -+ return paths -+ -+ -+def test_dbscan_destructive_actions(paths, request): -+ """Test that dbscan remove/import actions -+ -+ :id: f40b0c42-660a-11ef-9544-083a88554478 -+ :setup: Stopped standalone instance -+ :steps: -+ 1. Export cn instance with dbscan -+ 2. Run dbscan --remove ... -+ 3. Check the error message about missing --do-it -+ 4. Check that cn instance is still present -+ 5. Run dbscan -I import_file ... -+ 6. Check it was properly imported -+ 7. Check that cn instance is still present -+ 8. Run dbscan --remove ... --doit -+ 9. Check the error message about missing --do-it -+ 10. Check that cn instance is still present -+ 11. Run dbscan -I import_file ... --do-it -+ 12. Check it was properly imported -+ 13. Check that cn instance is still present -+ 14. Export again the database -+ 15. Check that content of export files are the same -+ :expectedresults: -+ 1. Success -+ 2. dbscan return code should be 1 (error) -+ 3. Error message should be present -+ 4. cn instance should be present -+ 5. dbscan return code should be 1 (error) -+ 6. Error message should be present -+ 7. cn instance should be present -+ 8. dbscan return code should be 0 (success) -+ 9. Error message should not be present -+ 10. cn instance should not be present -+ 11. dbscan return code should be 0 (success) -+ 12. Error message should not be present -+ 13. cn instance should be present -+ 14. Success -+ 15. Export files content should be the same -+ """ -+ -+ # Export cn instance with dbscan -+ export_cn = f'{paths.ldif_dir}/dbscan_cn.data' -+ export_cn2 = f'{paths.ldif_dir}/dbscan_cn2.data' -+ cndbi = paths.get_dbi('replication_changelog') -+ inst = paths.inst -+ dblib = paths.dblib -+ exportok = False -+ def fin(): -+ if os.path.exists(export_cn): -+ # Restore cn if it was exported successfully but does not exists any more -+ if exportok and cndbi not in DbscanPaths.list_instances(inst, dblib, paths.dbhome): -+ dbscan(['-D', dblib, '-f', cndbi, '-I', export_cn, '--do-it'], inst=inst) -+ if not DEBUGGING: -+ os.remove(export_cn) -+ if os.path.exists(export_cn) and not DEBUGGING: -+ os.remove(export_cn2) -+ -+ fin() -+ request.addfinalizer(fin) -+ dbscan(['-D', dblib, '-f', cndbi, '-X', export_cn], inst=inst) -+ exportok = True -+ -+ expected_msg = "without specifying '--do-it' parameter." -+ -+ # Run dbscan --remove ... -+ result = dbscan(['-D', paths.dblib, '--remove', '-f', cndbi], -+ inst=paths.inst, expected_rc=1) -+ -+ # Check the error message about missing --do-it -+ assert expected_msg in result.stdout -+ -+ # Check that cn instance is still present -+ curdbis = DbscanPaths.list_instances(paths.inst, paths.dblib, paths.dbhome) -+ assert cndbi in curdbis -+ -+ # Run dbscan -I import_file ... -+ result = dbscan(['-D', paths.dblib, '-f', cndbi, '-I', export_cn], -+ inst=paths.inst, expected_rc=1) -+ -+ # Check the error message about missing --do-it -+ assert expected_msg in result.stdout -+ -+ # Check that cn instance is still present -+ curdbis = DbscanPaths.list_instances(paths.inst, paths.dblib, paths.dbhome) -+ assert cndbi in curdbis -+ -+ # Run dbscan --remove ... --doit -+ result = dbscan(['-D', paths.dblib, '--remove', '-f', cndbi, '--do-it'], -+ inst=paths.inst, expected_rc=0) -+ -+ # Check the error message about missing --do-it -+ assert expected_msg not in result.stdout -+ -+ # Check that cn instance is still present -+ curdbis = DbscanPaths.list_instances(paths.inst, paths.dblib, paths.dbhome) -+ assert cndbi not in curdbis -+ -+ # Run dbscan -I import_file ... --do-it -+ result = dbscan(['-D', paths.dblib, '-f', cndbi, -+ '-I', export_cn, '--do-it'], -+ inst=paths.inst, expected_rc=0) -+ -+ # Check the error message about missing --do-it -+ assert expected_msg not in result.stdout -+ -+ # Check that cn instance is still present -+ curdbis = DbscanPaths.list_instances(paths.inst, paths.dblib, paths.dbhome) -+ assert cndbi in curdbis -+ -+ # Export again the database -+ dbscan(['-D', dblib, '-f', cndbi, '-X', export_cn2], inst=inst) -+ -+ # Check that content of export files are the same -+ with open(export_cn) as f1: -+ f1lines = f1.readlines() -+ with open(export_cn2) as f2: -+ f2lines = f2.readlines() -+ diffs = list(context_diff(f1lines, f2lines)) -+ if len(diffs) > 0: -+ log.debug("Export file differences are:") -+ for d in diffs: -+ log.debug(d) -+ log_export_file(export_cn) -+ log_export_file(export_cn2) -+ assert diffs is None -+ -+ -+if __name__ == '__main__': -+ # Run isolated -+ # -s for DEBUG mode -+ CURRENT_FILE = os.path.realpath(__file__) -+ pytest.main("-s %s" % CURRENT_FILE) -diff --git a/dirsrvtests/tests/suites/clu/repl_monitor_test.py b/dirsrvtests/tests/suites/clu/repl_monitor_test.py -index d83416847..842dd96fd 100644 ---- a/dirsrvtests/tests/suites/clu/repl_monitor_test.py -+++ b/dirsrvtests/tests/suites/clu/repl_monitor_test.py -@@ -77,13 +77,13 @@ def get_hostnames_from_log(port1, port2): - # search for Supplier :hostname:port - # and use \D to insure there is no more number is after - # the matched port (i.e that 10 is not matching 101) -- regexp = '(Supplier: )([^:]*)(:' + str(port1) + '\D)' -+ regexp = '(Supplier: )([^:]*)(:' + str(port1) + r'\D)' - match=re.search(regexp, logtext) - host_m1 = 'localhost.localdomain' - if (match is not None): - host_m1 = match.group(2) - # Same for supplier 2 -- regexp = '(Supplier: )([^:]*)(:' + str(port2) + '\D)' -+ regexp = '(Supplier: )([^:]*)(:' + str(port2) + r'\D)' - match=re.search(regexp, logtext) - host_m2 = 'localhost.localdomain' - if (match is not None): -diff --git a/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.c b/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.c -index de6be0f42..4b30e8e87 100644 ---- a/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.c -+++ b/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.c -@@ -5820,8 +5820,16 @@ bdb_import_file_name(ldbm_instance *inst) - static char * - bdb_restore_file_name(struct ldbminfo *li) - { -- char *fname = slapi_ch_smprintf("%s/../.restore", li->li_directory); -- -+ char *pt = strrchr(li->li_directory, '/'); -+ char *fname = NULL; -+ if (pt == NULL) { -+ fname = slapi_ch_strdup(".restore"); -+ } else { -+ size_t len = pt-li->li_directory; -+ fname = slapi_ch_malloc(len+10); -+ strncpy(fname, li->li_directory, len); -+ strcpy(fname+len, "/.restore"); -+ } - return fname; - } - -diff --git a/ldap/servers/slapd/back-ldbm/dbimpl.c b/ldap/servers/slapd/back-ldbm/dbimpl.c -index 42f4a0718..134d06480 100644 ---- a/ldap/servers/slapd/back-ldbm/dbimpl.c -+++ b/ldap/servers/slapd/back-ldbm/dbimpl.c -@@ -397,7 +397,48 @@ const char *dblayer_op2str(dbi_op_t op) - return str[idx]; - } - --/* Open db env, db and db file privately */ -+/* Get the li_directory directory from the database instance name - -+ * Caller should free the returned value -+ */ -+static char * -+get_li_directory(const char *fname) -+{ -+ /* -+ * li_directory is an existing directory. -+ * it can be fname or its parent or its greatparent -+ * in case of problem returns the provided name -+ */ -+ char *lid = slapi_ch_strdup(fname); -+ struct stat sbuf = {0}; -+ char *pt = NULL; -+ for (int count=0; count<3; count++) { -+ if (stat(lid, &sbuf) == 0) { -+ if (S_ISDIR(sbuf.st_mode)) { -+ return lid; -+ } -+ /* Non directory existing file could be regular -+ * at the first iteration otherwise it is an error. -+ */ -+ if (count>0 || !S_ISREG(sbuf.st_mode)) { -+ break; -+ } -+ } -+ pt = strrchr(lid, '/'); -+ if (pt == NULL) { -+ slapi_ch_free_string(&lid); -+ return slapi_ch_strdup("."); -+ } -+ *pt = '\0'; -+ } -+ /* -+ * Error case. Returns a copy of the original string: -+ * and let dblayer_private_open_fn fail to open the database -+ */ -+ slapi_ch_free_string(&lid); -+ return slapi_ch_strdup(fname); -+} -+ -+/* Open db env, db and db file privately (for dbscan) */ - int dblayer_private_open(const char *plgname, const char *dbfilename, int rw, Slapi_Backend **be, dbi_env_t **env, dbi_db_t **db) - { - struct ldbminfo *li; -@@ -412,7 +453,7 @@ int dblayer_private_open(const char *plgname, const char *dbfilename, int rw, Sl - li->li_plugin = (*be)->be_database; - li->li_plugin->plg_name = (char*) "back-ldbm-dbimpl"; - li->li_plugin->plg_libpath = (char*) "libback-ldbm"; -- li->li_directory = slapi_ch_strdup(dbfilename); -+ li->li_directory = get_li_directory(dbfilename); - - /* Initialize database plugin */ - rc = dbimpl_setup(li, plgname); -@@ -439,7 +480,10 @@ int dblayer_private_close(Slapi_Backend **be, dbi_env_t **env, dbi_db_t **db) - } - slapi_ch_free((void**)&li->li_dblayer_private); - slapi_ch_free((void**)&li->li_dblayer_config); -- ldbm_config_destroy(li); -+ if (dblayer_is_lmdb(*be)) { -+ /* Generate use after free and double free in bdb case */ -+ ldbm_config_destroy(li); -+ } - slapi_ch_free((void**)&(*be)->be_database); - slapi_ch_free((void**)&(*be)->be_instance_info); - slapi_ch_free((void**)be); -diff --git a/ldap/servers/slapd/tools/dbscan.c b/ldap/servers/slapd/tools/dbscan.c -index 2d28dd951..12edf7c5b 100644 ---- a/ldap/servers/slapd/tools/dbscan.c -+++ b/ldap/servers/slapd/tools/dbscan.c -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - #include "../back-ldbm/dbimpl.h" - #include "../slapi-plugin.h" - #include "nspr.h" -@@ -85,6 +86,8 @@ - #define DB_BUFFER_SMALL ENOMEM - #endif - -+#define COUNTOF(array) ((sizeof(array))/sizeof(*(array))) -+ - #if defined(linux) - #include - #endif -@@ -130,9 +133,43 @@ long ind_cnt = 0; - long allids_cnt = 0; - long other_cnt = 0; - char *dump_filename = NULL; -+int do_it = 0; - - static Slapi_Backend *be = NULL; /* Pseudo backend used to interact with db */ - -+/* For Long options without shortcuts */ -+enum { -+ OPT_FIRST = 0x1000, -+ OPT_DO_IT, -+ OPT_REMOVE, -+}; -+ -+static const struct option options[] = { -+ /* Options without shortcut */ -+ { "do-it", no_argument, 0, OPT_DO_IT }, -+ { "remove", no_argument, 0, OPT_REMOVE }, -+ /* Options with shortcut */ -+ { "import", required_argument, 0, 'I' }, -+ { "export", required_argument, 0, 'X' }, -+ { "db-type", required_argument, 0, 'D' }, -+ { "dbi", required_argument, 0, 'f' }, -+ { "ascii", no_argument, 0, 'A' }, -+ { "raw", no_argument, 0, 'R' }, -+ { "truncate-entry", required_argument, 0, 't' }, -+ { "entry-id", required_argument, 0, 'K' }, -+ { "key", required_argument, 0, 'k' }, -+ { "list", required_argument, 0, 'L' }, -+ { "stats", required_argument, 0, 'S' }, -+ { "id-list-max-size", required_argument, 0, 'l' }, -+ { "id-list-min-size", required_argument, 0, 'G' }, -+ { "show-id-list-lenghts", no_argument, 0, 'n' }, -+ { "show-id-list", no_argument, 0, 'r' }, -+ { "summary", no_argument, 0, 's' }, -+ { "help", no_argument, 0, 'h' }, -+ { 0, 0, 0, 0 } -+}; -+ -+ - /** db_printf - functioning same as printf but a place for manipluating output. - */ - void -@@ -899,7 +936,7 @@ is_changelog(char *filename) - } - - static void --usage(char *argv0) -+usage(char *argv0, int error) - { - char *copy = strdup(argv0); - char *p0 = NULL, *p1 = NULL; -@@ -922,42 +959,52 @@ usage(char *argv0) - } - printf("\n%s - scan a db file and dump the contents\n", p0); - printf(" common options:\n"); -- printf(" -D specify db implementaion (may be: bdb or mdb)\n"); -- printf(" -f specify db file\n"); -- printf(" -A dump as ascii data\n"); -- printf(" -R dump as raw data\n"); -- printf(" -t entry truncate size (bytes)\n"); -+ printf(" -A, --ascii dump as ascii data\n"); -+ printf(" -D, --db-type specify db implementaion (may be: bdb or mdb)\n"); -+ printf(" -f, --dbi specify db instance\n"); -+ printf(" -R, --raw dump as raw data\n"); -+ printf(" -t, --truncate-entry entry truncate size (bytes)\n"); -+ - printf(" entry file options:\n"); -- printf(" -K lookup only a specific entry id\n"); -+ printf(" -K, --entry-id lookup only a specific entry id\n"); -+ - printf(" index file options:\n"); -- printf(" -k lookup only a specific key\n"); -- printf(" -L list all db files\n"); -- printf(" -S show statistics\n"); -- printf(" -l max length of dumped id list\n"); -- printf(" (default %" PRIu32 "; 40 bytes <= size <= 1048576 bytes)\n", MAX_BUFFER); -- printf(" -G only display index entries with more than ids\n"); -- printf(" -n display ID list lengths\n"); -- printf(" -r display the conents of ID list\n"); -- printf(" -s Summary of index counts\n"); -- printf(" -I file Import database content from file\n"); -- printf(" -X file Export database content in file\n"); -+ printf(" -G, --id-list-min-size only display index entries with more than ids\n"); -+ printf(" -I, --import file Import database instance from file.\n"); -+ printf(" -k, --key lookup only a specific key\n"); -+ printf(" -l, --id-list-max-size max length of dumped id list\n"); -+ printf(" (default %" PRIu32 "; 40 bytes <= size <= 1048576 bytes)\n", MAX_BUFFER); -+ printf(" -n, --show-id-list-lenghts display ID list lengths\n"); -+ printf(" --remove remove database instance\n"); -+ printf(" -r, --show-id-list display the conents of ID list\n"); -+ printf(" -S, --stats show statistics\n"); -+ printf(" -X, --export file export database instance in file\n"); -+ -+ printf(" other options:\n"); -+ printf(" -s, --summary summary of index counts\n"); -+ printf(" -L, --list list all db files\n"); -+ printf(" --do-it confirmation flags for destructive actions like --remove or --import\n"); -+ printf(" -h, --help display this usage\n"); -+ - printf(" sample usages:\n"); -- printf(" # list the db files\n"); -- printf(" %s -D mdb -L /var/lib/dirsrv/slapd-i/db/\n", p0); -- printf(" %s -f id2entry.db\n", p0); -+ printf(" # list the database instances\n"); -+ printf(" %s -L /var/lib/dirsrv/slapd-supplier1/db/\n", p0); - printf(" # dump the entry file\n"); - printf(" %s -f id2entry.db\n", p0); - printf(" # display index keys in cn.db4\n"); - printf(" %s -f cn.db4\n", p0); -+ printf(" # display index keys in cn on lmdb\n"); -+ printf(" %s -f /var/lib/dirsrv/slapd-supplier1/db/userroot/cn.db\n", p0); -+ printf(" (Note: Use 'dbscan -L db_home_dir' to get the db instance path)\n"); - printf(" # display index keys and the count of entries having the key in mail.db4\n"); - printf(" %s -r -f mail.db4\n", p0); - printf(" # display index keys and the IDs having more than 20 IDs in sn.db4\n"); - printf(" %s -r -G 20 -f sn.db4\n", p0); - printf(" # display summary of objectclass.db4\n"); -- printf(" %s -f objectclass.db4\n", p0); -+ printf(" %s -s -f objectclass.db4\n", p0); - printf("\n"); - free(copy); -- exit(1); -+ exit(error?1:0); - } - - void dump_ascii_val(const char *str, dbi_val_t *val) -@@ -1126,13 +1173,12 @@ importdb(const char *dbimpl_name, const char *filename, const char *dump_name) - dblayer_init_pvt_txn(); - - if (!dump) { -- printf("Failed to open dump file %s. Error %d: %s\n", dump_name, errno, strerror(errno)); -- fclose(dump); -+ printf("Error: Failed to open dump file %s. Error %d: %s\n", dump_name, errno, strerror(errno)); - return 1; - } - - if (dblayer_private_open(dbimpl_name, filename, 1, &be, &env, &db)) { -- printf("Can't initialize db plugin: %s\n", dbimpl_name); -+ printf("Error: Can't initialize db plugin: %s\n", dbimpl_name); - fclose(dump); - return 1; - } -@@ -1142,11 +1188,16 @@ importdb(const char *dbimpl_name, const char *filename, const char *dump_name) - !_read_line(dump, &keyword, &data) && keyword == 'v') { - ret = dblayer_db_op(be, db, txn.txn, DBI_OP_PUT, &key, &data); - } -+ if (ret !=0) { -+ printf("Error: failed to write record in database. Error %d: %s\n", ret, dblayer_strerror(ret)); -+ dump_ascii_val("Failing record key", &key); -+ dump_ascii_val("Failing record value", &data); -+ } - fclose(dump); - dblayer_value_free(be, &key); - dblayer_value_free(be, &data); - if (dblayer_private_close(&be, &env, &db)) { -- printf("Unable to shutdown the db plugin: %s\n", dblayer_strerror(1)); -+ printf("Error: Unable to shutdown the db plugin: %s\n", dblayer_strerror(1)); - return 1; - } - return ret; -@@ -1243,6 +1294,7 @@ removedb(const char *dbimpl_name, const char *filename) - return 1; - } - -+ db = NULL; /* Database is already closed by dblayer_db_remove */ - if (dblayer_private_close(&be, &env, &db)) { - printf("Unable to shutdown the db plugin: %s\n", dblayer_strerror(1)); - return 1; -@@ -1250,7 +1302,6 @@ removedb(const char *dbimpl_name, const char *filename) - return 0; - } - -- - int - main(int argc, char **argv) - { -@@ -1262,11 +1313,46 @@ main(int argc, char **argv) - int ret = 0; - char *find_key = NULL; - uint32_t entry_id = 0xffffffff; -- char *dbimpl_name = (char*) "bdb"; -- int c; -+ char *defdbimpl = getenv("NSSLAPD_DB_LIB"); -+ char *dbimpl_name = (char*) "mdb"; -+ int longopt_idx = 0; -+ int c = 0; -+ char optstring[2*COUNTOF(options)+1] = {0}; -+ -+ if (defdbimpl) { -+ if (strcasecmp(defdbimpl, "bdb") == 0) { -+ dbimpl_name = (char*) "bdb"; -+ } -+ if (strcasecmp(defdbimpl, "mdb") == 0) { -+ dbimpl_name = (char*) "mdb"; -+ } -+ } -+ -+ /* Compute getopt short option string */ -+ { -+ char *pt = optstring; -+ for (const struct option *opt = options; opt->name; opt++) { -+ if (opt->val>0 && opt->valval); -+ if (opt->has_arg == required_argument) { -+ *pt++ = ':'; -+ } -+ } -+ } -+ *pt = '\0'; -+ } - -- while ((c = getopt(argc, argv, "Af:RL:S:l:nG:srk:K:hvt:D:X:I:d")) != EOF) { -+ while ((c = getopt_long(argc, argv, optstring, options, &longopt_idx)) != EOF) { -+ if (c == 0) { -+ c = longopt_idx; -+ } - switch (c) { -+ case OPT_DO_IT: -+ do_it = 1; -+ break; -+ case OPT_REMOVE: -+ display_mode |= REMOVE; -+ break; - case 'A': - display_mode |= ASCIIDATA; - break; -@@ -1332,32 +1418,48 @@ main(int argc, char **argv) - display_mode |= IMPORT; - dump_filename = optarg; - break; -- case 'd': -- display_mode |= REMOVE; -- break; - case 'h': - default: -- usage(argv[0]); -+ usage(argv[0], 1); - } - } - -+ if (filename == NULL) { -+ fprintf(stderr, "PARAMETER ERROR! 'filename' parameter is missing.\n"); -+ usage(argv[0], 1); -+ } -+ - if (display_mode & EXPORT) { - return exportdb(dbimpl_name, filename, dump_filename); - } - - if (display_mode & IMPORT) { -+ if (!strstr(filename, "/id2entry") && !strstr(filename, "/replication_changelog")) { -+ /* schema is unknown in dbscan ==> duplicate keys sort order is unknown -+ * ==> cannot create dbi with duplicate keys -+ * ==> only id2entry and repl changelog is importable. -+ */ -+ fprintf(stderr, "ERROR: The only database instances that may be imported with dbscan are id2entry and replication_changelog.\n"); -+ exit(1); -+ } -+ -+ if (do_it == 0) { -+ fprintf(stderr, "PARAMETER ERROR! Trying to perform a destructive action (import)\n" -+ " without specifying '--do-it' parameter.\n"); -+ exit(1); -+ } - return importdb(dbimpl_name, filename, dump_filename); - } - - if (display_mode & REMOVE) { -+ if (do_it == 0) { -+ fprintf(stderr, "PARAMETER ERROR! Trying to perform a destructive action (remove)\n" -+ " without specifying '--do-it' parameter.\n"); -+ exit(1); -+ } - return removedb(dbimpl_name, filename); - } - -- if (filename == NULL) { -- fprintf(stderr, "PARAMETER ERROR! 'filename' parameter is missing.\n"); -- usage(argv[0]); -- } -- - if (display_mode & LISTDBS) { - dbi_dbslist_t *dbs = dblayer_list_dbs(dbimpl_name, filename); - if (dbs) { -diff --git a/man/man1/dbscan.1 b/man/man1/dbscan.1 -index 810608371..dfb6e8351 100644 ---- a/man/man1/dbscan.1 -+++ b/man/man1/dbscan.1 -@@ -31,50 +31,94 @@ Scans a Directory Server database index file and dumps the contents. - .\" respectively. - .SH OPTIONS - A summary of options is included below: -+.IP -+common options: -+.TP -+.B \fB\-A, \-\-ascii\fR -+dump as ascii data -+.TP -+.B \fB\-D, \-\-db\-type\fR -+specify db type: bdb or mdb - .TP --.B \fB\-f\fR --specify db file -+.B \fB\-f, \-\-dbi\fR -+specify db instance - .TP --.B \fB\-R\fR -+.B \fB\-R, \-\-raw\fR - dump as raw data - .TP --.B \fB\-t\fR -+.B \fB\-t, \-\-truncate\-entry\fR - entry truncate size (bytes) - .IP - entry file options: - .TP --.B \fB\-K\fR -+.B \fB\-K, \-\-entry\-id\fR - lookup only a specific entry id -+.IP - index file options: - .TP --.B \fB\-k\fR -+.B \fB\-G, \-\-id\-list\-min\-size\fR -+only display index entries with more than ids -+.TP -+.B \fB\-I, \-\-import\fR -+Import database instance from file. Requires \-\-do\-it parameter -+WARNING! Only the id2entry and replication_changelog database instances -+may be imported by dbscan. -+.TP -+.B \fB\-k, \-\-key\fR - lookup only a specific key - .TP --.B \fB\-l\fR -+.B \fB\-l, \-\-id\-list\-max\-size\fR - max length of dumped id list - (default 4096; 40 bytes <= size <= 1048576 bytes) - .TP --.B \fB\-G\fR --only display index entries with more than ids --.TP --.B \fB\-n\fR -+.B \fB\-n, \-\-show\-id\-list\-lenghts\fR - display ID list lengths - .TP --.B \fB\-r\fR -+.B \fB\-\-remove\fR -+remove a db instance. Requires \-\-do\-it parameter -+.TP -+.B \fB\-r, \-\-show\-id\-list\fR - display the contents of ID list - .TP --.B \fB\-s\fR -+.B \fB\-S, \-\-stats\fR -+display statistics -+.TP -+.B \fB\-X, \-\-export\fR -+Export database instance to file -+.IP -+other options: -+.TP -+.B \fB\-s, \-\-summary\fR - Summary of index counts -+.TP -+.B \fB\-L, \-\-list\fR -+List od database instances -+.TP -+.B \fB\-\-do\-it\fR -+confirmation required for actions that change the database contents -+.TP -+.B \fB\-h, \-\-help\-it\fR -+display the usage - .IP - .SH USAGE - Sample usages: - .TP -+List the database instances -+.B -+dbscan -L /var/lib/dirsrv/slapd-supplier1/db -+.TP - Dump the entry file: - .B - dbscan \fB\-f\fR id2entry.db4 - .TP - Display index keys in cn.db4: --.B dbscan \fB\-f\fR cn.db4 -+.B -+dbscan \fB\-f\fR cn.db4 -+.TP -+Display index keys in cn on lmdb: -+.B -+dbscan \fB\-f\fR /var/lib/dirsrv/slapd\-supplier1/db/userroot/cn.db -+ (Note: Use \fBdbscan \-L db_home_dir\R to get the db instance path) - .TP - Display index keys and the count of entries having the key in mail.db4: - .B -@@ -86,7 +130,7 @@ dbscan \fB\-r\fR \fB\-G\fR 20 \fB\-f\fR sn.db4 - .TP - Display summary of objectclass.db4: - .B --dbscan \fB\-f\fR objectclass.db4 -+dbscan \fB\-s \-f\fR objectclass.db4 - .br - .SH AUTHOR - dbscan was written by the 389 Project. -diff --git a/src/lib389/lib389/__init__.py b/src/lib389/lib389/__init__.py -index e87582d9e..368741a66 100644 ---- a/src/lib389/lib389/__init__.py -+++ b/src/lib389/lib389/__init__.py -@@ -3039,14 +3039,17 @@ class DirSrv(SimpleLDAPObject, object): - return self._dbisupport - # check if -D and -L options are supported - try: -- cmd = ["%s/dbscan" % self.get_bin_dir(), "--help"] -+ cmd = ["%s/dbscan" % self.get_bin_dir(), "-h"] - self.log.debug("DEBUG: checking dbscan supported options %s" % cmd) - p = subprocess.Popen(cmd, stdout=subprocess.PIPE) - except subprocess.CalledProcessError: - pass - output, stderr = p.communicate() -- self.log.debug("is_dbi_supported output " + output.decode()) -- if "-D " in output.decode() and "-L " in output.decode(): -+ output = output.decode() -+ self.log.debug("is_dbi_supported output " + output) -+ if "-D " in output and "-L " in output: -+ self._dbisupport = True -+ elif "--db-type" in output and "--list" in output: - self._dbisupport = True - else: - self._dbisupport = False -diff --git a/src/lib389/lib389/cli_ctl/dblib.py b/src/lib389/lib389/cli_ctl/dblib.py -index e9269e340..82f09c70c 100644 ---- a/src/lib389/lib389/cli_ctl/dblib.py -+++ b/src/lib389/lib389/cli_ctl/dblib.py -@@ -158,6 +158,14 @@ def run_dbscan(args): - return output - - -+def does_dbscan_need_do_it(): -+ prefix = os.environ.get('PREFIX', "") -+ prog = f'{prefix}/bin/dbscan' -+ args = [ prog, '-h' ] -+ output = subprocess.run(args, encoding='utf-8', stdout=subprocess.PIPE, stderr=subprocess.STDOUT) -+ return '--do-it' in output.stdout -+ -+ - def export_changelog(be, dblib): - # Export backend changelog - try: -@@ -172,7 +180,10 @@ def import_changelog(be, dblib): - # import backend changelog - try: - cl5dbname = be['eccl5dbname'] if dblib == "bdb" else be['cl5dbname'] -- run_dbscan(['-D', dblib, '-f', cl5dbname, '-I', be['cl5name']]) -+ if does_dbscan_need_do_it(): -+ run_dbscan(['-D', dblib, '-f', cl5dbname, '-I', be['cl5name'], '--do-it']) -+ else: -+ run_dbscan(['-D', dblib, '-f', cl5dbname, '-I', be['cl5name']]) - return True - except subprocess.CalledProcessError as e: - return False --- -2.48.0 - diff --git a/SOURCES/0043-Issue-6825-RootDN-Access-Control-Plugin-with-wildcar.patch b/SOURCES/0004-Issue-6825-RootDN-Access-Control-Plugin-with-wildcar.patch similarity index 97% rename from SOURCES/0043-Issue-6825-RootDN-Access-Control-Plugin-with-wildcar.patch rename to SOURCES/0004-Issue-6825-RootDN-Access-Control-Plugin-with-wildcar.patch index 242cdff..67ee402 100644 --- a/SOURCES/0043-Issue-6825-RootDN-Access-Control-Plugin-with-wildcar.patch +++ b/SOURCES/0004-Issue-6825-RootDN-Access-Control-Plugin-with-wildcar.patch @@ -1,4 +1,4 @@ -From 4d3c4331208173c4efd30b40e7b79f26907850a1 Mon Sep 17 00:00:00 2001 +From 5613937623f0037a54490b22c60f7eb1aa52cf4e Mon Sep 17 00:00:00 2001 From: James Chapman Date: Wed, 25 Jun 2025 14:11:05 +0000 Subject: [PATCH] =?UTF-8?q?Issue=206825=20-=20RootDN=20Access=20Control=20?= @@ -63,7 +63,7 @@ index 65486fff8..1456f5ebe 100644 if args.allow_host is not None: for hostname in args.allow_host: diff --git a/src/lib389/lib389/utils.py b/src/lib389/lib389/utils.py -index c6f60f4a2..73b2b141e 100644 +index afc282e94..3937fc1a8 100644 --- a/src/lib389/lib389/utils.py +++ b/src/lib389/lib389/utils.py @@ -31,6 +31,7 @@ import logging diff --git a/SOURCES/0005-Issue-6119-Synchronise-accept_thread-with-slapd_daem.patch b/SOURCES/0005-Issue-6119-Synchronise-accept_thread-with-slapd_daem.patch new file mode 100644 index 0000000..8aa4af0 --- /dev/null +++ b/SOURCES/0005-Issue-6119-Synchronise-accept_thread-with-slapd_daem.patch @@ -0,0 +1,50 @@ +From b8cac173ca2549d2142332107e06fcb4bd34bd65 Mon Sep 17 00:00:00 2001 +From: James Chapman +Date: Fri, 8 Mar 2024 16:15:52 +0000 +Subject: [PATCH] Issue 6119 - Synchronise accept_thread with slapd_daemon + (#6120) + +Bug Description: A corner cases exists, where the slapd_daemon has +begun its shutdown process but the accept_thread is still running +and capable of handling new connections. When this scenario occurs, +the connection subsystem has been partially deallocated and is in +an unstable state. A segfault is generated when attempting to get a +new connection from the connection table. + +Fix Description: The connection table is only deallocated when the +number of active threads is 0. Modify the accept_thread to adjust the +the active thread count during creation/destruction, meaning the connection +table can only be freed when the accept_thread has completed + +Relates: https://github.com/389ds/389-ds-base/issues/6119 + +Reviewed by: @tbordaz, @Firstyear , @mreynolds389 (Thank you) +--- + ldap/servers/slapd/daemon.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ldap/servers/slapd/daemon.c b/ldap/servers/slapd/daemon.c +index 5d01a2526..a43fc9285 100644 +--- a/ldap/servers/slapd/daemon.c ++++ b/ldap/servers/slapd/daemon.c +@@ -868,6 +868,8 @@ accept_thread(void *vports) + slapi_ch_free((void **)&listener_idxs); + slapd_sockets_ports_free(ports); + slapi_ch_free((void **)&fds); ++ g_decr_active_threadcnt(); ++ slapi_log_err(SLAPI_LOG_INFO, "slapd_daemon", "slapd shutting down - accept_thread\n"); + } + + void +@@ -1158,6 +1160,8 @@ slapd_daemon(daemon_ports_t *ports) + slapi_log_err(SLAPI_LOG_EMERG, "slapd_daemon", "Unable to fd accept thread - Shutting Down (" SLAPI_COMPONENT_NAME_NSPR " error %d - %s)\n", + errorCode, slapd_pr_strerror(errorCode)); + g_set_shutdown(SLAPI_SHUTDOWN_EXIT); ++ } else{ ++ g_incr_active_threadcnt(); + } + + #ifdef WITH_SYSTEMD +-- +2.49.0 + diff --git a/SOURCES/0005-Issue-6566-RI-plugin-failure-to-handle-a-modrdn-for-.patch b/SOURCES/0005-Issue-6566-RI-plugin-failure-to-handle-a-modrdn-for-.patch deleted file mode 100644 index 8fea644..0000000 --- a/SOURCES/0005-Issue-6566-RI-plugin-failure-to-handle-a-modrdn-for-.patch +++ /dev/null @@ -1,70 +0,0 @@ -From de52853a3551f1d1876ea21b33a5242ad669fec1 Mon Sep 17 00:00:00 2001 -From: James Chapman -Date: Tue, 4 Feb 2025 15:40:16 +0000 -Subject: [PATCH] Issue 6566 - RI plugin failure to handle a modrdn for rename - of member of multiple groups (#6567) - -Bug description: -With AM and RI plugins enabled, the rename of a user that is part of multiple groups -fails with a "value exists" error. - -Fix description: -For a modrdn the RI plugin creates a new DN, before a modify is attempted check -if the new DN already exists in the attr being updated. - -Fixes: https://github.com/389ds/389-ds-base/issues/6566 - -Reviewed by: @progier389 , @tbordaz (Thank you) ---- - ldap/servers/plugins/referint/referint.c | 15 ++++++++++++--- - 1 file changed, 12 insertions(+), 3 deletions(-) - -diff --git a/ldap/servers/plugins/referint/referint.c b/ldap/servers/plugins/referint/referint.c -index 468fdc239..218863ea5 100644 ---- a/ldap/servers/plugins/referint/referint.c -+++ b/ldap/servers/plugins/referint/referint.c -@@ -924,6 +924,7 @@ _update_all_per_mod(Slapi_DN *entrySDN, /* DN of the searched entry */ - { - Slapi_Mods *smods = NULL; - char *newDN = NULL; -+ struct berval bv = {0}; - char **dnParts = NULL; - char *sval = NULL; - char *newvalue = NULL; -@@ -1026,22 +1027,30 @@ _update_all_per_mod(Slapi_DN *entrySDN, /* DN of the searched entry */ - } - /* else: normalize_rc < 0) Ignore the DN normalization error for now. */ - -+ bv.bv_val = newDN; -+ bv.bv_len = strlen(newDN); - p = PL_strstr(sval, slapi_sdn_get_ndn(origDN)); - if (p == sval) { - /* (case 1) */ - slapi_mods_add_string(smods, LDAP_MOD_DELETE, attrName, sval); -- slapi_mods_add_string(smods, LDAP_MOD_ADD, attrName, newDN); -- -+ /* Add only if the attr value does not exist */ -+ if (VALUE_PRESENT != attr_value_find_wsi(attr, &bv, &v)) { -+ slapi_mods_add_string(smods, LDAP_MOD_ADD, attrName, newDN); -+ } - } else if (p) { - /* (case 2) */ - slapi_mods_add_string(smods, LDAP_MOD_DELETE, attrName, sval); - *p = '\0'; - newvalue = slapi_ch_smprintf("%s%s", sval, newDN); -- slapi_mods_add_string(smods, LDAP_MOD_ADD, attrName, newvalue); -+ /* Add only if the attr value does not exist */ -+ if (VALUE_PRESENT != attr_value_find_wsi(attr, &bv, &v)) { -+ slapi_mods_add_string(smods, LDAP_MOD_ADD, attrName, newvalue); -+ } - slapi_ch_free_string(&newvalue); - } - /* else: value does not include the modified DN. Ignore it. */ - slapi_ch_free_string(&sval); -+ bv = (struct berval){0}; - } - rc = _do_modify(mod_pb, entrySDN, slapi_mods_get_ldapmods_byref(smods)); - if (rc) { --- -2.48.0 - diff --git a/SOURCES/0006-Issue-6258-Mitigate-race-condition-in-paged_results_.patch b/SOURCES/0006-Issue-6258-Mitigate-race-condition-in-paged_results_.patch deleted file mode 100644 index 2f66c4f..0000000 --- a/SOURCES/0006-Issue-6258-Mitigate-race-condition-in-paged_results_.patch +++ /dev/null @@ -1,43 +0,0 @@ -From a634756784056270773d67747061e26152d85469 Mon Sep 17 00:00:00 2001 -From: Masahiro Matsuya -Date: Wed, 5 Feb 2025 11:38:04 +0900 -Subject: [PATCH] Issue 6258 - Mitigate race condition in paged_results_test.py - (#6433) - -The regression test dirsrvtests/tests/suites/paged_results/paged_results_test.py::test_multi_suffix_search has a race condition causing it to fail due to multiple queries potentially writing their logs out of chronological order. - -This failure is mitigated by sorting the retrieved access_log_lines by their "op" value. This ensures the log lines are in chronological order, as expected by the assertions at the end of test_multi_suffix_search(). - -Helps fix: #6258 - -Reviewed by: @droideck , @progier389 (Thanks!) - -Co-authored-by: Anuar Beisembayev <111912342+abeisemb@users.noreply.github.com> ---- - dirsrvtests/tests/suites/paged_results/paged_results_test.py | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/dirsrvtests/tests/suites/paged_results/paged_results_test.py b/dirsrvtests/tests/suites/paged_results/paged_results_test.py -index eaf0e0da9..fca48db0f 100644 ---- a/dirsrvtests/tests/suites/paged_results/paged_results_test.py -+++ b/dirsrvtests/tests/suites/paged_results/paged_results_test.py -@@ -7,6 +7,7 @@ - # --- END COPYRIGHT BLOCK --- - # - import socket -+import re - from random import sample, randrange - - import pytest -@@ -1126,6 +1127,8 @@ def test_multi_suffix_search(topology_st, create_user, new_suffixes): - topology_st.standalone.restart(timeout=10) - - access_log_lines = topology_st.standalone.ds_access_log.match('.*pr_cookie=.*') -+ # Sort access_log_lines by op number to mitigate race condition effects. -+ access_log_lines.sort(key=lambda x: int(re.search(r"op=(\d+) RESULT", x).group(1))) - pr_cookie_list = ([line.rsplit('=', 1)[-1] for line in access_log_lines]) - pr_cookie_list = [int(pr_cookie) for pr_cookie in pr_cookie_list] - log.info('Assert that last pr_cookie == -1 and others pr_cookie == 0') --- -2.48.0 - diff --git a/SOURCES/0006-Issue-6782-Improve-paged-result-locking.patch b/SOURCES/0006-Issue-6782-Improve-paged-result-locking.patch new file mode 100644 index 0000000..5c9558b --- /dev/null +++ b/SOURCES/0006-Issue-6782-Improve-paged-result-locking.patch @@ -0,0 +1,127 @@ +From 7943443bb92fca6676922349fb12503a527cb6b1 Mon Sep 17 00:00:00 2001 +From: Mark Reynolds +Date: Thu, 15 May 2025 10:35:27 -0400 +Subject: [PATCH] Issue 6782 - Improve paged result locking + +Description: + +When cleaning a slot, instead of mem setting everything to Zero and restoring +the mutex, manually reset all the values leaving the mutex pointer +intact. + +There is also a deadlock possibility when checking for abandoned PR search +in opshared.c, and we were checking a flag value outside of the per_conn +lock. + +Relates: https://github.com/389ds/389-ds-base/issues/6782 + +Reviewed by: progier & spichugi(Thanks!!) +--- + ldap/servers/slapd/opshared.c | 10 +++++++++- + ldap/servers/slapd/pagedresults.c | 27 +++++++++++++++++---------- + 2 files changed, 26 insertions(+), 11 deletions(-) + +diff --git a/ldap/servers/slapd/opshared.c b/ldap/servers/slapd/opshared.c +index 7dc2d5983..14a7dcdfb 100644 +--- a/ldap/servers/slapd/opshared.c ++++ b/ldap/servers/slapd/opshared.c +@@ -592,6 +592,14 @@ op_shared_search(Slapi_PBlock *pb, int send_result) + int32_t tlimit; + slapi_pblock_get(pb, SLAPI_SEARCH_TIMELIMIT, &tlimit); + pagedresults_set_timelimit(pb_conn, operation, (time_t)tlimit, pr_idx); ++ /* When using this mutex in conjunction with the main paged ++ * result lock, you must do so in this order: ++ * ++ * --> pagedresults_lock() ++ * --> pagedresults_mutex ++ * <-- pagedresults_mutex ++ * <-- pagedresults_unlock() ++ */ + pagedresults_mutex = pageresult_lock_get_addr(pb_conn); + } + +@@ -717,11 +725,11 @@ op_shared_search(Slapi_PBlock *pb, int send_result) + pr_search_result = pagedresults_get_search_result(pb_conn, operation, 1 /*locked*/, pr_idx); + if (pr_search_result) { + if (pagedresults_is_abandoned_or_notavailable(pb_conn, 1 /*locked*/, pr_idx)) { ++ pthread_mutex_unlock(pagedresults_mutex); + pagedresults_unlock(pb_conn, pr_idx); + /* Previous operation was abandoned and the simplepaged object is not in use. */ + send_ldap_result(pb, 0, NULL, "Simple Paged Results Search abandoned", 0, NULL); + rc = LDAP_SUCCESS; +- pthread_mutex_unlock(pagedresults_mutex); + goto free_and_return; + } else { + slapi_pblock_set(pb, SLAPI_SEARCH_RESULT_SET, pr_search_result); +diff --git a/ldap/servers/slapd/pagedresults.c b/ldap/servers/slapd/pagedresults.c +index 642aefb3d..c3f3aae01 100644 +--- a/ldap/servers/slapd/pagedresults.c ++++ b/ldap/servers/slapd/pagedresults.c +@@ -48,7 +48,6 @@ pageresult_lock_get_addr(Connection *conn) + static void + _pr_cleanup_one_slot(PagedResults *prp) + { +- PRLock *prmutex = NULL; + if (!prp) { + return; + } +@@ -56,13 +55,17 @@ _pr_cleanup_one_slot(PagedResults *prp) + /* sr is left; release it. */ + prp->pr_current_be->be_search_results_release(&(prp->pr_search_result_set)); + } +- /* clean up the slot */ +- if (prp->pr_mutex) { +- /* pr_mutex is reused; back it up and reset it. */ +- prmutex = prp->pr_mutex; +- } +- memset(prp, '\0', sizeof(PagedResults)); +- prp->pr_mutex = prmutex; ++ ++ /* clean up the slot except the mutex */ ++ prp->pr_current_be = NULL; ++ prp->pr_search_result_set = NULL; ++ prp->pr_search_result_count = 0; ++ prp->pr_search_result_set_size_estimate = 0; ++ prp->pr_sort_result_code = 0; ++ prp->pr_timelimit_hr.tv_sec = 0; ++ prp->pr_timelimit_hr.tv_nsec = 0; ++ prp->pr_flags = 0; ++ prp->pr_msgid = 0; + } + + /* +@@ -1007,7 +1010,8 @@ op_set_pagedresults(Operation *op) + + /* + * pagedresults_lock/unlock -- introduced to protect search results for the +- * asynchronous searches. ++ * asynchronous searches. Do not call these functions while the PR conn lock ++ * is held (e.g. pageresult_lock_get_addr(conn)) + */ + void + pagedresults_lock(Connection *conn, int index) +@@ -1045,6 +1049,8 @@ int + pagedresults_is_abandoned_or_notavailable(Connection *conn, int locked, int index) + { + PagedResults *prp; ++ int32_t result; ++ + if (!conn || (index < 0) || (index >= conn->c_pagedresults.prl_maxlen)) { + return 1; /* not abandoned, but do not want to proceed paged results op. */ + } +@@ -1052,10 +1058,11 @@ pagedresults_is_abandoned_or_notavailable(Connection *conn, int locked, int inde + pthread_mutex_lock(pageresult_lock_get_addr(conn)); + } + prp = conn->c_pagedresults.prl_list + index; ++ result = prp->pr_flags & CONN_FLAG_PAGEDRESULTS_ABANDONED; + if (!locked) { + pthread_mutex_unlock(pageresult_lock_get_addr(conn)); + } +- return prp->pr_flags & CONN_FLAG_PAGEDRESULTS_ABANDONED; ++ return result; + } + + int +-- +2.49.0 + diff --git a/SOURCES/0007-Issue-6229-After-an-initial-failure-subsequent-onlin.patch b/SOURCES/0007-Issue-6229-After-an-initial-failure-subsequent-onlin.patch deleted file mode 100644 index 0abffa3..0000000 --- a/SOURCES/0007-Issue-6229-After-an-initial-failure-subsequent-onlin.patch +++ /dev/null @@ -1,566 +0,0 @@ -From 769e71499880a0820424bf925c0f0fe793e11cc8 Mon Sep 17 00:00:00 2001 -From: progier389 -Date: Fri, 28 Jun 2024 18:56:49 +0200 -Subject: [PATCH] Issue 6229 - After an initial failure, subsequent online - backups fail (#6230) - -* Issue 6229 - After an initial failure, subsequent online backups will not work - -Several issues related to backup task error handling: -Backends stay busy after the failure -Exit code is 0 in some cases -Crash if failing to open the backup directory -And a more general one: -lib389 Task DN collision - -Solutions: -Always reset the busy flags that have been set -Ensure that 0 is not returned in error case -Avoid closing NULL directory descriptor -Use a timestamp having milliseconds precision to create the task DN - -Issue: #6229 - -Reviewed by: @droideck (Thanks!) - -(cherry picked from commit 04a0b6ac776a1d588ec2e10ff651e5015078ad21) ---- - ldap/servers/slapd/back-ldbm/archive.c | 45 +++++----- - .../slapd/back-ldbm/db-mdb/mdb_layer.c | 3 + - src/lib389/lib389/__init__.py | 10 +-- - src/lib389/lib389/tasks.py | 82 +++++++++---------- - 4 files changed, 70 insertions(+), 70 deletions(-) - -diff --git a/ldap/servers/slapd/back-ldbm/archive.c b/ldap/servers/slapd/back-ldbm/archive.c -index 0460a42f6..6658cc80a 100644 ---- a/ldap/servers/slapd/back-ldbm/archive.c -+++ b/ldap/servers/slapd/back-ldbm/archive.c -@@ -16,6 +16,8 @@ - #include "back-ldbm.h" - #include "dblayer.h" - -+#define NO_OBJECT ((Object*)-1) -+ - int - ldbm_temporary_close_all_instances(Slapi_PBlock *pb) - { -@@ -270,6 +272,7 @@ ldbm_back_ldbm2archive(Slapi_PBlock *pb) - int run_from_cmdline = 0; - Slapi_Task *task; - struct stat sbuf; -+ Object *last_busy_inst_obj = NO_OBJECT; - - slapi_pblock_get(pb, SLAPI_PLUGIN_PRIVATE, &li); - slapi_pblock_get(pb, SLAPI_SEQ_VAL, &rawdirectory); -@@ -380,13 +383,12 @@ ldbm_back_ldbm2archive(Slapi_PBlock *pb) - - /* to avoid conflict w/ import, do this check for commandline, as well */ - { -- Object *inst_obj, *inst_obj2; - ldbm_instance *inst = NULL; - - /* server is up -- mark all backends busy */ -- for (inst_obj = objset_first_obj(li->li_instance_set); inst_obj; -- inst_obj = objset_next_obj(li->li_instance_set, inst_obj)) { -- inst = (ldbm_instance *)object_get_data(inst_obj); -+ for (last_busy_inst_obj = objset_first_obj(li->li_instance_set); last_busy_inst_obj; -+ last_busy_inst_obj = objset_next_obj(li->li_instance_set, last_busy_inst_obj)) { -+ inst = (ldbm_instance *)object_get_data(last_busy_inst_obj); - - /* check if an import/restore is already ongoing... */ - if (instance_set_busy(inst) != 0 || dblayer_in_import(inst) != 0) { -@@ -400,20 +402,6 @@ ldbm_back_ldbm2archive(Slapi_PBlock *pb) - "another task and cannot be disturbed.", - inst->inst_name); - } -- -- /* painfully, we have to clear the BUSY flags on the -- * backends we'd already marked... -- */ -- for (inst_obj2 = objset_first_obj(li->li_instance_set); -- inst_obj2 && (inst_obj2 != inst_obj); -- inst_obj2 = objset_next_obj(li->li_instance_set, -- inst_obj2)) { -- inst = (ldbm_instance *)object_get_data(inst_obj2); -- instance_set_not_busy(inst); -- } -- if (inst_obj2 && inst_obj2 != inst_obj) -- object_release(inst_obj2); -- object_release(inst_obj); - goto err; - } - } -@@ -427,18 +415,26 @@ ldbm_back_ldbm2archive(Slapi_PBlock *pb) - goto err; - } - -- if (!run_from_cmdline) { -+err: -+ /* Clear all BUSY flags that have been previously set */ -+ if (last_busy_inst_obj != NO_OBJECT) { - ldbm_instance *inst; - Object *inst_obj; - -- /* none of these backends are busy anymore */ -- for (inst_obj = objset_first_obj(li->li_instance_set); inst_obj; -+ for (inst_obj = objset_first_obj(li->li_instance_set); -+ inst_obj && (inst_obj != last_busy_inst_obj); - inst_obj = objset_next_obj(li->li_instance_set, inst_obj)) { - inst = (ldbm_instance *)object_get_data(inst_obj); - instance_set_not_busy(inst); - } -+ if (last_busy_inst_obj != NULL) { -+ /* release last seen object for aborted objset_next_obj iterations */ -+ if (inst_obj != NULL) { -+ object_release(inst_obj); -+ } -+ object_release(last_busy_inst_obj); -+ } - } --err: - if (return_value) { - if (dir_bak) { - slapi_log_err(SLAPI_LOG_ERR, -@@ -727,7 +723,10 @@ ldbm_archive_config(char *bakdir, Slapi_Task *task) - } - - error: -- PR_CloseDir(dirhandle); -+ if (NULL != dirhandle) { -+ PR_CloseDir(dirhandle); -+ dirhandle = NULL; -+ } - dse_backup_unlock(); - slapi_ch_free_string(&backup_config_dir); - slapi_ch_free_string(&dse_file); -diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c -index 70a289bdb..de4161b0c 100644 ---- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c -+++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c -@@ -983,6 +983,9 @@ dbmdb_backup(struct ldbminfo *li, char *dest_dir, Slapi_Task *task) - if (ldbm_archive_config(dest_dir, task) != 0) { - slapi_log_err(SLAPI_LOG_ERR, "dbmdb_backup", - "Backup of config files failed or is incomplete\n"); -+ if (0 == return_value) { -+ return_value = -1; -+ } - } - - goto bail; -diff --git a/src/lib389/lib389/__init__.py b/src/lib389/lib389/__init__.py -index 368741a66..cb372c138 100644 ---- a/src/lib389/lib389/__init__.py -+++ b/src/lib389/lib389/__init__.py -@@ -69,7 +69,7 @@ from lib389.utils import ( - get_user_is_root) - from lib389.paths import Paths - from lib389.nss_ssl import NssSsl --from lib389.tasks import BackupTask, RestoreTask -+from lib389.tasks import BackupTask, RestoreTask, Task - from lib389.dseldif import DSEldif - - # mixin -@@ -1424,7 +1424,7 @@ class DirSrv(SimpleLDAPObject, object): - name, self.ds_paths.prefix) - - # create the archive -- name = "backup_%s_%s.tar.gz" % (self.serverid, time.strftime("%m%d%Y_%H%M%S")) -+ name = "backup_%s_%s.tar.gz" % (self.serverid, Task.get_timestamp()) - backup_file = os.path.join(backup_dir, name) - tar = tarfile.open(backup_file, "w:gz") - tar.extraction_filter = (lambda member, path: member) -@@ -2810,7 +2810,7 @@ class DirSrv(SimpleLDAPObject, object): - else: - # No output file specified. Use the default ldif location/name - cmd.append('-a') -- tnow = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") -+ tnow = Task.get_timestamp() - if bename: - ldifname = os.path.join(self.ds_paths.ldif_dir, "%s-%s-%s.ldif" % (self.serverid, bename, tnow)) - else: -@@ -2881,7 +2881,7 @@ class DirSrv(SimpleLDAPObject, object): - - if archive_dir is None: - # Use the instance name and date/time as the default backup name -- tnow = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") -+ tnow = Task.get_timestamp() - archive_dir = os.path.join(self.ds_paths.backup_dir, "%s-%s" % (self.serverid, tnow)) - elif not archive_dir.startswith("/"): - # Relative path, append it to the bak directory -@@ -3506,7 +3506,7 @@ class DirSrv(SimpleLDAPObject, object): - - if archive is None: - # Use the instance name and date/time as the default backup name -- tnow = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") -+ tnow = Task.get_timestamp() - if self.serverid is not None: - backup_dir_name = "%s-%s" % (self.serverid, tnow) - else: -diff --git a/src/lib389/lib389/tasks.py b/src/lib389/lib389/tasks.py -index 6c2adb5b2..6bf302862 100644 ---- a/src/lib389/lib389/tasks.py -+++ b/src/lib389/lib389/tasks.py -@@ -118,7 +118,7 @@ class Task(DSLdapObject): - return super(Task, self).create(rdn, properties, basedn) - - @staticmethod -- def _get_task_date(): -+ def get_timestamp(): - """Return a timestamp to use in naming new task entries.""" - - return datetime.now().isoformat() -@@ -132,7 +132,7 @@ class AutomemberRebuildMembershipTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'automember_rebuild_' + Task._get_task_date() -+ self.cn = 'automember_rebuild_' + Task.get_timestamp() - dn = "cn=" + self.cn + "," + DN_AUTOMEMBER_REBUILD_TASK - - super(AutomemberRebuildMembershipTask, self).__init__(instance, dn) -@@ -147,7 +147,7 @@ class AutomemberAbortRebuildTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'automember_abort_' + Task._get_task_date() -+ self.cn = 'automember_abort_' + Task.get_timestamp() - dn = "cn=" + self.cn + "," + DN_AUTOMEMBER_ABORT_REBUILD_TASK - - super(AutomemberAbortRebuildTask, self).__init__(instance, dn) -@@ -161,7 +161,7 @@ class FixupLinkedAttributesTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'fixup_linked_attrs_' + Task._get_task_date() -+ self.cn = 'fixup_linked_attrs_' + Task.get_timestamp() - dn = "cn=" + self.cn + "," + DN_FIXUP_LINKED_ATTIBUTES - - super(FixupLinkedAttributesTask, self).__init__(instance, dn) -@@ -175,7 +175,7 @@ class MemberUidFixupTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'memberUid_fixup_' + Task._get_task_date() -+ self.cn = 'memberUid_fixup_' + Task.get_timestamp() - dn = f"cn={self.cn},cn=memberuid task,cn=tasks,cn=config" - - super(MemberUidFixupTask, self).__init__(instance, dn) -@@ -190,7 +190,7 @@ class MemberOfFixupTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'memberOf_fixup_' + Task._get_task_date() -+ self.cn = 'memberOf_fixup_' + Task.get_timestamp() - dn = "cn=" + self.cn + "," + DN_MBO_TASK - - super(MemberOfFixupTask, self).__init__(instance, dn) -@@ -205,7 +205,7 @@ class USNTombstoneCleanupTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'usn_cleanup_' + Task._get_task_date() -+ self.cn = 'usn_cleanup_' + Task.get_timestamp() - dn = "cn=" + self.cn + ",cn=USN tombstone cleanup task," + DN_TASKS - - super(USNTombstoneCleanupTask, self).__init__(instance, dn) -@@ -225,7 +225,7 @@ class csngenTestTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'csngenTest_' + Task._get_task_date() -+ self.cn = 'csngenTest_' + Task.get_timestamp() - dn = "cn=" + self.cn + ",cn=csngen_test," + DN_TASKS - super(csngenTestTask, self).__init__(instance, dn) - -@@ -238,7 +238,7 @@ class EntryUUIDFixupTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'entryuuid_fixup_' + Task._get_task_date() -+ self.cn = 'entryuuid_fixup_' + Task.get_timestamp() - dn = "cn=" + self.cn + "," + DN_EUUID_TASK - super(EntryUUIDFixupTask, self).__init__(instance, dn) - self._must_attributes.extend(['basedn']) -@@ -252,7 +252,7 @@ class DBCompactTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'compact_db_' + Task._get_task_date() -+ self.cn = 'compact_db_' + Task.get_timestamp() - dn = "cn=" + self.cn + "," + DN_COMPACTDB_TASK - super(DBCompactTask, self).__init__(instance, dn) - -@@ -265,7 +265,7 @@ class SchemaReloadTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'schema_reload_' + Task._get_task_date() -+ self.cn = 'schema_reload_' + Task.get_timestamp() - dn = "cn=" + self.cn + ",cn=schema reload task," + DN_TASKS - super(SchemaReloadTask, self).__init__(instance, dn) - -@@ -278,7 +278,7 @@ class SyntaxValidateTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'syntax_validate_' + Task._get_task_date() -+ self.cn = 'syntax_validate_' + Task.get_timestamp() - dn = f"cn={self.cn},cn=syntax validate,cn=tasks,cn=config" - - super(SyntaxValidateTask, self).__init__(instance, dn) -@@ -295,7 +295,7 @@ class AbortCleanAllRUVTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'abortcleanallruv_' + Task._get_task_date() -+ self.cn = 'abortcleanallruv_' + Task.get_timestamp() - dn = "cn=" + self.cn + ",cn=abort cleanallruv," + DN_TASKS - - super(AbortCleanAllRUVTask, self).__init__(instance, dn) -@@ -312,7 +312,7 @@ class CleanAllRUVTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'cleanallruv_' + Task._get_task_date() -+ self.cn = 'cleanallruv_' + Task.get_timestamp() - dn = "cn=" + self.cn + ",cn=cleanallruv," + DN_TASKS - self._properties = None - -@@ -359,7 +359,7 @@ class ImportTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'import_' + Task._get_task_date() -+ self.cn = 'import_' + Task.get_timestamp() - dn = "cn=%s,%s" % (self.cn, DN_IMPORT_TASK) - self._properties = None - -@@ -388,7 +388,7 @@ class ExportTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'export_' + Task._get_task_date() -+ self.cn = 'export_' + Task.get_timestamp() - dn = "cn=%s,%s" % (self.cn, DN_EXPORT_TASK) - self._properties = None - -@@ -411,7 +411,7 @@ class BackupTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'backup_' + Task._get_task_date() -+ self.cn = 'backup_' + Task.get_timestamp() - dn = "cn=" + self.cn + ",cn=backup," + DN_TASKS - self._properties = None - -@@ -426,7 +426,7 @@ class RestoreTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'restore_' + Task._get_task_date() -+ self.cn = 'restore_' + Task.get_timestamp() - dn = "cn=" + self.cn + ",cn=restore," + DN_TASKS - self._properties = None - -@@ -513,7 +513,7 @@ class Tasks(object): - raise ValueError("Import file (%s) does not exist" % input_file) - - # Prepare the task entry -- cn = "import_" + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = "import_" + Task.get_timestamp() - dn = "cn=%s,%s" % (cn, DN_IMPORT_TASK) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -581,7 +581,7 @@ class Tasks(object): - raise ValueError("output_file is mandatory") - - # Prepare the task entry -- cn = "export_" + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = "export_" + Task.get_timestamp() - dn = "cn=%s,%s" % (cn, DN_EXPORT_TASK) - entry = Entry(dn) - entry.update({ -@@ -637,7 +637,7 @@ class Tasks(object): - raise ValueError("You must specify a backup directory.") - - # build the task entry -- cn = "backup_" + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = "backup_" + Task.get_timestamp() - dn = "cn=%s,%s" % (cn, DN_BACKUP_TASK) - entry = Entry(dn) - entry.update({ -@@ -694,7 +694,7 @@ class Tasks(object): - raise ValueError("Backup file (%s) does not exist" % backup_dir) - - # build the task entry -- cn = "restore_" + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = "restore_" + Task.get_timestamp() - dn = "cn=%s,%s" % (cn, DN_RESTORE_TASK) - entry = Entry(dn) - entry.update({ -@@ -789,7 +789,7 @@ class Tasks(object): - attrs.append(attr) - else: - attrs.append(attrname) -- cn = "index_vlv_%s" % (time.strftime("%m%d%Y_%H%M%S", time.localtime())) -+ cn = "index_vlv_%s" % (Task.get_timestamp()) - dn = "cn=%s,%s" % (cn, DN_INDEX_TASK) - entry = Entry(dn) - entry.update({ -@@ -803,7 +803,7 @@ class Tasks(object): - # - # Reindex all attributes - gather them first... - # -- cn = "index_all_%s" % (time.strftime("%m%d%Y_%H%M%S", time.localtime())) -+ cn = "index_all_%s" % (Task.get_timestamp()) - dn = ('cn=%s,cn=ldbm database,cn=plugins,cn=config' % backend) - try: - indexes = self.conn.search_s(dn, ldap.SCOPE_SUBTREE, '(objectclass=nsIndex)') -@@ -815,7 +815,7 @@ class Tasks(object): - # - # Reindex specific attributes - # -- cn = "index_attrs_%s" % (time.strftime("%m%d%Y_%H%M%S", time.localtime())) -+ cn = "index_attrs_%s" % (Task.get_timestamp()) - if isinstance(attrname, (tuple, list)): - # Need to guarantee this is a list (and not a tuple) - for attr in attrname: -@@ -903,8 +903,7 @@ class Tasks(object): - - suffix = ents[0].getValue(attr) - -- cn = "fixupmemberof_" + time.strftime("%m%d%Y_%H%M%S", -- time.localtime()) -+ cn = "fixupmemberof_" + Task.get_timestamp() - dn = "cn=%s,%s" % (cn, DN_MBO_TASK) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -965,8 +964,7 @@ class Tasks(object): - if len(ents) != 1: - raise ValueError("invalid backend name: %s" % bename) - -- cn = "fixupTombstone_" + time.strftime("%m%d%Y_%H%M%S", -- time.localtime()) -+ cn = "fixupTombstone_" + Task.get_timestamp() - dn = "cn=%s,%s" % (cn, DN_TOMB_FIXUP_TASK) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1019,7 +1017,7 @@ class Tasks(object): - @return exit code - ''' - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=automember rebuild membership,cn=tasks,cn=config' % cn) - - entry = Entry(dn) -@@ -1077,7 +1075,7 @@ class Tasks(object): - if not ldif_out: - raise ValueError("Missing ldif_out") - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=automember export updates,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1129,7 +1127,7 @@ class Tasks(object): - if not ldif_out or not ldif_in: - raise ValueError("Missing ldif_out and/or ldif_in") - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=automember map updates,cn=tasks,cn=config' % cn) - - entry = Entry(dn) -@@ -1175,7 +1173,7 @@ class Tasks(object): - @return exit code - ''' - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=fixup linked attributes,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1219,7 +1217,7 @@ class Tasks(object): - @return exit code - ''' - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=schema reload task,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1264,7 +1262,7 @@ class Tasks(object): - @return exit code - ''' - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=memberuid task,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1311,7 +1309,7 @@ class Tasks(object): - @return exit code - ''' - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=syntax validate,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1358,7 +1356,7 @@ class Tasks(object): - @return exit code - ''' - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=USN tombstone cleanup task,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1413,7 +1411,7 @@ class Tasks(object): - if not configfile: - raise ValueError("Missing required paramter: configfile") - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=sysconfig reload,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1464,7 +1462,7 @@ class Tasks(object): - if not suffix: - raise ValueError("Missing required paramter: suffix") - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=cleanallruv,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1516,7 +1514,7 @@ class Tasks(object): - if not suffix: - raise ValueError("Missing required paramter: suffix") - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=abort cleanallruv,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1571,7 +1569,7 @@ class Tasks(object): - if not nsArchiveDir: - raise ValueError("Missing required paramter: nsArchiveDir") - -- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) -+ cn = 'task-' + Task.get_timestamp() - dn = ('cn=%s,cn=upgradedb,cn=tasks,cn=config' % cn) - entry = Entry(dn) - entry.setValues('objectclass', 'top', 'extensibleObject') -@@ -1616,6 +1614,6 @@ class LDAPIMappingReloadTask(Task): - """ - - def __init__(self, instance, dn=None): -- self.cn = 'reload-' + Task._get_task_date() -+ self.cn = 'reload-' + Task.get_timestamp() - dn = f'cn={self.cn},cn=reload ldapi mappings,cn=tasks,cn=config' - super(LDAPIMappingReloadTask, self).__init__(instance, dn) --- -2.48.0 - diff --git a/SOURCES/0059-Issue-6822-Backend-creation-cleanup-and-Database-UI-.patch b/SOURCES/0007-Issue-6822-Backend-creation-cleanup-and-Database-UI-.patch similarity index 95% rename from SOURCES/0059-Issue-6822-Backend-creation-cleanup-and-Database-UI-.patch rename to SOURCES/0007-Issue-6822-Backend-creation-cleanup-and-Database-UI-.patch index 74f846b..cd0029d 100644 --- a/SOURCES/0059-Issue-6822-Backend-creation-cleanup-and-Database-UI-.patch +++ b/SOURCES/0007-Issue-6822-Backend-creation-cleanup-and-Database-UI-.patch @@ -1,4 +1,4 @@ -From 61daedf85c534308ec5cc806ddd3d78c7df74b1f Mon Sep 17 00:00:00 2001 +From b6729a99f3a3d4c6ebe82d4bb60ea2a6f8727782 Mon Sep 17 00:00:00 2001 From: Simon Pichugin Date: Fri, 27 Jun 2025 18:43:39 -0700 Subject: [PATCH] Issue 6822 - Backend creation cleanup and Database UI tab @@ -14,16 +14,16 @@ Fixes: https://github.com/389ds/389-ds-base/issues/6822 Reviewed by: @mreynolds389 (Thanks!) --- src/cockpit/389-console/src/database.jsx | 119 ++++++++------ - src/cockpit/389-console/src/monitor.jsx | 165 +++++++++++--------- + src/cockpit/389-console/src/monitor.jsx | 172 +++++++++++--------- src/cockpit/389-console/src/replication.jsx | 55 ++++--- - src/lib389/lib389/backend.py | 18 ++- - 4 files changed, 210 insertions(+), 147 deletions(-) + src/lib389/lib389/backend.py | 18 +- + 4 files changed, 210 insertions(+), 154 deletions(-) diff --git a/src/cockpit/389-console/src/database.jsx b/src/cockpit/389-console/src/database.jsx -index a2e6004a2..86b642b92 100644 +index c0c4be414..276125dfc 100644 --- a/src/cockpit/389-console/src/database.jsx +++ b/src/cockpit/389-console/src/database.jsx -@@ -480,6 +480,59 @@ export class Database extends React.Component { +@@ -478,6 +478,59 @@ export class Database extends React.Component { } loadSuffixTree(fullReset) { @@ -83,7 +83,7 @@ index a2e6004a2..86b642b92 100644 const cmd = [ "dsconf", "-j", "ldapi://%2fvar%2frun%2fslapd-" + this.props.serverId + ".socket", "backend", "get-tree", -@@ -493,58 +546,20 @@ export class Database extends React.Component { +@@ -491,58 +544,20 @@ export class Database extends React.Component { suffixData = JSON.parse(content); this.processTree(suffixData); } @@ -157,10 +157,10 @@ index a2e6004a2..86b642b92 100644 if (fullReset) { current_node = DB_CONFIG; diff --git a/src/cockpit/389-console/src/monitor.jsx b/src/cockpit/389-console/src/monitor.jsx -index 7e0e0c5d4..c89be9051 100644 +index ad48d1f87..91a8e3e37 100644 --- a/src/cockpit/389-console/src/monitor.jsx +++ b/src/cockpit/389-console/src/monitor.jsx -@@ -199,6 +199,84 @@ export class Monitor extends React.Component { +@@ -200,6 +200,84 @@ export class Monitor extends React.Component { } loadSuffixTree(fullReset) { @@ -245,7 +245,7 @@ index 7e0e0c5d4..c89be9051 100644 const cmd = [ "dsconf", "-j", "ldapi://%2fvar%2frun%2fslapd-" + this.props.serverId + ".socket", "backend", "get-tree", -@@ -209,76 +287,7 @@ export class Monitor extends React.Component { +@@ -210,83 +288,7 @@ export class Monitor extends React.Component { .done(content => { const treeData = JSON.parse(content); this.processTree(treeData); @@ -270,6 +270,13 @@ index 7e0e0c5d4..c89be9051 100644 - item: "sync-report", - type: "repl-mon", - }, +- { +- name: _("Log Analysis"), +- icon: , +- id: "log-analysis", +- item: "log-analysis", +- type: "repl-mon", +- } - ], - }, - { @@ -323,7 +330,7 @@ index 7e0e0c5d4..c89be9051 100644 let current_node = this.state.node_name; let type = this.state.node_type; if (fullReset) { -@@ -288,6 +297,22 @@ export class Monitor extends React.Component { +@@ -296,6 +298,22 @@ export class Monitor extends React.Component { basicData[2].children = treeData; // database node this.processReplSuffixes(basicData[1].children); diff --git a/SOURCES/0008-Issue-6554-During-import-of-entries-without-nsUnique.patch b/SOURCES/0008-Issue-6554-During-import-of-entries-without-nsUnique.patch deleted file mode 100644 index f5dd5f0..0000000 --- a/SOURCES/0008-Issue-6554-During-import-of-entries-without-nsUnique.patch +++ /dev/null @@ -1,165 +0,0 @@ -From b2511553590f0d9b41856d8baff5f3cd103dd46f Mon Sep 17 00:00:00 2001 -From: tbordaz -Date: Thu, 6 Feb 2025 18:25:36 +0100 -Subject: [PATCH] Issue 6554 - During import of entries without nsUniqueId, a - supplier generates duplicate nsUniqueId (LMDB only) (#6582) - -Bug description: - During an import the entry is prepared (schema, operational - attributes, password encryption,...) before starting the - update of the database and indexes. - A step of the preparation is to assign a value to 'nsuniqueid' - operational attribute. 'nsuniqueid' must be unique. - In LMDB the preparation is done by multiple threads (workers). - In such case the 'nsuniqueid' are generated in parallel and - as it is time based several values can be duplicated. - -Fix description: - To prevent that the routine dbmdb_import_generate_uniqueid - should make sure to synchronize the workers. - -fixes: #6554 - -Reviewed by: Pierre Rogier ---- - .../tests/suites/import/import_test.py | 79 ++++++++++++++++++- - .../back-ldbm/db-mdb/mdb_import_threads.c | 11 +++ - 2 files changed, 89 insertions(+), 1 deletion(-) - -diff --git a/dirsrvtests/tests/suites/import/import_test.py b/dirsrvtests/tests/suites/import/import_test.py -index b7cba32fd..18caec633 100644 ---- a/dirsrvtests/tests/suites/import/import_test.py -+++ b/dirsrvtests/tests/suites/import/import_test.py -@@ -14,11 +14,13 @@ import os - import pytest - import time - import glob -+import re - import logging - import subprocess - from datetime import datetime - from lib389.topologies import topology_st as topo --from lib389._constants import DEFAULT_SUFFIX, TaskWarning -+from lib389.topologies import topology_m2 as topo_m2 -+from lib389._constants import DEFAULT_BENAME, DEFAULT_SUFFIX, TaskWarning - from lib389.dbgen import dbgen_users - from lib389.tasks import ImportTask - from lib389.index import Indexes -@@ -690,6 +692,81 @@ def test_online_import_under_load(topo): - assert import_task.get_exit_code() == 0 - - -+def test_duplicate_nsuniqueid(topo_m2, request): -+ """Test that after an offline import all -+ nsuniqueid are different -+ -+ :id: a2541677-a288-4633-bacf-4050cc56016d -+ :setup: MMR with 2 suppliers -+ :steps: -+ 1. stop the instance to do offline operations -+ 2. Generate a 5K users LDIF file -+ 3. Check that no uniqueid are present in the generated file -+ 4. import the generated LDIF -+ 5. export the database -+ 6. Check that that exported LDIF contains more than 5K nsuniqueid -+ 7. Check that there is no duplicate nsuniqued in exported LDIF -+ :expectedresults: -+ 1. Should succeeds -+ 2. Should succeeds -+ 3. Should succeeds -+ 4. Should succeeds -+ 5. Should succeeds -+ 6. Should succeeds -+ 7. Should succeeds -+ """ -+ m1 = topo_m2.ms["supplier1"] -+ -+ # Stop the instance -+ m1.stop() -+ -+ # Generate a test ldif (5k entries) -+ log.info("Generating LDIF...") -+ ldif_dir = m1.get_ldif_dir() -+ import_ldif = ldif_dir + '/5k_users_import.ldif' -+ dbgen_users(m1, 5000, import_ldif, DEFAULT_SUFFIX) -+ -+ # Check that the generated LDIF does not contain nsuniqueid -+ all_nsuniqueid = [] -+ with open(import_ldif, 'r') as file: -+ for line in file: -+ if line.lower().startswith("nsuniqueid: "): -+ all_nsuniqueid.append(line.split(': ')[1]) -+ log.info("import file contains " + str(len(all_nsuniqueid)) + " nsuniqueid") -+ assert len(all_nsuniqueid) == 0 -+ -+ # Import the "nsuniquied free" LDIF file -+ if not m1.ldif2db('userRoot', None, None, None, import_ldif): -+ assert False -+ -+ # Export the DB that now should contain nsuniqueid -+ export_ldif = ldif_dir + '/5k_user_export.ldif' -+ log.info("export to file " + export_ldif) -+ m1.db2ldif(bename=DEFAULT_BENAME, suffixes=[DEFAULT_SUFFIX], -+ excludeSuffixes=None, repl_data=False, -+ outputfile=export_ldif, encrypt=False) -+ -+ # Check that the export LDIF contain nsuniqueid -+ all_nsuniqueid = [] -+ with open(export_ldif, 'r') as file: -+ for line in file: -+ if line.lower().startswith("nsuniqueid: "): -+ all_nsuniqueid.append(line.split(': ')[1]) -+ log.info("export file " + export_ldif + " contains " + str(len(all_nsuniqueid)) + " nsuniqueid") -+ assert len(all_nsuniqueid) >= 5000 -+ -+ # Check that the nsuniqueid are unique -+ assert len(set(all_nsuniqueid)) == len(all_nsuniqueid) -+ -+ def fin(): -+ if os.path.exists(import_ldif): -+ os.remove(import_ldif) -+ if os.path.exists(export_ldif): -+ os.remove(export_ldif) -+ m1.start -+ -+ request.addfinalizer(fin) -+ - if __name__ == '__main__': - # Run isolated - # -s for DEBUG mode -diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c -index 707a110c5..0f445bb56 100644 ---- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c -+++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c -@@ -610,10 +610,20 @@ dbmdb_import_generate_uniqueid(ImportJob *job, Slapi_Entry *e) - { - const char *uniqueid = slapi_entry_get_uniqueid(e); - int rc = UID_SUCCESS; -+ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; - - if (!uniqueid && (job->uuid_gen_type != SLAPI_UNIQUEID_GENERATE_NONE)) { - char *newuniqueid; - -+ /* With 'mdb' we have several workers generating nsuniqueid -+ * we need to serialize them to prevent generating duplicate value -+ * From performance pov it only impacts import -+ * The default value is SLAPI_UNIQUEID_GENERATE_TIME_BASED so -+ * the only syscall is clock_gettime and then string formating -+ * that should limit contention -+ */ -+ pthread_mutex_lock(&mutex); -+ - /* generate id based on dn */ - if (job->uuid_gen_type == SLAPI_UNIQUEID_GENERATE_NAME_BASED) { - char *dn = slapi_entry_get_dn(e); -@@ -624,6 +634,7 @@ dbmdb_import_generate_uniqueid(ImportJob *job, Slapi_Entry *e) - /* time based */ - rc = slapi_uniqueIDGenerateString(&newuniqueid); - } -+ pthread_mutex_unlock(&mutex); - - if (rc == UID_SUCCESS) { - slapi_entry_set_uniqueid(e, newuniqueid); --- -2.48.0 - diff --git a/SOURCES/0053-Issue-6857-uiduniq-allow-specifying-match-rules-in-t.patch b/SOURCES/0008-Issue-6857-uiduniq-allow-specifying-match-rules-in-t.patch similarity index 96% rename from SOURCES/0053-Issue-6857-uiduniq-allow-specifying-match-rules-in-t.patch rename to SOURCES/0008-Issue-6857-uiduniq-allow-specifying-match-rules-in-t.patch index c8597a4..5d62b75 100644 --- a/SOURCES/0053-Issue-6857-uiduniq-allow-specifying-match-rules-in-t.patch +++ b/SOURCES/0008-Issue-6857-uiduniq-allow-specifying-match-rules-in-t.patch @@ -1,4 +1,4 @@ -From 33f67a8ada0258c88a4e5c6c5ce7ba3aa9a048d8 Mon Sep 17 00:00:00 2001 +From 0a7fe7c6e18759459499f468443ded4313ebdeab Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Wed, 9 Jul 2025 12:08:09 +0300 Subject: [PATCH] Issue 6857 - uiduniq: allow specifying match rules in the diff --git a/SOURCES/0009-Issue-6561-TLS-1.2-stickiness-in-FIPS-mode.patch b/SOURCES/0009-Issue-6561-TLS-1.2-stickiness-in-FIPS-mode.patch deleted file mode 100644 index 93fef39..0000000 --- a/SOURCES/0009-Issue-6561-TLS-1.2-stickiness-in-FIPS-mode.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 116b7cf21618ad7e717ae7f535709508a824f7d9 Mon Sep 17 00:00:00 2001 -From: Viktor Ashirov -Date: Thu, 13 Feb 2025 16:37:43 +0100 -Subject: [PATCH] Issue 6561 - TLS 1.2 stickiness in FIPS mode - -Description: -TLS 1.3 works with NSS in FIPS mode for quite some time now, -this restriction is no longer needed. - -Fixes: https://github.com/389ds/389-ds-base/issues/6561 - -Reviewed by: @mreynolds389 (Thanks!) ---- - ldap/servers/slapd/ssl.c | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git a/ldap/servers/slapd/ssl.c b/ldap/servers/slapd/ssl.c -index 94259efe7..84a7fb004 100644 ---- a/ldap/servers/slapd/ssl.c -+++ b/ldap/servers/slapd/ssl.c -@@ -1929,14 +1929,6 @@ slapd_ssl_init2(PRFileDesc **fd, int startTLS) - */ - sslStatus = SSL_VersionRangeGet(pr_sock, &slapdNSSVersions); - if (sslStatus == SECSuccess) { -- if (slapdNSSVersions.max > LDAP_OPT_X_TLS_PROTOCOL_TLS1_2 && fipsMode) { -- /* -- * FIPS & NSS currently only support a max version of TLS1.2 -- * (although NSS advertises 1.3 as a max range in FIPS mode), -- * hopefully this code block can be removed soon... -- */ -- slapdNSSVersions.max = LDAP_OPT_X_TLS_PROTOCOL_TLS1_2; -- } - /* Reset request range */ - sslStatus = SSL_VersionRangeSet(pr_sock, &slapdNSSVersions); - if (sslStatus == SECSuccess) { --- -2.48.1 - diff --git a/SOURCES/0039-Issue-6756-CLI-UI-Properly-handle-disabled-NDN-cache.patch b/SOURCES/0009-Issue-6756-CLI-UI-Properly-handle-disabled-NDN-cache.patch similarity index 99% rename from SOURCES/0039-Issue-6756-CLI-UI-Properly-handle-disabled-NDN-cache.patch rename to SOURCES/0009-Issue-6756-CLI-UI-Properly-handle-disabled-NDN-cache.patch index ecd74b2..f519007 100644 --- a/SOURCES/0039-Issue-6756-CLI-UI-Properly-handle-disabled-NDN-cache.patch +++ b/SOURCES/0009-Issue-6756-CLI-UI-Properly-handle-disabled-NDN-cache.patch @@ -1,4 +1,4 @@ -From 1246860fa3ee52ba113759b524aa56c948161a12 Mon Sep 17 00:00:00 2001 +From b28b00ee5169cfb00414bc9bcca67f88432ad567 Mon Sep 17 00:00:00 2001 From: Simon Pichugin Date: Thu, 10 Jul 2025 11:53:12 -0700 Subject: [PATCH] Issue 6756 - CLI, UI - Properly handle disabled NDN cache @@ -135,7 +135,7 @@ index 4a82eb0ef..b04ee67c9 100644 # Run isolated # -s for DEBUG mode diff --git a/src/cockpit/389-console/src/database.jsx b/src/cockpit/389-console/src/database.jsx -index c0c4be414..a2e6004a2 100644 +index 276125dfc..86b642b92 100644 --- a/src/cockpit/389-console/src/database.jsx +++ b/src/cockpit/389-console/src/database.jsx @@ -198,7 +198,7 @@ export class Database extends React.Component { diff --git a/SOURCES/0010-Issue-6090-dbscan-use-bdb-by-default.patch b/SOURCES/0010-Issue-6090-dbscan-use-bdb-by-default.patch deleted file mode 100644 index f39eb11..0000000 --- a/SOURCES/0010-Issue-6090-dbscan-use-bdb-by-default.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 39d91c4b86fc2ad7e35f8bebd510dff984e8ba56 Mon Sep 17 00:00:00 2001 -From: Viktor Ashirov -Date: Wed, 5 Mar 2025 23:46:02 +0100 -Subject: [PATCH] Issue 6090 - dbscan: use bdb by default - -Bug Description: -dbscan started to use mdb by default on versions where it's not the -default. - -Fix Description: -Use bdb by default on 2.x versions. - -Relates: https://github.com/389ds/389-ds-base/issues/6090 - -Reviewed by: @mreynolds389 (Thanks!) ---- - ldap/servers/slapd/tools/dbscan.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ldap/servers/slapd/tools/dbscan.c b/ldap/servers/slapd/tools/dbscan.c -index 12edf7c5b..9260c1532 100644 ---- a/ldap/servers/slapd/tools/dbscan.c -+++ b/ldap/servers/slapd/tools/dbscan.c -@@ -1280,7 +1280,7 @@ removedb(const char *dbimpl_name, const char *filename) - - if (!filename) { - printf("Error: -f option is missing.\n" -- "Usage: dbscan -D mdb -d -f //\n"); -+ "Usage: dbscan -D bdb -d -f //\n"); - return 1; - } - -@@ -1314,7 +1314,7 @@ main(int argc, char **argv) - char *find_key = NULL; - uint32_t entry_id = 0xffffffff; - char *defdbimpl = getenv("NSSLAPD_DB_LIB"); -- char *dbimpl_name = (char*) "mdb"; -+ char *dbimpl_name = (char*) "bdb"; - int longopt_idx = 0; - int c = 0; - char optstring[2*COUNTOF(options)+1] = {0}; --- -2.48.1 - diff --git a/SOURCES/0054-Issue-6859-str2filter-is-not-fully-applying-matching.patch b/SOURCES/0010-Issue-6859-str2filter-is-not-fully-applying-matching.patch similarity index 99% rename from SOURCES/0054-Issue-6859-str2filter-is-not-fully-applying-matching.patch rename to SOURCES/0010-Issue-6859-str2filter-is-not-fully-applying-matching.patch index c77dfd2..09cc802 100644 --- a/SOURCES/0054-Issue-6859-str2filter-is-not-fully-applying-matching.patch +++ b/SOURCES/0010-Issue-6859-str2filter-is-not-fully-applying-matching.patch @@ -1,4 +1,4 @@ -From 63552e6f8fcd1da02338c229f665772507016c5e Mon Sep 17 00:00:00 2001 +From 5198da59d622dbc39afe2ece9c6f40f4fb249d52 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Wed, 9 Jul 2025 14:18:50 -0400 Subject: [PATCH] Issue 6859 - str2filter is not fully applying matching rules diff --git a/SOURCES/0011-Issue-6375-UI-Update-cockpit.js-code-to-the-latest-v.patch b/SOURCES/0011-Issue-6375-UI-Update-cockpit.js-code-to-the-latest-v.patch deleted file mode 100644 index d00746e..0000000 --- a/SOURCES/0011-Issue-6375-UI-Update-cockpit.js-code-to-the-latest-v.patch +++ /dev/null @@ -1,49373 +0,0 @@ -From 56ecde548b05b526150cb6df712b2bda9fbfc452 Mon Sep 17 00:00:00 2001 -From: Simon Pichugin -Date: Mon, 2 Dec 2024 18:55:00 -0500 -Subject: [PATCH] Issue 6375 - UI - Update cockpit.js code to the latest - version (#6376) - -Description: Update src/cockpit/389-console/pkg/lib/cockpit.js to the latest version. -Update the entire src/cockpit/389-console/pkg/lib directory from Cockpit's repository. -Update package.json. -Update 389 DS UI components to PF5. - -Fixes: https://github.com/389ds/389-ds-base/issues/6375 - -Reviewed by: @progier389, @mreynolds389 (Thanks!!) ---- - src/cockpit/389-console/build.js | 38 +- - src/cockpit/389-console/buildAndRun.sh | 2 +- - src/cockpit/389-console/package-lock.json | 13600 ++++++++++++---- - src/cockpit/389-console/package.json | 87 +- - src/cockpit/389-console/pkg/lib/README | 2 +- - .../lib/cockpit-components-context-menu.tsx | 103 + - .../pkg/lib/cockpit-components-dialog.jsx | 30 +- - .../pkg/lib/cockpit-components-dropdown.tsx | 83 + - .../lib/cockpit-components-dynamic-list.jsx | 143 + - .../lib/cockpit-components-dynamic-list.scss | 39 + - .../lib/cockpit-components-empty-state.jsx | 15 +- - .../cockpit-components-file-autocomplete.jsx | 21 +- - .../cockpit-components-firewalld-request.jsx | 2 +- - .../lib/cockpit-components-form-helper.tsx | 51 + - ...cockpit-components-inline-notification.tsx | 83 + - .../lib/cockpit-components-install-dialog.jsx | 2 +- - .../lib/cockpit-components-listing-panel.jsx | 2 +- - .../lib/cockpit-components-listing-panel.scss | 3 +- - .../pkg/lib/cockpit-components-logs-panel.jsx | 6 +- - .../lib/cockpit-components-modifications.jsx | 223 +- - .../pkg/lib/cockpit-components-password.jsx | 115 +- - .../pkg/lib/cockpit-components-password.scss | 4 + - .../pkg/lib/cockpit-components-plot.jsx | 48 +- - .../pkg/lib/cockpit-components-privileged.jsx | 13 +- - .../pkg/lib/cockpit-components-shutdown.jsx | 21 +- - .../pkg/lib/cockpit-components-table.jsx | 40 +- - .../pkg/lib/cockpit-components-table.scss | 14 - - .../pkg/lib/cockpit-components-terminal.jsx | 31 +- - .../pkg/lib/cockpit-components-truncate.jsx | 42 + - .../pkg/lib/cockpit-components-truncate.scss | 4 + - .../pkg/lib/cockpit-connect-ssh.tsx | 604 + - .../389-console/pkg/lib/cockpit-dark-theme.ts | 72 + - .../389-console/pkg/lib/cockpit-path.ts | 46 + - .../389-console/pkg/lib/cockpit-po-plugin.js | 75 +- - .../pkg/lib/cockpit-rsync-plugin.js | 3 +- - .../pkg/lib/cockpit-upload-helper.ts | 183 + - src/cockpit/389-console/pkg/lib/cockpit.d.ts | 327 + - src/cockpit/389-console/pkg/lib/cockpit.js | 1639 +- - .../pkg/lib/cockpit/_internal/base64.js | 65 + - .../pkg/lib/cockpit/_internal/channel.js | 245 + - .../pkg/lib/cockpit/_internal/common.ts | 97 + - .../pkg/lib/cockpit/_internal/deferred.js | 237 + - .../pkg/lib/cockpit/_internal/event-mixin.js | 62 + - .../pkg/lib/cockpit/_internal/location.ts | 62 + - .../lib/cockpit/_internal/parentwebsocket.ts | 58 + - .../pkg/lib/cockpit/_internal/transport.ts | 312 + - .../389-console/pkg/lib/cockpit/channel.ts | 287 + - .../389-console/pkg/lib/cockpit/event.ts | 36 + - .../389-console/pkg/lib/cockpit/fsinfo.ts | 150 + - src/cockpit/389-console/pkg/lib/console.css | 7 +- - .../389-console/pkg/lib/credentials.js | 227 +- - src/cockpit/389-console/pkg/lib/dialogs.tsx | 194 + - .../pkg/lib/esbuild-cleanup-plugin.js | 4 +- - .../389-console/pkg/lib/esbuild-common.js | 7 - - .../pkg/lib/esbuild-compress-plugin.js | 8 +- - .../pkg/lib/esbuild-test-html-plugin.js | 14 +- - .../pkg/lib/get-timesync-backend.py | 2 +- - src/cockpit/389-console/pkg/lib/hooks.ts | 337 + - src/cockpit/389-console/pkg/lib/html2po.js | 9 +- - src/cockpit/389-console/pkg/lib/inotify.py | 7 +- - src/cockpit/389-console/pkg/lib/journal.css | 2 +- - src/cockpit/389-console/pkg/lib/journal.js | 3 +- - src/cockpit/389-console/pkg/lib/kernelopt.sh | 72 + - .../pkg/lib/long-running-process.js | 2 +- - .../389-console/pkg/lib/machine-info.js | 4 +- - .../389-console/pkg/lib/manifest2po.js | 2 + - .../389-console/pkg/lib/notifications.js | 6 +- - src/cockpit/389-console/pkg/lib/os-release.js | 2 +- - src/cockpit/389-console/pkg/lib/packagekit.js | 31 +- - .../389-console/pkg/lib/pam_user_parser.ts | 95 + - .../pkg/lib/patternfly/_fonts.scss | 8 +- - .../patternfly/patternfly-5-overrides.scss | 312 +- - src/cockpit/389-console/pkg/lib/plot.js | 2 +- - src/cockpit/389-console/pkg/lib/polyfills.js | 2 +- - src/cockpit/389-console/pkg/lib/python.js | 2 +- - .../389-console/pkg/lib/qunit-tap.d.ts | 3 + - .../pkg/lib/qunit-template.html.in | 8 +- - .../389-console/pkg/lib/qunit-tests.ts | 108 + - src/cockpit/389-console/pkg/lib/serverTime.js | 95 +- - src/cockpit/389-console/pkg/lib/service.js | 2 +- - .../389-console/pkg/lib/ssh-add-key.sh | 25 + - .../pkg/lib/ssh-show-default-key.sh | 16 + - src/cockpit/389-console/pkg/lib/superuser.js | 2 +- - src/cockpit/389-console/pkg/lib/table.css | 16 +- - src/cockpit/389-console/pkg/lib/test-path.ts | 57 + - src/cockpit/389-console/pkg/lib/timeformat.ts | 83 + - src/cockpit/389-console/pkg/lib/utils.tsx | 85 + - src/cockpit/389-console/src/LDAPEditor.jsx | 21 +- - src/cockpit/389-console/src/database.jsx | 43 +- - src/cockpit/389-console/src/ds.jsx | 69 +- - src/cockpit/389-console/src/dsModals.jsx | 34 +- - .../src/lib/database/attrEncryption.jsx | 18 +- - .../389-console/src/lib/database/backups.jsx | 8 +- - .../389-console/src/lib/database/chaining.jsx | 144 +- - .../src/lib/database/databaseConfig.jsx | 20 +- - .../src/lib/database/databaseModal.jsx | 40 +- - .../src/lib/database/databaseTables.jsx | 846 +- - .../src/lib/database/globalPwp.jsx | 151 +- - .../389-console/src/lib/database/indexes.jsx | 72 +- - .../389-console/src/lib/database/localPwp.jsx | 254 +- - .../src/lib/database/referrals.jsx | 10 +- - .../389-console/src/lib/database/suffix.jsx | 59 +- - .../src/lib/database/suffixConfig.jsx | 14 +- - .../src/lib/database/vlvIndexes.jsx | 54 +- - .../src/lib/ldap_editor/lib/editableTable.jsx | 521 +- - .../lib/ldap_editor/lib/genericPagination.jsx | 218 +- - .../src/lib/ldap_editor/search.jsx | 118 +- - .../src/lib/ldap_editor/tableView.jsx | 226 +- - .../src/lib/ldap_editor/treeView.jsx | 80 +- - .../src/lib/ldap_editor/wizards/aci.jsx | 180 +- - .../src/lib/ldap_editor/wizards/cos.jsx | 6 +- - .../ldap_editor/wizards/deleteOperation.jsx | 24 +- - .../src/lib/ldap_editor/wizards/newEntry.jsx | 12 +- - .../wizards/operations/aciBindRuleTable.jsx | 85 +- - .../ldap_editor/wizards/operations/aciNew.jsx | 212 +- - .../wizards/operations/addCosDefinition.jsx | 96 +- - .../wizards/operations/addCosTemplate.jsx | 292 +- - .../wizards/operations/addGroup.jsx | 70 +- - .../wizards/operations/addLdapEntry.jsx | 204 +- - .../wizards/operations/addRole.jsx | 154 +- - .../wizards/operations/addUser.jsx | 141 +- - .../wizards/operations/editGroup.jsx | 4 +- - .../wizards/operations/editLdapEntry.jsx | 287 +- - .../wizards/operations/genericUpdate.jsx | 78 +- - .../wizards/operations/groupTable.jsx | 124 +- - .../wizards/operations/renameEntry.jsx | 50 +- - .../389-console/src/lib/monitor/accesslog.jsx | 25 +- - .../src/lib/monitor/auditfaillog.jsx | 23 +- - .../389-console/src/lib/monitor/auditlog.jsx | 23 +- - .../src/lib/monitor/chainingMonitor.jsx | 23 +- - .../389-console/src/lib/monitor/errorlog.jsx | 25 +- - .../src/lib/monitor/monitorModals.jsx | 34 +- - .../src/lib/monitor/monitorTables.jsx | 1534 +- - .../src/lib/monitor/replMonAgmts.jsx | 16 +- - .../src/lib/monitor/replMonConflict.jsx | 20 +- - .../src/lib/monitor/replMonTasks.jsx | 16 +- - .../src/lib/monitor/replMonWinsync.jsx | 16 +- - .../src/lib/monitor/replMonitor.jsx | 19 +- - .../src/lib/monitor/securitylog.jsx | 25 +- - .../src/lib/monitor/serverMonitor.jsx | 17 +- - .../src/lib/monitor/suffixMonitor.jsx | 12 +- - .../389-console/src/lib/notifications.jsx | 2 +- - .../src/lib/plugins/accountPolicy.jsx | 64 +- - .../src/lib/plugins/attributeUniqueness.jsx | 52 +- - .../src/lib/plugins/autoMembership.jsx | 60 +- - .../389-console/src/lib/plugins/dna.jsx | 70 +- - .../src/lib/plugins/linkedAttributes.jsx | 38 +- - .../src/lib/plugins/managedEntries.jsx | 153 +- - .../389-console/src/lib/plugins/memberOf.jsx | 106 +- - .../src/lib/plugins/pamPassThru.jsx | 56 +- - .../lib/plugins/passthroughAuthentication.jsx | 8 +- - .../src/lib/plugins/pluginBasicConfig.jsx | 6 +- - .../src/lib/plugins/pluginTables.jsx | 1673 +- - .../src/lib/plugins/referentialIntegrity.jsx | 82 +- - .../src/lib/plugins/retroChangelog.jsx | 44 +- - .../src/lib/plugins/rootDNAccessControl.jsx | 56 +- - .../389-console/src/lib/plugins/usn.jsx | 4 +- - .../389-console/src/lib/plugins/winsync.jsx | 18 +- - .../src/lib/replication/replAgmts.jsx | 14 +- - .../src/lib/replication/replChangelog.jsx | 4 +- - .../src/lib/replication/replConfig.jsx | 8 +- - .../src/lib/replication/replModals.jsx | 210 +- - .../src/lib/replication/replSuffix.jsx | 29 +- - .../src/lib/replication/replTables.jsx | 383 +- - .../src/lib/replication/replTasks.jsx | 30 +- - .../src/lib/replication/winsyncAgmts.jsx | 4 +- - .../src/lib/schema/schemaModals.jsx | 56 +- - .../src/lib/schema/schemaTables.jsx | 626 +- - .../389-console/src/lib/security/ciphers.jsx | 48 +- - .../src/lib/security/securityModals.jsx | 109 +- - .../src/lib/security/securityTables.jsx | 593 +- - .../389-console/src/lib/server/accessLog.jsx | 75 +- - .../389-console/src/lib/server/auditLog.jsx | 86 +- - .../src/lib/server/auditfailLog.jsx | 28 +- - .../389-console/src/lib/server/errorLog.jsx | 93 +- - .../389-console/src/lib/server/ldapi.jsx | 58 +- - .../389-console/src/lib/server/sasl.jsx | 56 +- - .../src/lib/server/securityLog.jsx | 159 +- - .../src/lib/server/serverModals.jsx | 22 +- - .../src/lib/server/serverTables.jsx | 273 +- - .../389-console/src/lib/server/settings.jsx | 128 +- - .../389-console/src/lib/server/tuning.jsx | 30 +- - src/cockpit/389-console/src/monitor.jsx | 28 +- - src/cockpit/389-console/src/plugins.jsx | 6 +- - src/cockpit/389-console/src/replication.jsx | 17 +- - src/cockpit/389-console/src/schema.jsx | 20 +- - src/cockpit/389-console/src/security.jsx | 96 +- - src/cockpit/389-console/src/server.jsx | 15 +- - 188 files changed, 23216 insertions(+), 10735 deletions(-) - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-components-context-menu.tsx - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-components-dropdown.tsx - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-components-dynamic-list.jsx - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-components-dynamic-list.scss - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-components-form-helper.tsx - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-components-inline-notification.tsx - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-components-truncate.jsx - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-components-truncate.scss - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-connect-ssh.tsx - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-dark-theme.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-path.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit-upload-helper.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit.d.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/_internal/base64.js - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/_internal/channel.js - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/_internal/common.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/_internal/deferred.js - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/_internal/event-mixin.js - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/_internal/location.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/_internal/parentwebsocket.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/_internal/transport.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/channel.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/event.ts - create mode 100644 src/cockpit/389-console/pkg/lib/cockpit/fsinfo.ts - create mode 100644 src/cockpit/389-console/pkg/lib/dialogs.tsx - create mode 100644 src/cockpit/389-console/pkg/lib/hooks.ts - create mode 100755 src/cockpit/389-console/pkg/lib/kernelopt.sh - create mode 100644 src/cockpit/389-console/pkg/lib/pam_user_parser.ts - create mode 100644 src/cockpit/389-console/pkg/lib/qunit-tap.d.ts - create mode 100644 src/cockpit/389-console/pkg/lib/qunit-tests.ts - create mode 100755 src/cockpit/389-console/pkg/lib/ssh-add-key.sh - create mode 100755 src/cockpit/389-console/pkg/lib/ssh-show-default-key.sh - create mode 100644 src/cockpit/389-console/pkg/lib/test-path.ts - create mode 100644 src/cockpit/389-console/pkg/lib/timeformat.ts - create mode 100644 src/cockpit/389-console/pkg/lib/utils.tsx - -diff --git a/src/cockpit/389-console/build.js b/src/cockpit/389-console/build.js -index 6b62d0100..55a7a4fb2 100755 ---- a/src/cockpit/389-console/build.js -+++ b/src/cockpit/389-console/build.js -@@ -2,6 +2,7 @@ - - import fs from 'node:fs'; - import path from 'node:path'; -+import process from 'node:process'; - import os from 'node:os'; - - import copy from 'esbuild-plugin-copy'; -@@ -11,16 +12,20 @@ import { cockpitCompressPlugin } from './pkg/lib/esbuild-compress-plugin.js'; - import { cockpitPoEsbuildPlugin } from './pkg/lib/cockpit-po-plugin.js'; - import { cockpitRsyncEsbuildPlugin } from './pkg/lib/cockpit-rsync-plugin.js'; - import { esbuildStylesPlugins } from './pkg/lib/esbuild-common.js'; --import { eslintPlugin } from './pkg/lib/esbuild-eslint-plugin.js'; --import { stylelintPlugin } from './pkg/lib/esbuild-stylelint-plugin.js'; - -+const production = process.env.NODE_ENV === 'production'; - const useWasm = os.arch() !== 'x64'; - const esbuild = (await import(useWasm ? 'esbuild-wasm' : 'esbuild')).default; - --const production = process.env.NODE_ENV === 'production'; --const watchMode = process.env.ESBUILD_WATCH === "true"; --// linters dominate the build time, so disable them for production builds by default, but enable in watch mode --const lint = process.env.LINT ? (process.env.LINT !== 0) : (watchMode || !production); -+const parser = (await import('argparse')).default.ArgumentParser(); -+parser.add_argument('-r', '--rsync', { help: "rsync bundles to ssh target after build", metavar: "HOST" }); -+parser.add_argument('-w', '--watch', { action: 'store_true', help: "Enable watch mode", default: process.env.ESBUILD_WATCH === "true" }); -+parser.add_argument('-m', '--metafile', { help: "Enable bundle size information file", metavar: "FILE" }); -+const args = parser.parse_args(); -+ -+if (args.rsync) -+ process.env.RSYNC = args.rsync; -+ - // List of directories to use when using import statements - const nodePaths = ['pkg/lib']; - const outdir = 'dist'; -@@ -47,15 +52,12 @@ function notifyEndPlugin() { - }; - } - --const cwd = process.cwd(); -- - // similar to fs.watch(), but recursively watches all subdirectories - function watch_dirs(dir, on_change) { - const callback = (ev, dir, fname) => { - // only listen for "change" events, as renames are noisy - // ignore hidden files -- const isHidden = /^\./.test(fname); -- if (ev !== "change" || isHidden) { -+ if (ev !== "change" || fname.startsWith('.')) { - return; - } - on_change(path.join(dir, fname)); -@@ -81,18 +83,13 @@ const context = await esbuild.context({ - external: ['*.woff', '*.woff2', '*.jpg', '*.svg', '../../assets*'], // Allow external font files which live in ../../static/fonts - legalComments: 'external', // Move all legal comments to a .LEGAL.txt file - loader: { ".js": "jsx" }, -+ metafile: !!args.metafile, - minify: production, - nodePaths, - outdir, - target: ['es2020'], - plugins: [ - cleanPlugin(), -- ...lint -- ? [ -- stylelintPlugin({ filter: new RegExp(cwd + '\/src\/.*\.(css?|scss?)$') }), -- eslintPlugin({ filter: new RegExp(cwd + '\/src\/.*\.(jsx?|js?)$') }) -- ] -- : [], - // Esbuild will only copy assets that are explicitly imported and used - // in the code. This is a problem for index.html and manifest.json which are not imported - copy({ -@@ -110,14 +107,17 @@ const context = await esbuild.context({ - }); - - try { -- await context.rebuild(); -+ const result = await context.rebuild(); -+ if (args.metafile) { -+ fs.writeFileSync(args.metafile, JSON.stringify(result.metafile)); -+ } - } catch (e) { -- if (!watchMode) -+ if (!args.watch) - process.exit(1); - // ignore errors in watch mode - } - --if (watchMode) { -+if (args.watch) { - const on_change = async path => { - console.log("change detected:", path); - await context.cancel(); -diff --git a/src/cockpit/389-console/buildAndRun.sh b/src/cockpit/389-console/buildAndRun.sh -index d46f94d62..ef78830ae 100755 ---- a/src/cockpit/389-console/buildAndRun.sh -+++ b/src/cockpit/389-console/buildAndRun.sh -@@ -12,5 +12,5 @@ if [ $? != 0 ]; then - fi - - printf "\nBuilding and watching ...\n" --ESBUILD_WATCH=true ./build.js -+./build.js --watch - # npm run watch -diff --git a/src/cockpit/389-console/package-lock.json b/src/cockpit/389-console/package-lock.json -index 53b11978f..6a4063fc3 100644 ---- a/src/cockpit/389-console/package-lock.json -+++ b/src/cockpit/389-console/package-lock.json -@@ -1,7 +1,7 @@ - { - "name": "389-console", - "version": "1.0.0", -- "lockfileVersion": 3, -+ "lockfileVersion": 2, - "requires": true, - "packages": { - "": { -@@ -12,459 +12,101 @@ - "@fortawesome/fontawesome-svg-core": "^1.2.34", - "@fortawesome/free-solid-svg-icons": "^5.15.2", - "@fortawesome/react-fontawesome": "^0.1.14", -- "@patternfly/patternfly": ">=4.90.3", -- "@patternfly/react-charts": "^6.34.1", -- "@patternfly/react-core": "^4.181.1", -- "@patternfly/react-icons": "^4.8.4", -- "@patternfly/react-styles": "^4.92.6", -- "@patternfly/react-table": "^4.50.1", -+ "@patternfly/patternfly": "5.4.1", -+ "@patternfly/react-charts": "7.4.3", -+ "@patternfly/react-core": "5.4.1", -+ "@patternfly/react-icons": "5.4.0", -+ "@patternfly/react-styles": "5.4.0", -+ "@patternfly/react-table": "5.4.1", -+ "@patternfly/react-tokens": "5.4.0", -+ "@xterm/addon-canvas": "0.7.0", -+ "@xterm/xterm": "5.5.0", -+ "dequal": "2.0.3", - "eslint-plugin-react-hooks": "^4.2.0", - "gettext-parser": "^2.0.0", -- "prop-types": "^15.7.2", -- "react": "17.0.2", -- "react-dom": "17.0.2" -+ "js-sha1": "0.7.0", -+ "js-sha256": "0.11.0", -+ "json-stable-stringify-without-jsonify": "1.0.1", -+ "prop-types": "15.8.1", -+ "react": "18.3.1", -+ "react-dom": "18.3.1", -+ "remarkable": "2.0.1", -+ "throttle-debounce": "5.0.2", -+ "uuid": "10.0.0" - }, - "devDependencies": { -- "argparse": "^2.0.1", -+ "@types/qunit": "^2.19.10", -+ "@types/react": "18.3.11", -+ "@types/react-dom": "18.3.0", -+ "@typescript-eslint/eslint-plugin": "8.8.0", -+ "argparse": "2.0.1", - "chrome-remote-interface": "^0.32.1", -- "esbuild": "^0.17.15", -- "esbuild-plugin-copy": "^2.1.1", -- "esbuild-plugin-replace": "^1.3.0", -- "esbuild-sass-plugin": "^2.8.0", -- "esbuild-wasm": "^0.17.16", -- "eslint": "^8.13.0", -- "eslint-config-standard": "^17.0.0-1", -- "eslint-config-standard-jsx": "^11.0.0-1", -- "eslint-config-standard-react": "^13.0.0", -- "eslint-plugin-flowtype": "^8.0.3", -- "eslint-plugin-import": "^2.26.0", -- "eslint-plugin-node": "^11.1.0", -- "eslint-plugin-promise": "^6.0.0", -- "eslint-plugin-react": "^7.29.4", -- "eslint-plugin-react-hooks": "^4.4.0", -- "htmlparser": "^1.7.7", -- "jed": "^1.1.1", -+ "esbuild": "0.24.0", -+ "esbuild-plugin-copy": "2.1.1", -+ "esbuild-plugin-replace": "1.4.0", -+ "esbuild-sass-plugin": "3.3.1", -+ "esbuild-wasm": "0.24.0", -+ "eslint": "8.57.1", -+ "eslint-config-standard": "17.1.0", -+ "eslint-config-standard-jsx": "11.0.0", -+ "eslint-config-standard-react": "13.0.0", -+ "eslint-plugin-import": "2.31.0", -+ "eslint-plugin-jsx-a11y": "6.10.0", -+ "eslint-plugin-node": "11.1.0", -+ "eslint-plugin-promise": "6.6.0", -+ "eslint-plugin-react": "7.37.1", -+ "eslint-plugin-react-hooks": "4.6.2", -+ "glob": "11.0.0", -+ "htmlparser": "1.7.7", -+ "jed": "1.1.1", - "po2json": "^1.0.0-alpha", -- "qunit": "^2.9.3", -- "sass": "^1.61.0", -- "sizzle": "^2.3.3", -- "stylelint": "^15.10.1", -- "stylelint-config-standard": "^33.0.0", -- "stylelint-config-standard-scss": "^10.0.0", -- "stylelint-formatter-pretty": "^3.2.0" -- } -- }, -- "node_modules/@aashutoshrathi/word-wrap": { -- "version": "1.2.6", -- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", -- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", -- "dev": true, -- "engines": { -- "node": ">=0.10.0" -- } -- }, -- "node_modules/@ampproject/remapping": { -- "version": "2.2.1", -- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", -- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@jridgewell/gen-mapping": "^0.3.0", -- "@jridgewell/trace-mapping": "^0.3.9" -- }, -- "engines": { -- "node": ">=6.0.0" -+ "qunit": "2.22.0", -+ "qunit-tap": "1.5.1", -+ "sass": "1.79.4", -+ "sizzle": "2.3.10", -+ "stylelint": "16.9.0", -+ "stylelint-config-recommended-scss": "14.0.0", -+ "stylelint-config-standard": "36.0.1", -+ "stylelint-config-standard-scss": "13.1.0", -+ "stylelint-formatter-pretty": "4.0.1", -+ "stylelint-use-logical-spec": "5.0.1", -+ "typescript": "^5.3.3" - } - }, - "node_modules/@babel/code-frame": { -- "version": "7.22.13", -- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", -- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", -- "dev": true, -- "dependencies": { -- "@babel/highlight": "^7.22.13", -- "chalk": "^2.4.2" -- }, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/compat-data": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", -- "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", -- "dev": true, -- "peer": true, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/core": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", -- "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@ampproject/remapping": "^2.2.0", -- "@babel/code-frame": "^7.22.5", -- "@babel/generator": "^7.22.5", -- "@babel/helper-compilation-targets": "^7.22.5", -- "@babel/helper-module-transforms": "^7.22.5", -- "@babel/helpers": "^7.22.5", -- "@babel/parser": "^7.22.5", -- "@babel/template": "^7.22.5", -- "@babel/traverse": "^7.22.5", -- "@babel/types": "^7.22.5", -- "convert-source-map": "^1.7.0", -- "debug": "^4.1.0", -- "gensync": "^1.0.0-beta.2", -- "json5": "^2.2.2", -- "semver": "^6.3.0" -- }, -- "engines": { -- "node": ">=6.9.0" -- }, -- "funding": { -- "type": "opencollective", -- "url": "https://opencollective.com/babel" -- } -- }, -- "node_modules/@babel/generator": { -- "version": "7.23.0", -- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", -- "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/types": "^7.23.0", -- "@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, -- "peer": true, -- "dependencies": { -- "@babel/types": "^7.22.5" -- }, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/helper-compilation-targets": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", -- "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/compat-data": "^7.22.5", -- "@babel/helper-validator-option": "^7.22.5", -- "browserslist": "^4.21.3", -- "lru-cache": "^5.1.1", -- "semver": "^6.3.0" -- }, -- "engines": { -- "node": ">=6.9.0" -- }, -- "peerDependencies": { -- "@babel/core": "^7.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==", -+ "version": "7.26.2", -+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", -+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, -- "peer": 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, -- "peer": 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, -- "peer": true, -- "dependencies": { -- "@babel/types": "^7.22.5" -- }, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/helper-module-imports": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", -- "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/types": "^7.22.5" -- }, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/helper-module-transforms": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", -- "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/helper-environment-visitor": "^7.22.5", -- "@babel/helper-module-imports": "^7.22.5", -- "@babel/helper-simple-access": "^7.22.5", -- "@babel/helper-split-export-declaration": "^7.22.5", -- "@babel/helper-validator-identifier": "^7.22.5", -- "@babel/template": "^7.22.5", -- "@babel/traverse": "^7.22.5", -- "@babel/types": "^7.22.5" -- }, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/helper-plugin-utils": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", -- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", -- "dev": true, -- "peer": true, -- "engines": { -- "node": ">=6.9.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, -- "peer": 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, -- "peer": true, - "dependencies": { -- "@babel/types": "^7.22.5" -+ "@babel/helper-validator-identifier": "^7.25.9", -+ "js-tokens": "^4.0.0", -+ "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, -- "node_modules/@babel/helper-string-parser": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", -- "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", -- "dev": true, -- "peer": 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.22.5", -- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", -- "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", -- "dev": true, -- "peer": true, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/helpers": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", -- "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/template": "^7.22.5", -- "@babel/traverse": "^7.22.5", -- "@babel/types": "^7.22.5" -- }, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/highlight": { -- "version": "7.22.20", -- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", -- "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", -- "dev": true, -- "dependencies": { -- "@babel/helper-validator-identifier": "^7.22.20", -- "chalk": "^2.4.2", -- "js-tokens": "^4.0.0" -- }, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/parser": { -- "version": "7.23.0", -- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", -- "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", -- "dev": true, -- "peer": true, -- "bin": { -- "parser": "bin/babel-parser.js" -- }, -- "engines": { -- "node": ">=6.0.0" -- } -- }, -- "node_modules/@babel/plugin-syntax-flow": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", -- "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/helper-plugin-utils": "^7.22.5" -- }, -- "engines": { -- "node": ">=6.9.0" -- }, -- "peerDependencies": { -- "@babel/core": "^7.0.0-0" -- } -- }, -- "node_modules/@babel/plugin-syntax-jsx": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", -- "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/helper-plugin-utils": "^7.22.5" -- }, -- "engines": { -- "node": ">=6.9.0" -- }, -- "peerDependencies": { -- "@babel/core": "^7.0.0-0" -- } -- }, -- "node_modules/@babel/plugin-transform-react-jsx": { -- "version": "7.22.5", -- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", -- "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/helper-annotate-as-pure": "^7.22.5", -- "@babel/helper-module-imports": "^7.22.5", -- "@babel/helper-plugin-utils": "^7.22.5", -- "@babel/plugin-syntax-jsx": "^7.22.5", -- "@babel/types": "^7.22.5" -- }, -- "engines": { -- "node": ">=6.9.0" -- }, -- "peerDependencies": { -- "@babel/core": "^7.0.0-0" -- } -- }, -- "node_modules/@babel/template": { -- "version": "7.22.15", -- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", -- "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", -- "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/code-frame": "^7.22.13", -- "@babel/parser": "^7.22.15", -- "@babel/types": "^7.22.15" -- }, -- "engines": { -- "node": ">=6.9.0" -- } -- }, -- "node_modules/@babel/traverse": { -- "version": "7.23.2", -- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", -- "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", -+ "version": "7.25.9", -+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", -+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/code-frame": "^7.22.13", -- "@babel/generator": "^7.23.0", -- "@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.23.0", -- "@babel/types": "^7.23.0", -- "debug": "^4.1.0", -- "globals": "^11.1.0" -- }, - "engines": { - "node": ">=6.9.0" - } - }, -- "node_modules/@babel/types": { -- "version": "7.23.0", -- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", -- "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", -+ "node_modules/@bufbuild/protobuf": { -+ "version": "2.2.3", -+ "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.3.tgz", -+ "integrity": "sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg==", - "dev": true, -- "peer": true, -- "dependencies": { -- "@babel/helper-string-parser": "^7.22.5", -- "@babel/helper-validator-identifier": "^7.22.20", -- "to-fast-properties": "^2.0.0" -- }, -- "engines": { -- "node": ">=6.9.0" -- } -+ "peer": true - }, - "node_modules/@csstools/css-parser-algorithms": { -- "version": "2.3.0", -- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.0.tgz", -- "integrity": "sha512-dTKSIHHWc0zPvcS5cqGP+/TPFUJB0ekJ9dGKvMAFoNuBFhDPBt9OMGNZiIA5vTiNdGHHBeScYPXIGBMnVOahsA==", -+ "version": "3.0.4", -+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", -+ "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", - "dev": true, - "funding": [ - { -@@ -477,29 +119,35 @@ - } - ], - "engines": { -- "node": "^14 || ^16 || >=18" -+ "node": ">=18" - }, - "peerDependencies": { -- "@csstools/css-tokenizer": "^2.1.1" -+ "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-tokenizer": { -- "version": "2.1.1", -- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz", -- "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==", -+ "version": "3.0.3", -+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", -+ "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", - "dev": true, -+ "funding": [ -+ { -+ "type": "github", -+ "url": "https://github.com/sponsors/csstools" -+ }, -+ { -+ "type": "opencollective", -+ "url": "https://opencollective.com/csstools" -+ } -+ ], - "engines": { -- "node": "^14 || ^16 || >=18" -- }, -- "funding": { -- "type": "opencollective", -- "url": "https://opencollective.com/csstools" -+ "node": ">=18" - } - }, - "node_modules/@csstools/media-query-list-parser": { -- "version": "2.1.2", -- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.2.tgz", -- "integrity": "sha512-M8cFGGwl866o6++vIY7j1AKuq9v57cf+dGepScwCcbut9ypJNr4Cj+LLTWligYUZ0uyhEoJDKt5lvyBfh2L3ZQ==", -+ "version": "3.0.1", -+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", -+ "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", - "dev": true, - "funding": [ - { -@@ -512,17 +160,17 @@ - } - ], - "engines": { -- "node": "^14 || ^16 || >=18" -+ "node": ">=18" - }, - "peerDependencies": { -- "@csstools/css-parser-algorithms": "^2.3.0", -- "@csstools/css-tokenizer": "^2.1.1" -+ "@csstools/css-parser-algorithms": "^3.0.1", -+ "@csstools/css-tokenizer": "^3.0.1" - } - }, - "node_modules/@csstools/selector-specificity": { -- "version": "3.0.0", -- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz", -- "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==", -+ "version": "4.0.0", -+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", -+ "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", - "dev": true, - "funding": [ - { -@@ -535,16 +183,42 @@ - } - ], - "engines": { -- "node": "^14 || ^16 || >=18" -+ "node": ">=18" - }, - "peerDependencies": { -- "postcss-selector-parser": "^6.0.13" -+ "postcss-selector-parser": "^6.1.0" -+ } -+ }, -+ "node_modules/@dual-bundle/import-meta-resolve": { -+ "version": "4.1.0", -+ "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", -+ "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", -+ "dev": true, -+ "funding": { -+ "type": "github", -+ "url": "https://github.com/sponsors/wooorm" -+ } -+ }, -+ "node_modules/@esbuild/aix-ppc64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", -+ "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", -+ "cpu": [ -+ "ppc64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "aix" -+ ], -+ "engines": { -+ "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", -- "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", -+ "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", - "cpu": [ - "arm" - ], -@@ -554,13 +228,13 @@ - "android" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", -- "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", -+ "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", - "cpu": [ - "arm64" - ], -@@ -570,13 +244,13 @@ - "android" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", -- "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", -+ "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", - "cpu": [ - "x64" - ], -@@ -586,13 +260,13 @@ - "android" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", -- "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", -+ "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", - "cpu": [ - "arm64" - ], -@@ -602,13 +276,13 @@ - "darwin" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", -- "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", -+ "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", - "cpu": [ - "x64" - ], -@@ -618,13 +292,13 @@ - "darwin" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", -- "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", -+ "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", - "cpu": [ - "arm64" - ], -@@ -634,13 +308,13 @@ - "freebsd" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", -- "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", -+ "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", - "cpu": [ - "x64" - ], -@@ -650,13 +324,13 @@ - "freebsd" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", -- "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", -+ "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", - "cpu": [ - "arm" - ], -@@ -666,13 +340,13 @@ - "linux" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", -- "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", -+ "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", - "cpu": [ - "arm64" - ], -@@ -682,13 +356,13 @@ - "linux" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", -- "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", -+ "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", - "cpu": [ - "ia32" - ], -@@ -698,13 +372,13 @@ - "linux" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", -- "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", -+ "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", - "cpu": [ - "loong64" - ], -@@ -714,13 +388,13 @@ - "linux" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", -- "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", -+ "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", - "cpu": [ - "mips64el" - ], -@@ -730,13 +404,13 @@ - "linux" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", -- "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", -+ "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", - "cpu": [ - "ppc64" - ], -@@ -746,13 +420,13 @@ - "linux" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", -- "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", -+ "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", - "cpu": [ - "riscv64" - ], -@@ -762,13 +436,13 @@ - "linux" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", -- "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", -+ "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", - "cpu": [ - "s390x" - ], -@@ -778,13 +452,13 @@ - "linux" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", -- "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", -+ "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", - "cpu": [ - "x64" - ], -@@ -794,13 +468,13 @@ - "linux" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", -- "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", -+ "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", - "cpu": [ - "x64" - ], -@@ -810,13 +484,29 @@ - "netbsd" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" -+ } -+ }, -+ "node_modules/@esbuild/openbsd-arm64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", -+ "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", -+ "cpu": [ -+ "arm64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "openbsd" -+ ], -+ "engines": { -+ "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", -- "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", -+ "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", - "cpu": [ - "x64" - ], -@@ -826,13 +516,13 @@ - "openbsd" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", -- "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", -+ "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", - "cpu": [ - "x64" - ], -@@ -842,13 +532,13 @@ - "sunos" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", -- "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", -+ "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", - "cpu": [ - "arm64" - ], -@@ -858,13 +548,13 @@ - "win32" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", -- "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", -+ "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", - "cpu": [ - "ia32" - ], -@@ -874,13 +564,13 @@ - "win32" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", -- "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", -+ "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", - "cpu": [ - "x64" - ], -@@ -890,42 +580,45 @@ - "win32" - ], - "engines": { -- "node": ">=12" -+ "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { -- "version": "4.4.0", -- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", -- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", -+ "version": "4.4.1", -+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", -+ "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "dev": true, - "dependencies": { -- "eslint-visitor-keys": "^3.3.0" -+ "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, -+ "funding": { -+ "url": "https://opencollective.com/eslint" -+ }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { -- "version": "4.5.1", -- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", -- "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", -+ "version": "4.12.1", -+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", -+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { -- "version": "2.0.3", -- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", -- "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", -+ "version": "2.1.4", -+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", -+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", -- "espree": "^9.5.2", -+ "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", -@@ -940,37 +633,32 @@ - "url": "https://opencollective.com/eslint" - } - }, -- "node_modules/@eslint/eslintrc/node_modules/globals": { -- "version": "13.20.0", -- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", -- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", -+ "node_modules/@eslint/eslintrc/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": { -- "type-fest": "^0.20.2" -- }, -- "engines": { -- "node": ">=8" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "balanced-match": "^1.0.0", -+ "concat-map": "0.0.1" - } - }, -- "node_modules/@eslint/eslintrc/node_modules/type-fest": { -- "version": "0.20.2", -- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", -- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", -+ "node_modules/@eslint/eslintrc/node_modules/minimatch": { -+ "version": "3.1.2", -+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", -+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, -- "engines": { -- "node": ">=10" -+ "dependencies": { -+ "brace-expansion": "^1.1.7" - }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "engines": { -+ "node": "*" - } - }, - "node_modules/@eslint/js": { -- "version": "8.42.0", -- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", -- "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", -+ "version": "8.57.1", -+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", -+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" -@@ -1022,19 +710,42 @@ - } - }, - "node_modules/@humanwhocodes/config-array": { -- "version": "0.11.10", -- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", -- "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", -+ "version": "0.13.0", -+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", -+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", -+ "deprecated": "Use @eslint/config-array instead", - "dev": true, - "dependencies": { -- "@humanwhocodes/object-schema": "^1.2.1", -- "debug": "^4.1.1", -+ "@humanwhocodes/object-schema": "^2.0.3", -+ "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, -+ "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", -@@ -1049,71 +760,56 @@ - } - }, - "node_modules/@humanwhocodes/object-schema": { -- "version": "1.2.1", -- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", -- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", -+ "version": "2.0.3", -+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", -+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", -+ "deprecated": "Use @eslint/object-schema instead", - "dev": true - }, -- "node_modules/@jridgewell/gen-mapping": { -- "version": "0.3.3", -- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", -- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", -+ "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, -- "peer": true, - "dependencies": { -- "@jridgewell/set-array": "^1.0.1", -- "@jridgewell/sourcemap-codec": "^1.4.10", -- "@jridgewell/trace-mapping": "^0.3.9" -+ "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": ">=6.0.0" -- } -- }, -- "node_modules/@jridgewell/resolve-uri": { -- "version": "3.1.0", -- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", -- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", -- "dev": true, -- "peer": true, -- "engines": { -- "node": ">=6.0.0" -+ "node": ">=12" - } - }, -- "node_modules/@jridgewell/set-array": { -- "version": "1.1.2", -- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", -- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", -+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, -- "peer": true, - "engines": { -- "node": ">=6.0.0" -+ "node": ">=12" -+ }, -+ "funding": { -+ "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, -- "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, -- "peer": true -- }, -- "node_modules/@jridgewell/trace-mapping": { -- "version": "0.3.18", -- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", -- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", -+ "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, -- "peer": true, - "dependencies": { -- "@jridgewell/resolve-uri": "3.1.0", -- "@jridgewell/sourcemap-codec": "1.4.14" -+ "ansi-regex": "^6.0.1" -+ }, -+ "engines": { -+ "node": ">=12" -+ }, -+ "funding": { -+ "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, -- "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { -- "version": "1.4.14", -- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", -- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", -- "dev": true, -- "peer": true -- }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", -@@ -1150,149 +846,155 @@ - } - }, - "node_modules/@patternfly/patternfly": { -- "version": "4.224.2", -- "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-4.224.2.tgz", -- "integrity": "sha512-HGNV26uyHSIECuhjPg/WGn0mXbAotcs6ODfhAOkfYjIgGylddgiwElxUe1rpEHV5mQJJ2rMn4OdeJIIpzRX61g==" -+ "version": "5.4.1", -+ "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.4.1.tgz", -+ "integrity": "sha512-0+KxsQJrFzOMANALW82BHAO7bSm9tEbG1RrOlGT23ME1CaBoetGSMRLymutvojn/b/EKfJIr5rLzQa+14Lvg2g==" - }, - "node_modules/@patternfly/react-charts": { -- "version": "6.94.19", -- "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-6.94.19.tgz", -- "integrity": "sha512-+yYwXAy/GBH2bTHFzMpdVKc8LUJCCNEqqS7bqovNkNLd0m3FP3q9fKJ22QxNnP9NeFHK6UFa4KfouQAb2fInfQ==", -+ "version": "7.4.3", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-7.4.3.tgz", -+ "integrity": "sha512-HW55rc7UtuiUSk5kUEdCsbfU+/lVPXDruebQKxzImseiyjeLL3e3Tb8L778ga6Kt0YKaUTaqETuprR9ucRA0+w==", - "dependencies": { -- "@patternfly/react-styles": "^4.92.6", -- "@patternfly/react-tokens": "^4.94.6", -- "hoist-non-react-statics": "^3.3.0", -- "lodash": "^4.17.19", -- "tslib": "^2.0.0", -- "victory-area": "^36.6.7", -- "victory-axis": "^36.6.7", -- "victory-bar": "^36.6.7", -- "victory-chart": "^36.6.7", -- "victory-core": "^36.6.7", -- "victory-create-container": "^36.6.7", -- "victory-cursor-container": "^36.6.7", -- "victory-group": "^36.6.7", -- "victory-legend": "^36.6.7", -- "victory-line": "^36.6.7", -- "victory-pie": "^36.6.7", -- "victory-scatter": "^36.6.7", -- "victory-stack": "^36.6.7", -- "victory-tooltip": "^36.6.7", -- "victory-voronoi-container": "^36.6.7", -- "victory-zoom-container": "^36.6.7" -+ "@patternfly/react-styles": "^5.4.0", -+ "@patternfly/react-tokens": "^5.4.0", -+ "hoist-non-react-statics": "^3.3.2", -+ "lodash": "^4.17.21", -+ "tslib": "^2.6.3", -+ "victory-area": "^37.1.1", -+ "victory-axis": "^37.1.1", -+ "victory-bar": "^37.1.1", -+ "victory-box-plot": "^37.1.1", -+ "victory-chart": "^37.1.1", -+ "victory-core": "^37.1.1", -+ "victory-create-container": "^37.1.1", -+ "victory-cursor-container": "^37.1.1", -+ "victory-group": "^37.1.1", -+ "victory-legend": "^37.1.1", -+ "victory-line": "^37.1.1", -+ "victory-pie": "^37.1.1", -+ "victory-scatter": "^37.1.1", -+ "victory-stack": "^37.1.1", -+ "victory-tooltip": "^37.1.1", -+ "victory-voronoi-container": "^37.1.1", -+ "victory-zoom-container": "^37.1.1" - }, - "peerDependencies": { -- "react": "^16.8 || ^17 || ^18", -- "react-dom": "^16.8 || ^17 || ^18" -+ "react": "^17 || ^18", -+ "react-dom": "^17 || ^18" - } - }, - "node_modules/@patternfly/react-core": { -- "version": "4.276.8", -- "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-4.276.8.tgz", -- "integrity": "sha512-dn322rEzBeiVztZEuCZMUUittNb8l1hk30h9ZN31FLZLLVtXGlThFNV9ieqOJYA9zrYxYZrHMkTnOxSWVacMZg==", -- "dependencies": { -- "@patternfly/react-icons": "^4.93.6", -- "@patternfly/react-styles": "^4.92.6", -- "@patternfly/react-tokens": "^4.94.6", -- "focus-trap": "6.9.2", -- "react-dropzone": "9.0.0", -- "tippy.js": "5.1.2", -- "tslib": "^2.0.0" -+ "version": "5.4.1", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.4.1.tgz", -+ "integrity": "sha512-PJjwN4OCR7jTdWKi0RzuFdtlSQ8gBR+0REczuDHHPW8ky0bs1cIcqGsn5p/b6OgPlztl3UaXqRYLsroiEMasOw==", -+ "dependencies": { -+ "@patternfly/react-icons": "^5.4.0", -+ "@patternfly/react-styles": "^5.4.0", -+ "@patternfly/react-tokens": "^5.4.0", -+ "focus-trap": "7.5.4", -+ "react-dropzone": "^14.2.3", -+ "tslib": "^2.6.3" - }, - "peerDependencies": { -- "react": "^16.8 || ^17 || ^18", -- "react-dom": "^16.8 || ^17 || ^18" -+ "react": "^17 || ^18", -+ "react-dom": "^17 || ^18" - } - }, - "node_modules/@patternfly/react-icons": { -- "version": "4.93.6", -- "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-4.93.6.tgz", -- "integrity": "sha512-ZrXegc/81oiuTIeWvoHb3nG/eZODbB4rYmekBEsrbiysyO7m/sUFoi/RLvgFINrRoh6YCJqL5fj06Jg6d7jX1g==", -+ "version": "5.4.0", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.4.0.tgz", -+ "integrity": "sha512-2M3qN/naultvRHeG2laJMmoIroFCGAyfwTVrnCjSkG6/KnRoXV0+dqd+Xrh7xzpzvIJB1klvifC0oX42cEkDrA==", - "peerDependencies": { -- "react": "^16.8 || ^17 || ^18", -- "react-dom": "^16.8 || ^17 || ^18" -+ "react": "^17 || ^18", -+ "react-dom": "^17 || ^18" - } - }, - "node_modules/@patternfly/react-styles": { -- "version": "4.92.6", -- "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-4.92.6.tgz", -- "integrity": "sha512-b8uQdEReMyeoMzjpMri845QxqtupY/tIFFYfVeKoB2neno8gkcW1RvDdDe62LF88q45OktCwAe/8A99ker10Iw==" -+ "version": "5.4.0", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.4.0.tgz", -+ "integrity": "sha512-4ZE0s6LkX/0KsN0FOeogrDoj18m+BPA73YKnabZGB4SDRzrBNeBh2a6bSt546ZseEjkoJ+S81kOG0G8YckPQYg==" - }, - "node_modules/@patternfly/react-table": { -- "version": "4.113.0", -- "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-4.113.0.tgz", -- "integrity": "sha512-qxa3NWCdYasqQQL1rqEd8DyNa8oWr6HNveNW5YJRakE7imWZhUPG2Nd6Op60+KYX8kbCSl7gwSmgAZAYMBMZkQ==", -- "dependencies": { -- "@patternfly/react-core": "^4.276.8", -- "@patternfly/react-icons": "^4.93.6", -- "@patternfly/react-styles": "^4.92.6", -- "@patternfly/react-tokens": "^4.94.6", -- "lodash": "^4.17.19", -- "tslib": "^2.0.0" -+ "version": "5.4.1", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.4.1.tgz", -+ "integrity": "sha512-T05djy6YPqjbGWjpnwUs9oqup8oqqIOBnDOcThnHukgzlwnZvLNywgdoMR5XAKxTcIx/iBE1cu8ieETlITOGLw==", -+ "dependencies": { -+ "@patternfly/react-core": "^5.4.1", -+ "@patternfly/react-icons": "^5.4.0", -+ "@patternfly/react-styles": "^5.4.0", -+ "@patternfly/react-tokens": "^5.4.0", -+ "lodash": "^4.17.21", -+ "tslib": "^2.6.3" - }, - "peerDependencies": { -- "react": "^16.8 || ^17 || ^18", -- "react-dom": "^16.8 || ^17 || ^18" -+ "react": "^17 || ^18", -+ "react-dom": "^17 || ^18" - } - }, - "node_modules/@patternfly/react-tokens": { -- "version": "4.94.6", -- "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-4.94.6.tgz", -- "integrity": "sha512-tm7C6nat+uKMr1hrapis7hS3rN9cr41tpcCKhx6cod6FLU8KwF2Yt5KUxakhIOCEcE/M/EhXhAw/qejp8w0r7Q==" -+ "version": "5.4.0", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.4.0.tgz", -+ "integrity": "sha512-KONkwCVOMyklhuuaYeYgcAsGtCBQXnsBGZeolhOdSzr2Mj0RVSW0oMrQPgZuPVzhhC/kbqgClHJJl6xuG9xheA==" -+ }, -+ "node_modules/@rtsao/scc": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", -+ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", -+ "dev": true - }, - "node_modules/@types/d3-array": { -- "version": "3.0.5", -- "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.5.tgz", -- "integrity": "sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==" -+ "version": "3.2.1", -+ "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", -+ "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" - }, - "node_modules/@types/d3-color": { -- "version": "3.1.0", -- "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", -- "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" -+ "version": "3.1.3", -+ "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", -+ "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" - }, - "node_modules/@types/d3-ease": { -- "version": "3.0.0", -- "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", -- "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" -+ "version": "3.0.2", -+ "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", -+ "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" - }, - "node_modules/@types/d3-interpolate": { -- "version": "3.0.1", -- "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", -- "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", -+ "version": "3.0.4", -+ "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", -+ "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { -- "version": "3.0.0", -- "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", -- "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", -+ "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" - }, - "node_modules/@types/d3-scale": { -- "version": "4.0.3", -- "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", -- "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", -+ "version": "4.0.8", -+ "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", -+ "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-shape": { -- "version": "3.1.1", -- "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz", -- "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==", -+ "version": "3.1.7", -+ "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", -+ "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { -- "version": "3.0.0", -- "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", -- "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" -+ "version": "3.0.4", -+ "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", -+ "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==" - }, - "node_modules/@types/d3-timer": { -- "version": "3.0.0", -- "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", -- "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" -+ "version": "3.0.2", -+ "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", -+ "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", -@@ -1300,479 +1002,932 @@ - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, -- "node_modules/@types/minimist": { -- "version": "1.2.2", -- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", -- "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", -+ "node_modules/@types/prop-types": { -+ "version": "15.7.14", -+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", -+ "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", - "dev": true - }, -- "node_modules/@types/normalize-package-data": { -- "version": "2.4.1", -- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", -- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", -+ "node_modules/@types/qunit": { -+ "version": "2.19.12", -+ "resolved": "https://registry.npmjs.org/@types/qunit/-/qunit-2.19.12.tgz", -+ "integrity": "sha512-II+C1wgzUia0g+tGAH+PBb4XiTm8/C/i6sN23r21NNskBYOYrv+qnW0tFQ/IxZzKVwrK4CTglf8YO3poJUclQA==", - "dev": true - }, -- "node_modules/acorn": { -- "version": "8.8.2", -- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", -- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", -+ "node_modules/@types/react": { -+ "version": "18.3.11", -+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", -+ "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", - "dev": true, -- "bin": { -- "acorn": "bin/acorn" -- }, -- "engines": { -- "node": ">=0.4.0" -+ "dependencies": { -+ "@types/prop-types": "*", -+ "csstype": "^3.0.2" - } - }, -- "node_modules/acorn-jsx": { -- "version": "5.3.2", -- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", -- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", -+ "node_modules/@types/react-dom": { -+ "version": "18.3.0", -+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", -+ "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", - "dev": true, -- "peerDependencies": { -- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" -+ "dependencies": { -+ "@types/react": "*" - } - }, -- "node_modules/ajv": { -- "version": "6.12.6", -- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", -- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", -+ "node_modules/@typescript-eslint/eslint-plugin": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz", -+ "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==", - "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" -+ "@eslint-community/regexpp": "^4.10.0", -+ "@typescript-eslint/scope-manager": "8.8.0", -+ "@typescript-eslint/type-utils": "8.8.0", -+ "@typescript-eslint/utils": "8.8.0", -+ "@typescript-eslint/visitor-keys": "8.8.0", -+ "graphemer": "^1.4.0", -+ "ignore": "^5.3.1", -+ "natural-compare": "^1.4.0", -+ "ts-api-utils": "^1.3.0" -+ }, -+ "engines": { -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { -- "type": "github", -- "url": "https://github.com/sponsors/epoberezkin" -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" -+ }, -+ "peerDependencies": { -+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", -+ "eslint": "^8.57.0 || ^9.0.0" -+ }, -+ "peerDependenciesMeta": { -+ "typescript": { -+ "optional": true -+ } - } - }, -- "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==", -+ "node_modules/@typescript-eslint/parser": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.22.0.tgz", -+ "integrity": "sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==", - "dev": true, -+ "peer": true, - "dependencies": { -- "type-fest": "^0.21.3" -+ "@typescript-eslint/scope-manager": "8.22.0", -+ "@typescript-eslint/types": "8.22.0", -+ "@typescript-eslint/typescript-estree": "8.22.0", -+ "@typescript-eslint/visitor-keys": "8.22.0", -+ "debug": "^4.3.4" - }, - "engines": { -- "node": ">=8" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" -+ }, -+ "peerDependencies": { -+ "eslint": "^8.57.0 || ^9.0.0", -+ "typescript": ">=4.8.4 <5.8.0" - } - }, -- "node_modules/ansi-escapes/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==", -+ "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.22.0.tgz", -+ "integrity": "sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==", - "dev": true, -+ "peer": true, -+ "dependencies": { -+ "@typescript-eslint/types": "8.22.0", -+ "@typescript-eslint/visitor-keys": "8.22.0" -+ }, - "engines": { -- "node": ">=10" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" - } - }, -- "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==", -+ "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz", -+ "integrity": "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==", - "dev": true, -+ "peer": true, -+ "dependencies": { -+ "@typescript-eslint/types": "8.22.0", -+ "eslint-visitor-keys": "^4.2.0" -+ }, - "engines": { -- "node": ">=8" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" - } - }, -- "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==", -+ "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { -+ "version": "4.2.0", -+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", -+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, -- "dependencies": { -- "color-convert": "^1.9.0" -- }, -+ "peer": true, - "engines": { -- "node": ">=4" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "url": "https://opencollective.com/eslint" - } - }, -- "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==", -+ "node_modules/@typescript-eslint/scope-manager": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz", -+ "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==", - "dev": true, - "dependencies": { -- "normalize-path": "^3.0.0", -- "picomatch": "^2.0.4" -+ "@typescript-eslint/types": "8.8.0", -+ "@typescript-eslint/visitor-keys": "8.8.0" - }, - "engines": { -- "node": ">= 8" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" - } - }, -- "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/array-buffer-byte-length": { -- "version": "1.0.0", -- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", -- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", -+ "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", -+ "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", - "dev": true, -- "dependencies": { -- "call-bind": "^1.0.2", -- "is-array-buffer": "^3.0.1" -+ "engines": { -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" - } - }, -- "node_modules/array-includes": { -- "version": "3.1.6", -- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", -- "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", -+ "node_modules/@typescript-eslint/type-utils": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz", -+ "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4", -- "get-intrinsic": "^1.1.3", -- "is-string": "^1.0.7" -+ "@typescript-eslint/typescript-estree": "8.8.0", -+ "@typescript-eslint/utils": "8.8.0", -+ "debug": "^4.3.4", -+ "ts-api-utils": "^1.3.0" - }, - "engines": { -- "node": ">= 0.4" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" -+ }, -+ "peerDependenciesMeta": { -+ "typescript": { -+ "optional": true -+ } - } - }, -- "node_modules/array-union": { -- "version": "2.1.0", -- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", -- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", -+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", -+ "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", - "dev": true, - "engines": { -- "node": ">=8" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" - } - }, -- "node_modules/array.prototype.flat": { -- "version": "1.3.1", -- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", -- "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", -+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz", -+ "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4", -- "es-shim-unscopables": "^1.0.0" -+ "@typescript-eslint/types": "8.8.0", -+ "@typescript-eslint/visitor-keys": "8.8.0", -+ "debug": "^4.3.4", -+ "fast-glob": "^3.3.2", -+ "is-glob": "^4.0.3", -+ "minimatch": "^9.0.4", -+ "semver": "^7.6.0", -+ "ts-api-utils": "^1.3.0" - }, - "engines": { -- "node": ">= 0.4" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" -+ }, -+ "peerDependenciesMeta": { -+ "typescript": { -+ "optional": true -+ } - } - }, -- "node_modules/array.prototype.flatmap": { -- "version": "1.3.1", -- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", -- "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", -+ "node_modules/@typescript-eslint/types": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.22.0.tgz", -+ "integrity": "sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==", -+ "dev": true, -+ "peer": true, -+ "engines": { -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" -+ } -+ }, -+ "node_modules/@typescript-eslint/typescript-estree": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.22.0.tgz", -+ "integrity": "sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==", - "dev": true, -+ "peer": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4", -- "es-shim-unscopables": "^1.0.0" -+ "@typescript-eslint/types": "8.22.0", -+ "@typescript-eslint/visitor-keys": "8.22.0", -+ "debug": "^4.3.4", -+ "fast-glob": "^3.3.2", -+ "is-glob": "^4.0.3", -+ "minimatch": "^9.0.4", -+ "semver": "^7.6.0", -+ "ts-api-utils": "^2.0.0" - }, - "engines": { -- "node": ">= 0.4" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" -+ }, -+ "peerDependencies": { -+ "typescript": ">=4.8.4 <5.8.0" - } - }, -- "node_modules/array.prototype.tosorted": { -- "version": "1.1.1", -- "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", -- "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", -+ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz", -+ "integrity": "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==", - "dev": true, -+ "peer": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4", -- "es-shim-unscopables": "^1.0.0", -- "get-intrinsic": "^1.1.3" -+ "@typescript-eslint/types": "8.22.0", -+ "eslint-visitor-keys": "^4.2.0" -+ }, -+ "engines": { -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" - } - }, -- "node_modules/arrify": { -- "version": "1.0.1", -- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", -- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", -+ "node_modules/@typescript-eslint/typescript-estree/node_modules/eslint-visitor-keys": { -+ "version": "4.2.0", -+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", -+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, -+ "peer": true, - "engines": { -- "node": ">=0.10.0" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "url": "https://opencollective.com/eslint" - } - }, -- "node_modules/astral-regex": { -+ "node_modules/@typescript-eslint/typescript-estree/node_modules/ts-api-utils": { - "version": "2.0.0", -- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", -- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", -+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", -+ "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", - "dev": true, -+ "peer": true, - "engines": { -- "node": ">=8" -+ "node": ">=18.12" -+ }, -+ "peerDependencies": { -+ "typescript": ">=4.8.4" - } - }, -- "node_modules/attr-accept": { -- "version": "1.1.3", -- "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-1.1.3.tgz", -- "integrity": "sha512-iT40nudw8zmCweivz6j58g+RT33I4KbaIvRUhjNmDwO2WmsQUxFEZZYZ5w3vXe5x5MX9D7mfvA/XaLOZYFR9EQ==", -+ "node_modules/@typescript-eslint/utils": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz", -+ "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==", -+ "dev": true, - "dependencies": { -- "core-js": "^2.5.0" -+ "@eslint-community/eslint-utils": "^4.4.0", -+ "@typescript-eslint/scope-manager": "8.8.0", -+ "@typescript-eslint/types": "8.8.0", -+ "@typescript-eslint/typescript-estree": "8.8.0" - }, - "engines": { -- "node": ">=4" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" -+ }, -+ "peerDependencies": { -+ "eslint": "^8.57.0 || ^9.0.0" - } - }, -- "node_modules/available-typed-arrays": { -- "version": "1.0.5", -- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", -- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", -+ "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", -+ "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", - "dev": true, - "engines": { -- "node": ">= 0.4" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" - } - }, -- "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/binary-extensions": { -- "version": "2.2.0", -- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", -- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", -+ "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz", -+ "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", - "dev": true, -+ "dependencies": { -+ "@typescript-eslint/types": "8.8.0", -+ "@typescript-eslint/visitor-keys": "8.8.0", -+ "debug": "^4.3.4", -+ "fast-glob": "^3.3.2", -+ "is-glob": "^4.0.3", -+ "minimatch": "^9.0.4", -+ "semver": "^7.6.0", -+ "ts-api-utils": "^1.3.0" -+ }, - "engines": { -- "node": ">=8" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" -+ }, -+ "peerDependenciesMeta": { -+ "typescript": { -+ "optional": 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==", -+ "node_modules/@typescript-eslint/visitor-keys": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz", -+ "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", - "dev": true, - "dependencies": { -- "balanced-match": "^1.0.0", -- "concat-map": "0.0.1" -+ "@typescript-eslint/types": "8.8.0", -+ "eslint-visitor-keys": "^3.4.3" -+ }, -+ "engines": { -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" - } - }, -- "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==", -+ "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", -+ "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", - "dev": true, -- "dependencies": { -- "fill-range": "^7.1.1" -- }, - "engines": { -- "node": ">=8" -+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" -+ }, -+ "funding": { -+ "type": "opencollective", -+ "url": "https://opencollective.com/typescript-eslint" - } - }, -- "node_modules/browserslist": { -- "version": "4.21.7", -- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", -- "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", -+ "node_modules/@ungap/structured-clone": { -+ "version": "1.3.0", -+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", -+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", -+ "dev": true -+ }, -+ "node_modules/@xterm/addon-canvas": { -+ "version": "0.7.0", -+ "resolved": "https://registry.npmjs.org/@xterm/addon-canvas/-/addon-canvas-0.7.0.tgz", -+ "integrity": "sha512-LF5LYcfvefJuJ7QotNRdRSPc9YASAVDeoT5uyXS/nZshZXjYplGXRECBGiznwvhNL2I8bq1Lf5MzRwstsYQ2Iw==", -+ "peerDependencies": { -+ "@xterm/xterm": "^5.0.0" -+ } -+ }, -+ "node_modules/@xterm/xterm": { -+ "version": "5.5.0", -+ "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", -+ "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==" -+ }, -+ "node_modules/acorn": { -+ "version": "8.14.0", -+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", -+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "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" -- } -- ], -- "peer": true, -- "dependencies": { -- "caniuse-lite": "^1.0.30001489", -- "electron-to-chromium": "^1.4.411", -- "node-releases": "^2.0.12", -- "update-browserslist-db": "^1.0.11" -- }, - "bin": { -- "browserslist": "cli.js" -+ "acorn": "bin/acorn" - }, - "engines": { -- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" -+ "node": ">=0.4.0" - } - }, -- "node_modules/builtins": { -- "version": "5.0.1", -- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", -- "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", -+ "node_modules/acorn-jsx": { -+ "version": "5.3.2", -+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", -+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, -- "peer": true, -- "dependencies": { -- "semver": "^7.0.0" -+ "peerDependencies": { -+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, -- "node_modules/builtins/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==", -+ "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, -- "peer": true, - "dependencies": { -- "yallist": "^4.0.0" -+ "fast-deep-equal": "^3.1.1", -+ "fast-json-stable-stringify": "^2.0.0", -+ "json-schema-traverse": "^0.4.1", -+ "uri-js": "^4.2.2" - }, -- "engines": { -- "node": ">=10" -+ "funding": { -+ "type": "github", -+ "url": "https://github.com/sponsors/epoberezkin" - } - }, -- "node_modules/builtins/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==", -+ "node_modules/ansi-escapes": { -+ "version": "7.0.0", -+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", -+ "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", - "dev": true, -- "peer": true, - "dependencies": { -- "lru-cache": "^6.0.0" -- }, -- "bin": { -- "semver": "bin/semver.js" -+ "environment": "^1.0.0" - }, - "engines": { -- "node": ">=10" -+ "node": ">=18" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" - } - }, -- "node_modules/builtins/node_modules/yallist": { -- "version": "4.0.0", -- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", -- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", -+ "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, -- "peer": true -+ "engines": { -+ "node": ">=8" -+ } - }, -- "node_modules/call-bind": { -- "version": "1.0.2", -- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", -- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", -+ "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": { -- "function-bind": "^1.1.1", -- "get-intrinsic": "^1.0.2" -+ "color-convert": "^2.0.1" -+ }, -+ "engines": { -+ "node": ">=8" - }, - "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, -- "node_modules/callsites": { -- "version": "3.1.0", -- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", -- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", -+ "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": ">=6" -+ "node": ">= 8" -+ } -+ }, -+ "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/aria-query": { -+ "version": "5.1.3", -+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", -+ "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", -+ "dev": true, -+ "dependencies": { -+ "deep-equal": "^2.0.5" - } - }, -- "node_modules/camelcase": { -- "version": "6.3.0", -- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", -- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", -+ "node_modules/array-buffer-byte-length": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", -+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.3", -+ "is-array-buffer": "^3.0.5" -+ }, - "engines": { -- "node": ">=10" -+ "node": ">= 0.4" - }, - "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "url": "https://github.com/sponsors/ljharb" - } - }, -- "node_modules/camelcase-keys": { -- "version": "7.0.2", -- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", -- "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", -+ "node_modules/array-includes": { -+ "version": "3.1.8", -+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", -+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "dependencies": { -- "camelcase": "^6.3.0", -- "map-obj": "^4.1.0", -- "quick-lru": "^5.1.1", -- "type-fest": "^1.2.1" -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2", -+ "es-object-atoms": "^1.0.0", -+ "get-intrinsic": "^1.2.4", -+ "is-string": "^1.0.7" - }, - "engines": { -- "node": ">=12" -+ "node": ">= 0.4" - }, - "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "url": "https://github.com/sponsors/ljharb" - } - }, -- "node_modules/caniuse-lite": { -- "version": "1.0.30001497", -- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001497.tgz", -- "integrity": "sha512-I4/duVK4wL6rAK/aKZl3HXB4g+lIZvaT4VLAn2rCgJ38jVLb0lv2Xug6QuqmxXFVRJMF74SPPWPJ/1Sdm3vCzw==", -+ "node_modules/array-union": { -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", -+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "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" -- } -- ], -- "peer": true -+ "engines": { -+ "node": ">=8" -+ } - }, -- "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==", -+ "node_modules/array.prototype.findlast": { -+ "version": "1.2.5", -+ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", -+ "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "dependencies": { -- "ansi-styles": "^3.2.1", -- "escape-string-regexp": "^1.0.5", -- "supports-color": "^5.3.0" -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "es-shim-unscopables": "^1.0.2" - }, - "engines": { -- "node": ">=4" -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" - } - }, -- "node_modules/chokidar": { -- "version": "3.5.3", -- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", -- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", -+ "node_modules/array.prototype.findlastindex": { -+ "version": "1.2.5", -+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", -+ "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "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" -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "es-shim-unscopables": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/array.prototype.flat": { -+ "version": "1.3.3", -+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", -+ "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.5", -+ "es-shim-unscopables": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/array.prototype.flatmap": { -+ "version": "1.3.3", -+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", -+ "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.5", -+ "es-shim-unscopables": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/array.prototype.tosorted": { -+ "version": "1.1.4", -+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", -+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.3", -+ "es-errors": "^1.3.0", -+ "es-shim-unscopables": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "node_modules/arraybuffer.prototype.slice": { -+ "version": "1.0.4", -+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", -+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", -+ "dev": true, -+ "dependencies": { -+ "array-buffer-byte-length": "^1.0.1", -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.5", -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.6", -+ "is-array-buffer": "^3.0.4" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/ast-types-flow": { -+ "version": "0.0.8", -+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", -+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", -+ "dev": true -+ }, -+ "node_modules/astral-regex": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", -+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", -+ "dev": true, -+ "engines": { -+ "node": ">=8" -+ } -+ }, -+ "node_modules/async-function": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", -+ "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", -+ "dev": true, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "node_modules/attr-accept": { -+ "version": "2.2.5", -+ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", -+ "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==", -+ "engines": { -+ "node": ">=4" -+ } -+ }, -+ "node_modules/autolinker": { -+ "version": "3.16.2", -+ "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", -+ "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", -+ "dependencies": { -+ "tslib": "^2.3.0" -+ } -+ }, -+ "node_modules/available-typed-arrays": { -+ "version": "1.0.7", -+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", -+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", -+ "dev": true, -+ "dependencies": { -+ "possible-typed-array-names": "^1.0.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/axe-core": { -+ "version": "4.10.2", -+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", -+ "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", -+ "dev": true, -+ "engines": { -+ "node": ">=4" -+ } -+ }, -+ "node_modules/axobject-query": { -+ "version": "4.1.0", -+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", -+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", -+ "dev": true, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "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/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/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/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/buffer-builder": { -+ "version": "0.2.0", -+ "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", -+ "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", -+ "dev": true, -+ "peer": true -+ }, -+ "node_modules/builtin-modules": { -+ "version": "3.3.0", -+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", -+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", -+ "dev": true, -+ "peer": true, -+ "engines": { -+ "node": ">=6" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ }, -+ "node_modules/builtins": { -+ "version": "5.1.0", -+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", -+ "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", -+ "dev": true, -+ "peer": true, -+ "dependencies": { -+ "semver": "^7.0.0" -+ } -+ }, -+ "node_modules/call-bind": { -+ "version": "1.0.8", -+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", -+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", -+ "dev": true, -+ "dependencies": { -+ "call-bind-apply-helpers": "^1.0.0", -+ "es-define-property": "^1.0.0", -+ "get-intrinsic": "^1.2.4", -+ "set-function-length": "^1.2.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/call-bind-apply-helpers": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", -+ "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", -+ "dev": true, -+ "dependencies": { -+ "es-errors": "^1.3.0", -+ "function-bind": "^1.1.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "node_modules/call-bound": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", -+ "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", -+ "dev": true, -+ "dependencies": { -+ "call-bind-apply-helpers": "^1.0.1", -+ "get-intrinsic": "^1.2.6" -+ }, -+ "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/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/chokidar": { -+ "version": "3.6.0", -+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", -+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", -+ "dev": true, -+ "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" - }, -+ "funding": { -+ "url": "https://paulmillr.com/funding/" -+ }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } -@@ -1791,18 +1946,21 @@ - } - }, - "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==", -+ "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.3" -+ "color-name": "~1.1.4" -+ }, -+ "engines": { -+ "node": ">=7.0.0" - } - }, - "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==", -+ "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/colord": { -@@ -1811,6 +1969,13 @@ - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, -+ "node_modules/colorjs.io": { -+ "version": "0.5.2", -+ "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", -+ "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", -+ "dev": true, -+ "peer": true -+ }, - "node_modules/commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", -@@ -1823,36 +1988,35 @@ - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, -- "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, -- "peer": true -- }, -- "node_modules/core-js": { -- "version": "2.6.12", -- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", -- "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", -- "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", -- "hasInstallScript": true -+ "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==" - }, - "node_modules/cosmiconfig": { -- "version": "8.2.0", -- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", -- "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", -+ "version": "9.0.0", -+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", -+ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "dependencies": { -- "import-fresh": "^3.2.1", -+ "env-paths": "^2.2.1", -+ "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", -- "parse-json": "^5.0.0", -- "path-type": "^4.0.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/cross-spawn": { -@@ -1860,7 +2024,6 @@ - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, -- "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", -@@ -1871,12 +2034,12 @@ - } - }, - "node_modules/css-functions-list": { -- "version": "3.1.0", -- "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz", -- "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==", -+ "version": "3.2.3", -+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", -+ "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", - "dev": true, - "engines": { -- "node": ">=12.22" -+ "node": ">=12 || >=16" - } - }, - "node_modules/css-tree": { -@@ -1904,6 +2067,12 @@ - "node": ">=4" - } - }, -+ "node_modules/csstype": { -+ "version": "3.1.3", -+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", -+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", -+ "dev": true -+ }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", -@@ -2014,67 +2183,110 @@ - "node": ">=12" - } - }, -- "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" -+ "node_modules/damerau-levenshtein": { -+ "version": "1.0.8", -+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", -+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", -+ "dev": true -+ }, -+ "node_modules/data-view-buffer": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", -+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.3", -+ "es-errors": "^1.3.0", -+ "is-data-view": "^1.0.2" - }, - "engines": { -- "node": ">=6.0" -+ "node": ">= 0.4" - }, -- "peerDependenciesMeta": { -- "supports-color": { -- "optional": true -- } -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" - } - }, -- "node_modules/decamelize": { -- "version": "5.0.1", -- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", -- "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", -+ "node_modules/data-view-byte-length": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", -+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.3", -+ "es-errors": "^1.3.0", -+ "is-data-view": "^1.0.2" -+ }, - "engines": { -- "node": ">=10" -+ "node": ">= 0.4" - }, - "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "url": "https://github.com/sponsors/inspect-js" - } - }, -- "node_modules/decamelize-keys": { -- "version": "1.1.1", -- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", -- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", -+ "node_modules/data-view-byte-offset": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", -+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "dependencies": { -- "decamelize": "^1.1.0", -- "map-obj": "^1.0.0" -+ "call-bound": "^1.0.2", -+ "es-errors": "^1.3.0", -+ "is-data-view": "^1.0.1" - }, - "engines": { -- "node": ">=0.10.0" -+ "node": ">= 0.4" - }, - "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "url": "https://github.com/sponsors/ljharb" - } - }, -- "node_modules/decamelize-keys/node_modules/decamelize": { -- "version": "1.2.0", -- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", -- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", -+ "node_modules/debug": { -+ "version": "4.4.0", -+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", -+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, -+ "dependencies": { -+ "ms": "^2.1.3" -+ }, - "engines": { -- "node": ">=0.10.0" -+ "node": ">=6.0" -+ }, -+ "peerDependenciesMeta": { -+ "supports-color": { -+ "optional": true -+ } - } - }, -- "node_modules/decamelize-keys/node_modules/map-obj": { -- "version": "1.0.1", -- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", -- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", -+ "node_modules/deep-equal": { -+ "version": "2.2.3", -+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", -+ "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "dev": true, -+ "dependencies": { -+ "array-buffer-byte-length": "^1.0.0", -+ "call-bind": "^1.0.5", -+ "es-get-iterator": "^1.1.3", -+ "get-intrinsic": "^1.2.2", -+ "is-arguments": "^1.1.1", -+ "is-array-buffer": "^3.0.2", -+ "is-date-object": "^1.0.5", -+ "is-regex": "^1.1.4", -+ "is-shared-array-buffer": "^1.0.2", -+ "isarray": "^2.0.5", -+ "object-is": "^1.1.5", -+ "object-keys": "^1.1.1", -+ "object.assign": "^4.1.4", -+ "regexp.prototype.flags": "^1.5.1", -+ "side-channel": "^1.0.4", -+ "which-boxed-primitive": "^1.0.2", -+ "which-collection": "^1.0.1", -+ "which-typed-array": "^1.1.13" -+ }, - "engines": { -- "node": ">=0.10.0" -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-is": { -@@ -2083,12 +2295,30 @@ - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, -+ "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-properties": { -- "version": "1.2.0", -- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", -- "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", -+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { -+ "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, -@@ -2112,6 +2342,14 @@ - "delaunator": "^4.0.0" - } - }, -+ "node_modules/dequal": { -+ "version": "2.0.3", -+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", -+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", -+ "engines": { -+ "node": ">=6" -+ } -+ }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", -@@ -2136,17 +2374,30 @@ - "node": ">=6.0.0" - } - }, -- "node_modules/electron-to-chromium": { -- "version": "1.4.425", -- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.425.tgz", -- "integrity": "sha512-wv1NufHxu11zfDbY4fglYQApMswleE9FL/DSeyOyauVXDZ+Kco96JK/tPfBUaDqfRarYp2WH2hJ/5UnVywp9Jg==", -+ "node_modules/dunder-proto": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", -+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, -- "peer": true -+ "dependencies": { -+ "call-bind-apply-helpers": "^1.0.1", -+ "es-errors": "^1.3.0", -+ "gopd": "^1.2.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "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/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==", -+ "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/encoding": { -@@ -2157,6 +2408,27 @@ - "iconv-lite": "^0.6.2" - } - }, -+ "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/environment": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", -+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", -+ "dev": true, -+ "engines": { -+ "node": ">=18" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", -@@ -2167,85 +2439,180 @@ - } - }, - "node_modules/es-abstract": { -- "version": "1.21.2", -- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", -- "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", -+ "version": "1.23.9", -+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", -+ "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", -+ "dev": true, -+ "dependencies": { -+ "array-buffer-byte-length": "^1.0.2", -+ "arraybuffer.prototype.slice": "^1.0.4", -+ "available-typed-arrays": "^1.0.7", -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "data-view-buffer": "^1.0.2", -+ "data-view-byte-length": "^1.0.2", -+ "data-view-byte-offset": "^1.0.1", -+ "es-define-property": "^1.0.1", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "es-set-tostringtag": "^2.1.0", -+ "es-to-primitive": "^1.3.0", -+ "function.prototype.name": "^1.1.8", -+ "get-intrinsic": "^1.2.7", -+ "get-proto": "^1.0.0", -+ "get-symbol-description": "^1.1.0", -+ "globalthis": "^1.0.4", -+ "gopd": "^1.2.0", -+ "has-property-descriptors": "^1.0.2", -+ "has-proto": "^1.2.0", -+ "has-symbols": "^1.1.0", -+ "hasown": "^2.0.2", -+ "internal-slot": "^1.1.0", -+ "is-array-buffer": "^3.0.5", -+ "is-callable": "^1.2.7", -+ "is-data-view": "^1.0.2", -+ "is-regex": "^1.2.1", -+ "is-shared-array-buffer": "^1.0.4", -+ "is-string": "^1.1.1", -+ "is-typed-array": "^1.1.15", -+ "is-weakref": "^1.1.0", -+ "math-intrinsics": "^1.1.0", -+ "object-inspect": "^1.13.3", -+ "object-keys": "^1.1.1", -+ "object.assign": "^4.1.7", -+ "own-keys": "^1.0.1", -+ "regexp.prototype.flags": "^1.5.3", -+ "safe-array-concat": "^1.1.3", -+ "safe-push-apply": "^1.0.0", -+ "safe-regex-test": "^1.1.0", -+ "set-proto": "^1.0.0", -+ "string.prototype.trim": "^1.2.10", -+ "string.prototype.trimend": "^1.0.9", -+ "string.prototype.trimstart": "^1.0.8", -+ "typed-array-buffer": "^1.0.3", -+ "typed-array-byte-length": "^1.0.3", -+ "typed-array-byte-offset": "^1.0.4", -+ "typed-array-length": "^1.0.7", -+ "unbox-primitive": "^1.1.0", -+ "which-typed-array": "^1.1.18" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/es-define-property": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", -+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", -+ "dev": true, -+ "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-get-iterator": { -+ "version": "1.1.3", -+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", -+ "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "dependencies": { -- "array-buffer-byte-length": "^1.0.0", -- "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", -- "es-set-tostringtag": "^2.0.1", -- "es-to-primitive": "^1.2.1", -- "function.prototype.name": "^1.1.5", -- "get-intrinsic": "^1.2.0", -- "get-symbol-description": "^1.0.0", -- "globalthis": "^1.0.3", -- "gopd": "^1.0.1", -- "has": "^1.0.3", -- "has-property-descriptors": "^1.0.0", -- "has-proto": "^1.0.1", -+ "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", -- "internal-slot": "^1.0.5", -- "is-array-buffer": "^3.0.2", -- "is-callable": "^1.2.7", -- "is-negative-zero": "^2.0.2", -- "is-regex": "^1.1.4", -- "is-shared-array-buffer": "^1.0.2", -+ "is-arguments": "^1.1.1", -+ "is-map": "^2.0.2", -+ "is-set": "^2.0.2", - "is-string": "^1.0.7", -- "is-typed-array": "^1.1.10", -- "is-weakref": "^1.0.2", -- "object-inspect": "^1.12.3", -- "object-keys": "^1.1.1", -- "object.assign": "^4.1.4", -- "regexp.prototype.flags": "^1.4.3", -- "safe-regex-test": "^1.0.0", -- "string.prototype.trim": "^1.2.7", -- "string.prototype.trimend": "^1.0.6", -- "string.prototype.trimstart": "^1.0.6", -- "typed-array-length": "^1.0.4", -- "unbox-primitive": "^1.0.2", -- "which-typed-array": "^1.1.9" -+ "isarray": "^2.0.5", -+ "stop-iteration-iterator": "^1.0.0" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/es-iterator-helpers": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", -+ "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.6", -+ "es-errors": "^1.3.0", -+ "es-set-tostringtag": "^2.0.3", -+ "function-bind": "^1.1.2", -+ "get-intrinsic": "^1.2.6", -+ "globalthis": "^1.0.4", -+ "gopd": "^1.2.0", -+ "has-property-descriptors": "^1.0.2", -+ "has-proto": "^1.2.0", -+ "has-symbols": "^1.1.0", -+ "internal-slot": "^1.1.0", -+ "iterator.prototype": "^1.1.4", -+ "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" -+ } -+ }, -+ "node_modules/es-object-atoms": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", -+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", -+ "dev": true, -+ "dependencies": { -+ "es-errors": "^1.3.0" - }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "engines": { -+ "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { -- "version": "2.0.1", -- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", -- "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", -+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "dependencies": { -- "get-intrinsic": "^1.1.3", -- "has": "^1.0.3", -- "has-tostringtag": "^1.0.0" -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.6", -+ "has-tostringtag": "^1.0.2", -+ "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { -- "version": "1.0.0", -- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", -- "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", -+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { -- "has": "^1.0.3" -+ "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { -- "version": "1.2.1", -- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", -- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", -+ "version": "1.3.0", -+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", -+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "dependencies": { -- "is-callable": "^1.1.4", -- "is-date-object": "^1.0.1", -- "is-symbol": "^1.0.2" -+ "is-callable": "^1.2.7", -+ "is-date-object": "^1.0.5", -+ "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" -@@ -2255,40 +2622,42 @@ - } - }, - "node_modules/esbuild": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", -- "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", -+ "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { -- "node": ">=12" -+ "node": ">=18" - }, - "optionalDependencies": { -- "@esbuild/android-arm": "0.17.19", -- "@esbuild/android-arm64": "0.17.19", -- "@esbuild/android-x64": "0.17.19", -- "@esbuild/darwin-arm64": "0.17.19", -- "@esbuild/darwin-x64": "0.17.19", -- "@esbuild/freebsd-arm64": "0.17.19", -- "@esbuild/freebsd-x64": "0.17.19", -- "@esbuild/linux-arm": "0.17.19", -- "@esbuild/linux-arm64": "0.17.19", -- "@esbuild/linux-ia32": "0.17.19", -- "@esbuild/linux-loong64": "0.17.19", -- "@esbuild/linux-mips64el": "0.17.19", -- "@esbuild/linux-ppc64": "0.17.19", -- "@esbuild/linux-riscv64": "0.17.19", -- "@esbuild/linux-s390x": "0.17.19", -- "@esbuild/linux-x64": "0.17.19", -- "@esbuild/netbsd-x64": "0.17.19", -- "@esbuild/openbsd-x64": "0.17.19", -- "@esbuild/sunos-x64": "0.17.19", -- "@esbuild/win32-arm64": "0.17.19", -- "@esbuild/win32-ia32": "0.17.19", -- "@esbuild/win32-x64": "0.17.19" -+ "@esbuild/aix-ppc64": "0.24.0", -+ "@esbuild/android-arm": "0.24.0", -+ "@esbuild/android-arm64": "0.24.0", -+ "@esbuild/android-x64": "0.24.0", -+ "@esbuild/darwin-arm64": "0.24.0", -+ "@esbuild/darwin-x64": "0.24.0", -+ "@esbuild/freebsd-arm64": "0.24.0", -+ "@esbuild/freebsd-x64": "0.24.0", -+ "@esbuild/linux-arm": "0.24.0", -+ "@esbuild/linux-arm64": "0.24.0", -+ "@esbuild/linux-ia32": "0.24.0", -+ "@esbuild/linux-loong64": "0.24.0", -+ "@esbuild/linux-mips64el": "0.24.0", -+ "@esbuild/linux-ppc64": "0.24.0", -+ "@esbuild/linux-riscv64": "0.24.0", -+ "@esbuild/linux-s390x": "0.24.0", -+ "@esbuild/linux-x64": "0.24.0", -+ "@esbuild/netbsd-x64": "0.24.0", -+ "@esbuild/openbsd-arm64": "0.24.0", -+ "@esbuild/openbsd-x64": "0.24.0", -+ "@esbuild/sunos-x64": "0.24.0", -+ "@esbuild/win32-arm64": "0.24.0", -+ "@esbuild/win32-ia32": "0.24.0", -+ "@esbuild/win32-x64": "0.24.0" - } - }, - "node_modules/esbuild-plugin-copy": { -@@ -2306,76 +2675,6 @@ - "esbuild": ">= 0.14.0" - } - }, -- "node_modules/esbuild-plugin-copy/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/esbuild-plugin-copy/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/esbuild-plugin-copy/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/esbuild-plugin-copy/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/esbuild-plugin-copy/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/esbuild-plugin-copy/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/esbuild-plugin-replace": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esbuild-plugin-replace/-/esbuild-plugin-replace-1.4.0.tgz", -@@ -2386,71 +2685,68 @@ - } - }, - "node_modules/esbuild-sass-plugin": { -- "version": "2.9.0", -- "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.9.0.tgz", -- "integrity": "sha512-D7c8Ub+C4RfaqhOoo9EEWprYmP5ZCmpmcodmYDtpvCfPZLgsSbLaLHPXdul4TUWUMH5eJ6POw+aes/s42ffwrA==", -+ "version": "3.3.1", -+ "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-3.3.1.tgz", -+ "integrity": "sha512-SnO1ls+d52n6j8gRRpjexXI8MsHEaumS0IdDHaYM29Y6gakzZYMls6i9ql9+AWMSQk/eryndmUpXEgT34QrX1A==", - "dev": true, - "dependencies": { -- "resolve": "^1.22.2", -- "sass": "^1.62.0" -+ "resolve": "^1.22.8", -+ "safe-identifier": "^0.4.2", -+ "sass": "^1.71.1" - }, - "peerDependencies": { -- "esbuild": "^0.17.17" -+ "esbuild": ">=0.20.1", -+ "sass-embedded": "^1.71.1" - } - }, - "node_modules/esbuild-wasm": { -- "version": "0.17.19", -- "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.17.19.tgz", -- "integrity": "sha512-X9UQEMJMZXwlGCfqcBmJ1jEa+KrLfd+gCBypO/TSzo5hZvbVwFqpxj1YCuX54ptTF75wxmrgorR4RL40AKtLVg==", -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.24.0.tgz", -+ "integrity": "sha512-xhNn5tL1AhkPg4ft59yXT6FkwKXiPSYyz1IeinJHUJpjvOHOIPvdmFQc0pGdjxlKSbzZc2mNmtVOWAR1EF/JAg==", - "dev": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { -- "node": ">=12" -- } -- }, -- "node_modules/escalade": { -- "version": "3.1.1", -- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", -- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", -- "dev": true, -- "peer": true, -- "engines": { -- "node": ">=6" -+ "node": ">=18" - } - }, - "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==", -+ "version": "4.0.0", -+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", -+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { -- "node": ">=0.8.0" -+ "node": ">=10" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { -- "version": "8.42.0", -- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", -- "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", -+ "version": "8.57.1", -+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", -+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", -+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", -- "@eslint-community/regexpp": "^4.4.0", -- "@eslint/eslintrc": "^2.0.3", -- "@eslint/js": "8.42.0", -- "@humanwhocodes/config-array": "^0.11.10", -+ "@eslint-community/regexpp": "^4.6.1", -+ "@eslint/eslintrc": "^2.1.4", -+ "@eslint/js": "8.57.1", -+ "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", -- "ajv": "^6.10.0", -+ "@ungap/structured-clone": "^1.2.0", -+ "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", -- "eslint-scope": "^7.2.0", -- "eslint-visitor-keys": "^3.4.1", -- "espree": "^9.5.2", -+ "eslint-scope": "^7.2.2", -+ "eslint-visitor-keys": "^3.4.3", -+ "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", -@@ -2460,7 +2756,6 @@ - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", -- "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", -@@ -2470,9 +2765,8 @@ - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", -- "optionator": "^0.9.1", -+ "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", -- "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { -@@ -2485,6 +2779,22 @@ - "url": "https://opencollective.com/eslint" - } - }, -+ "node_modules/eslint-compat-utils": { -+ "version": "0.5.1", -+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", -+ "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", -+ "dev": true, -+ "peer": true, -+ "dependencies": { -+ "semver": "^7.5.4" -+ }, -+ "engines": { -+ "node": ">=12" -+ }, -+ "peerDependencies": { -+ "eslint": ">=6.0.0" -+ } -+ }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", -@@ -2564,14 +2874,14 @@ - } - }, - "node_modules/eslint-import-resolver-node": { -- "version": "0.3.7", -- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", -- "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", -+ "version": "0.3.9", -+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", -+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", -- "is-core-module": "^2.11.0", -- "resolve": "^1.22.1" -+ "is-core-module": "^2.13.0", -+ "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { -@@ -2584,9 +2894,9 @@ - } - }, - "node_modules/eslint-module-utils": { -- "version": "2.8.0", -- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", -- "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", -+ "version": "2.12.0", -+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", -+ "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" -@@ -2629,70 +2939,68 @@ - } - }, - "node_modules/eslint-plugin-es-x": { -- "version": "6.2.1", -- "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-6.2.1.tgz", -- "integrity": "sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==", -+ "version": "7.8.0", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", -+ "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", - "dev": true, -+ "funding": [ -+ "https://github.com/sponsors/ota-meshi", -+ "https://opencollective.com/eslint" -+ ], - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.1.2", -- "@eslint-community/regexpp": "^4.5.0" -+ "@eslint-community/regexpp": "^4.11.0", -+ "eslint-compat-utils": "^0.5.1" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, -- "funding": { -- "url": "https://github.com/sponsors/ota-meshi" -- }, - "peerDependencies": { - "eslint": ">=8" - } - }, -- "node_modules/eslint-plugin-flowtype": { -- "version": "8.0.3", -- "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", -- "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", -+ "node_modules/eslint-plugin-import": { -+ "version": "2.31.0", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", -+ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, - "dependencies": { -- "lodash": "^4.17.21", -- "string-natural-compare": "^3.0.1" -- }, -- "engines": { -- "node": ">=12.0.0" -- }, -- "peerDependencies": { -- "@babel/plugin-syntax-flow": "^7.14.5", -- "@babel/plugin-transform-react-jsx": "^7.14.9", -- "eslint": "^8.1.0" -- } -- }, -- "node_modules/eslint-plugin-import": { -- "version": "2.27.5", -- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", -- "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", -- "dev": true, -- "dependencies": { -- "array-includes": "^3.1.6", -- "array.prototype.flat": "^1.3.1", -- "array.prototype.flatmap": "^1.3.1", -+ "@rtsao/scc": "^1.1.0", -+ "array-includes": "^3.1.8", -+ "array.prototype.findlastindex": "^1.2.5", -+ "array.prototype.flat": "^1.3.2", -+ "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", -- "eslint-import-resolver-node": "^0.3.7", -- "eslint-module-utils": "^2.7.4", -- "has": "^1.0.3", -- "is-core-module": "^2.11.0", -+ "eslint-import-resolver-node": "^0.3.9", -+ "eslint-module-utils": "^2.12.0", -+ "hasown": "^2.0.2", -+ "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", -- "object.values": "^1.1.6", -- "resolve": "^1.22.1", -- "semver": "^6.3.0", -- "tsconfig-paths": "^3.14.1" -+ "object.fromentries": "^2.0.8", -+ "object.groupby": "^1.0.3", -+ "object.values": "^1.2.0", -+ "semver": "^6.3.1", -+ "string.prototype.trimend": "^1.0.8", -+ "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { -- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" -+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" -+ } -+ }, -+ "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/debug": { -@@ -2716,21 +3024,97 @@ - "node": ">=0.10.0" - } - }, -+ "node_modules/eslint-plugin-import/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/eslint-plugin-import/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/eslint-plugin-jsx-a11y": { -+ "version": "6.10.0", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", -+ "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", -+ "dev": true, -+ "dependencies": { -+ "aria-query": "~5.1.3", -+ "array-includes": "^3.1.8", -+ "array.prototype.flatmap": "^1.3.2", -+ "ast-types-flow": "^0.0.8", -+ "axe-core": "^4.10.0", -+ "axobject-query": "^4.1.0", -+ "damerau-levenshtein": "^1.0.8", -+ "emoji-regex": "^9.2.2", -+ "es-iterator-helpers": "^1.0.19", -+ "hasown": "^2.0.2", -+ "jsx-ast-utils": "^3.3.5", -+ "language-tags": "^1.0.9", -+ "minimatch": "^3.1.2", -+ "object.fromentries": "^2.0.8", -+ "safe-regex-test": "^1.0.3", -+ "string.prototype.includes": "^2.0.0" -+ }, -+ "engines": { -+ "node": ">=4.0" -+ }, -+ "peerDependencies": { -+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" -+ } -+ }, -+ "node_modules/eslint-plugin-jsx-a11y/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/eslint-plugin-jsx-a11y/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/eslint-plugin-n": { -- "version": "16.0.0", -- "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.0.tgz", -- "integrity": "sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==", -+ "version": "16.6.2", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", -+ "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", - "dev": true, - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "builtins": "^5.0.1", -- "eslint-plugin-es-x": "^6.1.0", -- "ignore": "^5.1.1", -- "is-core-module": "^2.12.0", -+ "eslint-plugin-es-x": "^7.5.0", -+ "get-tsconfig": "^4.7.0", -+ "globals": "^13.24.0", -+ "ignore": "^5.2.4", -+ "is-builtin-module": "^3.2.1", -+ "is-core-module": "^2.12.1", - "minimatch": "^3.1.2", - "resolve": "^1.22.2", -- "semver": "^7.5.0" -+ "semver": "^7.5.3" - }, - "engines": { - "node": ">=16.0.0" -@@ -2742,42 +3126,30 @@ - "eslint": ">=7.0.0" - } - }, -- "node_modules/eslint-plugin-n/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==", -+ "node_modules/eslint-plugin-n/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, - "peer": true, - "dependencies": { -- "yallist": "^4.0.0" -- }, -- "engines": { -- "node": ">=10" -+ "balanced-match": "^1.0.0", -+ "concat-map": "0.0.1" - } - }, -- "node_modules/eslint-plugin-n/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==", -+ "node_modules/eslint-plugin-n/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, - "peer": true, - "dependencies": { -- "lru-cache": "^6.0.0" -- }, -- "bin": { -- "semver": "bin/semver.js" -+ "brace-expansion": "^1.1.7" - }, - "engines": { -- "node": ">=10" -+ "node": "*" - } - }, -- "node_modules/eslint-plugin-n/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, -- "peer": true -- }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", -@@ -2798,51 +3170,88 @@ - "eslint": ">=5.16.0" - } - }, -+ "node_modules/eslint-plugin-node/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/eslint-plugin-node/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/eslint-plugin-node/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/eslint-plugin-promise": { -- "version": "6.1.1", -- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", -- "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", -+ "version": "6.6.0", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", -+ "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, -+ "funding": { -+ "url": "https://opencollective.com/eslint" -+ }, - "peerDependencies": { -- "eslint": "^7.0.0 || ^8.0.0" -+ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react": { -- "version": "7.32.2", -- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", -- "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", -+ "version": "7.37.1", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", -+ "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", - "dev": true, - "dependencies": { -- "array-includes": "^3.1.6", -- "array.prototype.flatmap": "^1.3.1", -- "array.prototype.tosorted": "^1.1.1", -+ "array-includes": "^3.1.8", -+ "array.prototype.findlast": "^1.2.5", -+ "array.prototype.flatmap": "^1.3.2", -+ "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", -+ "es-iterator-helpers": "^1.0.19", - "estraverse": "^5.3.0", -+ "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", -- "object.entries": "^1.1.6", -- "object.fromentries": "^2.0.6", -- "object.hasown": "^1.1.2", -- "object.values": "^1.1.6", -+ "object.entries": "^1.1.8", -+ "object.fromentries": "^2.0.8", -+ "object.values": "^1.2.0", - "prop-types": "^15.8.1", -- "resolve": "^2.0.0-next.4", -- "semver": "^6.3.0", -- "string.prototype.matchall": "^4.0.8" -+ "resolve": "^2.0.0-next.5", -+ "semver": "^6.3.1", -+ "string.prototype.matchall": "^4.0.11", -+ "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { -- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" -+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-hooks": { -- "version": "4.6.0", -- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", -- "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", -+ "version": "4.6.2", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", -+ "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "dev": true, - "engines": { - "node": ">=10" -@@ -2851,6 +3260,16 @@ - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, -+ "node_modules/eslint-plugin-react/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/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", -@@ -2863,13 +3282,25 @@ - "node": ">=0.10.0" - } - }, -+ "node_modules/eslint-plugin-react/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/eslint-plugin-react/node_modules/resolve": { -- "version": "2.0.0-next.4", -- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", -- "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", -+ "version": "2.0.0-next.5", -+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", -+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { -- "is-core-module": "^2.9.0", -+ "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, -@@ -2880,10 +3311,19 @@ - "url": "https://github.com/sponsors/ljharb" - } - }, -+ "node_modules/eslint-plugin-react/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/eslint-scope": { -- "version": "7.2.0", -- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", -- "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", -+ "version": "7.2.2", -+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", -+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", -@@ -2921,9 +3361,9 @@ - } - }, - "node_modules/eslint-visitor-keys": { -- "version": "3.4.1", -- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", -- "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", -+ "version": "3.4.3", -+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", -+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" -@@ -2932,65 +3372,14 @@ - "url": "https://opencollective.com/eslint" - } - }, -- "node_modules/eslint/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/eslint/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/eslint/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==", -+ "node_modules/eslint/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": { -- "color-name": "~1.1.4" -- }, -- "engines": { -- "node": ">=7.0.0" -- } -- }, -- "node_modules/eslint/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/eslint/node_modules/escape-string-regexp": { -- "version": "4.0.0", -- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", -- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", -- "dev": true, -- "engines": { -- "node": ">=10" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "balanced-match": "^1.0.0", -+ "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/glob-parent": { -@@ -3005,61 +3394,25 @@ - "node": ">=10.13.0" - } - }, -- "node_modules/eslint/node_modules/globals": { -- "version": "13.20.0", -- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", -- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", -- "dev": true, -- "dependencies": { -- "type-fest": "^0.20.2" -- }, -- "engines": { -- "node": ">=8" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -- } -- }, -- "node_modules/eslint/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/eslint/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==", -+ "node_modules/eslint/node_modules/minimatch": { -+ "version": "3.1.2", -+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", -+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { -- "has-flag": "^4.0.0" -+ "brace-expansion": "^1.1.7" - }, - "engines": { -- "node": ">=8" -- } -- }, -- "node_modules/eslint/node_modules/type-fest": { -- "version": "0.20.2", -- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", -- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", -- "dev": true, -- "engines": { -- "node": ">=10" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "node": "*" - } - }, - "node_modules/espree": { -- "version": "9.5.2", -- "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", -- "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", -+ "version": "9.6.1", -+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", -+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { -- "acorn": "^8.8.0", -+ "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, -@@ -3071,9 +3424,9 @@ - } - }, - "node_modules/esquery": { -- "version": "1.5.0", -- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", -- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", -+ "version": "1.6.0", -+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", -+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" -@@ -3119,16 +3472,16 @@ - "dev": true - }, - "node_modules/fast-glob": { -- "version": "3.3.0", -- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", -- "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", -+ "version": "3.3.3", -+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", -+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "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" -+ "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" -@@ -3146,9 +3499,25 @@ - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, -- "node_modules/fastest-levenshtein": { -- "version": "1.0.16", -- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", -+ "node_modules/fast-uri": { -+ "version": "3.0.6", -+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", -+ "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", -+ "dev": true, -+ "funding": [ -+ { -+ "type": "github", -+ "url": "https://github.com/sponsors/fastify" -+ }, -+ { -+ "type": "opencollective", -+ "url": "https://opencollective.com/fastify" -+ } -+ ] -+ }, -+ "node_modules/fastest-levenshtein": { -+ "version": "1.0.16", -+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { -@@ -3156,9 +3525,9 @@ - } - }, - "node_modules/fastq": { -- "version": "1.15.0", -- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", -- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", -+ "version": "1.18.0", -+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", -+ "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" -@@ -3177,14 +3546,14 @@ - } - }, - "node_modules/file-selector": { -- "version": "0.1.19", -- "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.19.tgz", -- "integrity": "sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ==", -+ "version": "2.1.2", -+ "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz", -+ "integrity": "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==", - "dependencies": { -- "tslib": "^2.0.1" -+ "tslib": "^2.7.0" - }, - "engines": { -- "node": ">= 10" -+ "node": ">= 12" - } - }, - "node_modules/fill-range": { -@@ -3216,12 +3585,13 @@ - } - }, - "node_modules/flat-cache": { -- "version": "3.0.4", -- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", -- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", -+ "version": "3.2.0", -+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", -+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { -- "flatted": "^3.1.0", -+ "flatted": "^3.2.9", -+ "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { -@@ -3229,26 +3599,48 @@ - } - }, - "node_modules/flatted": { -- "version": "3.2.7", -- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", -- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", -+ "version": "3.3.2", -+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", -+ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true - }, - "node_modules/focus-trap": { -- "version": "6.9.2", -- "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-6.9.2.tgz", -- "integrity": "sha512-gBEuXOPNOKPrLdZpMFUSTyIo1eT2NSZRrwZ9r/0Jqw5tmT3Yvxfmu8KBHw8xW2XQkw6E/JoG+OlEq7UDtSUNgw==", -+ "version": "7.5.4", -+ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", -+ "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", - "dependencies": { -- "tabbable": "^5.3.2" -+ "tabbable": "^6.2.0" - } - }, - "node_modules/for-each": { -- "version": "0.3.3", -- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", -- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", -+ "version": "0.3.4", -+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", -+ "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", -+ "dev": true, -+ "dependencies": { -+ "is-callable": "^1.2.7" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/foreground-child": { -+ "version": "3.3.0", -+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", -+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "dev": true, - "dependencies": { -- "is-callable": "^1.1.3" -+ "cross-spawn": "^7.0.0", -+ "signal-exit": "^4.0.1" -+ }, -+ "engines": { -+ "node": ">=14" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fs-extra": { -@@ -3272,9 +3664,9 @@ - "dev": true - }, - "node_modules/fsevents": { -- "version": "2.3.2", -- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", -- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", -+ "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, -@@ -3286,21 +3678,26 @@ - } - }, - "node_modules/function-bind": { -- "version": "1.1.1", -- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", -- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", -- "dev": true -+ "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/function.prototype.name": { -- "version": "1.1.5", -- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", -- "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", -+ "version": "1.1.8", -+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", -+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.3", -- "es-abstract": "^1.19.0", -- "functions-have-names": "^1.2.2" -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "functions-have-names": "^1.2.3", -+ "hasown": "^2.0.2", -+ "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" -@@ -3318,39 +3715,64 @@ - "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==", -+ "node_modules/get-east-asian-width": { -+ "version": "1.3.0", -+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", -+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", - "dev": true, -- "peer": true, - "engines": { -- "node": ">=6.9.0" -+ "node": ">=18" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { -- "version": "1.2.1", -- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", -- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", -+ "version": "1.2.7", -+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", -+ "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "dev": true, - "dependencies": { -- "function-bind": "^1.1.1", -- "has": "^1.0.3", -- "has-proto": "^1.0.1", -- "has-symbols": "^1.0.3" -+ "call-bind-apply-helpers": "^1.0.1", -+ "es-define-property": "^1.0.1", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "function-bind": "^1.1.2", -+ "get-proto": "^1.0.0", -+ "gopd": "^1.2.0", -+ "has-symbols": "^1.1.0", -+ "hasown": "^2.0.2", -+ "math-intrinsics": "^1.1.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, -+ "node_modules/get-proto": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", -+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", -+ "dev": true, -+ "dependencies": { -+ "dunder-proto": "^1.0.1", -+ "es-object-atoms": "^1.0.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, - "node_modules/get-symbol-description": { -- "version": "1.0.0", -- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", -- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", -+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "get-intrinsic": "^1.1.1" -+ "call-bound": "^1.0.3", -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" -@@ -3359,12 +3781,26 @@ - "url": "https://github.com/sponsors/ljharb" - } - }, -+ "node_modules/get-tsconfig": { -+ "version": "4.10.0", -+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", -+ "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", -+ "dev": true, -+ "peer": true, -+ "dependencies": { -+ "resolve-pkg-maps": "^1.0.0" -+ }, -+ "funding": { -+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" -+ } -+ }, - "node_modules/gettext-parser": { -- "version": "2.0.0", -- "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.0.0.tgz", -- "integrity": "sha512-FDs/7XjNw58ToQwJFO7avZZbPecSYgw8PBYhd0An+4JtZSrSzKhEvTsVV2uqdO7VziWTOGSgLGD5YRPdsCjF7Q==", -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.1.0.tgz", -+ "integrity": "sha512-YGmu8DSm7PBnwItT+aOiqejOogqctHFzn+wBKUzjDFQP00psAtn/W2paWQxqE5eA5Ijrqaf7xuTKqyCHpuxnrg==", - "dependencies": { - "encoding": "^0.1.12", -+ "readable-stream": "^2.0.0", - "safe-buffer": "^5.1.2" - } - }, -@@ -3391,20 +3827,23 @@ - } - }, - "node_modules/glob": { -- "version": "7.2.3", -- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", -- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", -+ "version": "11.0.0", -+ "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", -+ "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", - "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" -+ "foreground-child": "^3.1.0", -+ "jackspeak": "^4.0.1", -+ "minimatch": "^10.0.0", -+ "minipass": "^7.1.2", -+ "package-json-from-dist": "^1.0.0", -+ "path-scurry": "^2.0.0" -+ }, -+ "bin": { -+ "glob": "dist/esm/bin.mjs" - }, - "engines": { -- "node": "*" -+ "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" -@@ -3422,6 +3861,21 @@ - "node": ">= 6" - } - }, -+ "node_modules/glob/node_modules/minimatch": { -+ "version": "10.0.1", -+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", -+ "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", -+ "dev": true, -+ "dependencies": { -+ "brace-expansion": "^2.0.1" -+ }, -+ "engines": { -+ "node": "20 || >=22" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/isaacs" -+ } -+ }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", -@@ -3461,22 +3915,28 @@ - } - }, - "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==", -+ "version": "13.24.0", -+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", -+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, -- "peer": true, -+ "dependencies": { -+ "type-fest": "^0.20.2" -+ }, - "engines": { -- "node": ">=4" -+ "node": ">=8" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { -- "version": "1.0.3", -- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", -- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", -+ "version": "1.0.4", -+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", -+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "dependencies": { -- "define-properties": "^1.1.3" -+ "define-properties": "^1.2.1", -+ "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" -@@ -3524,12 +3984,12 @@ - "dev": true - }, - "node_modules/gopd": { -- "version": "1.0.1", -- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", -- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", -+ "version": "1.2.0", -+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", -+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, -- "dependencies": { -- "get-intrinsic": "^1.1.3" -+ "engines": { -+ "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" -@@ -3547,62 +4007,47 @@ - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, -- "node_modules/hard-rejection": { -- "version": "2.1.0", -- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", -- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", -+ "node_modules/has-bigints": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", -+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "engines": { -- "node": ">=6" -- } -- }, -- "node_modules/has": { -- "version": "1.0.3", -- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", -- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", -- "dev": true, -- "dependencies": { -- "function-bind": "^1.1.1" -+ "node": ">= 0.4" - }, -- "engines": { -- "node": ">= 0.4.0" -- } -- }, -- "node_modules/has-bigints": { -- "version": "1.0.2", -- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", -- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", -- "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", -+ "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": ">=4" -+ "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { -- "version": "1.0.0", -- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", -- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", -+ "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": { -- "get-intrinsic": "^1.1.1" -+ "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { -- "version": "1.0.1", -- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", -- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", -+ "version": "1.2.0", -+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", -+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, -+ "dependencies": { -+ "dunder-proto": "^1.0.0" -+ }, - "engines": { - "node": ">= 0.4" - }, -@@ -3611,9 +4056,9 @@ - } - }, - "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==", -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", -+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "engines": { - "node": ">= 0.4" -@@ -3623,12 +4068,12 @@ - } - }, - "node_modules/has-tostringtag": { -- "version": "1.0.0", -- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", -- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", -+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { -- "has-symbols": "^1.0.2" -+ "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" -@@ -3637,44 +4082,26 @@ - "url": "https://github.com/sponsors/ljharb" - } - }, -- "node_modules/hoist-non-react-statics": { -- "version": "3.3.2", -- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", -- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", -- "dependencies": { -- "react-is": "^16.7.0" -- } -- }, -- "node_modules/hosted-git-info": { -- "version": "4.1.0", -- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", -- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", -+ "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": { -- "lru-cache": "^6.0.0" -+ "function-bind": "^1.1.2" - }, - "engines": { -- "node": ">=10" -+ "node": ">= 0.4" - } - }, -- "node_modules/hosted-git-info/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, -+ "node_modules/hoist-non-react-statics": { -+ "version": "3.3.2", -+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", -+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { -- "yallist": "^4.0.0" -- }, -- "engines": { -- "node": ">=10" -+ "react-is": "^16.7.0" - } - }, -- "node_modules/hosted-git-info/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/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", -@@ -3708,18 +4135,18 @@ - } - }, - "node_modules/ignore": { -- "version": "5.2.4", -- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", -- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", -+ "version": "5.3.2", -+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", -+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { -- "version": "4.3.0", -- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", -- "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", -+ "version": "4.3.7", -+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", -+ "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", - "dev": true - }, - "node_modules/import-fresh": { -@@ -3738,15 +4165,6 @@ - "url": "https://github.com/sponsors/sindresorhus" - } - }, -- "node_modules/import-lazy": { -- "version": "4.0.0", -- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", -- "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", -- "dev": true, -- "engines": { -- "node": ">=8" -- } -- }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", -@@ -3756,22 +4174,11 @@ - "node": ">=0.8.19" - } - }, -- "node_modules/indent-string": { -- "version": "5.0.0", -- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", -- "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", -- "dev": true, -- "engines": { -- "node": ">=12" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -- } -- }, - "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==", -+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", -@@ -3781,8 +4188,7 @@ - "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 -+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", -@@ -3791,14 +4197,14 @@ - "dev": true - }, - "node_modules/internal-slot": { -- "version": "1.0.5", -- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", -- "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", -+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "dependencies": { -- "get-intrinsic": "^1.2.0", -- "has": "^1.0.3", -- "side-channel": "^1.0.4" -+ "es-errors": "^1.3.0", -+ "hasown": "^2.0.2", -+ "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" -@@ -3821,15 +4227,34 @@ - "node": ">=8" - } - }, -+ "node_modules/is-arguments": { -+ "version": "1.2.0", -+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", -+ "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.2", -+ "has-tostringtag": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, - "node_modules/is-array-buffer": { -- "version": "3.0.2", -- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", -- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", -+ "version": "3.0.5", -+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", -+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "get-intrinsic": "^1.2.0", -- "is-typed-array": "^1.1.10" -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "get-intrinsic": "^1.2.6" -+ }, -+ "engines": { -+ "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" -@@ -3841,13 +4266,35 @@ - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, -+ "node_modules/is-async-function": { -+ "version": "2.1.1", -+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", -+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", -+ "dev": true, -+ "dependencies": { -+ "async-function": "^1.0.0", -+ "call-bound": "^1.0.3", -+ "get-proto": "^1.0.1", -+ "has-tostringtag": "^1.0.2", -+ "safe-regex-test": "^1.1.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, - "node_modules/is-bigint": { -- "version": "1.0.4", -- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", -- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", -+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "dependencies": { -- "has-bigints": "^1.0.1" -+ "has-bigints": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" -@@ -3866,13 +4313,13 @@ - } - }, - "node_modules/is-boolean-object": { -- "version": "1.1.2", -- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", -- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", -+ "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "has-tostringtag": "^1.0.0" -+ "call-bound": "^1.0.2", -+ "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" -@@ -3881,6 +4328,22 @@ - "url": "https://github.com/sponsors/ljharb" - } - }, -+ "node_modules/is-builtin-module": { -+ "version": "3.2.1", -+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", -+ "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", -+ "dev": true, -+ "peer": true, -+ "dependencies": { -+ "builtin-modules": "^3.3.0" -+ }, -+ "engines": { -+ "node": ">=6" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", -@@ -3894,24 +4357,29 @@ - } - }, - "node_modules/is-core-module": { -- "version": "2.12.1", -- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", -- "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", -+ "version": "2.16.1", -+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", -+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "dependencies": { -- "has": "^1.0.3" -+ "hasown": "^2.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, -- "node_modules/is-date-object": { -- "version": "1.0.5", -- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", -- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", -+ "node_modules/is-data-view": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", -+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "dependencies": { -- "has-tostringtag": "^1.0.0" -+ "call-bound": "^1.0.2", -+ "get-intrinsic": "^1.2.6", -+ "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" -@@ -3920,15 +4388,46 @@ - "url": "https://github.com/sponsors/ljharb" - } - }, -- "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, -+ "node_modules/is-date-object": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", -+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.2", -+ "has-tostringtag": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "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-finalizationregistry": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", -+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.3" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, - "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", -@@ -3938,6 +4437,24 @@ - "node": ">=8" - } - }, -+ "node_modules/is-generator-function": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", -+ "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.3", -+ "get-proto": "^1.0.0", -+ "has-tostringtag": "^1.0.2", -+ "safe-regex-test": "^1.1.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", -@@ -3950,10 +4467,10 @@ - "node": ">=0.10.0" - } - }, -- "node_modules/is-negative-zero": { -- "version": "2.0.2", -- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", -- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", -+ "node_modules/is-map": { -+ "version": "2.0.3", -+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", -+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "engines": { - "node": ">= 0.4" -@@ -3972,12 +4489,13 @@ - } - }, - "node_modules/is-number-object": { -- "version": "1.0.7", -- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", -- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", -+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "dependencies": { -- "has-tostringtag": "^1.0.0" -+ "call-bound": "^1.0.3", -+ "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" -@@ -3995,15 +4513,6 @@ - "node": ">=8" - } - }, -- "node_modules/is-plain-obj": { -- "version": "1.1.0", -- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", -- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", -- "dev": true, -- "engines": { -- "node": ">=0.10.0" -- } -- }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", -@@ -4014,13 +4523,15 @@ - } - }, - "node_modules/is-regex": { -- "version": "1.1.4", -- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", -- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", -+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "has-tostringtag": "^1.0.0" -+ "call-bound": "^1.0.2", -+ "gopd": "^1.2.0", -+ "has-tostringtag": "^1.0.2", -+ "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" -@@ -4029,25 +4540,41 @@ - "url": "https://github.com/sponsors/ljharb" - } - }, -+ "node_modules/is-set": { -+ "version": "2.0.3", -+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", -+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", -+ "dev": true, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, - "node_modules/is-shared-array-buffer": { -- "version": "1.0.2", -- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", -- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", -+ "version": "1.0.4", -+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", -+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2" -+ "call-bound": "^1.0.3" -+ }, -+ "engines": { -+ "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { -- "version": "1.0.7", -- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", -- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", -+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "dependencies": { -- "has-tostringtag": "^1.0.0" -+ "call-bound": "^1.0.3", -+ "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" -@@ -4057,12 +4584,14 @@ - } - }, - "node_modules/is-symbol": { -- "version": "1.0.4", -- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", -- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", -+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "dependencies": { -- "has-symbols": "^1.0.2" -+ "call-bound": "^1.0.2", -+ "has-symbols": "^1.1.0", -+ "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" -@@ -4072,16 +4601,12 @@ - } - }, - "node_modules/is-typed-array": { -- "version": "1.1.10", -- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", -- "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", -+ "version": "1.1.15", -+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", -+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "dependencies": { -- "available-typed-arrays": "^1.0.5", -- "call-bind": "^1.0.2", -- "for-each": "^0.3.3", -- "gopd": "^1.0.1", -- "has-tostringtag": "^1.0.0" -+ "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" -@@ -4091,41 +4616,120 @@ - } - }, - "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==", -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", -+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "engines": { -- "node": ">=10" -+ "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, -+ "node_modules/is-weakmap": { -+ "version": "2.0.2", -+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", -+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", -+ "dev": true, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, - "node_modules/is-weakref": { -- "version": "1.0.2", -- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", -- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", -+ "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/is-weakset": { -+ "version": "2.0.4", -+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", -+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2" -+ "call-bound": "^1.0.3", -+ "get-intrinsic": "^1.2.6" -+ }, -+ "engines": { -+ "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, -+ "node_modules/isarray": { -+ "version": "2.0.5", -+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", -+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", -+ "dev": true -+ }, - "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/iterator.prototype": { -+ "version": "1.1.5", -+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", -+ "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", -+ "dev": true, -+ "dependencies": { -+ "define-data-property": "^1.1.4", -+ "es-object-atoms": "^1.0.0", -+ "get-intrinsic": "^1.2.6", -+ "get-proto": "^1.0.0", -+ "has-symbols": "^1.1.0", -+ "set-function-name": "^2.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "node_modules/jackspeak": { -+ "version": "4.0.2", -+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", -+ "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", -+ "dev": true, -+ "dependencies": { -+ "@isaacs/cliui": "^8.0.2" -+ }, -+ "engines": { -+ "node": "20 || >=22" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/isaacs" -+ } -+ }, - "node_modules/jed": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", - "integrity": "sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==", - "dev": true - }, -+ "node_modules/js-sha1": { -+ "version": "0.7.0", -+ "resolved": "https://registry.npmjs.org/js-sha1/-/js-sha1-0.7.0.tgz", -+ "integrity": "sha512-oQZ1Mo7440BfLSv9TX87VNEyU52pXPVG19F9PL3gTgNt0tVxlZ8F4O6yze3CLuLx28TxotxvlyepCNaaV0ZjMw==" -+ }, -+ "node_modules/js-sha256": { -+ "version": "0.11.0", -+ "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.11.0.tgz", -+ "integrity": "sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==" -+ }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", -@@ -4143,18 +4747,11 @@ - "js-yaml": "bin/js-yaml.js" - } - }, -- "node_modules/jsesc": { -- "version": "2.5.2", -- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", -- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", -- "dev": true, -- "peer": true, -- "bin": { -- "jsesc": "bin/jsesc" -- }, -- "engines": { -- "node": ">=4" -- } -+ "node_modules/json-buffer": { -+ "version": "3.0.1", -+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", -+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", -+ "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", -@@ -4171,8 +4768,7 @@ - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", -- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", -- "dev": true -+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", -@@ -4180,16 +4776,15 @@ - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/json5": { -- "version": "2.2.3", -- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", -- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", -+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, -- "peer": true, -+ "dependencies": { -+ "minimist": "^1.2.0" -+ }, - "bin": { - "json5": "lib/cli.js" -- }, -- "engines": { -- "node": ">=6" - } - }, - "node_modules/jsonfile": { -@@ -4205,18 +4800,29 @@ - } - }, - "node_modules/jsx-ast-utils": { -- "version": "3.3.3", -- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", -- "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", -+ "version": "3.3.5", -+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", -+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { -- "array-includes": "^3.1.5", -- "object.assign": "^4.1.3" -+ "array-includes": "^3.1.6", -+ "array.prototype.flat": "^1.3.1", -+ "object.assign": "^4.1.4", -+ "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, -+ "node_modules/keyv": { -+ "version": "4.5.4", -+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", -+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", -+ "dev": true, -+ "dependencies": { -+ "json-buffer": "3.0.1" -+ } -+ }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", -@@ -4227,11 +4833,29 @@ - } - }, - "node_modules/known-css-properties": { -- "version": "0.27.0", -- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz", -- "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==", -+ "version": "0.34.0", -+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", -+ "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", -+ "dev": true -+ }, -+ "node_modules/language-subtag-registry": { -+ "version": "0.3.23", -+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", -+ "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true - }, -+ "node_modules/language-tags": { -+ "version": "1.0.9", -+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", -+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", -+ "dev": true, -+ "dependencies": { -+ "language-subtag-registry": "^0.3.20" -+ }, -+ "engines": { -+ "node": ">=0.10" -+ } -+ }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", -@@ -4284,91 +4908,21 @@ - "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==", -+ "version": "7.0.0", -+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.0.tgz", -+ "integrity": "sha512-zrc91EDk2M+2AXo/9BTvK91pqb7qrPg2nX/Hy+u8a5qQlbaOflCKO+6SqgZ+M+xUFxGdKTgwnGiL96b1W3ikRA==", - "dev": true, - "dependencies": { -- "chalk": "^4.1.0", -- "is-unicode-supported": "^0.1.0" -+ "is-unicode-supported": "^2.0.0", -+ "yoctocolors": "^2.1.1" - }, - "engines": { -- "node": ">=10" -+ "node": ">=18" - }, - "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/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", -@@ -4381,13 +4935,12 @@ - } - }, - "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==", -+ "version": "11.0.2", -+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", -+ "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", - "dev": true, -- "peer": true, -- "dependencies": { -- "yallist": "^3.0.2" -+ "engines": { -+ "node": "20 || >=22" - } - }, - "node_modules/magic-string": { -@@ -4399,16 +4952,13 @@ - "sourcemap-codec": "^1.4.8" - } - }, -- "node_modules/map-obj": { -- "version": "4.3.0", -- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", -- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", -+ "node_modules/math-intrinsics": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", -+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "engines": { -- "node": ">=8" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "node": ">= 0.4" - } - }, - "node_modules/mathml-tag-names": { -@@ -4428,26 +4978,12 @@ - "dev": true - }, - "node_modules/meow": { -- "version": "10.1.5", -- "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", -- "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", -+ "version": "13.2.0", -+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", -+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "dev": true, -- "dependencies": { -- "@types/minimist": "^1.2.2", -- "camelcase-keys": "^7.0.0", -- "decamelize": "^5.0.0", -- "decamelize-keys": "^1.1.0", -- "hard-rejection": "^2.1.0", -- "minimist-options": "4.1.0", -- "normalize-package-data": "^3.0.2", -- "read-pkg-up": "^8.0.0", -- "redent": "^4.0.0", -- "trim-newlines": "^4.0.2", -- "type-fest": "^1.2.2", -- "yargs-parser": "^20.2.9" -- }, - "engines": { -- "node": "^12.20.0 || ^14.13.1 || >=16.0.0" -+ "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" -@@ -4475,25 +5011,19 @@ - "node": ">=8.6" - } - }, -- "node_modules/min-indent": { -- "version": "1.0.1", -- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", -- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", -- "dev": true, -- "engines": { -- "node": ">=4" -- } -- }, - "node_modules/minimatch": { -- "version": "3.1.2", -- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", -- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", -+ "version": "9.0.5", -+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", -+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { -- "brace-expansion": "^1.1.7" -+ "brace-expansion": "^2.0.1" - }, - "engines": { -- "node": "*" -+ "node": ">=16 || 14 >=14.17" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { -@@ -4505,24 +5035,19 @@ - "url": "https://github.com/sponsors/ljharb" - } - }, -- "node_modules/minimist-options": { -- "version": "4.1.0", -- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", -- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", -+ "node_modules/minipass": { -+ "version": "7.1.2", -+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", -+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, -- "dependencies": { -- "arrify": "^1.0.1", -- "is-plain-obj": "^1.1.0", -- "kind-of": "^6.0.3" -- }, - "engines": { -- "node": ">= 6" -+ "node": ">=16 || 14 >=14.17" - } - }, - "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==", -+ "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/nanoid": { -@@ -4536,7 +5061,6 @@ - "url": "https://github.com/sponsors/ai" - } - ], -- "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, -@@ -4550,13 +5074,6 @@ - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, -- "node_modules/node-releases": { -- "version": "2.0.12", -- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", -- "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", -- "dev": true, -- "peer": true -- }, - "node_modules/node-watch": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", -@@ -4566,54 +5083,6 @@ - "node": ">=6" - } - }, -- "node_modules/normalize-package-data": { -- "version": "3.0.3", -- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", -- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", -- "dev": true, -- "dependencies": { -- "hosted-git-info": "^4.0.1", -- "is-core-module": "^2.5.0", -- "semver": "^7.3.4", -- "validate-npm-package-license": "^3.0.1" -- }, -- "engines": { -- "node": ">=10" -- } -- }, -- "node_modules/normalize-package-data/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/normalize-package-data/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/normalize-package-data/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/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", -@@ -4632,10 +5101,29 @@ - } - }, - "node_modules/object-inspect": { -- "version": "1.12.3", -- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", -- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", -+ "version": "1.13.3", -+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", -+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", -+ "dev": true, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/object-is": { -+ "version": "1.1.6", -+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", -+ "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } -@@ -4650,14 +5138,16 @@ - } - }, - "node_modules/object.assign": { -- "version": "4.1.4", -- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", -- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", -+ "version": "4.1.7", -+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", -+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "has-symbols": "^1.0.3", -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0", -+ "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { -@@ -4668,28 +5158,29 @@ - } - }, - "node_modules/object.entries": { -- "version": "1.1.6", -- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", -- "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", -+ "version": "1.1.8", -+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", -+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4" -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { -- "version": "2.0.6", -- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", -- "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", -+ "version": "2.0.8", -+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", -+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4" -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2", -+ "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" -@@ -4698,28 +5189,30 @@ - "url": "https://github.com/sponsors/ljharb" - } - }, -- "node_modules/object.hasown": { -- "version": "1.1.2", -- "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", -- "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", -+ "node_modules/object.groupby": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", -+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "dependencies": { -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4" -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2" - }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "engines": { -+ "node": ">= 0.4" - } - }, - "node_modules/object.values": { -- "version": "1.1.6", -- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", -- "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", -+ "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4" -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" -@@ -4738,22 +5231,39 @@ - } - }, - "node_modules/optionator": { -- "version": "0.9.3", -- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", -- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", -+ "version": "0.9.4", -+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", -+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "dependencies": { -- "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", -- "type-check": "^0.4.0" -+ "type-check": "^0.4.0", -+ "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, -+ "node_modules/own-keys": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", -+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", -+ "dev": true, -+ "dependencies": { -+ "get-intrinsic": "^1.2.6", -+ "object-keys": "^1.1.1", -+ "safe-push-apply": "^1.0.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", -@@ -4784,6 +5294,12 @@ - "url": "https://github.com/sponsors/sindresorhus" - } - }, -+ "node_modules/package-json-from-dist": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", -+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", -+ "dev": true -+ }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", -@@ -4847,6 +5363,22 @@ - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, -+ "node_modules/path-scurry": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", -+ "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", -+ "dev": true, -+ "dependencies": { -+ "lru-cache": "^11.0.0", -+ "minipass": "^7.1.2" -+ }, -+ "engines": { -+ "node": "20 || >=22" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/isaacs" -+ } -+ }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", -@@ -4857,9 +5389,9 @@ - } - }, - "node_modules/picocolors": { -- "version": "1.0.0", -- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", -- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", -+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "node_modules/picomatch": { -@@ -4875,15 +5407,15 @@ - } - }, - "node_modules/plur": { -- "version": "4.0.0", -- "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", -- "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", -+ "version": "5.1.0", -+ "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", -+ "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", - "dev": true, - "dependencies": { -- "irregular-plurals": "^3.2.0" -+ "irregular-plurals": "^3.3.0" - }, - "engines": { -- "node": ">=10" -+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" -@@ -4920,20 +5452,29 @@ - "node": ">= 6" - } - }, -- "node_modules/popper.js": { -- "version": "1.16.1", -- "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", -- "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", -- "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", -- "funding": { -- "type": "opencollective", -- "url": "https://opencollective.com/popperjs" -+ "node_modules/po2json/node_modules/gettext-parser": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.0.0.tgz", -+ "integrity": "sha512-FDs/7XjNw58ToQwJFO7avZZbPecSYgw8PBYhd0An+4JtZSrSzKhEvTsVV2uqdO7VziWTOGSgLGD5YRPdsCjF7Q==", -+ "dev": true, -+ "dependencies": { -+ "encoding": "^0.1.12", -+ "safe-buffer": "^5.1.2" -+ } -+ }, -+ "node_modules/possible-typed-array-names": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", -+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", -+ "dev": true, -+ "engines": { -+ "node": ">= 0.4" - } - }, - "node_modules/postcss": { -- "version": "8.4.31", -- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", -- "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", -+ "version": "8.5.1", -+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", -+ "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", - "dev": true, - "funding": [ - { -@@ -4950,9 +5491,9 @@ - } - ], - "dependencies": { -- "nanoid": "^3.3.6", -- "picocolors": "^1.0.0", -- "source-map-js": "^1.0.2" -+ "nanoid": "^3.3.8", -+ "picocolors": "^1.1.1", -+ "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" -@@ -4965,31 +5506,41 @@ - "dev": true - }, - "node_modules/postcss-resolve-nested-selector": { -- "version": "0.1.1", -- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", -- "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", -+ "version": "0.1.6", -+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", -+ "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", - "dev": true - }, - "node_modules/postcss-safe-parser": { -- "version": "6.0.0", -- "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", -- "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", -+ "version": "7.0.1", -+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", -+ "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", - "dev": true, -+ "funding": [ -+ { -+ "type": "opencollective", -+ "url": "https://opencollective.com/postcss/" -+ }, -+ { -+ "type": "tidelift", -+ "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" -+ }, -+ { -+ "type": "github", -+ "url": "https://github.com/sponsors/ai" -+ } -+ ], - "engines": { -- "node": ">=12.0" -- }, -- "funding": { -- "type": "opencollective", -- "url": "https://opencollective.com/postcss/" -+ "node": ">=18.0" - }, - "peerDependencies": { -- "postcss": "^8.3.3" -+ "postcss": "^8.4.31" - } - }, - "node_modules/postcss-scss": { -- "version": "4.0.6", -- "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz", -- "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==", -+ "version": "4.0.9", -+ "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", -+ "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, - "funding": [ - { -@@ -4999,19 +5550,23 @@ - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-scss" -+ }, -+ { -+ "type": "github", -+ "url": "https://github.com/sponsors/ai" - } - ], - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { -- "postcss": "^8.4.19" -+ "postcss": "^8.4.29" - } - }, - "node_modules/postcss-selector-parser": { -- "version": "6.0.13", -- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", -- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", -+ "version": "6.1.2", -+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", -+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", -@@ -5036,6 +5591,11 @@ - "node": ">= 0.8.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==" -+ }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", -@@ -5046,22 +5606,10 @@ - "react-is": "^16.13.1" - } - }, -- "node_modules/prop-types-extra": { -- "version": "1.1.1", -- "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", -- "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", -- "dependencies": { -- "react-is": "^16.3.2", -- "warning": "^4.0.0" -- }, -- "peerDependencies": { -- "react": ">=0.14.0" -- } -- }, - "node_modules/punycode": { -- "version": "2.3.0", -- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", -- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", -+ "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" -@@ -5087,22 +5635,10 @@ - } - ] - }, -- "node_modules/quick-lru": { -- "version": "5.1.1", -- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", -- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", -- "dev": true, -- "engines": { -- "node": ">=10" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -- } -- }, - "node_modules/qunit": { -- "version": "2.19.4", -- "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.19.4.tgz", -- "integrity": "sha512-aqUzzUeCqlleWYKlpgfdHHw9C6KxkB9H3wNfiBg5yHqQMzy0xw/pbCRHYFkjl8MsP/t8qkTQE+JTYL71azgiew==", -+ "version": "2.22.0", -+ "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.22.0.tgz", -+ "integrity": "sha512-wPYvAvpjTL3zlUeyCX75T8gfZfdVXZa8y1EVkGe/XZNORIsCH/WI2X8R2KlemT921X9EKSZUL6CLGSPC7Ks08g==", - "dev": true, - "dependencies": { - "commander": "7.2.0", -@@ -5116,6 +5652,18 @@ - "node": ">=10" - } - }, -+ "node_modules/qunit-tap": { -+ "version": "1.5.1", -+ "resolved": "https://registry.npmjs.org/qunit-tap/-/qunit-tap-1.5.1.tgz", -+ "integrity": "sha512-ZEgx3kF/DN5WYX3qkR7Kgq/+vtnttaHkX69GFqZ3EEKyXsQ3mYDReWjyetN3jtBEl3ZvQ7DhW6rLq/9sJzoUHQ==", -+ "dev": true, -+ "engines": [ -+ "node >=0.1.96", -+ "spidermonkey", -+ "rhino", -+ "phantomjs" -+ ] -+ }, - "node_modules/qunit/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", -@@ -5126,45 +5674,42 @@ - } - }, - "node_modules/react": { -- "version": "17.0.2", -- "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", -- "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", -+ "version": "18.3.1", -+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", -+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dependencies": { -- "loose-envify": "^1.1.0", -- "object-assign": "^4.1.1" -+ "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { -- "version": "17.0.2", -- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", -- "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", -+ "version": "18.3.1", -+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", -+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "dependencies": { - "loose-envify": "^1.1.0", -- "object-assign": "^4.1.1", -- "scheduler": "^0.20.2" -+ "scheduler": "^0.23.2" - }, - "peerDependencies": { -- "react": "17.0.2" -+ "react": "^18.3.1" - } - }, - "node_modules/react-dropzone": { -- "version": "9.0.0", -- "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-9.0.0.tgz", -- "integrity": "sha512-wZ2o9B2qkdE3RumWhfyZT9swgJYJPeU5qHEcMU8weYpmLex1eeWX0CC32/Y0VutB+BBi2D+iePV/YZIiB4kZGw==", -+ "version": "14.3.5", -+ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.5.tgz", -+ "integrity": "sha512-9nDUaEEpqZLOz5v5SUcFA0CjM4vq8YbqO0WRls+EYT7+DvxUdzDPKNCPLqGfj3YL9MsniCLCD4RFA6M95V6KMQ==", - "dependencies": { -- "attr-accept": "^1.1.3", -- "file-selector": "^0.1.8", -- "prop-types": "^15.6.2", -- "prop-types-extra": "^1.1.0" -+ "attr-accept": "^2.2.4", -+ "file-selector": "^2.1.0", -+ "prop-types": "^15.8.1" - }, - "engines": { -- "node": ">= 6" -+ "node": ">= 10.13" - }, - "peerDependencies": { -- "react": ">=0.14.0" -+ "react": ">= 16.8 || 18.0.0" - } - }, - "node_modules/react-fast-compare": { -@@ -5177,40 +5722,29 @@ - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, -- "node_modules/read-pkg": { -- "version": "6.0.0", -- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", -- "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", -- "dev": true, -+ "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==", - "dependencies": { -- "@types/normalize-package-data": "^2.4.0", -- "normalize-package-data": "^3.0.2", -- "parse-json": "^5.2.0", -- "type-fest": "^1.0.1" -- }, -- "engines": { -- "node": ">=12" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "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/read-pkg-up": { -- "version": "8.0.0", -- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", -- "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", -- "dev": true, -- "dependencies": { -- "find-up": "^5.0.0", -- "read-pkg": "^6.0.0", -- "type-fest": "^1.0.1" -- }, -- "engines": { -- "node": ">=12" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -- } -+ "node_modules/readable-stream/node_modules/isarray": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" -+ }, -+ "node_modules/readable-stream/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==" - }, - "node_modules/readdirp": { - "version": "3.6.0", -@@ -5224,31 +5758,40 @@ - "node": ">=8.10.0" - } - }, -- "node_modules/redent": { -- "version": "4.0.0", -- "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", -- "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", -+ "node_modules/reflect.getprototypeof": { -+ "version": "1.0.10", -+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", -+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "dependencies": { -- "indent-string": "^5.0.0", -- "strip-indent": "^4.0.0" -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.9", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "get-intrinsic": "^1.2.7", -+ "get-proto": "^1.0.1", -+ "which-builtin-type": "^1.2.1" - }, - "engines": { -- "node": ">=12" -+ "node": ">= 0.4" - }, - "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { -- "version": "1.5.0", -- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", -- "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", -+ "version": "1.5.4", -+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", -+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.2.0", -- "functions-have-names": "^1.2.3" -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-errors": "^1.3.0", -+ "get-proto": "^1.0.1", -+ "gopd": "^1.2.0", -+ "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" -@@ -5269,6 +5812,29 @@ - "url": "https://github.com/sponsors/mysticatea" - } - }, -+ "node_modules/remarkable": { -+ "version": "2.0.1", -+ "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", -+ "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", -+ "dependencies": { -+ "argparse": "^1.0.10", -+ "autolinker": "^3.11.0" -+ }, -+ "bin": { -+ "remarkable": "bin/remarkable.js" -+ }, -+ "engines": { -+ "node": ">= 6.0.0" -+ } -+ }, -+ "node_modules/remarkable/node_modules/argparse": { -+ "version": "1.0.10", -+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", -+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", -+ "dependencies": { -+ "sprintf-js": "~1.0.2" -+ } -+ }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", -@@ -5279,18 +5845,21 @@ - } - }, - "node_modules/resolve": { -- "version": "1.22.2", -- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", -- "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", -+ "version": "1.22.10", -+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", -+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "dependencies": { -- "is-core-module": "^2.11.0", -+ "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, -+ "engines": { -+ "node": ">= 0.4" -+ }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } -@@ -5304,6 +5873,16 @@ - "node": ">=4" - } - }, -+ "node_modules/resolve-pkg-maps": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", -+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", -+ "dev": true, -+ "peer": true, -+ "funding": { -+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" -+ } -+ }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", -@@ -5318,6 +5897,7 @@ - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", -+ "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" -@@ -5329,6 +5909,49 @@ - "url": "https://github.com/sponsors/isaacs" - } - }, -+ "node_modules/rimraf/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/rimraf/node_modules/glob": { -+ "version": "7.2.3", -+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", -+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", -+ "deprecated": "Glob versions prior to v9 are no longer supported", -+ "dev": true, -+ "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/rimraf/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/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", -@@ -5352,13 +5975,42 @@ - "queue-microtask": "^1.2.2" - } - }, -- "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==", -- "funding": [ -- { -- "type": "github", -+ "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==", -+ "dev": true, -+ "peer": true, -+ "dependencies": { -+ "tslib": "^2.1.0" -+ } -+ }, -+ "node_modules/safe-array-concat": { -+ "version": "1.1.3", -+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", -+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.2", -+ "get-intrinsic": "^1.2.6", -+ "has-symbols": "^1.1.0", -+ "isarray": "^2.0.5" -+ }, -+ "engines": { -+ "node": ">=0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "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==", -+ "funding": [ -+ { -+ "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { -@@ -5371,1104 +6023,7837 @@ - } - ] - }, -- "node_modules/safe-regex-test": { -- "version": "1.0.0", -- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", -- "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", -+ "node_modules/safe-identifier": { -+ "version": "0.4.2", -+ "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", -+ "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", -+ "dev": true -+ }, -+ "node_modules/safe-push-apply": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", -+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", -+ "dev": true, -+ "dependencies": { -+ "es-errors": "^1.3.0", -+ "isarray": "^2.0.5" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/safe-regex-test": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", -+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.2", -+ "es-errors": "^1.3.0", -+ "is-regex": "^1.2.1" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/safer-buffer": { -+ "version": "2.1.2", -+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", -+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" -+ }, -+ "node_modules/sass": { -+ "version": "1.79.4", -+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz", -+ "integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==", -+ "dev": true, -+ "dependencies": { -+ "chokidar": "^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-embedded": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.83.4.tgz", -+ "integrity": "sha512-Hf2burRA/y5PGxsg6jB9UpoK/xZ6g/pgrkOcdl6j+rRg1Zj8XhGKZ1MTysZGtTPUUmiiErqzkP5+Kzp95yv9GQ==", -+ "dev": true, -+ "peer": true, -+ "dependencies": { -+ "@bufbuild/protobuf": "^2.0.0", -+ "buffer-builder": "^0.2.0", -+ "colorjs.io": "^0.5.0", -+ "immutable": "^5.0.2", -+ "rxjs": "^7.4.0", -+ "supports-color": "^8.1.1", -+ "sync-child-process": "^1.0.2", -+ "varint": "^6.0.0" -+ }, -+ "bin": { -+ "sass": "dist/bin/sass.js" -+ }, -+ "engines": { -+ "node": ">=16.0.0" -+ }, -+ "optionalDependencies": { -+ "sass-embedded-android-arm": "1.83.4", -+ "sass-embedded-android-arm64": "1.83.4", -+ "sass-embedded-android-ia32": "1.83.4", -+ "sass-embedded-android-riscv64": "1.83.4", -+ "sass-embedded-android-x64": "1.83.4", -+ "sass-embedded-darwin-arm64": "1.83.4", -+ "sass-embedded-darwin-x64": "1.83.4", -+ "sass-embedded-linux-arm": "1.83.4", -+ "sass-embedded-linux-arm64": "1.83.4", -+ "sass-embedded-linux-ia32": "1.83.4", -+ "sass-embedded-linux-musl-arm": "1.83.4", -+ "sass-embedded-linux-musl-arm64": "1.83.4", -+ "sass-embedded-linux-musl-ia32": "1.83.4", -+ "sass-embedded-linux-musl-riscv64": "1.83.4", -+ "sass-embedded-linux-musl-x64": "1.83.4", -+ "sass-embedded-linux-riscv64": "1.83.4", -+ "sass-embedded-linux-x64": "1.83.4", -+ "sass-embedded-win32-arm64": "1.83.4", -+ "sass-embedded-win32-ia32": "1.83.4", -+ "sass-embedded-win32-x64": "1.83.4" -+ } -+ }, -+ "node_modules/sass-embedded-android-arm": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.83.4.tgz", -+ "integrity": "sha512-9Z4pJAOgEkXa3VDY/o+U6l5XvV0mZTJcSl0l/mSPHihjAHSpLYnOW6+KOWeM8dxqrsqTYcd6COzhanI/a++5Gw==", -+ "cpu": [ -+ "arm" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "android" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-android-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.83.4.tgz", -+ "integrity": "sha512-tgX4FzmbVqnQmD67ZxQDvI+qFNABrboOQgwsG05E5bA/US42zGajW9AxpECJYiMXVOHmg+d81ICbjb0fsVHskw==", -+ "cpu": [ -+ "arm64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "android" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-android-ia32": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.83.4.tgz", -+ "integrity": "sha512-RsFOziFqPcfZXdFRULC4Ayzy9aK6R6FwQ411broCjlOBX+b0gurjRadkue3cfUEUR5mmy0KeCbp7zVKPLTK+5Q==", -+ "cpu": [ -+ "ia32" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "android" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-android-riscv64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.83.4.tgz", -+ "integrity": "sha512-EHwh0nmQarBBrMRU928eTZkFGx19k/XW2YwbPR4gBVdWLkbTgCA5aGe8hTE6/1zStyx++3nDGvTZ78+b/VvvLg==", -+ "cpu": [ -+ "riscv64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "android" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-android-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.83.4.tgz", -+ "integrity": "sha512-0PgQNuPWYy1jEOEPDVsV89KfqOsMLIp9CSbjBY7jRcwRhyVAcigqrUG6bDeNtojHUYKA1kU+Eh/85WxOHUOgBw==", -+ "cpu": [ -+ "x64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "android" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-darwin-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.83.4.tgz", -+ "integrity": "sha512-rp2ywymWc3nymnSnAFG5R/8hvxWCsuhK3wOnD10IDlmNB7o4rzKby1c+2ZfpQGowlYGWsWWTgz8FW2qzmZsQRw==", -+ "cpu": [ -+ "arm64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "darwin" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-darwin-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.83.4.tgz", -+ "integrity": "sha512-kLkN2lXz9PCgGfDS8Ev5YVcl/V2173L6379en/CaFuJJi7WiyPgBymW7hOmfCt4uO4R1y7CP2Uc08DRtZsBlAA==", -+ "cpu": [ -+ "x64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "darwin" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-arm": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.83.4.tgz", -+ "integrity": "sha512-nL90ryxX2lNmFucr9jYUyHHx21AoAgdCL1O5Ltx2rKg2xTdytAGHYo2MT5S0LIeKLa/yKP/hjuSvrbICYNDvtA==", -+ "cpu": [ -+ "arm" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.83.4.tgz", -+ "integrity": "sha512-E0zjsZX2HgESwyqw31EHtI39DKa7RgK7nvIhIRco1d0QEw227WnoR9pjH3M/ZQy4gQj3GKilOFHM5Krs/omeIA==", -+ "cpu": [ -+ "arm64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-ia32": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.83.4.tgz", -+ "integrity": "sha512-ew5HpchSzgAYbQoriRh8QhlWn5Kw2nQ2jHoV9YLwGKe3fwwOWA0KDedssvDv7FWnY/FCqXyymhLd6Bxae4Xquw==", -+ "cpu": [ -+ "ia32" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-musl-arm": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.83.4.tgz", -+ "integrity": "sha512-0RrJRwMrmm+gG0VOB5b5Cjs7Sd+lhqpQJa6EJNEaZHljJokEfpE5GejZsGMRMIQLxEvVphZnnxl6sonCGFE/QQ==", -+ "cpu": [ -+ "arm" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-musl-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.83.4.tgz", -+ "integrity": "sha512-IzMgalf6MZOxgp4AVCgsaWAFDP/IVWOrgVXxkyhw29fyAEoSWBJH4k87wyPhEtxSuzVHLxKNbc8k3UzdWmlBFg==", -+ "cpu": [ -+ "arm64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-musl-ia32": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.83.4.tgz", -+ "integrity": "sha512-LLb4lYbcxPzX4UaJymYXC+WwokxUlfTJEFUv5VF0OTuSsHAGNRs/rslPtzVBTvMeG9TtlOQDhku1F7G6iaDotA==", -+ "cpu": [ -+ "ia32" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-musl-riscv64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.83.4.tgz", -+ "integrity": "sha512-zoKlPzD5Z13HKin1UGR74QkEy+kZEk2AkGX5RelRG494mi+IWwRuWCppXIovor9+BQb9eDWPYPoMVahwN5F7VA==", -+ "cpu": [ -+ "riscv64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-musl-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.83.4.tgz", -+ "integrity": "sha512-hB8+/PYhfEf2zTIcidO5Bpof9trK6WJjZ4T8g2MrxQh8REVtdPcgIkoxczRynqybf9+fbqbUwzXtiUao2GV+vQ==", -+ "cpu": [ -+ "x64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-riscv64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.83.4.tgz", -+ "integrity": "sha512-83fL4n+oeDJ0Y4KjASmZ9jHS1Vl9ESVQYHMhJE0i4xDi/P3BNarm2rsKljq/QtrwGpbqwn8ujzOu7DsNCMDSHA==", -+ "cpu": [ -+ "riscv64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-linux-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.83.4.tgz", -+ "integrity": "sha512-NlnGdvCmTD5PK+LKXlK3sAuxOgbRIEoZfnHvxd157imCm/s2SYF/R28D0DAAjEViyI8DovIWghgbcqwuertXsA==", -+ "cpu": [ -+ "x64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "linux" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-win32-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.83.4.tgz", -+ "integrity": "sha512-J2BFKrEaeSrVazU2qTjyQdAk+MvbzJeTuCET0uAJEXSKtvQ3AzxvzndS7LqkDPbF32eXAHLw8GVpwcBwKbB3Uw==", -+ "cpu": [ -+ "arm64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "win32" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-win32-ia32": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.83.4.tgz", -+ "integrity": "sha512-uPAe9T/5sANFhJS5dcfAOhOJy8/l2TRYG4r+UO3Wp4yhqbN7bggPvY9c7zMYS0OC8tU/bCvfYUDFHYMCl91FgA==", -+ "cpu": [ -+ "ia32" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "win32" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded-win32-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.83.4.tgz", -+ "integrity": "sha512-C9fkDY0jKITdJFij4UbfPFswxoXN9O/Dr79v17fJnstVwtUojzVJWKHUXvF0Zg2LIR7TCc4ju3adejKFxj7ueA==", -+ "cpu": [ -+ "x64" -+ ], -+ "dev": true, -+ "optional": true, -+ "os": [ -+ "win32" -+ ], -+ "peer": true, -+ "engines": { -+ "node": ">=14.0.0" -+ } -+ }, -+ "node_modules/sass-embedded/node_modules/immutable": { -+ "version": "5.0.3", -+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", -+ "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", -+ "dev": true, -+ "peer": true -+ }, -+ "node_modules/sass-embedded/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, -+ "peer": true, -+ "dependencies": { -+ "has-flag": "^4.0.0" -+ }, -+ "engines": { -+ "node": ">=10" -+ }, -+ "funding": { -+ "url": "https://github.com/chalk/supports-color?sponsor=1" -+ } -+ }, -+ "node_modules/sass/node_modules/chokidar": { -+ "version": "4.0.3", -+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", -+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", -+ "dev": true, -+ "dependencies": { -+ "readdirp": "^4.0.1" -+ }, -+ "engines": { -+ "node": ">= 14.16.0" -+ }, -+ "funding": { -+ "url": "https://paulmillr.com/funding/" -+ } -+ }, -+ "node_modules/sass/node_modules/readdirp": { -+ "version": "4.1.1", -+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", -+ "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", -+ "dev": true, -+ "engines": { -+ "node": ">= 14.18.0" -+ }, -+ "funding": { -+ "type": "individual", -+ "url": "https://paulmillr.com/funding/" -+ } -+ }, -+ "node_modules/scheduler": { -+ "version": "0.23.2", -+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", -+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", -+ "dependencies": { -+ "loose-envify": "^1.1.0" -+ } -+ }, -+ "node_modules/semver": { -+ "version": "7.7.0", -+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", -+ "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", -+ "dev": true, -+ "bin": { -+ "semver": "bin/semver.js" -+ }, -+ "engines": { -+ "node": ">=10" -+ } -+ }, -+ "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/set-function-name": { -+ "version": "2.0.2", -+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", -+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", -+ "dev": true, -+ "dependencies": { -+ "define-data-property": "^1.1.4", -+ "es-errors": "^1.3.0", -+ "functions-have-names": "^1.2.3", -+ "has-property-descriptors": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "node_modules/set-proto": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", -+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", -+ "dev": true, -+ "dependencies": { -+ "dunder-proto": "^1.0.1", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "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/side-channel": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", -+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", -+ "dev": true, -+ "dependencies": { -+ "es-errors": "^1.3.0", -+ "object-inspect": "^1.13.3", -+ "side-channel-list": "^1.0.0", -+ "side-channel-map": "^1.0.1", -+ "side-channel-weakmap": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/side-channel-list": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", -+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", -+ "dev": true, -+ "dependencies": { -+ "es-errors": "^1.3.0", -+ "object-inspect": "^1.13.3" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/side-channel-map": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", -+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.2", -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.5", -+ "object-inspect": "^1.13.3" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/side-channel-weakmap": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", -+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.2", -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.5", -+ "object-inspect": "^1.13.3", -+ "side-channel-map": "^1.0.1" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "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/sizzle": { -+ "version": "2.3.10", -+ "resolved": "https://registry.npmjs.org/sizzle/-/sizzle-2.3.10.tgz", -+ "integrity": "sha512-kPGev+SiByuzi/YPDTqCwdKLWCaN9+14ve86yH0gP6Efue04xjLYWJrcLC6y1buFyIVXkwHNXPsOTEd1MYVPbQ==", -+ "dev": true -+ }, -+ "node_modules/slash": { -+ "version": "3.0.0", -+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", -+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", -+ "dev": true, -+ "engines": { -+ "node": ">=8" -+ } -+ }, -+ "node_modules/slice-ansi": { -+ "version": "4.0.0", -+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", -+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", -+ "dev": true, -+ "dependencies": { -+ "ansi-styles": "^4.0.0", -+ "astral-regex": "^2.0.0", -+ "is-fullwidth-code-point": "^3.0.0" -+ }, -+ "engines": { -+ "node": ">=10" -+ }, -+ "funding": { -+ "url": "https://github.com/chalk/slice-ansi?sponsor=1" -+ } -+ }, -+ "node_modules/source-map-js": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", -+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", -+ "dev": true, -+ "engines": { -+ "node": ">=0.10.0" -+ } -+ }, -+ "node_modules/sourcemap-codec": { -+ "version": "1.4.8", -+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", -+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", -+ "deprecated": "Please use @jridgewell/sourcemap-codec instead", -+ "dev": true -+ }, -+ "node_modules/sprintf-js": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", -+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" -+ }, -+ "node_modules/stop-iteration-iterator": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", -+ "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", -+ "dev": true, -+ "dependencies": { -+ "es-errors": "^1.3.0", -+ "internal-slot": "^1.1.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "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==", -+ "dependencies": { -+ "safe-buffer": "~5.1.0" -+ } -+ }, -+ "node_modules/string_decoder/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==" -+ }, -+ "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/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/string-width-cjs/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/string-width/node_modules/ansi-regex": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", -+ "dev": true, -+ "engines": { -+ "node": ">=12" -+ }, -+ "funding": { -+ "url": "https://github.com/chalk/ansi-regex?sponsor=1" -+ } -+ }, -+ "node_modules/string-width/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/string.prototype.includes": { -+ "version": "2.0.1", -+ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", -+ "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.3" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "node_modules/string.prototype.matchall": { -+ "version": "4.0.12", -+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", -+ "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.6", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "get-intrinsic": "^1.2.6", -+ "gopd": "^1.2.0", -+ "has-symbols": "^1.1.0", -+ "internal-slot": "^1.1.0", -+ "regexp.prototype.flags": "^1.5.3", -+ "set-function-name": "^2.0.2", -+ "side-channel": "^1.1.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/string.prototype.repeat": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", -+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", -+ "dev": true, -+ "dependencies": { -+ "define-properties": "^1.1.3", -+ "es-abstract": "^1.17.5" -+ } -+ }, -+ "node_modules/string.prototype.trim": { -+ "version": "1.2.10", -+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", -+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.2", -+ "define-data-property": "^1.1.4", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.5", -+ "es-object-atoms": "^1.0.0", -+ "has-property-descriptors": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/string.prototype.trimend": { -+ "version": "1.0.9", -+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", -+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.2", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/string.prototype.trimstart": { -+ "version": "1.0.8", -+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", -+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "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-bom": { -+ "version": "3.0.0", -+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", -+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", -+ "dev": true, -+ "engines": { -+ "node": ">=4" -+ } -+ }, -+ "node_modules/strip-json-comments": { -+ "version": "3.1.1", -+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", -+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", -+ "dev": true, -+ "engines": { -+ "node": ">=8" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ }, -+ "node_modules/stylelint": { -+ "version": "16.9.0", -+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", -+ "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", -+ "dev": true, -+ "funding": [ -+ { -+ "type": "opencollective", -+ "url": "https://opencollective.com/stylelint" -+ }, -+ { -+ "type": "github", -+ "url": "https://github.com/sponsors/stylelint" -+ } -+ ], -+ "dependencies": { -+ "@csstools/css-parser-algorithms": "^3.0.1", -+ "@csstools/css-tokenizer": "^3.0.1", -+ "@csstools/media-query-list-parser": "^3.0.1", -+ "@csstools/selector-specificity": "^4.0.0", -+ "@dual-bundle/import-meta-resolve": "^4.1.0", -+ "balanced-match": "^2.0.0", -+ "colord": "^2.9.3", -+ "cosmiconfig": "^9.0.0", -+ "css-functions-list": "^3.2.2", -+ "css-tree": "^2.3.1", -+ "debug": "^4.3.6", -+ "fast-glob": "^3.3.2", -+ "fastest-levenshtein": "^1.0.16", -+ "file-entry-cache": "^9.0.0", -+ "global-modules": "^2.0.0", -+ "globby": "^11.1.0", -+ "globjoin": "^0.1.4", -+ "html-tags": "^3.3.1", -+ "ignore": "^5.3.2", -+ "imurmurhash": "^0.1.4", -+ "is-plain-object": "^5.0.0", -+ "known-css-properties": "^0.34.0", -+ "mathml-tag-names": "^2.1.3", -+ "meow": "^13.2.0", -+ "micromatch": "^4.0.8", -+ "normalize-path": "^3.0.0", -+ "picocolors": "^1.0.1", -+ "postcss": "^8.4.41", -+ "postcss-resolve-nested-selector": "^0.1.6", -+ "postcss-safe-parser": "^7.0.0", -+ "postcss-selector-parser": "^6.1.2", -+ "postcss-value-parser": "^4.2.0", -+ "resolve-from": "^5.0.0", -+ "string-width": "^4.2.3", -+ "strip-ansi": "^7.1.0", -+ "supports-hyperlinks": "^3.1.0", -+ "svg-tags": "^1.0.0", -+ "table": "^6.8.2", -+ "write-file-atomic": "^5.0.1" -+ }, -+ "bin": { -+ "stylelint": "bin/stylelint.mjs" -+ }, -+ "engines": { -+ "node": ">=18.12.0" -+ } -+ }, -+ "node_modules/stylelint-config-recommended": { -+ "version": "14.0.1", -+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", -+ "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", -+ "dev": true, -+ "funding": [ -+ { -+ "type": "opencollective", -+ "url": "https://opencollective.com/stylelint" -+ }, -+ { -+ "type": "github", -+ "url": "https://github.com/sponsors/stylelint" -+ } -+ ], -+ "engines": { -+ "node": ">=18.12.0" -+ }, -+ "peerDependencies": { -+ "stylelint": "^16.1.0" -+ } -+ }, -+ "node_modules/stylelint-config-recommended-scss": { -+ "version": "14.0.0", -+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz", -+ "integrity": "sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==", -+ "dev": true, -+ "dependencies": { -+ "postcss-scss": "^4.0.9", -+ "stylelint-config-recommended": "^14.0.0", -+ "stylelint-scss": "^6.0.0" -+ }, -+ "engines": { -+ "node": ">=18.12.0" -+ }, -+ "peerDependencies": { -+ "postcss": "^8.3.3", -+ "stylelint": "^16.0.2" -+ }, -+ "peerDependenciesMeta": { -+ "postcss": { -+ "optional": true -+ } -+ } -+ }, -+ "node_modules/stylelint-config-standard": { -+ "version": "36.0.1", -+ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", -+ "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", -+ "dev": true, -+ "funding": [ -+ { -+ "type": "opencollective", -+ "url": "https://opencollective.com/stylelint" -+ }, -+ { -+ "type": "github", -+ "url": "https://github.com/sponsors/stylelint" -+ } -+ ], -+ "dependencies": { -+ "stylelint-config-recommended": "^14.0.1" -+ }, -+ "engines": { -+ "node": ">=18.12.0" -+ }, -+ "peerDependencies": { -+ "stylelint": "^16.1.0" -+ } -+ }, -+ "node_modules/stylelint-config-standard-scss": { -+ "version": "13.1.0", -+ "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz", -+ "integrity": "sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==", -+ "dev": true, -+ "dependencies": { -+ "stylelint-config-recommended-scss": "^14.0.0", -+ "stylelint-config-standard": "^36.0.0" -+ }, -+ "engines": { -+ "node": ">=18.12.0" -+ }, -+ "peerDependencies": { -+ "postcss": "^8.3.3", -+ "stylelint": "^16.3.1" -+ }, -+ "peerDependenciesMeta": { -+ "postcss": { -+ "optional": true -+ } -+ } -+ }, -+ "node_modules/stylelint-formatter-pretty": { -+ "version": "4.0.1", -+ "resolved": "https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-4.0.1.tgz", -+ "integrity": "sha512-39nasPN8QNdMBq2eghI/SwpyVKx8kJGtmE/KJ5oFvCg0ZvZ5qjJbQgEulzC0gT70XZ+iRk7p1W5tE9IBQhFjPw==", -+ "dev": true, -+ "funding": [ -+ { -+ "type": "kofi", -+ "url": "https://ko-fi.com/mrcgrtz" -+ }, -+ { -+ "type": "liberapay", -+ "url": "https://liberapay.com/mrcgrtz/" -+ } -+ ], -+ "dependencies": { -+ "ansi-escapes": "^7.0.0", -+ "log-symbols": "^7.0.0", -+ "picocolors": "^1.0.0", -+ "plur": "^5.1.0", -+ "string-width": "^7.0.0", -+ "supports-hyperlinks": "^3.0.0" -+ }, -+ "engines": { -+ "node": ">=18.12.0" -+ }, -+ "peerDependencies": { -+ "stylelint": ">=16.0.0" -+ } -+ }, -+ "node_modules/stylelint-formatter-pretty/node_modules/ansi-regex": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", -+ "dev": true, -+ "engines": { -+ "node": ">=12" -+ }, -+ "funding": { -+ "url": "https://github.com/chalk/ansi-regex?sponsor=1" -+ } -+ }, -+ "node_modules/stylelint-formatter-pretty/node_modules/emoji-regex": { -+ "version": "10.4.0", -+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", -+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", -+ "dev": true -+ }, -+ "node_modules/stylelint-formatter-pretty/node_modules/string-width": { -+ "version": "7.2.0", -+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", -+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", -+ "dev": true, -+ "dependencies": { -+ "emoji-regex": "^10.3.0", -+ "get-east-asian-width": "^1.0.0", -+ "strip-ansi": "^7.1.0" -+ }, -+ "engines": { -+ "node": ">=18" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ }, -+ "node_modules/stylelint-formatter-pretty/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/stylelint-scss": { -+ "version": "6.11.0", -+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.11.0.tgz", -+ "integrity": "sha512-AvJ6LVzz2iXHxPlPTR9WVy73FC/vmohH54VySNlCKX1NIXNAeuzy/VbIkMJLMyw/xKYqkgY4kAgB+qy5BfCaCg==", -+ "dev": true, -+ "dependencies": { -+ "css-tree": "^3.0.1", -+ "is-plain-object": "^5.0.0", -+ "known-css-properties": "^0.35.0", -+ "mdn-data": "^2.15.0", -+ "postcss-media-query-parser": "^0.2.3", -+ "postcss-resolve-nested-selector": "^0.1.6", -+ "postcss-selector-parser": "^7.0.0", -+ "postcss-value-parser": "^4.2.0" -+ }, -+ "engines": { -+ "node": ">=18.12.0" -+ }, -+ "peerDependencies": { -+ "stylelint": "^16.0.2" -+ } -+ }, -+ "node_modules/stylelint-scss/node_modules/css-tree": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", -+ "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", -+ "dev": true, -+ "dependencies": { -+ "mdn-data": "2.12.2", -+ "source-map-js": "^1.0.1" -+ }, -+ "engines": { -+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" -+ } -+ }, -+ "node_modules/stylelint-scss/node_modules/css-tree/node_modules/mdn-data": { -+ "version": "2.12.2", -+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", -+ "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", -+ "dev": true -+ }, -+ "node_modules/stylelint-scss/node_modules/known-css-properties": { -+ "version": "0.35.0", -+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", -+ "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", -+ "dev": true -+ }, -+ "node_modules/stylelint-scss/node_modules/mdn-data": { -+ "version": "2.15.0", -+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.15.0.tgz", -+ "integrity": "sha512-KIrS0lFPOqA4DgeO16vI5fkAsy8p++WBlbXtB5P1EQs8ubBgguAInNd1DnrCeTRfGchY0kgThgDOOIPyOLH2dQ==", -+ "dev": true -+ }, -+ "node_modules/stylelint-scss/node_modules/postcss-selector-parser": { -+ "version": "7.0.0", -+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", -+ "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", -+ "dev": true, -+ "dependencies": { -+ "cssesc": "^3.0.0", -+ "util-deprecate": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">=4" -+ } -+ }, -+ "node_modules/stylelint-use-logical-spec": { -+ "version": "5.0.1", -+ "resolved": "https://registry.npmjs.org/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz", -+ "integrity": "sha512-UfLB4LW6iG4r3cXxjxkiHQrFyhWFqt8FpNNngD+TyvgMWSokk5TYwTvBHS3atUvZhOogllTOe/PUrGE+4z84AA==", -+ "dev": true, -+ "engines": { -+ "node": ">=8.0.0" -+ }, -+ "peerDependencies": { -+ "stylelint": ">=11 < 17" -+ } -+ }, -+ "node_modules/stylelint/node_modules/balanced-match": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", -+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", -+ "dev": true -+ }, -+ "node_modules/stylelint/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/stylelint/node_modules/file-entry-cache": { -+ "version": "9.1.0", -+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", -+ "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", -+ "dev": true, -+ "dependencies": { -+ "flat-cache": "^5.0.0" -+ }, -+ "engines": { -+ "node": ">=18" -+ } -+ }, -+ "node_modules/stylelint/node_modules/flat-cache": { -+ "version": "5.0.0", -+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", -+ "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", -+ "dev": true, -+ "dependencies": { -+ "flatted": "^3.3.1", -+ "keyv": "^4.5.4" -+ }, -+ "engines": { -+ "node": ">=18" -+ } -+ }, -+ "node_modules/stylelint/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/stylelint/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/stylelint/node_modules/string-width/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/stylelint/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/stylelint/node_modules/strip-ansi/node_modules/ansi-regex": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", -+ "dev": true, -+ "engines": { -+ "node": ">=12" -+ }, -+ "funding": { -+ "url": "https://github.com/chalk/ansi-regex?sponsor=1" -+ } -+ }, -+ "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/supports-hyperlinks": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", -+ "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", -+ "dev": true, -+ "dependencies": { -+ "has-flag": "^4.0.0", -+ "supports-color": "^7.0.0" -+ }, -+ "engines": { -+ "node": ">=14.18" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ }, -+ "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/svg-tags": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", -+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", -+ "dev": true -+ }, -+ "node_modules/sync-child-process": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", -+ "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", -+ "dev": true, -+ "peer": true, -+ "dependencies": { -+ "sync-message-port": "^1.0.0" -+ }, -+ "engines": { -+ "node": ">=16.0.0" -+ } -+ }, -+ "node_modules/sync-message-port": { -+ "version": "1.1.3", -+ "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", -+ "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", -+ "dev": true, -+ "peer": true, -+ "engines": { -+ "node": ">=16.0.0" -+ } -+ }, -+ "node_modules/tabbable": { -+ "version": "6.2.0", -+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", -+ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" -+ }, -+ "node_modules/table": { -+ "version": "6.9.0", -+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", -+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", -+ "dev": true, -+ "dependencies": { -+ "ajv": "^8.0.1", -+ "lodash.truncate": "^4.4.2", -+ "slice-ansi": "^4.0.0", -+ "string-width": "^4.2.3", -+ "strip-ansi": "^6.0.1" -+ }, -+ "engines": { -+ "node": ">=10.0.0" -+ } -+ }, -+ "node_modules/table/node_modules/ajv": { -+ "version": "8.17.1", -+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", -+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", -+ "dev": true, -+ "dependencies": { -+ "fast-deep-equal": "^3.1.3", -+ "fast-uri": "^3.0.1", -+ "json-schema-traverse": "^1.0.0", -+ "require-from-string": "^2.0.2" -+ }, -+ "funding": { -+ "type": "github", -+ "url": "https://github.com/sponsors/epoberezkin" -+ } -+ }, -+ "node_modules/table/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/table/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/table/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/text-table": { -+ "version": "0.2.0", -+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", -+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", -+ "dev": true -+ }, -+ "node_modules/throttle-debounce": { -+ "version": "5.0.2", -+ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", -+ "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==", -+ "engines": { -+ "node": ">=12.22" -+ } -+ }, -+ "node_modules/tiny-glob": { -+ "version": "0.2.9", -+ "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", -+ "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", -+ "dev": true, -+ "dependencies": { -+ "globalyzer": "0.1.0", -+ "globrex": "^0.1.2" -+ } -+ }, -+ "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/ts-api-utils": { -+ "version": "1.4.3", -+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", -+ "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", -+ "dev": true, -+ "engines": { -+ "node": ">=16" -+ }, -+ "peerDependencies": { -+ "typescript": ">=4.2.0" -+ } -+ }, -+ "node_modules/tsconfig-paths": { -+ "version": "3.15.0", -+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", -+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", -+ "dev": true, -+ "dependencies": { -+ "@types/json5": "^0.0.29", -+ "json5": "^1.0.2", -+ "minimist": "^1.2.6", -+ "strip-bom": "^3.0.0" -+ } -+ }, -+ "node_modules/tslib": { -+ "version": "2.8.1", -+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", -+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" -+ }, -+ "node_modules/type-check": { -+ "version": "0.4.0", -+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", -+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", -+ "dev": true, -+ "dependencies": { -+ "prelude-ls": "^1.2.1" -+ }, -+ "engines": { -+ "node": ">= 0.8.0" -+ } -+ }, -+ "node_modules/type-fest": { -+ "version": "0.20.2", -+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", -+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", -+ "dev": true, -+ "engines": { -+ "node": ">=10" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ }, -+ "node_modules/typed-array-buffer": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", -+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.3", -+ "es-errors": "^1.3.0", -+ "is-typed-array": "^1.1.14" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ } -+ }, -+ "node_modules/typed-array-byte-length": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", -+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.8", -+ "for-each": "^0.3.3", -+ "gopd": "^1.2.0", -+ "has-proto": "^1.2.0", -+ "is-typed-array": "^1.1.14" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/typed-array-byte-offset": { -+ "version": "1.0.4", -+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", -+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", -+ "dev": true, -+ "dependencies": { -+ "available-typed-arrays": "^1.0.7", -+ "call-bind": "^1.0.8", -+ "for-each": "^0.3.3", -+ "gopd": "^1.2.0", -+ "has-proto": "^1.2.0", -+ "is-typed-array": "^1.1.15", -+ "reflect.getprototypeof": "^1.0.9" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/typed-array-length": { -+ "version": "1.0.7", -+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", -+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", -+ "dev": true, -+ "dependencies": { -+ "call-bind": "^1.0.7", -+ "for-each": "^0.3.3", -+ "gopd": "^1.0.1", -+ "is-typed-array": "^1.1.13", -+ "possible-typed-array-names": "^1.0.0", -+ "reflect.getprototypeof": "^1.0.6" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/typescript": { -+ "version": "5.7.3", -+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", -+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", -+ "dev": true, -+ "bin": { -+ "tsc": "bin/tsc", -+ "tsserver": "bin/tsserver" -+ }, -+ "engines": { -+ "node": ">=14.17" -+ } -+ }, -+ "node_modules/unbox-primitive": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", -+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.3", -+ "has-bigints": "^1.0.2", -+ "has-symbols": "^1.1.0", -+ "which-boxed-primitive": "^1.1.1" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/universalify": { -+ "version": "2.0.1", -+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", -+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", -+ "dev": true, -+ "engines": { -+ "node": ">= 10.0.0" -+ } -+ }, -+ "node_modules/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/uuid": { -+ "version": "10.0.0", -+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", -+ "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", -+ "funding": [ -+ "https://github.com/sponsors/broofa", -+ "https://github.com/sponsors/ctavan" -+ ], -+ "bin": { -+ "uuid": "dist/bin/uuid" -+ } -+ }, -+ "node_modules/varint": { -+ "version": "6.0.0", -+ "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", -+ "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", -+ "dev": true, -+ "peer": true -+ }, -+ "node_modules/victory-area": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-37.3.6.tgz", -+ "integrity": "sha512-wVC8LKrZJLiSySNuJLRCB449qZTsPiRyzLlNoJwe21y+XA/a2HJbmJSeywmo8P153aX8viKe1H8ygDsTFXQhHw==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-axis": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-37.3.6.tgz", -+ "integrity": "sha512-Vi0dZvgmXmnCdoqc49WckeG5cMXnl7FTtqVhXu9JweA9cgCnkZabBd5mRvAjblb3Lo4j0HZCSPKHYWUPW70qZg==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-bar": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-37.3.6.tgz", -+ "integrity": "sha512-jdATFRWL1LUW/yEpKWx/aId2BiU2o1pPF9+Kh1TFISBduJoI4ZqvZD90H1QK4f/z50PikqiqiDECaKoKM1jfOQ==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-box-plot": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-37.3.6.tgz", -+ "integrity": "sha512-GOucnD63h14ScBuISC/nd1GBTEx6gIZfLE+0P0gyeH1poBKq0trTTvpQDvAMuGR8zICfEETG3ltmUMCwRrFyUg==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-brush-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-37.3.6.tgz", -+ "integrity": "sha512-LfZ2CgX1cYAqCtYxcSB68OfZS2v0T2VLXoEArd0lCXfRBY1Gya7GacCUcuo7GoK9XOXeslx7S/U95aVutt1VLg==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "react-fast-compare": "^3.2.0", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-chart": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-37.3.6.tgz", -+ "integrity": "sha512-IkPo/W4AJ7bPu902TGER09OseR9ODm+FQAKfOBw4JsdEhZZ7BiG9zgd/25+x0r5EsTLu81CYGQVkBa+ZazcOlA==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "react-fast-compare": "^3.2.0", -+ "victory-axis": "37.3.6", -+ "victory-core": "37.3.6", -+ "victory-polar-axis": "37.3.6", -+ "victory-shared-events": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-core": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.3.6.tgz", -+ "integrity": "sha512-aFgO6KokxPbUCPznZP5UPhOdI22pMuwDXKDt6eoQOnkVim66Ia+K95TQar2nwVKGYV5j26aKVf/n9blwphGJRw==", -+ "dependencies": { -+ "lodash": "^4.17.21", -+ "react-fast-compare": "^3.2.0", -+ "victory-vendor": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-create-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-37.3.6.tgz", -+ "integrity": "sha512-Uf5bFQvqUsXCjqpvBW4LhrdrHkM6dBqxYgub6FCsBb86f84xZQ3vY7jFkg/JfvF0oGKMoWXYYrYLC1sk+fcWVA==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-brush-container": "37.3.6", -+ "victory-core": "37.3.6", -+ "victory-cursor-container": "37.3.6", -+ "victory-selection-container": "37.3.6", -+ "victory-voronoi-container": "37.3.6", -+ "victory-zoom-container": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-cursor-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-37.3.6.tgz", -+ "integrity": "sha512-+Oiw57d5nE+iq8As8RvepknzmNtKq1Gsc50u1X3IRd4jXtX8zqZrgXGlVZ+BP/tkLsWnGYVjKulwKBf2oaEUuw==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-group": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-37.3.6.tgz", -+ "integrity": "sha512-kgy/Azl5BxwlJAV0KDPGypv35TMrOD1J2ZxnJW2Wyyq+e8i0GGBIv5MoBzou64BRsDlS9V0CYRIjnkHgrBpB5w==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "react-fast-compare": "^3.2.0", -+ "victory-core": "37.3.6", -+ "victory-shared-events": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-legend": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-37.3.6.tgz", -+ "integrity": "sha512-vRRrhj3/ENqKVLdaBMzEmR83N6BOjox1bthYT1eJjN2H5SIK35bxn30IkiV/Pz3y627EqZe4TAWaxc0jiJlCiA==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-line": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-37.3.6.tgz", -+ "integrity": "sha512-Ke817uf/qFbN9jU7Dba7CrcHXYO5wAZuKKnyeHJmLDeQeFST0773xejnIuC+dBgZipjFr4KIbSd+VcUafFNE1g==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-pie": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-37.3.6.tgz", -+ "integrity": "sha512-tvdgAZ/HQWlo3KDDe0XAVbizHuaNMbgkkiF7zfA7Ww+3bHSs+0P9dsDtK2xP365D8gBCOv8pWmuzvKRhzNbqeA==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-polar-axis": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-37.3.6.tgz", -+ "integrity": "sha512-RpFsCkzHezJq5P+C/wtVdjEHX25JIFsSgs6qYSnfr/hayaFbWgK5HhRFpriQm5hg61cx47WxAOLyHvzf0nasvw==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-scatter": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-37.3.6.tgz", -+ "integrity": "sha512-fp95zMTPXgW1cmTowzDXhn+KxePMVDrzU0lotsHQMdBV7eB+ioXdu9hORlx4VHmMYg2ihsGwRTF+VAZ7rGxphA==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-selection-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-37.3.6.tgz", -+ "integrity": "sha512-gd3qODDlBtLEJM7+2jCXk2YcLBUmIpYEEHswytMhwc6zihxXipGBUHRulhLj/I05mKay2gaOAg5ewiJHd4Awgw==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-shared-events": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.6.tgz", -+ "integrity": "sha512-ygrbOtzLUTbtKebacZKyQRekhSAROnAvMkVI/PKsAGsz0ClY9P7qDEJG7eTUUygjO6ax0tI6WNE6JogQzeD1gw==", -+ "dependencies": { -+ "json-stringify-safe": "^5.0.1", -+ "lodash": "^4.17.19", -+ "react-fast-compare": "^3.2.0", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-stack": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-37.3.6.tgz", -+ "integrity": "sha512-ldod04RdqGJGH5p5eWXCofdTkbhZqIp3iwW7NpxSbMDLs8zPQIVvDFVtuJgMwQiC5vnIpbhMmxVeFbr8m64ZKA==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "react-fast-compare": "^3.2.0", -+ "victory-core": "37.3.6", -+ "victory-shared-events": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-tooltip": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-37.3.6.tgz", -+ "integrity": "sha512-vqaJS9noauOqDDBBAV9Ln9duOY/i17h1DCfCPAqhwPFyvFbwKvAub9zPTeYWAm/14VvWX5O/0yekFCVbcC7hjg==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-vendor": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", -+ "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", -+ "dependencies": { -+ "@types/d3-array": "^3.0.3", -+ "@types/d3-ease": "^3.0.0", -+ "@types/d3-interpolate": "^3.0.1", -+ "@types/d3-scale": "^4.0.2", -+ "@types/d3-shape": "^3.1.0", -+ "@types/d3-time": "^3.0.0", -+ "@types/d3-timer": "^3.0.0", -+ "d3-array": "^3.1.6", -+ "d3-ease": "^3.0.1", -+ "d3-interpolate": "^3.0.1", -+ "d3-scale": "^4.0.2", -+ "d3-shape": "^3.1.0", -+ "d3-time": "^3.0.0", -+ "d3-timer": "^3.0.1" -+ } -+ }, -+ "node_modules/victory-voronoi-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-37.3.6.tgz", -+ "integrity": "sha512-qAAG0rMuK7A4EoJ4cyUk5wNdOW+HuCXNKPOko+hYK6wWOYXJvFhiglYyA85a695YyAXECc6JyJS/crm4IOEFag==", -+ "dependencies": { -+ "delaunay-find": "0.0.6", -+ "lodash": "^4.17.19", -+ "react-fast-compare": "^3.2.0", -+ "victory-core": "37.3.6", -+ "victory-tooltip": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "node_modules/victory-zoom-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-37.3.6.tgz", -+ "integrity": "sha512-AGL+k20mI44OL5b0VgIxlmnNSefIoFmbbim5NraPmIxbtns9qQW/56ivIncJcYomBungIx99gUpsEpcQaMNHgQ==", -+ "dependencies": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6" -+ }, -+ "engines": { -+ "node": ">=18.0.0" -+ }, -+ "peerDependencies": { -+ "react": ">=16.6.0" -+ } -+ }, -+ "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/which-boxed-primitive": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", -+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", -+ "dev": true, -+ "dependencies": { -+ "is-bigint": "^1.1.0", -+ "is-boolean-object": "^1.2.1", -+ "is-number-object": "^1.1.1", -+ "is-string": "^1.1.1", -+ "is-symbol": "^1.1.1" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/which-builtin-type": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", -+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", -+ "dev": true, -+ "dependencies": { -+ "call-bound": "^1.0.2", -+ "function.prototype.name": "^1.1.6", -+ "has-tostringtag": "^1.0.2", -+ "is-async-function": "^2.0.0", -+ "is-date-object": "^1.1.0", -+ "is-finalizationregistry": "^1.1.0", -+ "is-generator-function": "^1.0.10", -+ "is-regex": "^1.2.1", -+ "is-weakref": "^1.0.2", -+ "isarray": "^2.0.5", -+ "which-boxed-primitive": "^1.1.0", -+ "which-collection": "^1.0.2", -+ "which-typed-array": "^1.1.16" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/which-collection": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", -+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", -+ "dev": true, -+ "dependencies": { -+ "is-map": "^2.0.3", -+ "is-set": "^2.0.3", -+ "is-weakmap": "^2.0.2", -+ "is-weakset": "^2.0.3" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/which-typed-array": { -+ "version": "1.1.18", -+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", -+ "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", -+ "dev": true, -+ "dependencies": { -+ "available-typed-arrays": "^1.0.7", -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "for-each": "^0.3.3", -+ "gopd": "^1.2.0", -+ "has-tostringtag": "^1.0.2" -+ }, -+ "engines": { -+ "node": ">= 0.4" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/ljharb" -+ } -+ }, -+ "node_modules/word-wrap": { -+ "version": "1.2.5", -+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", -+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", -+ "dev": true, -+ "engines": { -+ "node": ">=0.10.0" -+ } -+ }, -+ "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/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/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/wrap-ansi-cjs/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/wrap-ansi/node_modules/ansi-regex": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", -+ "dev": true, -+ "engines": { -+ "node": ">=12" -+ }, -+ "funding": { -+ "url": "https://github.com/chalk/ansi-regex?sponsor=1" -+ } -+ }, -+ "node_modules/wrap-ansi/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/wrap-ansi/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/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/write-file-atomic": { -+ "version": "5.0.1", -+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", -+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", -+ "dev": true, -+ "dependencies": { -+ "imurmurhash": "^0.1.4", -+ "signal-exit": "^4.0.1" -+ }, -+ "engines": { -+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" -+ } -+ }, -+ "node_modules/ws": { -+ "version": "7.5.10", -+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", -+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", -+ "dev": true, -+ "engines": { -+ "node": ">=8.3.0" -+ }, -+ "peerDependencies": { -+ "bufferutil": "^4.0.1", -+ "utf-8-validate": "^5.0.2" -+ }, -+ "peerDependenciesMeta": { -+ "bufferutil": { -+ "optional": true -+ }, -+ "utf-8-validate": { -+ "optional": true -+ } -+ } -+ }, -+ "node_modules/yocto-queue": { -+ "version": "0.1.0", -+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", -+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", -+ "dev": true, -+ "engines": { -+ "node": ">=10" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ }, -+ "node_modules/yoctocolors": { -+ "version": "2.1.1", -+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", -+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", -+ "dev": true, -+ "engines": { -+ "node": ">=18" -+ }, -+ "funding": { -+ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ } -+ }, -+ "dependencies": { -+ "@babel/code-frame": { -+ "version": "7.26.2", -+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", -+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", -+ "dev": true, -+ "requires": { -+ "@babel/helper-validator-identifier": "^7.25.9", -+ "js-tokens": "^4.0.0", -+ "picocolors": "^1.0.0" -+ } -+ }, -+ "@babel/helper-validator-identifier": { -+ "version": "7.25.9", -+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", -+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", -+ "dev": true -+ }, -+ "@bufbuild/protobuf": { -+ "version": "2.2.3", -+ "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.3.tgz", -+ "integrity": "sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg==", -+ "dev": true, -+ "peer": true -+ }, -+ "@csstools/css-parser-algorithms": { -+ "version": "3.0.4", -+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", -+ "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", -+ "dev": true, -+ "requires": {} -+ }, -+ "@csstools/css-tokenizer": { -+ "version": "3.0.3", -+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", -+ "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", -+ "dev": true -+ }, -+ "@csstools/media-query-list-parser": { -+ "version": "3.0.1", -+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", -+ "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", -+ "dev": true, -+ "requires": {} -+ }, -+ "@csstools/selector-specificity": { -+ "version": "4.0.0", -+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", -+ "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", -+ "dev": true, -+ "requires": {} -+ }, -+ "@dual-bundle/import-meta-resolve": { -+ "version": "4.1.0", -+ "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", -+ "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", -+ "dev": true -+ }, -+ "@esbuild/aix-ppc64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", -+ "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/android-arm": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", -+ "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/android-arm64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", -+ "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/android-x64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", -+ "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/darwin-arm64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", -+ "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/darwin-x64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", -+ "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/freebsd-arm64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", -+ "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/freebsd-x64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", -+ "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/linux-arm": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", -+ "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/linux-arm64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", -+ "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/linux-ia32": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", -+ "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/linux-loong64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", -+ "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/linux-mips64el": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", -+ "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/linux-ppc64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", -+ "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/linux-riscv64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", -+ "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/linux-s390x": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", -+ "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/linux-x64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", -+ "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/netbsd-x64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", -+ "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/openbsd-arm64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", -+ "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/openbsd-x64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", -+ "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/sunos-x64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", -+ "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/win32-arm64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", -+ "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/win32-ia32": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", -+ "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", -+ "dev": true, -+ "optional": true -+ }, -+ "@esbuild/win32-x64": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", -+ "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", -+ "dev": true, -+ "optional": true -+ }, -+ "@eslint-community/eslint-utils": { -+ "version": "4.4.1", -+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", -+ "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", -+ "dev": true, -+ "requires": { -+ "eslint-visitor-keys": "^3.4.3" -+ } -+ }, -+ "@eslint-community/regexpp": { -+ "version": "4.12.1", -+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", -+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", -+ "dev": true -+ }, -+ "@eslint/eslintrc": { -+ "version": "2.1.4", -+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", -+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", -+ "dev": true, -+ "requires": { -+ "ajv": "^6.12.4", -+ "debug": "^4.3.2", -+ "espree": "^9.6.0", -+ "globals": "^13.19.0", -+ "ignore": "^5.2.0", -+ "import-fresh": "^3.2.1", -+ "js-yaml": "^4.1.0", -+ "minimatch": "^3.1.2", -+ "strip-json-comments": "^3.1.1" -+ }, -+ "dependencies": { -+ "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" -+ } -+ }, -+ "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" -+ } -+ } -+ } -+ }, -+ "@eslint/js": { -+ "version": "8.57.1", -+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", -+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", -+ "dev": true -+ }, -+ "@fortawesome/fontawesome-common-types": { -+ "version": "0.2.36", -+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", -+ "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==" -+ }, -+ "@fortawesome/fontawesome-svg-core": { -+ "version": "1.2.36", -+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", -+ "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", -+ "requires": { -+ "@fortawesome/fontawesome-common-types": "^0.2.36" -+ } -+ }, -+ "@fortawesome/free-solid-svg-icons": { -+ "version": "5.15.4", -+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz", -+ "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==", -+ "requires": { -+ "@fortawesome/fontawesome-common-types": "^0.2.36" -+ } -+ }, -+ "@fortawesome/react-fontawesome": { -+ "version": "0.1.19", -+ "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.19.tgz", -+ "integrity": "sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==", -+ "requires": { -+ "prop-types": "^15.8.1" -+ } -+ }, -+ "@humanwhocodes/config-array": { -+ "version": "0.13.0", -+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", -+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", -+ "dev": true, -+ "requires": { -+ "@humanwhocodes/object-schema": "^2.0.3", -+ "debug": "^4.3.1", -+ "minimatch": "^3.0.5" -+ }, -+ "dependencies": { -+ "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" -+ } -+ }, -+ "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" -+ } -+ } -+ } -+ }, -+ "@humanwhocodes/module-importer": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", -+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", -+ "dev": true -+ }, -+ "@humanwhocodes/object-schema": { -+ "version": "2.0.3", -+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", -+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", -+ "dev": true -+ }, -+ "@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.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", -+ "dev": true -+ }, -+ "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" -+ } -+ } -+ } -+ }, -+ "@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" -+ } -+ }, -+ "@patternfly/patternfly": { -+ "version": "5.4.1", -+ "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.4.1.tgz", -+ "integrity": "sha512-0+KxsQJrFzOMANALW82BHAO7bSm9tEbG1RrOlGT23ME1CaBoetGSMRLymutvojn/b/EKfJIr5rLzQa+14Lvg2g==" -+ }, -+ "@patternfly/react-charts": { -+ "version": "7.4.3", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-7.4.3.tgz", -+ "integrity": "sha512-HW55rc7UtuiUSk5kUEdCsbfU+/lVPXDruebQKxzImseiyjeLL3e3Tb8L778ga6Kt0YKaUTaqETuprR9ucRA0+w==", -+ "requires": { -+ "@patternfly/react-styles": "^5.4.0", -+ "@patternfly/react-tokens": "^5.4.0", -+ "hoist-non-react-statics": "^3.3.2", -+ "lodash": "^4.17.21", -+ "tslib": "^2.6.3", -+ "victory-area": "^37.1.1", -+ "victory-axis": "^37.1.1", -+ "victory-bar": "^37.1.1", -+ "victory-box-plot": "^37.1.1", -+ "victory-chart": "^37.1.1", -+ "victory-core": "^37.1.1", -+ "victory-create-container": "^37.1.1", -+ "victory-cursor-container": "^37.1.1", -+ "victory-group": "^37.1.1", -+ "victory-legend": "^37.1.1", -+ "victory-line": "^37.1.1", -+ "victory-pie": "^37.1.1", -+ "victory-scatter": "^37.1.1", -+ "victory-stack": "^37.1.1", -+ "victory-tooltip": "^37.1.1", -+ "victory-voronoi-container": "^37.1.1", -+ "victory-zoom-container": "^37.1.1" -+ } -+ }, -+ "@patternfly/react-core": { -+ "version": "5.4.1", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.4.1.tgz", -+ "integrity": "sha512-PJjwN4OCR7jTdWKi0RzuFdtlSQ8gBR+0REczuDHHPW8ky0bs1cIcqGsn5p/b6OgPlztl3UaXqRYLsroiEMasOw==", -+ "requires": { -+ "@patternfly/react-icons": "^5.4.0", -+ "@patternfly/react-styles": "^5.4.0", -+ "@patternfly/react-tokens": "^5.4.0", -+ "focus-trap": "7.5.4", -+ "react-dropzone": "^14.2.3", -+ "tslib": "^2.6.3" -+ } -+ }, -+ "@patternfly/react-icons": { -+ "version": "5.4.0", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.4.0.tgz", -+ "integrity": "sha512-2M3qN/naultvRHeG2laJMmoIroFCGAyfwTVrnCjSkG6/KnRoXV0+dqd+Xrh7xzpzvIJB1klvifC0oX42cEkDrA==", -+ "requires": {} -+ }, -+ "@patternfly/react-styles": { -+ "version": "5.4.0", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.4.0.tgz", -+ "integrity": "sha512-4ZE0s6LkX/0KsN0FOeogrDoj18m+BPA73YKnabZGB4SDRzrBNeBh2a6bSt546ZseEjkoJ+S81kOG0G8YckPQYg==" -+ }, -+ "@patternfly/react-table": { -+ "version": "5.4.1", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.4.1.tgz", -+ "integrity": "sha512-T05djy6YPqjbGWjpnwUs9oqup8oqqIOBnDOcThnHukgzlwnZvLNywgdoMR5XAKxTcIx/iBE1cu8ieETlITOGLw==", -+ "requires": { -+ "@patternfly/react-core": "^5.4.1", -+ "@patternfly/react-icons": "^5.4.0", -+ "@patternfly/react-styles": "^5.4.0", -+ "@patternfly/react-tokens": "^5.4.0", -+ "lodash": "^4.17.21", -+ "tslib": "^2.6.3" -+ } -+ }, -+ "@patternfly/react-tokens": { -+ "version": "5.4.0", -+ "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.4.0.tgz", -+ "integrity": "sha512-KONkwCVOMyklhuuaYeYgcAsGtCBQXnsBGZeolhOdSzr2Mj0RVSW0oMrQPgZuPVzhhC/kbqgClHJJl6xuG9xheA==" -+ }, -+ "@rtsao/scc": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", -+ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", -+ "dev": true -+ }, -+ "@types/d3-array": { -+ "version": "3.2.1", -+ "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", -+ "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" -+ }, -+ "@types/d3-color": { -+ "version": "3.1.3", -+ "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", -+ "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" -+ }, -+ "@types/d3-ease": { -+ "version": "3.0.2", -+ "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", -+ "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" -+ }, -+ "@types/d3-interpolate": { -+ "version": "3.0.4", -+ "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", -+ "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", -+ "requires": { -+ "@types/d3-color": "*" -+ } -+ }, -+ "@types/d3-path": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", -+ "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" -+ }, -+ "@types/d3-scale": { -+ "version": "4.0.8", -+ "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", -+ "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", -+ "requires": { -+ "@types/d3-time": "*" -+ } -+ }, -+ "@types/d3-shape": { -+ "version": "3.1.7", -+ "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", -+ "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", -+ "requires": { -+ "@types/d3-path": "*" -+ } -+ }, -+ "@types/d3-time": { -+ "version": "3.0.4", -+ "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", -+ "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==" -+ }, -+ "@types/d3-timer": { -+ "version": "3.0.2", -+ "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", -+ "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" -+ }, -+ "@types/json5": { -+ "version": "0.0.29", -+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", -+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", -+ "dev": true -+ }, -+ "@types/prop-types": { -+ "version": "15.7.14", -+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", -+ "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", -+ "dev": true -+ }, -+ "@types/qunit": { -+ "version": "2.19.12", -+ "resolved": "https://registry.npmjs.org/@types/qunit/-/qunit-2.19.12.tgz", -+ "integrity": "sha512-II+C1wgzUia0g+tGAH+PBb4XiTm8/C/i6sN23r21NNskBYOYrv+qnW0tFQ/IxZzKVwrK4CTglf8YO3poJUclQA==", -+ "dev": true -+ }, -+ "@types/react": { -+ "version": "18.3.11", -+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", -+ "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", -+ "dev": true, -+ "requires": { -+ "@types/prop-types": "*", -+ "csstype": "^3.0.2" -+ } -+ }, -+ "@types/react-dom": { -+ "version": "18.3.0", -+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", -+ "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", -+ "dev": true, -+ "requires": { -+ "@types/react": "*" -+ } -+ }, -+ "@typescript-eslint/eslint-plugin": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz", -+ "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==", -+ "dev": true, -+ "requires": { -+ "@eslint-community/regexpp": "^4.10.0", -+ "@typescript-eslint/scope-manager": "8.8.0", -+ "@typescript-eslint/type-utils": "8.8.0", -+ "@typescript-eslint/utils": "8.8.0", -+ "@typescript-eslint/visitor-keys": "8.8.0", -+ "graphemer": "^1.4.0", -+ "ignore": "^5.3.1", -+ "natural-compare": "^1.4.0", -+ "ts-api-utils": "^1.3.0" -+ } -+ }, -+ "@typescript-eslint/parser": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.22.0.tgz", -+ "integrity": "sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "@typescript-eslint/scope-manager": "8.22.0", -+ "@typescript-eslint/types": "8.22.0", -+ "@typescript-eslint/typescript-estree": "8.22.0", -+ "@typescript-eslint/visitor-keys": "8.22.0", -+ "debug": "^4.3.4" -+ }, -+ "dependencies": { -+ "@typescript-eslint/scope-manager": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.22.0.tgz", -+ "integrity": "sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "@typescript-eslint/types": "8.22.0", -+ "@typescript-eslint/visitor-keys": "8.22.0" -+ } -+ }, -+ "@typescript-eslint/visitor-keys": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz", -+ "integrity": "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "@typescript-eslint/types": "8.22.0", -+ "eslint-visitor-keys": "^4.2.0" -+ } -+ }, -+ "eslint-visitor-keys": { -+ "version": "4.2.0", -+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", -+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", -+ "dev": true, -+ "peer": true -+ } -+ } -+ }, -+ "@typescript-eslint/scope-manager": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz", -+ "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==", -+ "dev": true, -+ "requires": { -+ "@typescript-eslint/types": "8.8.0", -+ "@typescript-eslint/visitor-keys": "8.8.0" -+ }, -+ "dependencies": { -+ "@typescript-eslint/types": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", -+ "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", -+ "dev": true -+ } -+ } -+ }, -+ "@typescript-eslint/type-utils": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz", -+ "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==", -+ "dev": true, -+ "requires": { -+ "@typescript-eslint/typescript-estree": "8.8.0", -+ "@typescript-eslint/utils": "8.8.0", -+ "debug": "^4.3.4", -+ "ts-api-utils": "^1.3.0" -+ }, -+ "dependencies": { -+ "@typescript-eslint/types": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", -+ "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", -+ "dev": true -+ }, -+ "@typescript-eslint/typescript-estree": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz", -+ "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", -+ "dev": true, -+ "requires": { -+ "@typescript-eslint/types": "8.8.0", -+ "@typescript-eslint/visitor-keys": "8.8.0", -+ "debug": "^4.3.4", -+ "fast-glob": "^3.3.2", -+ "is-glob": "^4.0.3", -+ "minimatch": "^9.0.4", -+ "semver": "^7.6.0", -+ "ts-api-utils": "^1.3.0" -+ } -+ } -+ } -+ }, -+ "@typescript-eslint/types": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.22.0.tgz", -+ "integrity": "sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==", -+ "dev": true, -+ "peer": true -+ }, -+ "@typescript-eslint/typescript-estree": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.22.0.tgz", -+ "integrity": "sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "@typescript-eslint/types": "8.22.0", -+ "@typescript-eslint/visitor-keys": "8.22.0", -+ "debug": "^4.3.4", -+ "fast-glob": "^3.3.2", -+ "is-glob": "^4.0.3", -+ "minimatch": "^9.0.4", -+ "semver": "^7.6.0", -+ "ts-api-utils": "^2.0.0" -+ }, -+ "dependencies": { -+ "@typescript-eslint/visitor-keys": { -+ "version": "8.22.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz", -+ "integrity": "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "@typescript-eslint/types": "8.22.0", -+ "eslint-visitor-keys": "^4.2.0" -+ } -+ }, -+ "eslint-visitor-keys": { -+ "version": "4.2.0", -+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", -+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", -+ "dev": true, -+ "peer": true -+ }, -+ "ts-api-utils": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", -+ "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", -+ "dev": true, -+ "peer": true, -+ "requires": {} -+ } -+ } -+ }, -+ "@typescript-eslint/utils": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz", -+ "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==", -+ "dev": true, -+ "requires": { -+ "@eslint-community/eslint-utils": "^4.4.0", -+ "@typescript-eslint/scope-manager": "8.8.0", -+ "@typescript-eslint/types": "8.8.0", -+ "@typescript-eslint/typescript-estree": "8.8.0" -+ }, -+ "dependencies": { -+ "@typescript-eslint/types": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", -+ "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", -+ "dev": true -+ }, -+ "@typescript-eslint/typescript-estree": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz", -+ "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", -+ "dev": true, -+ "requires": { -+ "@typescript-eslint/types": "8.8.0", -+ "@typescript-eslint/visitor-keys": "8.8.0", -+ "debug": "^4.3.4", -+ "fast-glob": "^3.3.2", -+ "is-glob": "^4.0.3", -+ "minimatch": "^9.0.4", -+ "semver": "^7.6.0", -+ "ts-api-utils": "^1.3.0" -+ } -+ } -+ } -+ }, -+ "@typescript-eslint/visitor-keys": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz", -+ "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", -+ "dev": true, -+ "requires": { -+ "@typescript-eslint/types": "8.8.0", -+ "eslint-visitor-keys": "^3.4.3" -+ }, -+ "dependencies": { -+ "@typescript-eslint/types": { -+ "version": "8.8.0", -+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", -+ "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", -+ "dev": true -+ } -+ } -+ }, -+ "@ungap/structured-clone": { -+ "version": "1.3.0", -+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", -+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", -+ "dev": true -+ }, -+ "@xterm/addon-canvas": { -+ "version": "0.7.0", -+ "resolved": "https://registry.npmjs.org/@xterm/addon-canvas/-/addon-canvas-0.7.0.tgz", -+ "integrity": "sha512-LF5LYcfvefJuJ7QotNRdRSPc9YASAVDeoT5uyXS/nZshZXjYplGXRECBGiznwvhNL2I8bq1Lf5MzRwstsYQ2Iw==", -+ "requires": {} -+ }, -+ "@xterm/xterm": { -+ "version": "5.5.0", -+ "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", -+ "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==" -+ }, -+ "acorn": { -+ "version": "8.14.0", -+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", -+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", -+ "dev": true -+ }, -+ "acorn-jsx": { -+ "version": "5.3.2", -+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", -+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", -+ "dev": true, -+ "requires": {} -+ }, -+ "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" -+ } -+ }, -+ "ansi-escapes": { -+ "version": "7.0.0", -+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", -+ "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", -+ "dev": true, -+ "requires": { -+ "environment": "^1.0.0" -+ } -+ }, -+ "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": "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" -+ } -+ }, -+ "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": "2.0.1", -+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", -+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", -+ "dev": true -+ }, -+ "aria-query": { -+ "version": "5.1.3", -+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", -+ "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", -+ "dev": true, -+ "requires": { -+ "deep-equal": "^2.0.5" -+ } -+ }, -+ "array-buffer-byte-length": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", -+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3", -+ "is-array-buffer": "^3.0.5" -+ } -+ }, -+ "array-includes": { -+ "version": "3.1.8", -+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", -+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2", -+ "es-object-atoms": "^1.0.0", -+ "get-intrinsic": "^1.2.4", -+ "is-string": "^1.0.7" -+ } -+ }, -+ "array-union": { -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", -+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", -+ "dev": true -+ }, -+ "array.prototype.findlast": { -+ "version": "1.2.5", -+ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", -+ "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "es-shim-unscopables": "^1.0.2" -+ } -+ }, -+ "array.prototype.findlastindex": { -+ "version": "1.2.5", -+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", -+ "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "es-shim-unscopables": "^1.0.2" -+ } -+ }, -+ "array.prototype.flat": { -+ "version": "1.3.3", -+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", -+ "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.5", -+ "es-shim-unscopables": "^1.0.2" -+ } -+ }, -+ "array.prototype.flatmap": { -+ "version": "1.3.3", -+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", -+ "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.5", -+ "es-shim-unscopables": "^1.0.2" -+ } -+ }, -+ "array.prototype.tosorted": { -+ "version": "1.1.4", -+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", -+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.3", -+ "es-errors": "^1.3.0", -+ "es-shim-unscopables": "^1.0.2" -+ } -+ }, -+ "arraybuffer.prototype.slice": { -+ "version": "1.0.4", -+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", -+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", -+ "dev": true, -+ "requires": { -+ "array-buffer-byte-length": "^1.0.1", -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.5", -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.6", -+ "is-array-buffer": "^3.0.4" -+ } -+ }, -+ "ast-types-flow": { -+ "version": "0.0.8", -+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", -+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", -+ "dev": true -+ }, -+ "astral-regex": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", -+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", -+ "dev": true -+ }, -+ "async-function": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", -+ "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", -+ "dev": true -+ }, -+ "attr-accept": { -+ "version": "2.2.5", -+ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", -+ "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==" -+ }, -+ "autolinker": { -+ "version": "3.16.2", -+ "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", -+ "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", -+ "requires": { -+ "tslib": "^2.3.0" -+ } -+ }, -+ "available-typed-arrays": { -+ "version": "1.0.7", -+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", -+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", -+ "dev": true, -+ "requires": { -+ "possible-typed-array-names": "^1.0.0" -+ } -+ }, -+ "axe-core": { -+ "version": "4.10.2", -+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", -+ "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", -+ "dev": true -+ }, -+ "axobject-query": { -+ "version": "4.1.0", -+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", -+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", -+ "dev": true -+ }, -+ "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 -+ }, -+ "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 -+ }, -+ "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" -+ } -+ }, -+ "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" -+ } -+ }, -+ "buffer-builder": { -+ "version": "0.2.0", -+ "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", -+ "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", -+ "dev": true, -+ "peer": true -+ }, -+ "builtin-modules": { -+ "version": "3.3.0", -+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", -+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", -+ "dev": true, -+ "peer": true -+ }, -+ "builtins": { -+ "version": "5.1.0", -+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", -+ "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "semver": "^7.0.0" -+ } -+ }, -+ "call-bind": { -+ "version": "1.0.8", -+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", -+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", -+ "dev": true, -+ "requires": { -+ "call-bind-apply-helpers": "^1.0.0", -+ "es-define-property": "^1.0.0", -+ "get-intrinsic": "^1.2.4", -+ "set-function-length": "^1.2.2" -+ } -+ }, -+ "call-bind-apply-helpers": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", -+ "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", -+ "dev": true, -+ "requires": { -+ "es-errors": "^1.3.0", -+ "function-bind": "^1.1.2" -+ } -+ }, -+ "call-bound": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", -+ "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", -+ "dev": true, -+ "requires": { -+ "call-bind-apply-helpers": "^1.0.1", -+ "get-intrinsic": "^1.2.6" -+ } -+ }, -+ "callsites": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", -+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", -+ "dev": true -+ }, -+ "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" -+ } -+ }, -+ "chokidar": { -+ "version": "3.6.0", -+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", -+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", -+ "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" -+ } -+ }, -+ "chrome-remote-interface": { -+ "version": "0.32.2", -+ "resolved": "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.32.2.tgz", -+ "integrity": "sha512-3UbFKtEmqApehPQnqdblcggx7KveQphEMKQmdJZsOguE9ylw2N2/9Z7arO7xS55+DBJ/hyP8RrayLt4MMdJvQg==", -+ "dev": true, -+ "requires": { -+ "commander": "2.11.x", -+ "ws": "^7.2.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 -+ }, -+ "colord": { -+ "version": "2.9.3", -+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", -+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", -+ "dev": true -+ }, -+ "colorjs.io": { -+ "version": "0.5.2", -+ "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", -+ "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", -+ "dev": true, -+ "peer": true -+ }, -+ "commander": { -+ "version": "2.11.0", -+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", -+ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", -+ "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 -+ }, -+ "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==" -+ }, -+ "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" -+ } -+ }, -+ "cross-spawn": { -+ "version": "7.0.6", -+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", -+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", -+ "dev": true, -+ "requires": { -+ "path-key": "^3.1.0", -+ "shebang-command": "^2.0.0", -+ "which": "^2.0.1" -+ } -+ }, -+ "css-functions-list": { -+ "version": "3.2.3", -+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", -+ "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", -+ "dev": true -+ }, -+ "css-tree": { -+ "version": "2.3.1", -+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", -+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", -+ "dev": true, -+ "requires": { -+ "mdn-data": "2.0.30", -+ "source-map-js": "^1.0.1" -+ } -+ }, -+ "cssesc": { -+ "version": "3.0.0", -+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", -+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", -+ "dev": true -+ }, -+ "csstype": { -+ "version": "3.1.3", -+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", -+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", -+ "dev": true -+ }, -+ "d3-array": { -+ "version": "3.2.4", -+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", -+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", -+ "requires": { -+ "internmap": "1 - 2" -+ } -+ }, -+ "d3-color": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", -+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" -+ }, -+ "d3-ease": { -+ "version": "3.0.1", -+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", -+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" -+ }, -+ "d3-format": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", -+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" -+ }, -+ "d3-interpolate": { -+ "version": "3.0.1", -+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", -+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", -+ "requires": { -+ "d3-color": "1 - 3" -+ } -+ }, -+ "d3-path": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", -+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" -+ }, -+ "d3-scale": { -+ "version": "4.0.2", -+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", -+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", -+ "requires": { -+ "d3-array": "2.10.0 - 3", -+ "d3-format": "1 - 3", -+ "d3-interpolate": "1.2.0 - 3", -+ "d3-time": "2.1.1 - 3", -+ "d3-time-format": "2 - 4" -+ } -+ }, -+ "d3-shape": { -+ "version": "3.2.0", -+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", -+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", -+ "requires": { -+ "d3-path": "^3.1.0" -+ } -+ }, -+ "d3-time": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", -+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", -+ "requires": { -+ "d3-array": "2 - 3" -+ } -+ }, -+ "d3-time-format": { -+ "version": "4.1.0", -+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", -+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", -+ "requires": { -+ "d3-time": "1 - 3" -+ } -+ }, -+ "d3-timer": { -+ "version": "3.0.1", -+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", -+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" -+ }, -+ "damerau-levenshtein": { -+ "version": "1.0.8", -+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", -+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", -+ "dev": true -+ }, -+ "data-view-buffer": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", -+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3", -+ "es-errors": "^1.3.0", -+ "is-data-view": "^1.0.2" -+ } -+ }, -+ "data-view-byte-length": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", -+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3", -+ "es-errors": "^1.3.0", -+ "is-data-view": "^1.0.2" -+ } -+ }, -+ "data-view-byte-offset": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", -+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "es-errors": "^1.3.0", -+ "is-data-view": "^1.0.1" -+ } -+ }, -+ "debug": { -+ "version": "4.4.0", -+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", -+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", -+ "dev": true, -+ "requires": { -+ "ms": "^2.1.3" -+ } -+ }, -+ "deep-equal": { -+ "version": "2.2.3", -+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", -+ "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", -+ "dev": true, -+ "requires": { -+ "array-buffer-byte-length": "^1.0.0", -+ "call-bind": "^1.0.5", -+ "es-get-iterator": "^1.1.3", -+ "get-intrinsic": "^1.2.2", -+ "is-arguments": "^1.1.1", -+ "is-array-buffer": "^3.0.2", -+ "is-date-object": "^1.0.5", -+ "is-regex": "^1.1.4", -+ "is-shared-array-buffer": "^1.0.2", -+ "isarray": "^2.0.5", -+ "object-is": "^1.1.5", -+ "object-keys": "^1.1.1", -+ "object.assign": "^4.1.4", -+ "regexp.prototype.flags": "^1.5.1", -+ "side-channel": "^1.0.4", -+ "which-boxed-primitive": "^1.0.2", -+ "which-collection": "^1.0.1", -+ "which-typed-array": "^1.1.13" -+ } -+ }, -+ "deep-is": { -+ "version": "0.1.4", -+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", -+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", -+ "dev": true -+ }, -+ "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-properties": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", -+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", -+ "dev": true, -+ "requires": { -+ "define-data-property": "^1.0.1", -+ "has-property-descriptors": "^1.0.0", -+ "object-keys": "^1.1.1" -+ } -+ }, -+ "delaunator": { -+ "version": "4.0.1", -+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", -+ "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" -+ }, -+ "delaunay-find": { -+ "version": "0.0.6", -+ "resolved": "https://registry.npmjs.org/delaunay-find/-/delaunay-find-0.0.6.tgz", -+ "integrity": "sha512-1+almjfrnR7ZamBk0q3Nhg6lqSe6Le4vL0WJDSMx4IDbQwTpUTXPjxC00lqLBT8MYsJpPCbI16sIkw9cPsbi7Q==", -+ "requires": { -+ "delaunator": "^4.0.0" -+ } -+ }, -+ "dequal": { -+ "version": "2.0.3", -+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", -+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" -+ }, -+ "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" -+ } -+ }, -+ "doctrine": { -+ "version": "3.0.0", -+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", -+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", -+ "dev": true, -+ "requires": { -+ "esutils": "^2.0.2" -+ } -+ }, -+ "dunder-proto": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", -+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", -+ "dev": true, -+ "requires": { -+ "call-bind-apply-helpers": "^1.0.1", -+ "es-errors": "^1.3.0", -+ "gopd": "^1.2.0" -+ } -+ }, -+ "eastasianwidth": { -+ "version": "0.2.0", -+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", -+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", -+ "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 -+ }, -+ "encoding": { -+ "version": "0.1.13", -+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", -+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", -+ "requires": { -+ "iconv-lite": "^0.6.2" -+ } -+ }, -+ "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 -+ }, -+ "environment": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", -+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", -+ "dev": true -+ }, -+ "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-abstract": { -+ "version": "1.23.9", -+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", -+ "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", -+ "dev": true, -+ "requires": { -+ "array-buffer-byte-length": "^1.0.2", -+ "arraybuffer.prototype.slice": "^1.0.4", -+ "available-typed-arrays": "^1.0.7", -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "data-view-buffer": "^1.0.2", -+ "data-view-byte-length": "^1.0.2", -+ "data-view-byte-offset": "^1.0.1", -+ "es-define-property": "^1.0.1", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "es-set-tostringtag": "^2.1.0", -+ "es-to-primitive": "^1.3.0", -+ "function.prototype.name": "^1.1.8", -+ "get-intrinsic": "^1.2.7", -+ "get-proto": "^1.0.0", -+ "get-symbol-description": "^1.1.0", -+ "globalthis": "^1.0.4", -+ "gopd": "^1.2.0", -+ "has-property-descriptors": "^1.0.2", -+ "has-proto": "^1.2.0", -+ "has-symbols": "^1.1.0", -+ "hasown": "^2.0.2", -+ "internal-slot": "^1.1.0", -+ "is-array-buffer": "^3.0.5", -+ "is-callable": "^1.2.7", -+ "is-data-view": "^1.0.2", -+ "is-regex": "^1.2.1", -+ "is-shared-array-buffer": "^1.0.4", -+ "is-string": "^1.1.1", -+ "is-typed-array": "^1.1.15", -+ "is-weakref": "^1.1.0", -+ "math-intrinsics": "^1.1.0", -+ "object-inspect": "^1.13.3", -+ "object-keys": "^1.1.1", -+ "object.assign": "^4.1.7", -+ "own-keys": "^1.0.1", -+ "regexp.prototype.flags": "^1.5.3", -+ "safe-array-concat": "^1.1.3", -+ "safe-push-apply": "^1.0.0", -+ "safe-regex-test": "^1.1.0", -+ "set-proto": "^1.0.0", -+ "string.prototype.trim": "^1.2.10", -+ "string.prototype.trimend": "^1.0.9", -+ "string.prototype.trimstart": "^1.0.8", -+ "typed-array-buffer": "^1.0.3", -+ "typed-array-byte-length": "^1.0.3", -+ "typed-array-byte-offset": "^1.0.4", -+ "typed-array-length": "^1.0.7", -+ "unbox-primitive": "^1.1.0", -+ "which-typed-array": "^1.1.18" -+ } -+ }, -+ "es-define-property": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", -+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", -+ "dev": true -+ }, -+ "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-get-iterator": { -+ "version": "1.1.3", -+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", -+ "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.2", -+ "get-intrinsic": "^1.1.3", -+ "has-symbols": "^1.0.3", -+ "is-arguments": "^1.1.1", -+ "is-map": "^2.0.2", -+ "is-set": "^2.0.2", -+ "is-string": "^1.0.7", -+ "isarray": "^2.0.5", -+ "stop-iteration-iterator": "^1.0.0" -+ } -+ }, -+ "es-iterator-helpers": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", -+ "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.6", -+ "es-errors": "^1.3.0", -+ "es-set-tostringtag": "^2.0.3", -+ "function-bind": "^1.1.2", -+ "get-intrinsic": "^1.2.6", -+ "globalthis": "^1.0.4", -+ "gopd": "^1.2.0", -+ "has-property-descriptors": "^1.0.2", -+ "has-proto": "^1.2.0", -+ "has-symbols": "^1.1.0", -+ "internal-slot": "^1.1.0", -+ "iterator.prototype": "^1.1.4", -+ "safe-array-concat": "^1.1.3" -+ } -+ }, -+ "es-object-atoms": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", -+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", -+ "dev": true, -+ "requires": { -+ "es-errors": "^1.3.0" -+ } -+ }, -+ "es-set-tostringtag": { -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", -+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", -+ "dev": true, -+ "requires": { -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.6", -+ "has-tostringtag": "^1.0.2", -+ "hasown": "^2.0.2" -+ } -+ }, -+ "es-shim-unscopables": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", -+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", -+ "dev": true, -+ "requires": { -+ "hasown": "^2.0.0" -+ } -+ }, -+ "es-to-primitive": { -+ "version": "1.3.0", -+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", -+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", -+ "dev": true, -+ "requires": { -+ "is-callable": "^1.2.7", -+ "is-date-object": "^1.0.5", -+ "is-symbol": "^1.0.4" -+ } -+ }, -+ "esbuild": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", -+ "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", -+ "dev": true, -+ "requires": { -+ "@esbuild/aix-ppc64": "0.24.0", -+ "@esbuild/android-arm": "0.24.0", -+ "@esbuild/android-arm64": "0.24.0", -+ "@esbuild/android-x64": "0.24.0", -+ "@esbuild/darwin-arm64": "0.24.0", -+ "@esbuild/darwin-x64": "0.24.0", -+ "@esbuild/freebsd-arm64": "0.24.0", -+ "@esbuild/freebsd-x64": "0.24.0", -+ "@esbuild/linux-arm": "0.24.0", -+ "@esbuild/linux-arm64": "0.24.0", -+ "@esbuild/linux-ia32": "0.24.0", -+ "@esbuild/linux-loong64": "0.24.0", -+ "@esbuild/linux-mips64el": "0.24.0", -+ "@esbuild/linux-ppc64": "0.24.0", -+ "@esbuild/linux-riscv64": "0.24.0", -+ "@esbuild/linux-s390x": "0.24.0", -+ "@esbuild/linux-x64": "0.24.0", -+ "@esbuild/netbsd-x64": "0.24.0", -+ "@esbuild/openbsd-arm64": "0.24.0", -+ "@esbuild/openbsd-x64": "0.24.0", -+ "@esbuild/sunos-x64": "0.24.0", -+ "@esbuild/win32-arm64": "0.24.0", -+ "@esbuild/win32-ia32": "0.24.0", -+ "@esbuild/win32-x64": "0.24.0" -+ } -+ }, -+ "esbuild-plugin-copy": { -+ "version": "2.1.1", -+ "resolved": "https://registry.npmjs.org/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz", -+ "integrity": "sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==", -+ "dev": true, -+ "requires": { -+ "chalk": "^4.1.2", -+ "chokidar": "^3.5.3", -+ "fs-extra": "^10.0.1", -+ "globby": "^11.0.3" -+ } -+ }, -+ "esbuild-plugin-replace": { -+ "version": "1.4.0", -+ "resolved": "https://registry.npmjs.org/esbuild-plugin-replace/-/esbuild-plugin-replace-1.4.0.tgz", -+ "integrity": "sha512-lP3ZAyzyRa5JXoOd59lJbRKNObtK8pJ/RO7o6vdjwLi71GfbL32NR22ZuS7/cLZkr10/L1lutoLma8E4DLngYg==", -+ "dev": true, -+ "requires": { -+ "magic-string": "^0.25.7" -+ } -+ }, -+ "esbuild-sass-plugin": { -+ "version": "3.3.1", -+ "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-3.3.1.tgz", -+ "integrity": "sha512-SnO1ls+d52n6j8gRRpjexXI8MsHEaumS0IdDHaYM29Y6gakzZYMls6i9ql9+AWMSQk/eryndmUpXEgT34QrX1A==", -+ "dev": true, -+ "requires": { -+ "resolve": "^1.22.8", -+ "safe-identifier": "^0.4.2", -+ "sass": "^1.71.1" -+ } -+ }, -+ "esbuild-wasm": { -+ "version": "0.24.0", -+ "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.24.0.tgz", -+ "integrity": "sha512-xhNn5tL1AhkPg4ft59yXT6FkwKXiPSYyz1IeinJHUJpjvOHOIPvdmFQc0pGdjxlKSbzZc2mNmtVOWAR1EF/JAg==", -+ "dev": true -+ }, -+ "escape-string-regexp": { -+ "version": "4.0.0", -+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", -+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", -+ "dev": true -+ }, -+ "eslint": { -+ "version": "8.57.1", -+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", -+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", -+ "dev": true, -+ "requires": { -+ "@eslint-community/eslint-utils": "^4.2.0", -+ "@eslint-community/regexpp": "^4.6.1", -+ "@eslint/eslintrc": "^2.1.4", -+ "@eslint/js": "8.57.1", -+ "@humanwhocodes/config-array": "^0.13.0", -+ "@humanwhocodes/module-importer": "^1.0.1", -+ "@nodelib/fs.walk": "^1.2.8", -+ "@ungap/structured-clone": "^1.2.0", -+ "ajv": "^6.12.4", -+ "chalk": "^4.0.0", -+ "cross-spawn": "^7.0.2", -+ "debug": "^4.3.2", -+ "doctrine": "^3.0.0", -+ "escape-string-regexp": "^4.0.0", -+ "eslint-scope": "^7.2.2", -+ "eslint-visitor-keys": "^3.4.3", -+ "espree": "^9.6.1", -+ "esquery": "^1.4.2", -+ "esutils": "^2.0.2", -+ "fast-deep-equal": "^3.1.3", -+ "file-entry-cache": "^6.0.1", -+ "find-up": "^5.0.0", -+ "glob-parent": "^6.0.2", -+ "globals": "^13.19.0", -+ "graphemer": "^1.4.0", -+ "ignore": "^5.2.0", -+ "imurmurhash": "^0.1.4", -+ "is-glob": "^4.0.0", -+ "is-path-inside": "^3.0.3", -+ "js-yaml": "^4.1.0", -+ "json-stable-stringify-without-jsonify": "^1.0.1", -+ "levn": "^0.4.1", -+ "lodash.merge": "^4.6.2", -+ "minimatch": "^3.1.2", -+ "natural-compare": "^1.4.0", -+ "optionator": "^0.9.3", -+ "strip-ansi": "^6.0.1", -+ "text-table": "^0.2.0" -+ }, -+ "dependencies": { -+ "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" -+ } -+ }, -+ "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" -+ } -+ }, -+ "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" -+ } -+ } -+ } -+ }, -+ "eslint-compat-utils": { -+ "version": "0.5.1", -+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", -+ "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "semver": "^7.5.4" -+ } -+ }, -+ "eslint-config-standard": { -+ "version": "17.1.0", -+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", -+ "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", -+ "dev": true, -+ "requires": {} -+ }, -+ "eslint-config-standard-jsx": { -+ "version": "11.0.0", -+ "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", -+ "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", -+ "dev": true, -+ "requires": {} -+ }, -+ "eslint-config-standard-react": { -+ "version": "13.0.0", -+ "resolved": "https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-13.0.0.tgz", -+ "integrity": "sha512-HrVPGj8UncHfV+BsdJTuJpVsomn6AIrke3Af2Fh4XFvQQDU+iO6N2ZL+UsC+scExft4fU3uf7fJwj7PKWnXJDA==", -+ "dev": true, -+ "requires": {} -+ }, -+ "eslint-import-resolver-node": { -+ "version": "0.3.9", -+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", -+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", -+ "dev": true, -+ "requires": { -+ "debug": "^3.2.7", -+ "is-core-module": "^2.13.0", -+ "resolve": "^1.22.4" -+ }, -+ "dependencies": { -+ "debug": { -+ "version": "3.2.7", -+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", -+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", -+ "dev": true, -+ "requires": { -+ "ms": "^2.1.1" -+ } -+ } -+ } -+ }, -+ "eslint-module-utils": { -+ "version": "2.12.0", -+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", -+ "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", -+ "dev": true, -+ "requires": { -+ "debug": "^3.2.7" -+ }, -+ "dependencies": { -+ "debug": { -+ "version": "3.2.7", -+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", -+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", -+ "dev": true, -+ "requires": { -+ "ms": "^2.1.1" -+ } -+ } -+ } -+ }, -+ "eslint-plugin-es": { -+ "version": "3.0.1", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", -+ "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", -+ "dev": true, -+ "requires": { -+ "eslint-utils": "^2.0.0", -+ "regexpp": "^3.0.0" -+ } -+ }, -+ "eslint-plugin-es-x": { -+ "version": "7.8.0", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", -+ "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "@eslint-community/eslint-utils": "^4.1.2", -+ "@eslint-community/regexpp": "^4.11.0", -+ "eslint-compat-utils": "^0.5.1" -+ } -+ }, -+ "eslint-plugin-import": { -+ "version": "2.31.0", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", -+ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", -+ "dev": true, -+ "requires": { -+ "@rtsao/scc": "^1.1.0", -+ "array-includes": "^3.1.8", -+ "array.prototype.findlastindex": "^1.2.5", -+ "array.prototype.flat": "^1.3.2", -+ "array.prototype.flatmap": "^1.3.2", -+ "debug": "^3.2.7", -+ "doctrine": "^2.1.0", -+ "eslint-import-resolver-node": "^0.3.9", -+ "eslint-module-utils": "^2.12.0", -+ "hasown": "^2.0.2", -+ "is-core-module": "^2.15.1", -+ "is-glob": "^4.0.3", -+ "minimatch": "^3.1.2", -+ "object.fromentries": "^2.0.8", -+ "object.groupby": "^1.0.3", -+ "object.values": "^1.2.0", -+ "semver": "^6.3.1", -+ "string.prototype.trimend": "^1.0.8", -+ "tsconfig-paths": "^3.15.0" -+ }, -+ "dependencies": { -+ "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" -+ } -+ }, -+ "debug": { -+ "version": "3.2.7", -+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", -+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", -+ "dev": true, -+ "requires": { -+ "ms": "^2.1.1" -+ } -+ }, -+ "doctrine": { -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", -+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", -+ "dev": true, -+ "requires": { -+ "esutils": "^2.0.2" -+ } -+ }, -+ "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" -+ } -+ }, -+ "semver": { -+ "version": "6.3.1", -+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", -+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", -+ "dev": true -+ } -+ } -+ }, -+ "eslint-plugin-jsx-a11y": { -+ "version": "6.10.0", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", -+ "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", -+ "dev": true, -+ "requires": { -+ "aria-query": "~5.1.3", -+ "array-includes": "^3.1.8", -+ "array.prototype.flatmap": "^1.3.2", -+ "ast-types-flow": "^0.0.8", -+ "axe-core": "^4.10.0", -+ "axobject-query": "^4.1.0", -+ "damerau-levenshtein": "^1.0.8", -+ "emoji-regex": "^9.2.2", -+ "es-iterator-helpers": "^1.0.19", -+ "hasown": "^2.0.2", -+ "jsx-ast-utils": "^3.3.5", -+ "language-tags": "^1.0.9", -+ "minimatch": "^3.1.2", -+ "object.fromentries": "^2.0.8", -+ "safe-regex-test": "^1.0.3", -+ "string.prototype.includes": "^2.0.0" -+ }, -+ "dependencies": { -+ "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" -+ } -+ }, -+ "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" -+ } -+ } -+ } -+ }, -+ "eslint-plugin-n": { -+ "version": "16.6.2", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", -+ "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "@eslint-community/eslint-utils": "^4.4.0", -+ "builtins": "^5.0.1", -+ "eslint-plugin-es-x": "^7.5.0", -+ "get-tsconfig": "^4.7.0", -+ "globals": "^13.24.0", -+ "ignore": "^5.2.4", -+ "is-builtin-module": "^3.2.1", -+ "is-core-module": "^2.12.1", -+ "minimatch": "^3.1.2", -+ "resolve": "^1.22.2", -+ "semver": "^7.5.3" -+ }, -+ "dependencies": { -+ "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, -+ "peer": true, -+ "requires": { -+ "balanced-match": "^1.0.0", -+ "concat-map": "0.0.1" -+ } -+ }, -+ "minimatch": { -+ "version": "3.1.2", -+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", -+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "brace-expansion": "^1.1.7" -+ } -+ } -+ } -+ }, -+ "eslint-plugin-node": { -+ "version": "11.1.0", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", -+ "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", -+ "dev": true, -+ "requires": { -+ "eslint-plugin-es": "^3.0.0", -+ "eslint-utils": "^2.0.0", -+ "ignore": "^5.1.1", -+ "minimatch": "^3.0.4", -+ "resolve": "^1.10.1", -+ "semver": "^6.1.0" -+ }, -+ "dependencies": { -+ "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" -+ } -+ }, -+ "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" -+ } -+ }, -+ "semver": { -+ "version": "6.3.1", -+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", -+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", -+ "dev": true -+ } -+ } -+ }, -+ "eslint-plugin-promise": { -+ "version": "6.6.0", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", -+ "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", -+ "dev": true, -+ "requires": {} -+ }, -+ "eslint-plugin-react": { -+ "version": "7.37.1", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", -+ "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", -+ "dev": true, -+ "requires": { -+ "array-includes": "^3.1.8", -+ "array.prototype.findlast": "^1.2.5", -+ "array.prototype.flatmap": "^1.3.2", -+ "array.prototype.tosorted": "^1.1.4", -+ "doctrine": "^2.1.0", -+ "es-iterator-helpers": "^1.0.19", -+ "estraverse": "^5.3.0", -+ "hasown": "^2.0.2", -+ "jsx-ast-utils": "^2.4.1 || ^3.0.0", -+ "minimatch": "^3.1.2", -+ "object.entries": "^1.1.8", -+ "object.fromentries": "^2.0.8", -+ "object.values": "^1.2.0", -+ "prop-types": "^15.8.1", -+ "resolve": "^2.0.0-next.5", -+ "semver": "^6.3.1", -+ "string.prototype.matchall": "^4.0.11", -+ "string.prototype.repeat": "^1.0.0" -+ }, -+ "dependencies": { -+ "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" -+ } -+ }, -+ "doctrine": { -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", -+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", -+ "dev": true, -+ "requires": { -+ "esutils": "^2.0.2" -+ } -+ }, -+ "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" -+ } -+ }, -+ "resolve": { -+ "version": "2.0.0-next.5", -+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", -+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", -+ "dev": true, -+ "requires": { -+ "is-core-module": "^2.13.0", -+ "path-parse": "^1.0.7", -+ "supports-preserve-symlinks-flag": "^1.0.0" -+ } -+ }, -+ "semver": { -+ "version": "6.3.1", -+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", -+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", -+ "dev": true -+ } -+ } -+ }, -+ "eslint-plugin-react-hooks": { -+ "version": "4.6.2", -+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", -+ "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", -+ "dev": true, -+ "requires": {} -+ }, -+ "eslint-scope": { -+ "version": "7.2.2", -+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", -+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", -+ "dev": true, -+ "requires": { -+ "esrecurse": "^4.3.0", -+ "estraverse": "^5.2.0" -+ } -+ }, -+ "eslint-utils": { -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", -+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", -+ "dev": true, -+ "requires": { -+ "eslint-visitor-keys": "^1.1.0" -+ }, -+ "dependencies": { -+ "eslint-visitor-keys": { -+ "version": "1.3.0", -+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", -+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", -+ "dev": true -+ } -+ } -+ }, -+ "eslint-visitor-keys": { -+ "version": "3.4.3", -+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", -+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", -+ "dev": true -+ }, -+ "espree": { -+ "version": "9.6.1", -+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", -+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", -+ "dev": true, -+ "requires": { -+ "acorn": "^8.9.0", -+ "acorn-jsx": "^5.3.2", -+ "eslint-visitor-keys": "^3.4.1" -+ } -+ }, -+ "esquery": { -+ "version": "1.6.0", -+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", -+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", -+ "dev": true, -+ "requires": { -+ "estraverse": "^5.1.0" -+ } -+ }, -+ "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 -+ }, -+ "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.3", -+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", -+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", -+ "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.8" -+ } -+ }, -+ "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 -+ }, -+ "fast-levenshtein": { -+ "version": "2.0.6", -+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", -+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", -+ "dev": true -+ }, -+ "fast-uri": { -+ "version": "3.0.6", -+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", -+ "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", -+ "dev": true -+ }, -+ "fastest-levenshtein": { -+ "version": "1.0.16", -+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", -+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", -+ "dev": true -+ }, -+ "fastq": { -+ "version": "1.18.0", -+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", -+ "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", -+ "dev": true, -+ "requires": { -+ "reusify": "^1.0.4" -+ } -+ }, -+ "file-entry-cache": { -+ "version": "6.0.1", -+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", -+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", -+ "dev": true, -+ "requires": { -+ "flat-cache": "^3.0.4" -+ } -+ }, -+ "file-selector": { -+ "version": "2.1.2", -+ "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz", -+ "integrity": "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==", -+ "requires": { -+ "tslib": "^2.7.0" -+ } -+ }, -+ "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" -+ } -+ }, -+ "find-up": { -+ "version": "5.0.0", -+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", -+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", -+ "dev": true, -+ "requires": { -+ "locate-path": "^6.0.0", -+ "path-exists": "^4.0.0" -+ } -+ }, -+ "flat-cache": { -+ "version": "3.2.0", -+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", -+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", -+ "dev": true, -+ "requires": { -+ "flatted": "^3.2.9", -+ "keyv": "^4.5.3", -+ "rimraf": "^3.0.2" -+ } -+ }, -+ "flatted": { -+ "version": "3.3.2", -+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", -+ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", -+ "dev": true -+ }, -+ "focus-trap": { -+ "version": "7.5.4", -+ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", -+ "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", -+ "requires": { -+ "tabbable": "^6.2.0" -+ } -+ }, -+ "for-each": { -+ "version": "0.3.4", -+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", -+ "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", -+ "dev": true, -+ "requires": { -+ "is-callable": "^1.2.7" -+ } -+ }, -+ "foreground-child": { -+ "version": "3.3.0", -+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", -+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", -+ "dev": true, -+ "requires": { -+ "cross-spawn": "^7.0.0", -+ "signal-exit": "^4.0.1" -+ } -+ }, -+ "fs-extra": { -+ "version": "10.1.0", -+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", -+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", -+ "dev": true, -+ "requires": { -+ "graceful-fs": "^4.2.0", -+ "jsonfile": "^6.0.1", -+ "universalify": "^2.0.0" -+ } -+ }, -+ "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 -+ }, -+ "function.prototype.name": { -+ "version": "1.1.8", -+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", -+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "functions-have-names": "^1.2.3", -+ "hasown": "^2.0.2", -+ "is-callable": "^1.2.7" -+ } -+ }, -+ "functions-have-names": { -+ "version": "1.2.3", -+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", -+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", -+ "dev": true -+ }, -+ "get-east-asian-width": { -+ "version": "1.3.0", -+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", -+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", -+ "dev": true -+ }, -+ "get-intrinsic": { -+ "version": "1.2.7", -+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", -+ "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", -+ "dev": true, -+ "requires": { -+ "call-bind-apply-helpers": "^1.0.1", -+ "es-define-property": "^1.0.1", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "function-bind": "^1.1.2", -+ "get-proto": "^1.0.0", -+ "gopd": "^1.2.0", -+ "has-symbols": "^1.1.0", -+ "hasown": "^2.0.2", -+ "math-intrinsics": "^1.1.0" -+ } -+ }, -+ "get-proto": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", -+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", -+ "dev": true, -+ "requires": { -+ "dunder-proto": "^1.0.1", -+ "es-object-atoms": "^1.0.0" -+ } -+ }, -+ "get-symbol-description": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", -+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3", -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.6" -+ } -+ }, -+ "get-tsconfig": { -+ "version": "4.10.0", -+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", -+ "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "resolve-pkg-maps": "^1.0.0" -+ } -+ }, -+ "gettext-parser": { -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.1.0.tgz", -+ "integrity": "sha512-YGmu8DSm7PBnwItT+aOiqejOogqctHFzn+wBKUzjDFQP00psAtn/W2paWQxqE5eA5Ijrqaf7xuTKqyCHpuxnrg==", -+ "requires": { -+ "encoding": "^0.1.12", -+ "readable-stream": "^2.0.0", -+ "safe-buffer": "^5.1.2" -+ } -+ }, -+ "gettext-to-messageformat": { -+ "version": "0.3.1", -+ "resolved": "https://registry.npmjs.org/gettext-to-messageformat/-/gettext-to-messageformat-0.3.1.tgz", -+ "integrity": "sha512-UyqIL3Ul4NryU95Wome/qtlcuVIqgEWVIFw0zi7Lv14ACLXfaVDCbrjZ7o+3BZ7u+4NS1mP/2O1eXZoHCoas8g==", -+ "dev": true, -+ "requires": { -+ "gettext-parser": "^1.4.0" -+ }, -+ "dependencies": { -+ "gettext-parser": { -+ "version": "1.4.0", -+ "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", -+ "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", -+ "dev": true, -+ "requires": { -+ "encoding": "^0.1.12", -+ "safe-buffer": "^5.1.1" -+ } -+ } -+ } -+ }, -+ "glob": { -+ "version": "11.0.0", -+ "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", -+ "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", -+ "dev": true, -+ "requires": { -+ "foreground-child": "^3.1.0", -+ "jackspeak": "^4.0.1", -+ "minimatch": "^10.0.0", -+ "minipass": "^7.1.2", -+ "package-json-from-dist": "^1.0.0", -+ "path-scurry": "^2.0.0" -+ }, -+ "dependencies": { -+ "minimatch": { -+ "version": "10.0.1", -+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", -+ "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", -+ "dev": true, -+ "requires": { -+ "brace-expansion": "^2.0.1" -+ } -+ } -+ } -+ }, -+ "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" -+ } -+ }, -+ "global-modules": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", -+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", -+ "dev": true, -+ "requires": { -+ "global-prefix": "^3.0.0" -+ } -+ }, -+ "global-prefix": { -+ "version": "3.0.0", -+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", -+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", -+ "dev": true, -+ "requires": { -+ "ini": "^1.3.5", -+ "kind-of": "^6.0.2", -+ "which": "^1.3.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" -+ } -+ } -+ } -+ }, -+ "globals": { -+ "version": "13.24.0", -+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", -+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", -+ "dev": true, -+ "requires": { -+ "type-fest": "^0.20.2" -+ } -+ }, -+ "globalthis": { -+ "version": "1.0.4", -+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", -+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", -+ "dev": true, -+ "requires": { -+ "define-properties": "^1.2.1", -+ "gopd": "^1.0.1" -+ } -+ }, -+ "globalyzer": { -+ "version": "0.1.0", -+ "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", -+ "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", -+ "dev": true -+ }, -+ "globby": { -+ "version": "11.1.0", -+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", -+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", -+ "dev": true, -+ "requires": { -+ "array-union": "^2.1.0", -+ "dir-glob": "^3.0.1", -+ "fast-glob": "^3.2.9", -+ "ignore": "^5.2.0", -+ "merge2": "^1.4.1", -+ "slash": "^3.0.0" -+ } -+ }, -+ "globjoin": { -+ "version": "0.1.4", -+ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", -+ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", -+ "dev": true -+ }, -+ "globrex": { -+ "version": "0.1.2", -+ "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", -+ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", -+ "dev": true -+ }, -+ "gopd": { -+ "version": "1.2.0", -+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", -+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", -+ "dev": true -+ }, -+ "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 -+ }, -+ "graphemer": { -+ "version": "1.4.0", -+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", -+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", -+ "dev": true -+ }, -+ "has-bigints": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", -+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", -+ "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 -+ }, -+ "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.2.0", -+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", -+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", -+ "dev": true, -+ "requires": { -+ "dunder-proto": "^1.0.0" -+ } -+ }, -+ "has-symbols": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", -+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", -+ "dev": true -+ }, -+ "has-tostringtag": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", -+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", -+ "dev": true, -+ "requires": { -+ "has-symbols": "^1.0.3" -+ } -+ }, -+ "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" -+ } -+ }, -+ "hoist-non-react-statics": { -+ "version": "3.3.2", -+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", -+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", -+ "requires": { -+ "react-is": "^16.7.0" -+ } -+ }, -+ "html-tags": { -+ "version": "3.3.1", -+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", -+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", -+ "dev": true -+ }, -+ "htmlparser": { -+ "version": "1.7.7", -+ "resolved": "https://registry.npmjs.org/htmlparser/-/htmlparser-1.7.7.tgz", -+ "integrity": "sha512-zpK66ifkT0fauyFh2Mulrq4AqGTucxGtOhZ8OjkbSfcCpkqQEI8qRkY0tSQSJNAQ4HUZkgWaU4fK4EH6SVH9PQ==", -+ "dev": true -+ }, -+ "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==", -+ "requires": { -+ "safer-buffer": ">= 2.1.2 < 3.0.0" -+ } -+ }, -+ "ignore": { -+ "version": "5.3.2", -+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", -+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", -+ "dev": true -+ }, -+ "immutable": { -+ "version": "4.3.7", -+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", -+ "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", -+ "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" -+ } -+ }, -+ "imurmurhash": { -+ "version": "0.1.4", -+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", -+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", -+ "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==" -+ }, -+ "ini": { -+ "version": "1.3.8", -+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", -+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", -+ "dev": true -+ }, -+ "internal-slot": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", -+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", -+ "dev": true, -+ "requires": { -+ "es-errors": "^1.3.0", -+ "hasown": "^2.0.2", -+ "side-channel": "^1.1.0" -+ } -+ }, -+ "internmap": { -+ "version": "2.0.3", -+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", -+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" -+ }, -+ "irregular-plurals": { -+ "version": "3.5.0", -+ "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", -+ "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", -+ "dev": true -+ }, -+ "is-arguments": { -+ "version": "1.2.0", -+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", -+ "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "has-tostringtag": "^1.0.2" -+ } -+ }, -+ "is-array-buffer": { -+ "version": "3.0.5", -+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", -+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "get-intrinsic": "^1.2.6" -+ } -+ }, -+ "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-async-function": { -+ "version": "2.1.1", -+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", -+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", -+ "dev": true, -+ "requires": { -+ "async-function": "^1.0.0", -+ "call-bound": "^1.0.3", -+ "get-proto": "^1.0.1", -+ "has-tostringtag": "^1.0.2", -+ "safe-regex-test": "^1.1.0" -+ } -+ }, -+ "is-bigint": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", -+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", -+ "dev": true, -+ "requires": { -+ "has-bigints": "^1.0.2" -+ } -+ }, -+ "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-boolean-object": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", -+ "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "has-tostringtag": "^1.0.2" -+ } -+ }, -+ "is-builtin-module": { -+ "version": "3.2.1", -+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", -+ "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "builtin-modules": "^3.3.0" -+ } -+ }, -+ "is-callable": { -+ "version": "1.2.7", -+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", -+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", -+ "dev": true -+ }, -+ "is-core-module": { -+ "version": "2.16.1", -+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", -+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", -+ "dev": true, -+ "requires": { -+ "hasown": "^2.0.2" -+ } -+ }, -+ "is-data-view": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", -+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "get-intrinsic": "^1.2.6", -+ "is-typed-array": "^1.1.13" -+ } -+ }, -+ "is-date-object": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", -+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "has-tostringtag": "^1.0.2" -+ } -+ }, -+ "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-finalizationregistry": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", -+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3" -+ } -+ }, -+ "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-generator-function": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", -+ "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3", -+ "get-proto": "^1.0.0", -+ "has-tostringtag": "^1.0.2", -+ "safe-regex-test": "^1.1.0" -+ } -+ }, -+ "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-map": { -+ "version": "2.0.3", -+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", -+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", -+ "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-number-object": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", -+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3", -+ "has-tostringtag": "^1.0.2" -+ } -+ }, -+ "is-path-inside": { -+ "version": "3.0.3", -+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", -+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", -+ "dev": true -+ }, -+ "is-plain-object": { -+ "version": "5.0.0", -+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", -+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", -+ "dev": true -+ }, -+ "is-regex": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", -+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "gopd": "^1.2.0", -+ "has-tostringtag": "^1.0.2", -+ "hasown": "^2.0.2" -+ } -+ }, -+ "is-set": { -+ "version": "2.0.3", -+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", -+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", -+ "dev": true -+ }, -+ "is-shared-array-buffer": { -+ "version": "1.0.4", -+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", -+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3" -+ } -+ }, -+ "is-string": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", -+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3", -+ "has-tostringtag": "^1.0.2" -+ } -+ }, -+ "is-symbol": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", -+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "has-symbols": "^1.1.0", -+ "safe-regex-test": "^1.1.0" -+ } -+ }, -+ "is-typed-array": { -+ "version": "1.1.15", -+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", -+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", -+ "dev": true, -+ "requires": { -+ "which-typed-array": "^1.1.16" -+ } -+ }, -+ "is-unicode-supported": { -+ "version": "2.1.0", -+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", -+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", -+ "dev": true -+ }, -+ "is-weakmap": { -+ "version": "2.0.2", -+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", -+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", -+ "dev": true -+ }, -+ "is-weakref": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", -+ "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2" -+ } -+ }, -+ "is-weakset": { -+ "version": "2.0.4", -+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", -+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.3", -+ "get-intrinsic": "^1.2.6" -+ } -+ }, -+ "isarray": { -+ "version": "2.0.5", -+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", -+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", -+ "dev": true -+ }, -+ "isexe": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", -+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", -+ "dev": true -+ }, -+ "iterator.prototype": { -+ "version": "1.1.5", -+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", -+ "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", -+ "dev": true, -+ "requires": { -+ "define-data-property": "^1.1.4", -+ "es-object-atoms": "^1.0.0", -+ "get-intrinsic": "^1.2.6", -+ "get-proto": "^1.0.0", -+ "has-symbols": "^1.1.0", -+ "set-function-name": "^2.0.2" -+ } -+ }, -+ "jackspeak": { -+ "version": "4.0.2", -+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", -+ "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", -+ "dev": true, -+ "requires": { -+ "@isaacs/cliui": "^8.0.2" -+ } -+ }, -+ "jed": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", -+ "integrity": "sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==", -+ "dev": true -+ }, -+ "js-sha1": { -+ "version": "0.7.0", -+ "resolved": "https://registry.npmjs.org/js-sha1/-/js-sha1-0.7.0.tgz", -+ "integrity": "sha512-oQZ1Mo7440BfLSv9TX87VNEyU52pXPVG19F9PL3gTgNt0tVxlZ8F4O6yze3CLuLx28TxotxvlyepCNaaV0ZjMw==" -+ }, -+ "js-sha256": { -+ "version": "0.11.0", -+ "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.11.0.tgz", -+ "integrity": "sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==" -+ }, -+ "js-tokens": { -+ "version": "4.0.0", -+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", -+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" -+ }, -+ "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" -+ } -+ }, -+ "json-buffer": { -+ "version": "3.0.1", -+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", -+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", -+ "dev": true -+ }, -+ "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": "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 -+ }, -+ "json-stable-stringify-without-jsonify": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", -+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" -+ }, -+ "json-stringify-safe": { -+ "version": "5.0.1", -+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", -+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" -+ }, -+ "json5": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", -+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", -+ "dev": true, -+ "requires": { -+ "minimist": "^1.2.0" -+ } -+ }, -+ "jsonfile": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", -+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", -+ "dev": true, -+ "requires": { -+ "graceful-fs": "^4.1.6", -+ "universalify": "^2.0.0" -+ } -+ }, -+ "jsx-ast-utils": { -+ "version": "3.3.5", -+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", -+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", -+ "dev": true, -+ "requires": { -+ "array-includes": "^3.1.6", -+ "array.prototype.flat": "^1.3.1", -+ "object.assign": "^4.1.4", -+ "object.values": "^1.1.6" -+ } -+ }, -+ "keyv": { -+ "version": "4.5.4", -+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", -+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", -+ "dev": true, -+ "requires": { -+ "json-buffer": "3.0.1" -+ } -+ }, -+ "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 -+ }, -+ "known-css-properties": { -+ "version": "0.34.0", -+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", -+ "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", -+ "dev": true -+ }, -+ "language-subtag-registry": { -+ "version": "0.3.23", -+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", -+ "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", -+ "dev": true -+ }, -+ "language-tags": { -+ "version": "1.0.9", -+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", -+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", -+ "dev": true, -+ "requires": { -+ "language-subtag-registry": "^0.3.20" -+ } -+ }, -+ "levn": { -+ "version": "0.4.1", -+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", -+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", -+ "dev": true, -+ "requires": { -+ "prelude-ls": "^1.2.1", -+ "type-check": "~0.4.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 -+ }, -+ "locate-path": { -+ "version": "6.0.0", -+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", -+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", -+ "dev": true, -+ "requires": { -+ "p-locate": "^5.0.0" -+ } -+ }, -+ "lodash": { -+ "version": "4.17.21", -+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", -+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" -+ }, -+ "lodash.merge": { -+ "version": "4.6.2", -+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", -+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", -+ "dev": true -+ }, -+ "lodash.truncate": { -+ "version": "4.4.2", -+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", -+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", -+ "dev": true -+ }, -+ "log-symbols": { -+ "version": "7.0.0", -+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.0.tgz", -+ "integrity": "sha512-zrc91EDk2M+2AXo/9BTvK91pqb7qrPg2nX/Hy+u8a5qQlbaOflCKO+6SqgZ+M+xUFxGdKTgwnGiL96b1W3ikRA==", -+ "dev": true, -+ "requires": { -+ "is-unicode-supported": "^2.0.0", -+ "yoctocolors": "^2.1.1" -+ } -+ }, -+ "loose-envify": { -+ "version": "1.4.0", -+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", -+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", -+ "requires": { -+ "js-tokens": "^3.0.0 || ^4.0.0" -+ } -+ }, -+ "lru-cache": { -+ "version": "11.0.2", -+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", -+ "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", -+ "dev": true -+ }, -+ "magic-string": { -+ "version": "0.25.9", -+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", -+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", -+ "dev": true, -+ "requires": { -+ "sourcemap-codec": "^1.4.8" -+ } -+ }, -+ "math-intrinsics": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", -+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", -+ "dev": true -+ }, -+ "mathml-tag-names": { -+ "version": "2.1.3", -+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", -+ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", -+ "dev": true -+ }, -+ "mdn-data": { -+ "version": "2.0.30", -+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", -+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", -+ "dev": true -+ }, -+ "meow": { -+ "version": "13.2.0", -+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", -+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", -+ "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 -+ }, -+ "micromatch": { -+ "version": "4.0.8", -+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", -+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", -+ "dev": true, -+ "requires": { -+ "braces": "^3.0.3", -+ "picomatch": "^2.3.1" -+ } -+ }, -+ "minimatch": { -+ "version": "9.0.5", -+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", -+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", -+ "dev": true, -+ "requires": { -+ "brace-expansion": "^2.0.1" -+ } -+ }, -+ "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.1.2", -+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", -+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", -+ "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 -+ }, -+ "nanoid": { -+ "version": "3.3.8", -+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", -+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", -+ "dev": true -+ }, -+ "natural-compare": { -+ "version": "1.4.0", -+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", -+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", -+ "dev": true -+ }, -+ "node-watch": { -+ "version": "0.7.3", -+ "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", -+ "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", -+ "dev": true -+ }, -+ "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 -+ }, -+ "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==" -+ }, -+ "object-inspect": { -+ "version": "1.13.3", -+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", -+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", -+ "dev": true -+ }, -+ "object-is": { -+ "version": "1.1.6", -+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", -+ "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1" -+ } -+ }, -+ "object-keys": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", -+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", -+ "dev": true -+ }, -+ "object.assign": { -+ "version": "4.1.7", -+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", -+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0", -+ "has-symbols": "^1.1.0", -+ "object-keys": "^1.1.1" -+ } -+ }, -+ "object.entries": { -+ "version": "1.1.8", -+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", -+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0" -+ } -+ }, -+ "object.fromentries": { -+ "version": "2.0.8", -+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", -+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2", -+ "es-object-atoms": "^1.0.0" -+ } -+ }, -+ "object.groupby": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", -+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.2" -+ } -+ }, -+ "object.values": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", -+ "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0" -+ } -+ }, -+ "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" -+ } -+ }, -+ "optionator": { -+ "version": "0.9.4", -+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", -+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", -+ "dev": true, -+ "requires": { -+ "deep-is": "^0.1.3", -+ "fast-levenshtein": "^2.0.6", -+ "levn": "^0.4.1", -+ "prelude-ls": "^1.2.1", -+ "type-check": "^0.4.0", -+ "word-wrap": "^1.2.5" -+ } -+ }, -+ "own-keys": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", -+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", -+ "dev": true, -+ "requires": { -+ "get-intrinsic": "^1.2.6", -+ "object-keys": "^1.1.1", -+ "safe-push-apply": "^1.0.0" -+ } -+ }, -+ "p-limit": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", -+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", -+ "dev": true, -+ "requires": { -+ "yocto-queue": "^0.1.0" -+ } -+ }, -+ "p-locate": { -+ "version": "5.0.0", -+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", -+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", -+ "dev": true, -+ "requires": { -+ "p-limit": "^3.0.2" -+ } -+ }, -+ "package-json-from-dist": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", -+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", -+ "dev": true -+ }, -+ "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" -+ } -+ }, -+ "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 -+ }, -+ "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": "2.0.0", -+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", -+ "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", -+ "dev": true, -+ "requires": { -+ "lru-cache": "^11.0.0", -+ "minipass": "^7.1.2" -+ } -+ }, -+ "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.1.1", -+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", -+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", -+ "dev": true -+ }, -+ "picomatch": { -+ "version": "2.3.1", -+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", -+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", -+ "dev": true -+ }, -+ "plur": { -+ "version": "5.1.0", -+ "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", -+ "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", -+ "dev": true, -+ "requires": { -+ "irregular-plurals": "^3.3.0" -+ } -+ }, -+ "po2json": { -+ "version": "1.0.0-beta-3", -+ "resolved": "https://registry.npmjs.org/po2json/-/po2json-1.0.0-beta-3.tgz", -+ "integrity": "sha512-taS8y6ZEGzPAs0rygW9CuUPY8C3Zgx6cBy31QXxG2JlWS3fLxj/kuD3cbIfXBg30PuYN7J5oyBa/TIRjyqFFtg==", -+ "dev": true, -+ "requires": { -+ "commander": "^6.0.0", -+ "gettext-parser": "2.0.0", -+ "gettext-to-messageformat": "0.3.1" -+ }, -+ "dependencies": { -+ "commander": { -+ "version": "6.2.1", -+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", -+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", -+ "dev": true -+ }, -+ "gettext-parser": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.0.0.tgz", -+ "integrity": "sha512-FDs/7XjNw58ToQwJFO7avZZbPecSYgw8PBYhd0An+4JtZSrSzKhEvTsVV2uqdO7VziWTOGSgLGD5YRPdsCjF7Q==", -+ "dev": true, -+ "requires": { -+ "encoding": "^0.1.12", -+ "safe-buffer": "^5.1.2" -+ } -+ } -+ } -+ }, -+ "possible-typed-array-names": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", -+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", -+ "dev": true -+ }, -+ "postcss": { -+ "version": "8.5.1", -+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", -+ "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", -+ "dev": true, -+ "requires": { -+ "nanoid": "^3.3.8", -+ "picocolors": "^1.1.1", -+ "source-map-js": "^1.2.1" -+ } -+ }, -+ "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-resolve-nested-selector": { -+ "version": "0.1.6", -+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", -+ "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", -+ "dev": true -+ }, -+ "postcss-safe-parser": { -+ "version": "7.0.1", -+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", -+ "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", -+ "dev": true, -+ "requires": {} -+ }, -+ "postcss-scss": { -+ "version": "4.0.9", -+ "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", -+ "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", -+ "dev": true, -+ "requires": {} -+ }, -+ "postcss-selector-parser": { -+ "version": "6.1.2", -+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", -+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", -+ "dev": true, -+ "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 -+ }, -+ "prelude-ls": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", -+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", -+ "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==" -+ }, -+ "prop-types": { -+ "version": "15.8.1", -+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", -+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", -+ "requires": { -+ "loose-envify": "^1.4.0", -+ "object-assign": "^4.1.1", -+ "react-is": "^16.13.1" -+ } -+ }, -+ "punycode": { -+ "version": "2.3.1", -+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", -+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", -+ "dev": true -+ }, -+ "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 -+ }, -+ "qunit": { -+ "version": "2.22.0", -+ "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.22.0.tgz", -+ "integrity": "sha512-wPYvAvpjTL3zlUeyCX75T8gfZfdVXZa8y1EVkGe/XZNORIsCH/WI2X8R2KlemT921X9EKSZUL6CLGSPC7Ks08g==", -+ "dev": true, -+ "requires": { -+ "commander": "7.2.0", -+ "node-watch": "0.7.3", -+ "tiny-glob": "0.2.9" -+ }, -+ "dependencies": { -+ "commander": { -+ "version": "7.2.0", -+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", -+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", -+ "dev": true -+ } -+ } -+ }, -+ "qunit-tap": { -+ "version": "1.5.1", -+ "resolved": "https://registry.npmjs.org/qunit-tap/-/qunit-tap-1.5.1.tgz", -+ "integrity": "sha512-ZEgx3kF/DN5WYX3qkR7Kgq/+vtnttaHkX69GFqZ3EEKyXsQ3mYDReWjyetN3jtBEl3ZvQ7DhW6rLq/9sJzoUHQ==", -+ "dev": true -+ }, -+ "react": { -+ "version": "18.3.1", -+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", -+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", -+ "requires": { -+ "loose-envify": "^1.1.0" -+ } -+ }, -+ "react-dom": { -+ "version": "18.3.1", -+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", -+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", -+ "requires": { -+ "loose-envify": "^1.1.0", -+ "scheduler": "^0.23.2" -+ } -+ }, -+ "react-dropzone": { -+ "version": "14.3.5", -+ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.5.tgz", -+ "integrity": "sha512-9nDUaEEpqZLOz5v5SUcFA0CjM4vq8YbqO0WRls+EYT7+DvxUdzDPKNCPLqGfj3YL9MsniCLCD4RFA6M95V6KMQ==", -+ "requires": { -+ "attr-accept": "^2.2.4", -+ "file-selector": "^2.1.0", -+ "prop-types": "^15.8.1" -+ } -+ }, -+ "react-fast-compare": { -+ "version": "3.2.2", -+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", -+ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" -+ }, -+ "react-is": { -+ "version": "16.13.1", -+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", -+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" -+ }, -+ "readable-stream": { -+ "version": "2.3.8", -+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", -+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", -+ "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" -+ }, -+ "dependencies": { -+ "isarray": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" -+ }, -+ "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==" -+ } -+ } -+ }, -+ "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.getprototypeof": { -+ "version": "1.0.10", -+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", -+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.9", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "get-intrinsic": "^1.2.7", -+ "get-proto": "^1.0.1", -+ "which-builtin-type": "^1.2.1" -+ } -+ }, -+ "regexp.prototype.flags": { -+ "version": "1.5.4", -+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", -+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "define-properties": "^1.2.1", -+ "es-errors": "^1.3.0", -+ "get-proto": "^1.0.1", -+ "gopd": "^1.2.0", -+ "set-function-name": "^2.0.2" -+ } -+ }, -+ "regexpp": { -+ "version": "3.2.0", -+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", -+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", -+ "dev": true -+ }, -+ "remarkable": { -+ "version": "2.0.1", -+ "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", -+ "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", -+ "requires": { -+ "argparse": "^1.0.10", -+ "autolinker": "^3.11.0" -+ }, -+ "dependencies": { -+ "argparse": { -+ "version": "1.0.10", -+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", -+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", -+ "requires": { -+ "sprintf-js": "~1.0.2" -+ } -+ } -+ } -+ }, -+ "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 -+ }, -+ "resolve": { -+ "version": "1.22.10", -+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", -+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", -+ "dev": true, -+ "requires": { -+ "is-core-module": "^2.16.0", -+ "path-parse": "^1.0.7", -+ "supports-preserve-symlinks-flag": "^1.0.0" -+ } -+ }, -+ "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 -+ }, -+ "resolve-pkg-maps": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", -+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", -+ "dev": true, -+ "peer": 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 -+ }, -+ "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" -+ }, -+ "dependencies": { -+ "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" -+ } -+ }, -+ "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" -+ } -+ }, -+ "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" -+ } -+ } -+ } -+ }, -+ "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==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "tslib": "^2.1.0" -+ } -+ }, -+ "safe-array-concat": { -+ "version": "1.1.3", -+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", -+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.2", -+ "get-intrinsic": "^1.2.6", -+ "has-symbols": "^1.1.0", -+ "isarray": "^2.0.5" -+ } -+ }, -+ "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==" -+ }, -+ "safe-identifier": { -+ "version": "0.4.2", -+ "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", -+ "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", -+ "dev": true -+ }, -+ "safe-push-apply": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", -+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", -+ "dev": true, -+ "requires": { -+ "es-errors": "^1.3.0", -+ "isarray": "^2.0.5" -+ } -+ }, -+ "safe-regex-test": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", -+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "es-errors": "^1.3.0", -+ "is-regex": "^1.2.1" -+ } -+ }, -+ "safer-buffer": { -+ "version": "2.1.2", -+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", -+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" -+ }, -+ "sass": { -+ "version": "1.79.4", -+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz", -+ "integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==", -+ "dev": true, -+ "requires": { -+ "chokidar": "^4.0.0", -+ "immutable": "^4.0.0", -+ "source-map-js": ">=0.6.2 <2.0.0" -+ }, -+ "dependencies": { -+ "chokidar": { -+ "version": "4.0.3", -+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", -+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", -+ "dev": true, -+ "requires": { -+ "readdirp": "^4.0.1" -+ } -+ }, -+ "readdirp": { -+ "version": "4.1.1", -+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", -+ "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", -+ "dev": true -+ } -+ } -+ }, -+ "sass-embedded": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.83.4.tgz", -+ "integrity": "sha512-Hf2burRA/y5PGxsg6jB9UpoK/xZ6g/pgrkOcdl6j+rRg1Zj8XhGKZ1MTysZGtTPUUmiiErqzkP5+Kzp95yv9GQ==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "@bufbuild/protobuf": "^2.0.0", -+ "buffer-builder": "^0.2.0", -+ "colorjs.io": "^0.5.0", -+ "immutable": "^5.0.2", -+ "rxjs": "^7.4.0", -+ "sass-embedded-android-arm": "1.83.4", -+ "sass-embedded-android-arm64": "1.83.4", -+ "sass-embedded-android-ia32": "1.83.4", -+ "sass-embedded-android-riscv64": "1.83.4", -+ "sass-embedded-android-x64": "1.83.4", -+ "sass-embedded-darwin-arm64": "1.83.4", -+ "sass-embedded-darwin-x64": "1.83.4", -+ "sass-embedded-linux-arm": "1.83.4", -+ "sass-embedded-linux-arm64": "1.83.4", -+ "sass-embedded-linux-ia32": "1.83.4", -+ "sass-embedded-linux-musl-arm": "1.83.4", -+ "sass-embedded-linux-musl-arm64": "1.83.4", -+ "sass-embedded-linux-musl-ia32": "1.83.4", -+ "sass-embedded-linux-musl-riscv64": "1.83.4", -+ "sass-embedded-linux-musl-x64": "1.83.4", -+ "sass-embedded-linux-riscv64": "1.83.4", -+ "sass-embedded-linux-x64": "1.83.4", -+ "sass-embedded-win32-arm64": "1.83.4", -+ "sass-embedded-win32-ia32": "1.83.4", -+ "sass-embedded-win32-x64": "1.83.4", -+ "supports-color": "^8.1.1", -+ "sync-child-process": "^1.0.2", -+ "varint": "^6.0.0" -+ }, -+ "dependencies": { -+ "immutable": { -+ "version": "5.0.3", -+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", -+ "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", -+ "dev": true, -+ "peer": 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, -+ "peer": true, -+ "requires": { -+ "has-flag": "^4.0.0" -+ } -+ } -+ } -+ }, -+ "sass-embedded-android-arm": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.83.4.tgz", -+ "integrity": "sha512-9Z4pJAOgEkXa3VDY/o+U6l5XvV0mZTJcSl0l/mSPHihjAHSpLYnOW6+KOWeM8dxqrsqTYcd6COzhanI/a++5Gw==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-android-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.83.4.tgz", -+ "integrity": "sha512-tgX4FzmbVqnQmD67ZxQDvI+qFNABrboOQgwsG05E5bA/US42zGajW9AxpECJYiMXVOHmg+d81ICbjb0fsVHskw==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-android-ia32": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.83.4.tgz", -+ "integrity": "sha512-RsFOziFqPcfZXdFRULC4Ayzy9aK6R6FwQ411broCjlOBX+b0gurjRadkue3cfUEUR5mmy0KeCbp7zVKPLTK+5Q==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-android-riscv64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.83.4.tgz", -+ "integrity": "sha512-EHwh0nmQarBBrMRU928eTZkFGx19k/XW2YwbPR4gBVdWLkbTgCA5aGe8hTE6/1zStyx++3nDGvTZ78+b/VvvLg==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-android-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.83.4.tgz", -+ "integrity": "sha512-0PgQNuPWYy1jEOEPDVsV89KfqOsMLIp9CSbjBY7jRcwRhyVAcigqrUG6bDeNtojHUYKA1kU+Eh/85WxOHUOgBw==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-darwin-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.83.4.tgz", -+ "integrity": "sha512-rp2ywymWc3nymnSnAFG5R/8hvxWCsuhK3wOnD10IDlmNB7o4rzKby1c+2ZfpQGowlYGWsWWTgz8FW2qzmZsQRw==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-darwin-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.83.4.tgz", -+ "integrity": "sha512-kLkN2lXz9PCgGfDS8Ev5YVcl/V2173L6379en/CaFuJJi7WiyPgBymW7hOmfCt4uO4R1y7CP2Uc08DRtZsBlAA==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-linux-arm": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.83.4.tgz", -+ "integrity": "sha512-nL90ryxX2lNmFucr9jYUyHHx21AoAgdCL1O5Ltx2rKg2xTdytAGHYo2MT5S0LIeKLa/yKP/hjuSvrbICYNDvtA==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-linux-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.83.4.tgz", -+ "integrity": "sha512-E0zjsZX2HgESwyqw31EHtI39DKa7RgK7nvIhIRco1d0QEw227WnoR9pjH3M/ZQy4gQj3GKilOFHM5Krs/omeIA==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-linux-ia32": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.83.4.tgz", -+ "integrity": "sha512-ew5HpchSzgAYbQoriRh8QhlWn5Kw2nQ2jHoV9YLwGKe3fwwOWA0KDedssvDv7FWnY/FCqXyymhLd6Bxae4Xquw==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-linux-musl-arm": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.83.4.tgz", -+ "integrity": "sha512-0RrJRwMrmm+gG0VOB5b5Cjs7Sd+lhqpQJa6EJNEaZHljJokEfpE5GejZsGMRMIQLxEvVphZnnxl6sonCGFE/QQ==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-linux-musl-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.83.4.tgz", -+ "integrity": "sha512-IzMgalf6MZOxgp4AVCgsaWAFDP/IVWOrgVXxkyhw29fyAEoSWBJH4k87wyPhEtxSuzVHLxKNbc8k3UzdWmlBFg==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-linux-musl-ia32": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.83.4.tgz", -+ "integrity": "sha512-LLb4lYbcxPzX4UaJymYXC+WwokxUlfTJEFUv5VF0OTuSsHAGNRs/rslPtzVBTvMeG9TtlOQDhku1F7G6iaDotA==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-linux-musl-riscv64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.83.4.tgz", -+ "integrity": "sha512-zoKlPzD5Z13HKin1UGR74QkEy+kZEk2AkGX5RelRG494mi+IWwRuWCppXIovor9+BQb9eDWPYPoMVahwN5F7VA==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-linux-musl-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.83.4.tgz", -+ "integrity": "sha512-hB8+/PYhfEf2zTIcidO5Bpof9trK6WJjZ4T8g2MrxQh8REVtdPcgIkoxczRynqybf9+fbqbUwzXtiUao2GV+vQ==", - "dev": true, -- "dependencies": { -- "call-bind": "^1.0.2", -- "get-intrinsic": "^1.1.3", -- "is-regex": "^1.1.4" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -- } -+ "optional": true, -+ "peer": true - }, -- "node_modules/safer-buffer": { -- "version": "2.1.2", -- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", -- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" -+ "sass-embedded-linux-riscv64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.83.4.tgz", -+ "integrity": "sha512-83fL4n+oeDJ0Y4KjASmZ9jHS1Vl9ESVQYHMhJE0i4xDi/P3BNarm2rsKljq/QtrwGpbqwn8ujzOu7DsNCMDSHA==", -+ "dev": true, -+ "optional": true, -+ "peer": true - }, -- "node_modules/sass": { -- "version": "1.63.2", -- "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.2.tgz", -- "integrity": "sha512-u56TU0AIFqMtauKl/OJ1AeFsXqRHkgO7nCWmHaDwfxDo9GUMSqBA4NEh6GMuh1CYVM7zuROYtZrHzPc2ixK+ww==", -+ "sass-embedded-linux-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.83.4.tgz", -+ "integrity": "sha512-NlnGdvCmTD5PK+LKXlK3sAuxOgbRIEoZfnHvxd157imCm/s2SYF/R28D0DAAjEViyI8DovIWghgbcqwuertXsA==", - "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" -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-win32-arm64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.83.4.tgz", -+ "integrity": "sha512-J2BFKrEaeSrVazU2qTjyQdAk+MvbzJeTuCET0uAJEXSKtvQ3AzxvzndS7LqkDPbF32eXAHLw8GVpwcBwKbB3Uw==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-win32-ia32": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.83.4.tgz", -+ "integrity": "sha512-uPAe9T/5sANFhJS5dcfAOhOJy8/l2TRYG4r+UO3Wp4yhqbN7bggPvY9c7zMYS0OC8tU/bCvfYUDFHYMCl91FgA==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "sass-embedded-win32-x64": { -+ "version": "1.83.4", -+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.83.4.tgz", -+ "integrity": "sha512-C9fkDY0jKITdJFij4UbfPFswxoXN9O/Dr79v17fJnstVwtUojzVJWKHUXvF0Zg2LIR7TCc4ju3adejKFxj7ueA==", -+ "dev": true, -+ "optional": true, -+ "peer": true -+ }, -+ "scheduler": { -+ "version": "0.23.2", -+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", -+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", -+ "requires": { -+ "loose-envify": "^1.1.0" - } - }, -- "node_modules/scheduler": { -- "version": "0.20.2", -- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", -- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", -- "dependencies": { -- "loose-envify": "^1.1.0", -- "object-assign": "^4.1.1" -+ "semver": { -+ "version": "7.7.0", -+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", -+ "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", -+ "dev": true -+ }, -+ "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" - } - }, -- "node_modules/semver": { -- "version": "6.3.1", -- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", -- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", -+ "set-function-name": { -+ "version": "2.0.2", -+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", -+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, -- "bin": { -- "semver": "bin/semver.js" -+ "requires": { -+ "define-data-property": "^1.1.4", -+ "es-errors": "^1.3.0", -+ "functions-have-names": "^1.2.3", -+ "has-property-descriptors": "^1.0.2" - } - }, -- "node_modules/shebang-command": { -+ "set-proto": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", -+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", -+ "dev": true, -+ "requires": { -+ "dunder-proto": "^1.0.1", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0" -+ } -+ }, -+ "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": { -+ "requires": { - "shebang-regex": "^3.0.0" -- }, -- "engines": { -- "node": ">=8" - } - }, -- "node_modules/shebang-regex": { -+ "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 -+ }, -+ "side-channel": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", -+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, -- "engines": { -- "node": ">=8" -+ "requires": { -+ "es-errors": "^1.3.0", -+ "object-inspect": "^1.13.3", -+ "side-channel-list": "^1.0.0", -+ "side-channel-map": "^1.0.1", -+ "side-channel-weakmap": "^1.0.2" - } - }, -- "node_modules/side-channel": { -- "version": "1.0.4", -- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", -- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", -+ "side-channel-list": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", -+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, -- "dependencies": { -- "call-bind": "^1.0.0", -- "get-intrinsic": "^1.0.2", -- "object-inspect": "^1.9.0" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "requires": { -+ "es-errors": "^1.3.0", -+ "object-inspect": "^1.13.3" - } - }, -- "node_modules/signal-exit": { -- "version": "4.0.2", -- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", -- "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", -+ "side-channel-map": { -+ "version": "1.0.1", -+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", -+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, -- "engines": { -- "node": ">=14" -- }, -- "funding": { -- "url": "https://github.com/sponsors/isaacs" -+ "requires": { -+ "call-bound": "^1.0.2", -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.5", -+ "object-inspect": "^1.13.3" - } - }, -- "node_modules/sizzle": { -+ "side-channel-weakmap": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", -+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "es-errors": "^1.3.0", -+ "get-intrinsic": "^1.2.5", -+ "object-inspect": "^1.13.3", -+ "side-channel-map": "^1.0.1" -+ } -+ }, -+ "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 -+ }, -+ "sizzle": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/sizzle/-/sizzle-2.3.10.tgz", - "integrity": "sha512-kPGev+SiByuzi/YPDTqCwdKLWCaN9+14ve86yH0gP6Efue04xjLYWJrcLC6y1buFyIVXkwHNXPsOTEd1MYVPbQ==", - "dev": true - }, -- "node_modules/slash": { -+ "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", -- "dev": true, -- "engines": { -- "node": ">=8" -- } -+ "dev": true - }, -- "node_modules/slice-ansi": { -+ "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, -- "dependencies": { -+ "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" -- }, -- "engines": { -- "node": ">=10" -- }, -- "funding": { -- "url": "https://github.com/chalk/slice-ansi?sponsor=1" -- } -- }, -- "node_modules/slice-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/slice-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/slice-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==", -+ "source-map-js": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", -+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true - }, -- "node_modules/source-map-js": { -- "version": "1.0.2", -- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", -- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", -- "dev": true, -- "engines": { -- "node": ">=0.10.0" -- } -- }, -- "node_modules/sourcemap-codec": { -+ "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", -- "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, -- "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==", -+ "sprintf-js": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", -+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" -+ }, -+ "stop-iteration-iterator": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", -+ "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, -- "dependencies": { -- "spdx-expression-parse": "^3.0.0", -- "spdx-license-ids": "^3.0.0" -+ "requires": { -+ "es-errors": "^1.3.0", -+ "internal-slot": "^1.1.0" - } - }, -- "node_modules/spdx-exceptions": { -- "version": "2.3.0", -- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", -- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", -- "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==", -+ "requires": { -+ "safe-buffer": "~5.1.0" -+ }, -+ "dependencies": { -+ "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==" -+ } -+ } - }, -- "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==", -+ "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" -+ }, - "dependencies": { -- "spdx-exceptions": "^2.1.0", -- "spdx-license-ids": "^3.0.0" -+ "ansi-regex": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", -+ "dev": true -+ }, -+ "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" -+ } -+ } - } - }, -- "node_modules/spdx-license-ids": { -- "version": "3.0.13", -- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", -- "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", -- "dev": true -- }, -- "node_modules/string-natural-compare": { -- "version": "3.0.1", -- "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", -- "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", -- "dev": true -- }, -- "node_modules/string-width": { -- "version": "4.2.3", -+ "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, -- "dependencies": { -+ "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, -- "engines": { -- "node": ">=8" -+ "dependencies": { -+ "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/string.prototype.matchall": { -- "version": "4.0.8", -- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", -- "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", -+ "string.prototype.includes": { -+ "version": "2.0.1", -+ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", -+ "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.3" -+ } -+ }, -+ "string.prototype.matchall": { -+ "version": "4.0.12", -+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", -+ "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.6", -+ "es-errors": "^1.3.0", -+ "es-object-atoms": "^1.0.0", -+ "get-intrinsic": "^1.2.6", -+ "gopd": "^1.2.0", -+ "has-symbols": "^1.1.0", -+ "internal-slot": "^1.1.0", -+ "regexp.prototype.flags": "^1.5.3", -+ "set-function-name": "^2.0.2", -+ "side-channel": "^1.1.0" -+ } -+ }, -+ "string.prototype.repeat": { -+ "version": "1.0.0", -+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", -+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, -- "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4", -- "get-intrinsic": "^1.1.3", -- "has-symbols": "^1.0.3", -- "internal-slot": "^1.0.3", -- "regexp.prototype.flags": "^1.4.3", -- "side-channel": "^1.0.4" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "requires": { -+ "define-properties": "^1.1.3", -+ "es-abstract": "^1.17.5" - } - }, -- "node_modules/string.prototype.trim": { -- "version": "1.2.7", -- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", -- "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", -+ "string.prototype.trim": { -+ "version": "1.2.10", -+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", -+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, -- "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4" -- }, -- "engines": { -- "node": ">= 0.4" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "requires": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.2", -+ "define-data-property": "^1.1.4", -+ "define-properties": "^1.2.1", -+ "es-abstract": "^1.23.5", -+ "es-object-atoms": "^1.0.0", -+ "has-property-descriptors": "^1.0.2" - } - }, -- "node_modules/string.prototype.trimend": { -- "version": "1.0.6", -- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", -- "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", -+ "string.prototype.trimend": { -+ "version": "1.0.9", -+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", -+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, -- "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "requires": { -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.2", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0" - } - }, -- "node_modules/string.prototype.trimstart": { -- "version": "1.0.6", -- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", -- "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", -+ "string.prototype.trimstart": { -+ "version": "1.0.8", -+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", -+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, -- "dependencies": { -- "call-bind": "^1.0.2", -- "define-properties": "^1.1.4", -- "es-abstract": "^1.20.4" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "requires": { -+ "call-bind": "^1.0.7", -+ "define-properties": "^1.2.1", -+ "es-object-atoms": "^1.0.0" - } - }, -- "node_modules/strip-ansi": { -+ "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": { -+ "requires": { - "ansi-regex": "^5.0.1" -- }, -- "engines": { -- "node": ">=8" - } - }, -- "node_modules/strip-bom": { -- "version": "3.0.0", -- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", -- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", -+ "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, -- "engines": { -- "node": ">=4" -+ "requires": { -+ "ansi-regex": "^5.0.1" - } - }, -- "node_modules/strip-indent": { -- "version": "4.0.0", -- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", -- "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", -- "dev": true, -- "dependencies": { -- "min-indent": "^1.0.1" -- }, -- "engines": { -- "node": ">=12" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -- } -+ "strip-bom": { -+ "version": "3.0.0", -+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", -+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", -+ "dev": true - }, -- "node_modules/strip-json-comments": { -+ "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", -- "dev": true, -- "engines": { -- "node": ">=8" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -- } -- }, -- "node_modules/style-search": { -- "version": "0.1.0", -- "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", -- "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true - }, -- "node_modules/stylelint": { -- "version": "15.10.1", -- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.1.tgz", -- "integrity": "sha512-CYkzYrCFfA/gnOR+u9kJ1PpzwG10WLVnoxHDuBA/JiwGqdM9+yx9+ou6SE/y9YHtfv1mcLo06fdadHTOx4gBZQ==", -- "dev": true, -- "dependencies": { -- "@csstools/css-parser-algorithms": "^2.3.0", -- "@csstools/css-tokenizer": "^2.1.1", -- "@csstools/media-query-list-parser": "^2.1.2", -- "@csstools/selector-specificity": "^3.0.0", -+ "stylelint": { -+ "version": "16.9.0", -+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", -+ "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", -+ "dev": true, -+ "requires": { -+ "@csstools/css-parser-algorithms": "^3.0.1", -+ "@csstools/css-tokenizer": "^3.0.1", -+ "@csstools/media-query-list-parser": "^3.0.1", -+ "@csstools/selector-specificity": "^4.0.0", -+ "@dual-bundle/import-meta-resolve": "^4.1.0", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", -- "cosmiconfig": "^8.2.0", -- "css-functions-list": "^3.1.0", -+ "cosmiconfig": "^9.0.0", -+ "css-functions-list": "^3.2.2", - "css-tree": "^2.3.1", -- "debug": "^4.3.4", -- "fast-glob": "^3.3.0", -+ "debug": "^4.3.6", -+ "fast-glob": "^3.3.2", - "fastest-levenshtein": "^1.0.16", -- "file-entry-cache": "^6.0.1", -+ "file-entry-cache": "^9.0.0", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", -- "ignore": "^5.2.4", -- "import-lazy": "^4.0.0", -+ "ignore": "^5.3.2", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", -- "known-css-properties": "^0.27.0", -+ "known-css-properties": "^0.34.0", - "mathml-tag-names": "^2.1.3", -- "meow": "^10.1.5", -- "micromatch": "^4.0.5", -+ "meow": "^13.2.0", -+ "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", -- "picocolors": "^1.0.0", -- "postcss": "^8.4.24", -- "postcss-resolve-nested-selector": "^0.1.1", -- "postcss-safe-parser": "^6.0.0", -- "postcss-selector-parser": "^6.0.13", -+ "picocolors": "^1.0.1", -+ "postcss": "^8.4.41", -+ "postcss-resolve-nested-selector": "^0.1.6", -+ "postcss-safe-parser": "^7.0.0", -+ "postcss-selector-parser": "^6.1.2", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", -- "strip-ansi": "^6.0.1", -- "style-search": "^0.1.0", -- "supports-hyperlinks": "^3.0.0", -+ "strip-ansi": "^7.1.0", -+ "supports-hyperlinks": "^3.1.0", - "svg-tags": "^1.0.0", -- "table": "^6.8.1", -+ "table": "^6.8.2", - "write-file-atomic": "^5.0.1" - }, -- "bin": { -- "stylelint": "bin/stylelint.mjs" -- }, -- "engines": { -- "node": "^14.13.1 || >=16.0.0" -- }, -- "funding": { -- "type": "opencollective", -- "url": "https://opencollective.com/stylelint" -+ "dependencies": { -+ "balanced-match": { -+ "version": "2.0.0", -+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", -+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", -+ "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 -+ }, -+ "file-entry-cache": { -+ "version": "9.1.0", -+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", -+ "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", -+ "dev": true, -+ "requires": { -+ "flat-cache": "^5.0.0" -+ } -+ }, -+ "flat-cache": { -+ "version": "5.0.0", -+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", -+ "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", -+ "dev": true, -+ "requires": { -+ "flatted": "^3.3.1", -+ "keyv": "^4.5.4" -+ } -+ }, -+ "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 -+ }, -+ "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" -+ }, -+ "dependencies": { -+ "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": { -+ "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" -+ }, -+ "dependencies": { -+ "ansi-regex": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", -+ "dev": true -+ } -+ } -+ } - } - }, -- "node_modules/stylelint-config-recommended": { -- "version": "12.0.0", -- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz", -- "integrity": "sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==", -+ "stylelint-config-recommended": { -+ "version": "14.0.1", -+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", -+ "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", - "dev": true, -- "peerDependencies": { -- "stylelint": "^15.5.0" -- } -+ "requires": {} - }, -- "node_modules/stylelint-config-recommended-scss": { -- "version": "12.0.0", -- "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-12.0.0.tgz", -- "integrity": "sha512-5Bb2mlGy6WLa30oNeKpZvavv2lowJUsUJO25+OA68GFTemlwd1zbFsL7q0bReKipOSU3sG47hKneZ6Nd+ctrFA==", -+ "stylelint-config-recommended-scss": { -+ "version": "14.0.0", -+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz", -+ "integrity": "sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==", - "dev": true, -- "dependencies": { -- "postcss-scss": "^4.0.6", -- "stylelint-config-recommended": "^12.0.0", -- "stylelint-scss": "^5.0.0" -- }, -- "peerDependencies": { -- "postcss": "^8.3.3", -- "stylelint": "^15.5.0" -- }, -- "peerDependenciesMeta": { -- "postcss": { -- "optional": true -- } -+ "requires": { -+ "postcss-scss": "^4.0.9", -+ "stylelint-config-recommended": "^14.0.0", -+ "stylelint-scss": "^6.0.0" - } - }, -- "node_modules/stylelint-config-standard": { -- "version": "33.0.0", -- "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-33.0.0.tgz", -- "integrity": "sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==", -+ "stylelint-config-standard": { -+ "version": "36.0.1", -+ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", -+ "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", - "dev": true, -- "dependencies": { -- "stylelint-config-recommended": "^12.0.0" -- }, -- "peerDependencies": { -- "stylelint": "^15.5.0" -+ "requires": { -+ "stylelint-config-recommended": "^14.0.1" - } - }, -- "node_modules/stylelint-config-standard-scss": { -- "version": "10.0.0", -- "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-10.0.0.tgz", -- "integrity": "sha512-bChBEo1p3xUVWh/wenJI+josoMk21f2yuLDGzGjmKYcALfl2u3DFltY+n4UHswYiXghqXaA8mRh+bFy/q1hQlg==", -+ "stylelint-config-standard-scss": { -+ "version": "13.1.0", -+ "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz", -+ "integrity": "sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==", - "dev": true, -- "dependencies": { -- "stylelint-config-recommended-scss": "^12.0.0", -- "stylelint-config-standard": "^33.0.0" -- }, -- "peerDependencies": { -- "postcss": "^8.3.3", -- "stylelint": "^15.5.0" -- }, -- "peerDependenciesMeta": { -- "postcss": { -- "optional": true -- } -+ "requires": { -+ "stylelint-config-recommended-scss": "^14.0.0", -+ "stylelint-config-standard": "^36.0.0" - } - }, -- "node_modules/stylelint-formatter-pretty": { -- "version": "3.2.0", -- "resolved": "https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-3.2.0.tgz", -- "integrity": "sha512-qUGdmJIKFcNamAgkf/I0NraOxlLqclSoAmBameWNR5EsOvm0Kwy2iMYi5z9hbQhFaCZ+TWSbwHmkB6XNbJWrQw==", -+ "stylelint-formatter-pretty": { -+ "version": "4.0.1", -+ "resolved": "https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-4.0.1.tgz", -+ "integrity": "sha512-39nasPN8QNdMBq2eghI/SwpyVKx8kJGtmE/KJ5oFvCg0ZvZ5qjJbQgEulzC0gT70XZ+iRk7p1W5tE9IBQhFjPw==", - "dev": true, -- "funding": [ -- { -- "type": "kofi", -- "url": "https://ko-fi.com/mrcgrtz" -- }, -- { -- "type": "liberapay", -- "url": "https://liberapay.com/mrcgrtz/" -- } -- ], -- "dependencies": { -- "ansi-escapes": "~4.3.2", -- "log-symbols": "~4.1.0", -+ "requires": { -+ "ansi-escapes": "^7.0.0", -+ "log-symbols": "^7.0.0", - "picocolors": "^1.0.0", -- "plur": "~4.0.0", -- "string-width": "~4.2.2", -+ "plur": "^5.1.0", -+ "string-width": "^7.0.0", - "supports-hyperlinks": "^3.0.0" - }, -- "engines": { -- "node": ">=14" -+ "dependencies": { -+ "ansi-regex": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", -+ "dev": true -+ }, -+ "emoji-regex": { -+ "version": "10.4.0", -+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", -+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", -+ "dev": true -+ }, -+ "string-width": { -+ "version": "7.2.0", -+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", -+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", -+ "dev": true, -+ "requires": { -+ "emoji-regex": "^10.3.0", -+ "get-east-asian-width": "^1.0.0", -+ "strip-ansi": "^7.1.0" -+ } -+ }, -+ "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" -+ } -+ } - } - }, -- "node_modules/stylelint-scss": { -- "version": "5.0.1", -- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.0.1.tgz", -- "integrity": "sha512-n87iCRZrr2J7//I/QFsDXxFLnHKw633U4qvWZ+mOW6KDAp/HLj06H+6+f9zOuTYy+MdGdTuCSDROCpQIhw5fvQ==", -+ "stylelint-scss": { -+ "version": "6.11.0", -+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.11.0.tgz", -+ "integrity": "sha512-AvJ6LVzz2iXHxPlPTR9WVy73FC/vmohH54VySNlCKX1NIXNAeuzy/VbIkMJLMyw/xKYqkgY4kAgB+qy5BfCaCg==", - "dev": true, -- "dependencies": { -+ "requires": { -+ "css-tree": "^3.0.1", -+ "is-plain-object": "^5.0.0", -+ "known-css-properties": "^0.35.0", -+ "mdn-data": "^2.15.0", - "postcss-media-query-parser": "^0.2.3", -- "postcss-resolve-nested-selector": "^0.1.1", -- "postcss-selector-parser": "^6.0.13", -+ "postcss-resolve-nested-selector": "^0.1.6", -+ "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.2.0" - }, -- "peerDependencies": { -- "stylelint": "^14.5.1 || ^15.0.0" -- } -- }, -- "node_modules/stylelint/node_modules/balanced-match": { -- "version": "2.0.0", -- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", -- "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", -- "dev": true -- }, -- "node_modules/stylelint/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/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-hyperlinks": { -- "version": "3.0.0", -- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", -- "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", -- "dev": true, - "dependencies": { -- "has-flag": "^4.0.0", -- "supports-color": "^7.0.0" -- }, -- "engines": { -- "node": ">=14.18" -+ "css-tree": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", -+ "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", -+ "dev": true, -+ "requires": { -+ "mdn-data": "2.12.2", -+ "source-map-js": "^1.0.1" -+ }, -+ "dependencies": { -+ "mdn-data": { -+ "version": "2.12.2", -+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", -+ "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", -+ "dev": true -+ } -+ } -+ }, -+ "known-css-properties": { -+ "version": "0.35.0", -+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", -+ "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", -+ "dev": true -+ }, -+ "mdn-data": { -+ "version": "2.15.0", -+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.15.0.tgz", -+ "integrity": "sha512-KIrS0lFPOqA4DgeO16vI5fkAsy8p++WBlbXtB5P1EQs8ubBgguAInNd1DnrCeTRfGchY0kgThgDOOIPyOLH2dQ==", -+ "dev": true -+ }, -+ "postcss-selector-parser": { -+ "version": "7.0.0", -+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", -+ "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", -+ "dev": true, -+ "requires": { -+ "cssesc": "^3.0.0", -+ "util-deprecate": "^1.0.2" -+ } -+ } - } - }, -- "node_modules/supports-hyperlinks/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==", -+ "stylelint-use-logical-spec": { -+ "version": "5.0.1", -+ "resolved": "https://registry.npmjs.org/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz", -+ "integrity": "sha512-UfLB4LW6iG4r3cXxjxkiHQrFyhWFqt8FpNNngD+TyvgMWSokk5TYwTvBHS3atUvZhOogllTOe/PUrGE+4z84AA==", - "dev": true, -- "engines": { -- "node": ">=8" -- } -+ "requires": {} - }, -- "node_modules/supports-hyperlinks/node_modules/supports-color": { -+ "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": { -+ "requires": { - "has-flag": "^4.0.0" -- }, -- "engines": { -- "node": ">=8" - } - }, -- "node_modules/supports-preserve-symlinks-flag": { -+ "supports-hyperlinks": { -+ "version": "3.1.0", -+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", -+ "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", -+ "dev": true, -+ "requires": { -+ "has-flag": "^4.0.0", -+ "supports-color": "^7.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, -- "engines": { -- "node": ">= 0.4" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -- } -+ "dev": true - }, -- "node_modules/svg-tags": { -+ "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, -- "node_modules/tabbable": { -- "version": "5.3.3", -- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", -- "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" -+ "sync-child-process": { -+ "version": "1.0.2", -+ "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", -+ "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", -+ "dev": true, -+ "peer": true, -+ "requires": { -+ "sync-message-port": "^1.0.0" -+ } - }, -- "node_modules/table": { -- "version": "6.8.1", -- "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", -- "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", -+ "sync-message-port": { -+ "version": "1.1.3", -+ "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", -+ "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", - "dev": true, -- "dependencies": { -+ "peer": true -+ }, -+ "tabbable": { -+ "version": "6.2.0", -+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", -+ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" -+ }, -+ "table": { -+ "version": "6.9.0", -+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", -+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", -+ "dev": true, -+ "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, -- "engines": { -- "node": ">=10.0.0" -- } -- }, -- "node_modules/table/node_modules/ajv": { -- "version": "8.12.0", -- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", -- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", -- "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" -+ "ajv": { -+ "version": "8.17.1", -+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", -+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", -+ "dev": true, -+ "requires": { -+ "fast-deep-equal": "^3.1.3", -+ "fast-uri": "^3.0.1", -+ "json-schema-traverse": "^1.0.0", -+ "require-from-string": "^2.0.2" -+ } -+ }, -+ "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 -+ }, -+ "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 -+ }, -+ "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" -+ } -+ } - } - }, -- "node_modules/table/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/text-table": { -+ "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, -- "node_modules/tiny-glob": { -+ "throttle-debounce": { -+ "version": "5.0.2", -+ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", -+ "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==" -+ }, -+ "tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, -- "dependencies": { -+ "requires": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, -- "node_modules/tippy.js": { -- "version": "5.1.2", -- "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-5.1.2.tgz", -- "integrity": "sha512-Qtrv2wqbRbaKMUb6bWWBQWPayvcDKNrGlvihxtsyowhT7RLGEh1STWuy6EMXC6QLkfKPB2MLnf8W2mzql9VDAw==", -- "dependencies": { -- "popper.js": "^1.16.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, -- "peer": true, -- "engines": { -- "node": ">=4" -- } -- }, -- "node_modules/to-regex-range": { -+ "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": { -+ "requires": { - "is-number": "^7.0.0" -- }, -- "engines": { -- "node": ">=8.0" - } - }, -- "node_modules/trim-newlines": { -- "version": "4.1.1", -- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", -- "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", -+ "ts-api-utils": { -+ "version": "1.4.3", -+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", -+ "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, -- "engines": { -- "node": ">=12" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -- } -+ "requires": {} - }, -- "node_modules/tsconfig-paths": { -- "version": "3.14.2", -- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", -- "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", -+ "tsconfig-paths": { -+ "version": "3.15.0", -+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", -+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, -- "dependencies": { -+ "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, -- "node_modules/tsconfig-paths/node_modules/json5": { -- "version": "1.0.2", -- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", -- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", -- "dev": true, -- "dependencies": { -- "minimist": "^1.2.0" -- }, -- "bin": { -- "json5": "lib/cli.js" -- } -- }, -- "node_modules/tslib": { -- "version": "2.5.3", -- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", -- "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" -+ "tslib": { -+ "version": "2.8.1", -+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", -+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, -- "node_modules/type-check": { -+ "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, -- "dependencies": { -+ "requires": { - "prelude-ls": "^1.2.1" -- }, -- "engines": { -- "node": ">= 0.8.0" - } - }, -- "node_modules/type-fest": { -- "version": "1.4.0", -- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", -- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", -+ "type-fest": { -+ "version": "0.20.2", -+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", -+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", -+ "dev": true -+ }, -+ "typed-array-buffer": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", -+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, -- "engines": { -- "node": ">=10" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -+ "requires": { -+ "call-bound": "^1.0.3", -+ "es-errors": "^1.3.0", -+ "is-typed-array": "^1.1.14" - } - }, -- "node_modules/typed-array-length": { -- "version": "1.0.4", -- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", -- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", -+ "typed-array-byte-length": { -+ "version": "1.0.3", -+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", -+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, -- "dependencies": { -- "call-bind": "^1.0.2", -+ "requires": { -+ "call-bind": "^1.0.8", - "for-each": "^0.3.3", -- "is-typed-array": "^1.1.9" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "gopd": "^1.2.0", -+ "has-proto": "^1.2.0", -+ "is-typed-array": "^1.1.14" - } - }, -- "node_modules/unbox-primitive": { -- "version": "1.0.2", -- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", -- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", -+ "typed-array-byte-offset": { -+ "version": "1.0.4", -+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", -+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, -- "dependencies": { -- "call-bind": "^1.0.2", -- "has-bigints": "^1.0.2", -- "has-symbols": "^1.0.3", -- "which-boxed-primitive": "^1.0.2" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "requires": { -+ "available-typed-arrays": "^1.0.7", -+ "call-bind": "^1.0.8", -+ "for-each": "^0.3.3", -+ "gopd": "^1.2.0", -+ "has-proto": "^1.2.0", -+ "is-typed-array": "^1.1.15", -+ "reflect.getprototypeof": "^1.0.9" - } - }, -- "node_modules/universalify": { -- "version": "2.0.0", -- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", -- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", -- "dev": true, -- "engines": { -- "node": ">= 10.0.0" -+ "typed-array-length": { -+ "version": "1.0.7", -+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", -+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", -+ "dev": true, -+ "requires": { -+ "call-bind": "^1.0.7", -+ "for-each": "^0.3.3", -+ "gopd": "^1.0.1", -+ "is-typed-array": "^1.1.13", -+ "possible-typed-array-names": "^1.0.0", -+ "reflect.getprototypeof": "^1.0.6" - } - }, -- "node_modules/update-browserslist-db": { -- "version": "1.0.11", -- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", -- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", -+ "typescript": { -+ "version": "5.7.3", -+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", -+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", -+ "dev": true -+ }, -+ "unbox-primitive": { -+ "version": "1.1.0", -+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", -+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "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" -- } -- ], -- "peer": true, -- "dependencies": { -- "escalade": "^3.1.1", -- "picocolors": "^1.0.0" -- }, -- "bin": { -- "update-browserslist-db": "cli.js" -- }, -- "peerDependencies": { -- "browserslist": ">= 4.21.0" -+ "requires": { -+ "call-bound": "^1.0.3", -+ "has-bigints": "^1.0.2", -+ "has-symbols": "^1.1.0", -+ "which-boxed-primitive": "^1.1.1" - } - }, -- "node_modules/uri-js": { -+ "universalify": { -+ "version": "2.0.1", -+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", -+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", -+ "dev": true -+ }, -+ "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": { -+ "requires": { - "punycode": "^2.1.0" - } - }, -- "node_modules/util-deprecate": { -+ "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", -- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", -- "dev": true -+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, -- "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==", -+ "uuid": { -+ "version": "10.0.0", -+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", -+ "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" -+ }, -+ "varint": { -+ "version": "6.0.0", -+ "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", -+ "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "dev": true, -- "dependencies": { -- "spdx-correct": "^3.0.0", -- "spdx-expression-parse": "^3.0.0" -+ "peer": true -+ }, -+ "victory-area": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-37.3.6.tgz", -+ "integrity": "sha512-wVC8LKrZJLiSySNuJLRCB449qZTsPiRyzLlNoJwe21y+XA/a2HJbmJSeywmo8P153aX8viKe1H8ygDsTFXQhHw==", -+ "requires": { -+ "lodash": "^4.17.19", -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" - } - }, -- "node_modules/victory-area": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-36.6.10.tgz", -- "integrity": "sha512-4SRXvxupIe04SMKD8DSbh5ns0/bVw20Ylp4bDXXHgAIo47iu+NmqNxnZ2CKDJ7vxN0nWPy0piQ5jO1ubhTGFIg==", -- "dependencies": { -+ "victory-axis": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-37.3.6.tgz", -+ "integrity": "sha512-Vi0dZvgmXmnCdoqc49WckeG5cMXnl7FTtqVhXu9JweA9cgCnkZabBd5mRvAjblb3Lo4j0HZCSPKHYWUPW70qZg==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10", -- "victory-vendor": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/victory-axis": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-36.6.10.tgz", -- "integrity": "sha512-QsJrETq7mcM5AVBIPx7b31cwv901YaLGRHFWCIUGJgnKmaXdgBEl8cS9+VPrPnhhWhLeau2/LM5dENl1QwK2TQ==", -- "dependencies": { -+ "victory-bar": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-37.3.6.tgz", -+ "integrity": "sha512-jdATFRWL1LUW/yEpKWx/aId2BiU2o1pPF9+Kh1TFISBduJoI4ZqvZD90H1QK4f/z50PikqiqiDECaKoKM1jfOQ==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" - } - }, -- "node_modules/victory-bar": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-36.6.10.tgz", -- "integrity": "sha512-3kmFa3ZEKEx968xrobWzpPebwoDxya3Xqox088NFCopLQ24FoEPLZQboJJY5PM51gyT5GdU+rAqtFc2TG1bL/Q==", -- "dependencies": { -+ "victory-box-plot": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-37.3.6.tgz", -+ "integrity": "sha512-GOucnD63h14ScBuISC/nd1GBTEx6gIZfLE+0P0gyeH1poBKq0trTTvpQDvAMuGR8zICfEETG3ltmUMCwRrFyUg==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10", -- "victory-vendor": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" - } - }, -- "node_modules/victory-brush-container": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-36.6.10.tgz", -- "integrity": "sha512-iDqdMm1C2uVkRRdWQMzDR0lRCK9icEjCCVHbPVxOUqThc/wiBK3GJNq4EL2lhX1F5ONxiwHzZuzK2C59fDMbAA==", -- "dependencies": { -+ "victory-brush-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-37.3.6.tgz", -+ "integrity": "sha512-LfZ2CgX1cYAqCtYxcSB68OfZS2v0T2VLXoEArd0lCXfRBY1Gya7GacCUcuo7GoK9XOXeslx7S/U95aVutt1VLg==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", - "react-fast-compare": "^3.2.0", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/victory-chart": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-36.6.10.tgz", -- "integrity": "sha512-W1yAYX16nASA8xllGkO6VvUAAGe9BehQ+558fhXeznIX+P4yXJ2v8CJG7NXD+bdh+Xwoft6GWouwp2ycANBKyw==", -- "dependencies": { -+ "victory-chart": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-37.3.6.tgz", -+ "integrity": "sha512-IkPo/W4AJ7bPu902TGER09OseR9ODm+FQAKfOBw4JsdEhZZ7BiG9zgd/25+x0r5EsTLu81CYGQVkBa+ZazcOlA==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", - "react-fast-compare": "^3.2.0", -- "victory-axis": "^36.6.10", -- "victory-core": "^36.6.10", -- "victory-polar-axis": "^36.6.10", -- "victory-shared-events": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-axis": "37.3.6", -+ "victory-core": "37.3.6", -+ "victory-polar-axis": "37.3.6", -+ "victory-shared-events": "37.3.6" - } - }, -- "node_modules/victory-core": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.6.10.tgz", -- "integrity": "sha512-rXZh6Lm/ex/2pjQQr9kfmS1ebdpO/mYvHup1gFEqzpkTgVXag6QWV8PcZkEK07x9owcfnvgBlfJvYCE6h9NpcA==", -- "dependencies": { -+ "victory-core": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.3.6.tgz", -+ "integrity": "sha512-aFgO6KokxPbUCPznZP5UPhOdI22pMuwDXKDt6eoQOnkVim66Ia+K95TQar2nwVKGYV5j26aKVf/n9blwphGJRw==", -+ "requires": { - "lodash": "^4.17.21", -- "prop-types": "^15.8.1", - "react-fast-compare": "^3.2.0", -- "victory-vendor": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-vendor": "37.3.6" - } - }, -- "node_modules/victory-create-container": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-36.6.10.tgz", -- "integrity": "sha512-gIGWWNpbRbBtEJWsFpABDkZuuTe5SjhynWe2GaLLl2Hi2cYWoo/WWMef09ChfnuLOXodc0MG149KAle5j6Cq7Q==", -- "dependencies": { -+ "victory-create-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-37.3.6.tgz", -+ "integrity": "sha512-Uf5bFQvqUsXCjqpvBW4LhrdrHkM6dBqxYgub6FCsBb86f84xZQ3vY7jFkg/JfvF0oGKMoWXYYrYLC1sk+fcWVA==", -+ "requires": { - "lodash": "^4.17.19", -- "victory-brush-container": "^36.6.10", -- "victory-core": "^36.6.10", -- "victory-cursor-container": "^36.6.10", -- "victory-selection-container": "^36.6.10", -- "victory-voronoi-container": "^36.6.10", -- "victory-zoom-container": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -- } -- }, -- "node_modules/victory-cursor-container": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-36.6.10.tgz", -- "integrity": "sha512-o7zc5NObAwYqD51/9GYf+jD7tQtcXdmknKdYwxcN3uCLL/MQ2R1Ql3FdCyK+GjIlim6UXukJeWWhCelApEIOIQ==", -- "dependencies": { -+ "victory-brush-container": "37.3.6", -+ "victory-core": "37.3.6", -+ "victory-cursor-container": "37.3.6", -+ "victory-selection-container": "37.3.6", -+ "victory-voronoi-container": "37.3.6", -+ "victory-zoom-container": "37.3.6" -+ } -+ }, -+ "victory-cursor-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-37.3.6.tgz", -+ "integrity": "sha512-+Oiw57d5nE+iq8As8RvepknzmNtKq1Gsc50u1X3IRd4jXtX8zqZrgXGlVZ+BP/tkLsWnGYVjKulwKBf2oaEUuw==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/victory-group": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-36.6.10.tgz", -- "integrity": "sha512-Dt25PXQBuJaa5yR1/ke0MTgzYZ/yQMGyGWVwN1buPIEQ3h7E3tqTVcB5oNXLiQ80MMip3U3i/yj3oASuicIyQw==", -- "dependencies": { -+ "victory-group": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-37.3.6.tgz", -+ "integrity": "sha512-kgy/Azl5BxwlJAV0KDPGypv35TMrOD1J2ZxnJW2Wyyq+e8i0GGBIv5MoBzou64BRsDlS9V0CYRIjnkHgrBpB5w==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", - "react-fast-compare": "^3.2.0", -- "victory-core": "^36.6.10", -- "victory-shared-events": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6", -+ "victory-shared-events": "37.3.6" - } - }, -- "node_modules/victory-legend": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-36.6.10.tgz", -- "integrity": "sha512-+pKrkBBzcf1TxiwUsWlV6Vti+HRDvF4GUa15LTszt+J6LOoJIEFM7iNS2EuWBJRM30xkJKogDjn9NhngqRa/Aw==", -- "dependencies": { -+ "victory-legend": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-37.3.6.tgz", -+ "integrity": "sha512-vRRrhj3/ENqKVLdaBMzEmR83N6BOjox1bthYT1eJjN2H5SIK35bxn30IkiV/Pz3y627EqZe4TAWaxc0jiJlCiA==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/victory-line": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-36.6.10.tgz", -- "integrity": "sha512-hS7CC5AgD9hkzu9F/b01j+q9UJk2SErcVrU8EP2SEv92M2ISH2dbFoLL/mioAPPUkSBh03o/9DDCMu7YeiZspw==", -- "dependencies": { -+ "victory-line": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-37.3.6.tgz", -+ "integrity": "sha512-Ke817uf/qFbN9jU7Dba7CrcHXYO5wAZuKKnyeHJmLDeQeFST0773xejnIuC+dBgZipjFr4KIbSd+VcUafFNE1g==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10", -- "victory-vendor": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" - } - }, -- "node_modules/victory-pie": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-36.6.10.tgz", -- "integrity": "sha512-ZgNBS3TNs89kjLe05IGjYDN0GK2wf0DfZFUcXdopL/EosdhKyWAVI7txJ8cUUH1Nex8UGLuI8rfuY4wWPe7rkw==", -- "dependencies": { -+ "victory-pie": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-37.3.6.tgz", -+ "integrity": "sha512-tvdgAZ/HQWlo3KDDe0XAVbizHuaNMbgkkiF7zfA7Ww+3bHSs+0P9dsDtK2xP365D8gBCOv8pWmuzvKRhzNbqeA==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10", -- "victory-vendor": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6", -+ "victory-vendor": "37.3.6" - } - }, -- "node_modules/victory-polar-axis": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-36.6.10.tgz", -- "integrity": "sha512-fZt+Ww9nizkfhlqH/XvdSCiTyFcmprLl1vlPxQAHNmiLFYxDT9fmJYmcMKD/idLzVkK1HjLpHE2/jB+u4dGgmw==", -- "dependencies": { -+ "victory-polar-axis": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-37.3.6.tgz", -+ "integrity": "sha512-RpFsCkzHezJq5P+C/wtVdjEHX25JIFsSgs6qYSnfr/hayaFbWgK5HhRFpriQm5hg61cx47WxAOLyHvzf0nasvw==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/victory-scatter": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-36.6.10.tgz", -- "integrity": "sha512-gRTPkJzTluqFBBvEu3cetP/riKRHVkcO5xiK5mQ/6Rwg8iqQbsIE+QmGSngPAd9emYjy1qIWebPy92QN5/j/5A==", -- "dependencies": { -+ "victory-scatter": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-37.3.6.tgz", -+ "integrity": "sha512-fp95zMTPXgW1cmTowzDXhn+KxePMVDrzU0lotsHQMdBV7eB+ioXdu9hORlx4VHmMYg2ihsGwRTF+VAZ7rGxphA==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/victory-selection-container": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-36.6.10.tgz", -- "integrity": "sha512-jk7kqDepkTdML6NiOAz6ZQdhShm0MH4rO1lLnakA/2VYb7FpWtEYUNWs+v+OMaqzT067d3gzEqgQ5FljttuJDA==", -- "dependencies": { -+ "victory-selection-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-37.3.6.tgz", -+ "integrity": "sha512-gd3qODDlBtLEJM7+2jCXk2YcLBUmIpYEEHswytMhwc6zihxXipGBUHRulhLj/I05mKay2gaOAg5ewiJHd4Awgw==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/victory-shared-events": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-36.6.10.tgz", -- "integrity": "sha512-WPz0Xkz0EChnajm5qYACcFfStxnr7C885XDw8d7fpeJV+oMfdtdMRUKLtY7HatyIVn15dJhmx5jkLEiNveUnug==", -- "dependencies": { -+ "victory-shared-events": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.6.tgz", -+ "integrity": "sha512-ygrbOtzLUTbtKebacZKyQRekhSAROnAvMkVI/PKsAGsz0ClY9P7qDEJG7eTUUygjO6ax0tI6WNE6JogQzeD1gw==", -+ "requires": { - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", - "react-fast-compare": "^3.2.0", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/victory-stack": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-36.6.10.tgz", -- "integrity": "sha512-NPvpHFbR9E4z5HlDs0ERVsd0CPRBcsaParKaddG/te1U1eArEKOUxIoseT3J/Q22eaZoXI0x4E5zvqMddFNjCA==", -- "dependencies": { -+ "victory-stack": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-37.3.6.tgz", -+ "integrity": "sha512-ldod04RdqGJGH5p5eWXCofdTkbhZqIp3iwW7NpxSbMDLs8zPQIVvDFVtuJgMwQiC5vnIpbhMmxVeFbr8m64ZKA==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", - "react-fast-compare": "^3.2.0", -- "victory-core": "^36.6.10", -- "victory-shared-events": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6", -+ "victory-shared-events": "37.3.6" - } - }, -- "node_modules/victory-tooltip": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-36.6.10.tgz", -- "integrity": "sha512-if1pSHJQCScPFThhz7qChYqGScRn0rbAm1Vis/ceRuTRryza4a/pOoYL0unQCZSV6q/pd0WYz7P2Pc4STNpS/Q==", -- "dependencies": { -+ "victory-tooltip": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-37.3.6.tgz", -+ "integrity": "sha512-vqaJS9noauOqDDBBAV9Ln9duOY/i17h1DCfCPAqhwPFyvFbwKvAub9zPTeYWAm/14VvWX5O/0yekFCVbcC7hjg==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/victory-vendor": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.6.10.tgz", -- "integrity": "sha512-7YqYGtsA4mByokBhCjk+ewwPhUfzhR1I3Da6/ZsZUv/31ceT77RKoaqrxRq5Ki+9we4uzf7+A+7aG2sfYhm7nA==", -- "dependencies": { -+ "victory-vendor": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", -+ "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", -+ "requires": { - "@types/d3-array": "^3.0.3", - "@types/d3-ease": "^3.0.0", - "@types/d3-interpolate": "^3.0.1", -@@ -6485,161 +13870,200 @@ - "d3-timer": "^3.0.1" - } - }, -- "node_modules/victory-voronoi-container": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-36.6.10.tgz", -- "integrity": "sha512-uAMr5SYg2RQE7nN6i0/v40QX/+9GdsnoEXy7qldONp+7O/YaeIHF5s5Tgw4hi3NT5Ge0TzhyHm8tBna2KDK+lg==", -- "dependencies": { -+ "victory-voronoi-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-37.3.6.tgz", -+ "integrity": "sha512-qAAG0rMuK7A4EoJ4cyUk5wNdOW+HuCXNKPOko+hYK6wWOYXJvFhiglYyA85a695YyAXECc6JyJS/crm4IOEFag==", -+ "requires": { - "delaunay-find": "0.0.6", - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", - "react-fast-compare": "^3.2.0", -- "victory-core": "^36.6.10", -- "victory-tooltip": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -+ "victory-core": "37.3.6", -+ "victory-tooltip": "37.3.6" - } - }, -- "node_modules/victory-zoom-container": { -- "version": "36.6.10", -- "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-36.6.10.tgz", -- "integrity": "sha512-PwVBFhVsRBSSbq+UUqDS/udlwIahn8NOBeRSeDhKErFR5+3zNUdS9P2nUnqb2yJHXSzFMM2/slMAdPOAyzEG4g==", -- "dependencies": { -+ "victory-zoom-container": { -+ "version": "37.3.6", -+ "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-37.3.6.tgz", -+ "integrity": "sha512-AGL+k20mI44OL5b0VgIxlmnNSefIoFmbbim5NraPmIxbtns9qQW/56ivIncJcYomBungIx99gUpsEpcQaMNHgQ==", -+ "requires": { - "lodash": "^4.17.19", -- "prop-types": "^15.8.1", -- "victory-core": "^36.6.10" -- }, -- "peerDependencies": { -- "react": ">=16.6.0" -- } -- }, -- "node_modules/warning": { -- "version": "4.0.3", -- "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", -- "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", -- "dependencies": { -- "loose-envify": "^1.0.0" -+ "victory-core": "37.3.6" - } - }, -- "node_modules/which": { -+ "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, -- "dependencies": { -+ "requires": { - "isexe": "^2.0.0" -- }, -- "bin": { -- "node-which": "bin/node-which" -- }, -- "engines": { -- "node": ">= 8" - } - }, -- "node_modules/which-boxed-primitive": { -+ "which-boxed-primitive": { -+ "version": "1.1.1", -+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", -+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", -+ "dev": true, -+ "requires": { -+ "is-bigint": "^1.1.0", -+ "is-boolean-object": "^1.2.1", -+ "is-number-object": "^1.1.1", -+ "is-string": "^1.1.1", -+ "is-symbol": "^1.1.1" -+ } -+ }, -+ "which-builtin-type": { -+ "version": "1.2.1", -+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", -+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", -+ "dev": true, -+ "requires": { -+ "call-bound": "^1.0.2", -+ "function.prototype.name": "^1.1.6", -+ "has-tostringtag": "^1.0.2", -+ "is-async-function": "^2.0.0", -+ "is-date-object": "^1.1.0", -+ "is-finalizationregistry": "^1.1.0", -+ "is-generator-function": "^1.0.10", -+ "is-regex": "^1.2.1", -+ "is-weakref": "^1.0.2", -+ "isarray": "^2.0.5", -+ "which-boxed-primitive": "^1.1.0", -+ "which-collection": "^1.0.2", -+ "which-typed-array": "^1.1.16" -+ } -+ }, -+ "which-collection": { - "version": "1.0.2", -- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", -- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", -+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", -+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, -- "dependencies": { -- "is-bigint": "^1.0.1", -- "is-boolean-object": "^1.1.0", -- "is-number-object": "^1.0.4", -- "is-string": "^1.0.5", -- "is-symbol": "^1.0.3" -- }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "requires": { -+ "is-map": "^2.0.3", -+ "is-set": "^2.0.3", -+ "is-weakmap": "^2.0.2", -+ "is-weakset": "^2.0.3" - } - }, -- "node_modules/which-typed-array": { -- "version": "1.1.9", -- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", -- "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", -+ "which-typed-array": { -+ "version": "1.1.18", -+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", -+ "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", - "dev": true, -- "dependencies": { -- "available-typed-arrays": "^1.0.5", -- "call-bind": "^1.0.2", -+ "requires": { -+ "available-typed-arrays": "^1.0.7", -+ "call-bind": "^1.0.8", -+ "call-bound": "^1.0.3", - "for-each": "^0.3.3", -- "gopd": "^1.0.1", -- "has-tostringtag": "^1.0.0", -- "is-typed-array": "^1.1.10" -+ "gopd": "^1.2.0", -+ "has-tostringtag": "^1.0.2" -+ } -+ }, -+ "word-wrap": { -+ "version": "1.2.5", -+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", -+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", -+ "dev": true -+ }, -+ "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" - }, -- "engines": { -- "node": ">= 0.4" -+ "dependencies": { -+ "ansi-regex": { -+ "version": "6.1.0", -+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", -+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", -+ "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 -+ }, -+ "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-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" - }, -- "funding": { -- "url": "https://github.com/sponsors/ljharb" -+ "dependencies": { -+ "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 -+ }, -+ "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" -+ } -+ } - } - }, -- "node_modules/wrappy": { -+ "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/write-file-atomic": { -+ "write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, -- "dependencies": { -+ "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" -- }, -- "engines": { -- "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, -- "node_modules/ws": { -+ "ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "dev": true, -- "engines": { -- "node": ">=8.3.0" -- }, -- "peerDependencies": { -- "bufferutil": "^4.0.1", -- "utf-8-validate": "^5.0.2" -- }, -- "peerDependenciesMeta": { -- "bufferutil": { -- "optional": true -- }, -- "utf-8-validate": { -- "optional": true -- } -- } -- }, -- "node_modules/yallist": { -- "version": "3.1.1", -- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", -- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", -- "dev": true, -- "peer": true -- }, -- "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" -- } -+ "requires": {} - }, -- "node_modules/yocto-queue": { -+ "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", -- "dev": true, -- "engines": { -- "node": ">=10" -- }, -- "funding": { -- "url": "https://github.com/sponsors/sindresorhus" -- } -+ "dev": true -+ }, -+ "yoctocolors": { -+ "version": "2.1.1", -+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", -+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", -+ "dev": true - } - } - } -diff --git a/src/cockpit/389-console/package.json b/src/cockpit/389-console/package.json -index a4f09a777..0680f26f2 100644 ---- a/src/cockpit/389-console/package.json -+++ b/src/cockpit/389-console/package.json -@@ -19,48 +19,67 @@ - "stylelint:fix": "stylelint --fix src/*{.css,scss}" - }, - "devDependencies": { -- "argparse": "^2.0.1", -+ "@types/qunit": "^2.19.10", -+ "@types/react": "18.3.11", -+ "@types/react-dom": "18.3.0", -+ "@typescript-eslint/eslint-plugin": "8.8.0", -+ "argparse": "2.0.1", - "chrome-remote-interface": "^0.32.1", -- "esbuild": "^0.17.15", -- "esbuild-plugin-copy": "^2.1.1", -- "esbuild-plugin-replace": "^1.3.0", -- "esbuild-sass-plugin": "^2.8.0", -- "esbuild-wasm": "^0.17.16", -- "eslint": "^8.13.0", -- "eslint-config-standard": "^17.0.0-1", -- "eslint-config-standard-jsx": "^11.0.0-1", -- "eslint-config-standard-react": "^13.0.0", -- "eslint-plugin-flowtype": "^8.0.3", -- "eslint-plugin-import": "^2.26.0", -- "eslint-plugin-node": "^11.1.0", -- "eslint-plugin-promise": "^6.0.0", -- "eslint-plugin-react": "^7.29.4", -- "eslint-plugin-react-hooks": "^4.4.0", -- "htmlparser": "^1.7.7", -- "jed": "^1.1.1", -+ "esbuild": "0.24.0", -+ "esbuild-plugin-copy": "2.1.1", -+ "esbuild-plugin-replace": "1.4.0", -+ "esbuild-sass-plugin": "3.3.1", -+ "esbuild-wasm": "0.24.0", -+ "eslint": "8.57.1", -+ "eslint-config-standard": "17.1.0", -+ "eslint-config-standard-jsx": "11.0.0", -+ "eslint-config-standard-react": "13.0.0", -+ "eslint-plugin-import": "2.31.0", -+ "eslint-plugin-jsx-a11y": "6.10.0", -+ "eslint-plugin-node": "11.1.0", -+ "eslint-plugin-promise": "6.6.0", -+ "eslint-plugin-react": "7.37.1", -+ "eslint-plugin-react-hooks": "4.6.2", -+ "glob": "11.0.0", -+ "htmlparser": "1.7.7", -+ "jed": "1.1.1", - "po2json": "^1.0.0-alpha", -- "qunit": "^2.9.3", -- "sass": "^1.61.0", -- "sizzle": "^2.3.3", -- "stylelint": "^15.10.1", -- "stylelint-config-standard": "^33.0.0", -- "stylelint-config-standard-scss": "^10.0.0", -- "stylelint-formatter-pretty": "^3.2.0" -+ "qunit": "2.22.0", -+ "qunit-tap": "1.5.1", -+ "sass": "1.79.4", -+ "sizzle": "2.3.10", -+ "stylelint": "16.9.0", -+ "stylelint-config-recommended-scss": "14.0.0", -+ "stylelint-config-standard": "36.0.1", -+ "stylelint-config-standard-scss": "13.1.0", -+ "stylelint-formatter-pretty": "4.0.1", -+ "stylelint-use-logical-spec": "5.0.1", -+ "typescript": "^5.3.3" - }, - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^1.2.34", - "@fortawesome/free-solid-svg-icons": "^5.15.2", - "@fortawesome/react-fontawesome": "^0.1.14", -- "@patternfly/patternfly": ">=4.90.3", -- "@patternfly/react-charts": "^6.34.1", -- "@patternfly/react-core": "^4.181.1", -- "@patternfly/react-icons": "^4.8.4", -- "@patternfly/react-styles": "^4.92.6", -- "@patternfly/react-table": "^4.50.1", -+ "@patternfly/patternfly": "5.4.1", -+ "@patternfly/react-charts": "7.4.3", -+ "@patternfly/react-core": "5.4.1", -+ "@patternfly/react-icons": "5.4.0", -+ "@patternfly/react-styles": "5.4.0", -+ "@patternfly/react-table": "5.4.1", -+ "@patternfly/react-tokens": "5.4.0", -+ "dequal": "2.0.3", - "eslint-plugin-react-hooks": "^4.2.0", - "gettext-parser": "^2.0.0", -- "prop-types": "^15.7.2", -- "react": "17.0.2", -- "react-dom": "17.0.2" -+ "js-sha1": "0.7.0", -+ "js-sha256": "0.11.0", -+ "json-stable-stringify-without-jsonify": "1.0.1", -+ "prop-types": "15.8.1", -+ "react": "18.3.1", -+ "react-dom": "18.3.1", -+ "remarkable": "2.0.1", -+ "throttle-debounce": "5.0.2", -+ "uuid": "10.0.0", -+ "@xterm/xterm": "5.5.0", -+ "@xterm/addon-canvas": "0.7.0" - } - } -diff --git a/src/cockpit/389-console/pkg/lib/README b/src/cockpit/389-console/pkg/lib/README -index bb0c6ef41..7677e539f 100644 ---- a/src/cockpit/389-console/pkg/lib/README -+++ b/src/cockpit/389-console/pkg/lib/README -@@ -1,5 +1,5 @@ - # Cockpit shared components - --This directory contains React components, JavaScript modules, webpack/esbuild -+This directory contains React components, JavaScript modules, esbuild - plugins, and build tools which are shared between all Cockpit projects. - External projects usually clone this directory into their own source tree. -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-context-menu.tsx b/src/cockpit/389-console/pkg/lib/cockpit-components-context-menu.tsx -new file mode 100644 -index 000000000..dd728168b ---- /dev/null -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-context-menu.tsx -@@ -0,0 +1,103 @@ -+/* -+ * This file is part of Cockpit. -+ * -+ * Copyright (C) 2019 Red Hat, Inc. -+ * -+ * Cockpit is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU Lesser General Public License as published by -+ * the Free Software Foundation; either version 2.1 of the License, or -+ * (at your option) any later version. -+ * -+ * Cockpit is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with Cockpit; If not, see . -+ */ -+ -+import React from "react"; -+ -+import { Menu, MenuContent } from "@patternfly/react-core/dist/esm/components/Menu"; -+ -+import "context-menu.scss"; -+ -+/* -+ * A context menu component -+ * -+ * It has two properties: -+ * - parentId (required), area in which it listens to left button click -+ * - children (optional), a MenuList to be rendered in the context menu -+ */ -+export const ContextMenu = ({ parentId, children } : { -+ parentId: string, -+ children?: React.ReactNode, -+}) => { -+ const [visible, setVisible] = React.useState(false); -+ const [event, setEvent] = React.useState(null); -+ const root = React.useRef(null); -+ -+ React.useEffect(() => { -+ const _handleContextMenu = (event: MouseEvent) => { -+ event.preventDefault(); -+ -+ setVisible(true); -+ setEvent(event); -+ }; -+ -+ const _handleClick = (event: MouseEvent) => { -+ if (event.button === 0) -+ setVisible(false); -+ }; -+ -+ const parent = document.getElementById(parentId)!; -+ parent.addEventListener('contextmenu', _handleContextMenu); -+ document.addEventListener('click', _handleClick); -+ -+ return () => { -+ parent.removeEventListener('contextmenu', _handleContextMenu); -+ document.removeEventListener('click', _handleClick); -+ }; -+ }, [parentId]); -+ -+ React.useEffect(() => { -+ if (!event || !root.current) -+ return; -+ -+ const clickX = event.clientX; -+ const clickY = event.clientY; -+ const screenW = window.innerWidth; -+ const screenH = window.innerHeight; -+ const rootW = root.current.offsetWidth; -+ const rootH = root.current.offsetHeight; -+ -+ const right = (screenW - clickX) > rootW; -+ const left = !right; -+ const top = (screenH - clickY) > rootH; -+ const bottom = !top; -+ -+ if (right) { -+ root.current.style.left = `${clickX + 5}px`; -+ } -+ -+ if (left) { -+ root.current.style.left = `${clickX - rootW - 5}px`; -+ } -+ -+ if (top) { -+ root.current.style.top = `${clickY + 5}px`; -+ } -+ -+ if (bottom) { -+ root.current.style.top = `${clickY - rootH - 5}px`; -+ } -+ }, [event]); -+ -+ return visible && -+ -+ -+ {children} -+ -+ ; -+}; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-dialog.jsx b/src/cockpit/389-console/pkg/lib/cockpit-components-dialog.jsx -index 517d50074..90e0371ec 100644 ---- a/src/cockpit/389-console/pkg/lib/cockpit-components-dialog.jsx -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-dialog.jsx -@@ -14,7 +14,7 @@ - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License -- * along with Cockpit; If not, see . -+ * along with Cockpit; If not, see . - */ - - import cockpit from "cockpit"; -@@ -25,7 +25,6 @@ import { Alert } from "@patternfly/react-core/dist/esm/components/Alert/index.js - import { Button } from "@patternfly/react-core/dist/esm/components/Button/index.js"; - import { Modal } from "@patternfly/react-core/dist/esm/components/Modal/index.js"; - import { Popover } from "@patternfly/react-core/dist/esm/components/Popover/index.js"; --import { Spinner } from "@patternfly/react-core/dist/esm/components/Spinner/index.js"; - import { Stack, StackItem } from "@patternfly/react-core/dist/esm/layouts/Stack/index.js"; - import { HelpIcon, ExternalLinkAltIcon } from '@patternfly/react-icons'; - -@@ -44,7 +43,7 @@ const _ = cockpit.gettext; - * - list of actions, each an object with: - * - clicked - * Callback function that is expected to return a promise. -- * parameter: callback to set the progress text (will be displayed next to spinner) -+ * parameter: callback to set the progress text - * - caption optional, defaults to 'Ok' - * - disabled optional, defaults to false - * - style defaults to 'secondary', other options: 'primary', 'danger' -@@ -70,10 +69,11 @@ class DialogFooter extends React.Component { - this.setState({ action_progress_message: msg, action_progress_cancel: cancel }); - } - -- action_click(handler, e) { -+ action_click(handler, caption, e) { - this.setState({ - action_progress_message: '', - action_in_progress: true, -+ action_caption_in_progress: caption, - action_canceled: false, - }); - -@@ -144,7 +144,6 @@ class DialogFooter extends React.Component { - cancel_disabled = true; - wait_element =
- { this.state.action_progress_message } -- -
; - } else if (this.props.idle_message) { - wait_element =
-@@ -167,8 +166,9 @@ class DialogFooter extends React.Component { - key={ caption } - className="apply" - variant={ variant } -+ isLoading={ this.state.action_in_progress && this.state.action_caption_in_progress == caption } - isDanger={ action.danger } -- onClick={ this.action_click.bind(this, action.clicked) } -+ onClick={ this.action_click.bind(this, action.clicked, caption) } - isDisabled={ actions_disabled || action.disabled } - >{ caption } - ); -@@ -209,14 +209,24 @@ DialogFooter.propTypes = { - * - id optional, id that is assigned to the top level dialog node, but not the backdrop - * - variant: See PF4 Modal component's 'variant' property - * - titleIconVariant: See PF4 Modal component's 'titleIconVariant' property -+ * - showClose optional, specifies if 'X' button for closing the dialog is present - */ - class Dialog extends React.Component { - componentDidMount() { -+ // For the scenario that cockpit-storage is used inside anaconda Web UI -+ // We need to know if there is an open dialog in order to create the backdrop effect -+ // on the parent window -+ window.sessionStorage.setItem("cockpit_has_modal", true); -+ - // if we used a button to open this, make sure it's not focused anymore - if (document.activeElement) - document.activeElement.blur(); - } - -+ componentWillUnmount() { -+ window.sessionStorage.setItem("cockpit_has_modal", false); -+ } -+ - render() { - let help = null; - let footer = null; -@@ -234,14 +244,13 @@ class Dialog extends React.Component { - ; - - const error = this.props.error || this.props.static_error; -- const error_alert = error && -- {error.details}; -+ const error_alert = error && ; - - return ( - undefined} -- showClose={false} -+ showClose={!!this.props.showClose} - id={this.props.id} - isOpen - help={help} -@@ -261,9 +270,10 @@ Dialog.propTypes = { - title: PropTypes.string, // is effectively required, but show_modal_dialog() provides initially no props and resets them later. - body: PropTypes.element, // is effectively required, see above - static_error: PropTypes.string, -+ error: PropTypes.string, - footer: PropTypes.element, // is effectively required, see above - id: PropTypes.string, -- error: PropTypes.object, -+ showClose: PropTypes.bool, - }; - - /* Create and show a dialog -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-dropdown.tsx b/src/cockpit/389-console/pkg/lib/cockpit-components-dropdown.tsx -new file mode 100644 -index 000000000..4f12a3fbb ---- /dev/null -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-dropdown.tsx -@@ -0,0 +1,83 @@ -+/* -+ * This file is part of Cockpit. -+ * -+ * Copyright (C) 2024 Red Hat, Inc. -+ * -+ * Cockpit is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU Lesser General Public License as published by -+ * the Free Software Foundation; either version 2.1 of the License, or -+ * (at your option) any later version. -+ * -+ * Cockpit is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with Cockpit; If not, see . -+ */ -+ -+import React, { useState } from 'react'; -+import PropTypes from "prop-types"; -+ -+import { MenuToggle } from "@patternfly/react-core/dist/esm/components/MenuToggle"; -+import { Dropdown, DropdownList, DropdownPopperProps } from "@patternfly/react-core/dist/esm/components/Dropdown"; -+ -+import { EllipsisVIcon } from '@patternfly/react-icons'; -+ -+/* -+ * A dropdown with a Kebab button, commonly used in Cockpit pages provided as -+ * component so not all pages have to re-invent the wheel. -+ * -+ * isOpen/setIsOpen are optional -- you need to handle the state externally if you render the KebabDropdown in an -+ * "unstable" environment such as a dynamic list. When not given, the dropdown will manage its own state. -+ * -+ * This component expects a list of (non-deprecated!) DropdownItem's, if you -+ * require a separator between DropdownItem's use PatternFly's Divivder -+ * component. -+ */ -+export const KebabDropdown = ({ dropdownItems, position = "end", isDisabled = false, toggleButtonId, isOpen, setIsOpen } : { -+ dropdownItems: React.ReactNode, -+ position?: DropdownPopperProps['position'], -+ isDisabled?: boolean, -+ toggleButtonId?: string; -+ isOpen?: boolean, setIsOpen?: React.Dispatch>, -+}) => { -+ const [isKebabOpenInternal, setKebabOpenInternal] = useState(false); -+ const isKebabOpen = isOpen ?? isKebabOpenInternal; -+ const setKebabOpen = setIsOpen ?? setKebabOpenInternal; -+ -+ return ( -+ setKebabOpen(isOpen)} -+ onSelect={() => setKebabOpen(false)} -+ toggle={(toggleRef) => ( -+ setKebabOpen(!isKebabOpen)} -+ isExpanded={isKebabOpen} -+ > -+ -+ -+ )} -+ isOpen={isKebabOpen} -+ popperProps={{ position }} -+ > -+ -+ {dropdownItems} -+ -+ -+ ); -+}; -+ -+KebabDropdown.propTypes = { -+ dropdownItems: PropTypes.array.isRequired, -+ isDisabled: PropTypes.bool, -+ toggleButtonId: PropTypes.string, -+ position: PropTypes.oneOf(['right', 'left', 'center', 'start', 'end']), -+ isOpen: PropTypes.bool, -+ setIsOpen: PropTypes.func, -+}; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-dynamic-list.jsx b/src/cockpit/389-console/pkg/lib/cockpit-components-dynamic-list.jsx -new file mode 100644 -index 000000000..4cad793d6 ---- /dev/null -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-dynamic-list.jsx -@@ -0,0 +1,143 @@ -+import React from 'react'; -+import PropTypes from 'prop-types'; -+import { Button } from "@patternfly/react-core/dist/esm/components/Button"; -+import { EmptyState, EmptyStateBody } from "@patternfly/react-core/dist/esm/components/EmptyState"; -+import { FormFieldGroup, FormFieldGroupHeader } from "@patternfly/react-core/dist/esm/components/Form"; -+import { HelperText, HelperTextItem } from "@patternfly/react-core/dist/esm/components/HelperText"; -+ -+import './cockpit-components-dynamic-list.scss'; -+ -+/* Dynamic list with a variable number of rows. Each row is a custom component, usually an input field(s). -+ * -+ * Props: -+ * - emptyStateString -+ * - onChange -+ * - id -+ * - itemcomponent -+ * - formclass (optional) -+ * - options (optional) -+ * - onValidationChange: A handler function which updates the parent's component's validation object. -+ * Its parameter is an array the same structure as 'validationFailed'. -+ * - validationFailed: An array where each item represents a validation error of the corresponding row component index. -+ * A row is strictly mapped to an item of the array by its index. -+ * Example: Let's have a dynamic form, where each row consists of 2 fields: name and email. Then a validation array of -+ * these rows would look like this: -+ * [ -+ * { name: "Name must not be empty }, // first row -+ * { }, // second row -+ * { name: "Name cannot contain a number", email: "Email must contain '@'" } // third row -+ * ] -+ */ -+export class DynamicListForm extends React.Component { -+ constructor(props) { -+ super(props); -+ this.state = { -+ list: [], -+ }; -+ this.keyCounter = 0; -+ this.removeItem = this.removeItem.bind(this); -+ this.addItem = this.addItem.bind(this); -+ this.onItemChange = this.onItemChange.bind(this); -+ } -+ -+ removeItem(idx) { -+ const validationFailedDelta = this.props.validationFailed ? [...this.props.validationFailed] : []; -+ // We also need to remove any error messages which the item (row) may have contained -+ delete validationFailedDelta[idx]; -+ this.props.onValidationChange?.(validationFailedDelta); -+ -+ this.setState(state => { -+ const items = [...state.list]; -+ // keep the list structure, otherwise all the indexes shift and the ID/key mapping gets broken -+ delete items[idx]; -+ -+ return { list: items }; -+ }, () => this.props.onChange(this.state.list)); -+ } -+ -+ addItem() { -+ this.setState(state => { -+ return { list: [...state.list, { key: this.keyCounter++, ...this.props.default }] }; -+ }, () => this.props.onChange(this.state.list)); -+ } -+ -+ onItemChange(idx, field, value) { -+ this.setState(state => { -+ const items = [...state.list]; -+ items[idx][field] = value || null; -+ return { list: items }; -+ }, () => this.props.onChange(this.state.list)); -+ } -+ -+ render () { -+ const { id, label, actionLabel, formclass, emptyStateString, helperText, validationFailed, onValidationChange } = this.props; -+ const dialogValues = this.state; -+ return ( -+ {actionLabel}} -+ /> -+ } className={"dynamic-form-group " + formclass}> -+ { -+ dialogValues.list.some(item => item !== undefined) -+ ? <> -+ {dialogValues.list.map((item, idx) => { -+ if (item === undefined) -+ return null; -+ -+ return React.cloneElement(this.props.itemcomponent, { -+ idx, -+ item, -+ id: id + "-" + idx, -+ key: idx, -+ onChange: this.onItemChange, -+ removeitem: this.removeItem, -+ additem: this.addItem, -+ options: this.props.options, -+ validationFailed: validationFailed && validationFailed[idx], -+ onValidationChange: value => { -+ // Dynamic list consists of multiple rows. Therefore validationFailed object is presented as an array where each item represents a row -+ // Each row/item then consists of key-value pairs, which represent a field name and it's validation error -+ const delta = validationFailed ? [...validationFailed] : []; -+ // Update validation of only a single row -+ delta[idx] = value; -+ -+ // If a row doesn't contain any fields with errors anymore, we delete the item of the array -+ // Deleting an item of an array replaces an item with an "empty item". -+ // This guarantees that an array of validation errors maps to the correct rows -+ if (Object.keys(delta[idx]).length == 0) -+ delete delta[idx]; -+ -+ onValidationChange?.(delta); -+ }, -+ }); -+ }) -+ } -+ {helperText && -+ -+ {helperText} -+ -+ } -+ -+ : -+ -+ {emptyStateString} -+ -+ -+ } -+ -+ ); -+ } -+} -+ -+DynamicListForm.propTypes = { -+ emptyStateString: PropTypes.string.isRequired, -+ onChange: PropTypes.func.isRequired, -+ id: PropTypes.string.isRequired, -+ itemcomponent: PropTypes.object.isRequired, -+ formclass: PropTypes.string, -+ options: PropTypes.object, -+ validationFailed: PropTypes.array, -+ onValidationChange: PropTypes.func, -+}; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-dynamic-list.scss b/src/cockpit/389-console/pkg/lib/cockpit-components-dynamic-list.scss -new file mode 100644 -index 000000000..2016fdaaa ---- /dev/null -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-dynamic-list.scss -@@ -0,0 +1,39 @@ -+@import "global-variables"; -+ -+.dynamic-form-group { -+ .pf-v5-c-empty-state { -+ padding: 0; -+ } -+ -+ .pf-v5-c-form__label { -+ // Don't allow labels to wrap -+ white-space: nowrap; -+ } -+ -+ .remove-button-group { -+ // Move 'Remove' button the the end of the row -+ grid-column: -1; -+ // Move 'Remove' button to the bottom of the line so as to align with the other form fields -+ display: flex; -+ align-items: flex-end; -+ } -+ -+ // Set check to the same height as input widgets and vertically align -+ .pf-v5-c-form__group-control > .pf-v5-c-check { -+ // Set height to the same as inputs -+ // Font height is font size * line height (1rem * 1.5) -+ // Widgets have 5px padding, 1px border (top & bottom): (5 + 1) * 2 = 12 -+ // This all equals to 36px -+ block-size: calc(var(--pf-v5-global--FontSize--md) * var(--pf-v5-global--LineHeight--md) + 12px); -+ align-content: center; -+ } -+ -+ // We use FormFieldGroup PF component for the nested look and for ability to add buttons to the header -+ // However we want to save space and not add indent to the left so we need to override it -+ .pf-v5-c-form__field-group-body { -+ // Stretch content fully -+ --pf-v5-c-form__field-group-body--GridColumn: 1 / -1; -+ // Reduce padding at the top -+ --pf-v5-c-form__field-group-body--PaddingTop: var(--pf-v5-global--spacer--xs); -+ } -+} -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-empty-state.jsx b/src/cockpit/389-console/pkg/lib/cockpit-components-empty-state.jsx -index 0a78d0530..82d7b97eb 100644 ---- a/src/cockpit/389-console/pkg/lib/cockpit-components-empty-state.jsx -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-empty-state.jsx -@@ -14,7 +14,7 @@ - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License -- * along with Cockpit; If not, see . -+ * along with Cockpit; If not, see . - */ - - import React from "react"; -@@ -24,7 +24,7 @@ import { EmptyStateActions, EmptyState, EmptyStateBody, EmptyStateFooter, EmptyS - import { Spinner } from "@patternfly/react-core/dist/esm/components/Spinner/index.js"; - import "./cockpit-components-empty-state.css"; - --export const EmptyStatePanel = ({ title, paragraph, loading, icon, action, isActionInProgress, onAction, secondary, headingLevel, titleSize }) => { -+export const EmptyStatePanel = ({ title, paragraph, loading = false, icon, action, isActionInProgress = false, onAction, actionVariant = "primary", secondary, headingLevel = "h1" }) => { - const slimType = title || paragraph ? "" : "slim"; - return ( - -@@ -34,7 +34,7 @@ export const EmptyStatePanel = ({ title, paragraph, loading, icon, action, isAct - - {(action || secondary) && - { action && (typeof action == "string" -- ? -@@ -47,17 +47,12 @@ export const EmptyStatePanel = ({ title, paragraph, loading, icon, action, isAct - - EmptyStatePanel.propTypes = { - loading: PropTypes.bool, -- icon: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), -+ icon: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]), - title: PropTypes.string, - paragraph: PropTypes.node, - action: PropTypes.node, -+ actionVariant: PropTypes.string, - isActionInProgress: PropTypes.bool, - onAction: PropTypes.func, - secondary: PropTypes.node, - }; -- --EmptyStatePanel.defaultProps = { -- headingLevel: "h1", -- titleSize: "lg", -- isActionInProgress: false, --}; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-file-autocomplete.jsx b/src/cockpit/389-console/pkg/lib/cockpit-components-file-autocomplete.jsx -index 134fea19a..f09002ba0 100644 ---- a/src/cockpit/389-console/pkg/lib/cockpit-components-file-autocomplete.jsx -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-file-autocomplete.jsx -@@ -14,7 +14,7 @@ - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License -- * along with Cockpit; If not, see . -+ * along with Cockpit; If not, see . - */ - - import cockpit from "cockpit"; -@@ -34,7 +34,7 @@ export class FileAutoComplete extends React.Component { - isOpen: false, - value: this.props.value || null, - }; -- this.updateFiles(props.value || '/'); -+ - this.typeaheadInputValue = ""; - this.allowFilesUpdate = true; - this.updateFiles = this.updateFiles.bind(this); -@@ -43,7 +43,7 @@ export class FileAutoComplete extends React.Component { - this.clearSelection = this.clearSelection.bind(this); - this.onCreateOption = this.onCreateOption.bind(this); - -- this.debouncedChange = debounce(300, (value) => { -+ this.onPathChange = (value) => { - if (!value) { - this.clearSelection(); - return; -@@ -80,7 +80,9 @@ export class FileAutoComplete extends React.Component { - return this.updateFiles(parentDir + '/'); - } - } -- }); -+ }; -+ this.debouncedChange = debounce(300, this.onPathChange); -+ this.onPathChange(this.state.value); - } - - componentWillUnmount() { -@@ -115,7 +117,8 @@ export class FileAutoComplete extends React.Component { - - channel.addEventListener("message", (ev, data) => { - const item = JSON.parse(data); -- if (item && item.path && item.event == 'present') { -+ if (item && item.path && item.event == 'present' && -+ (!this.props.onlyDirectories || item.type == 'directory')) { - item.path = item.path + (item.type == 'directory' ? '/' : ''); - results.push(item); - } -@@ -140,7 +143,7 @@ export class FileAutoComplete extends React.Component { - } - - if (error || !this.state.value) -- this.props.onChange(''); -+ this.props.onChange('', error); - - if (!error) - this.setState({ displayFiles: listItems, directory }); -@@ -160,7 +163,7 @@ export class FileAutoComplete extends React.Component { - value: null, - isOpen: false - }); -- this.props.onChange(''); -+ this.props.onChange('', null); - } - - render() { -@@ -182,7 +185,7 @@ export class FileAutoComplete extends React.Component { - onSelect={(_, value) => { - this.setState({ value, isOpen: false }); - this.debouncedChange(value); -- this.props.onChange(value || ''); -+ this.props.onChange(value || '', null); - }} - onToggle={this.onToggle} - onClear={this.clearSelection} -@@ -201,10 +204,12 @@ FileAutoComplete.propTypes = { - placeholder: PropTypes.string, - superuser: PropTypes.string, - isOptionCreatable: PropTypes.bool, -+ onlyDirectories: PropTypes.bool, - onChange: PropTypes.func, - value: PropTypes.string, - }; - FileAutoComplete.defaultProps = { - isOptionCreatable: false, -+ onlyDirectories: false, - onChange: () => '', - }; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-firewalld-request.jsx b/src/cockpit/389-console/pkg/lib/cockpit-components-firewalld-request.jsx -index 517b8bb9d..41530b55d 100644 ---- a/src/cockpit/389-console/pkg/lib/cockpit-components-firewalld-request.jsx -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-firewalld-request.jsx -@@ -14,7 +14,7 @@ - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License -- * along with Cockpit; If not, see . -+ * along with Cockpit; If not, see . - */ - import React, { useState } from 'react'; - import { Alert, AlertActionCloseButton, AlertActionLink } from "@patternfly/react-core/dist/esm/components/Alert/index.js"; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-form-helper.tsx b/src/cockpit/389-console/pkg/lib/cockpit-components-form-helper.tsx -new file mode 100644 -index 000000000..a5a286bb4 ---- /dev/null -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-form-helper.tsx -@@ -0,0 +1,51 @@ -+/* -+ * This file is part of Cockpit. -+ * -+ * Copyright (C) 2023 Red Hat, Inc. -+ * -+ * Cockpit is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU Lesser General Public License as published by -+ * the Free Software Foundation; either version 2.1 of the License, or -+ * (at your option) any later version. -+ * -+ * Cockpit is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with Cockpit; If not, see . -+ */ -+ -+import React from "react"; -+ -+import { FormHelperText } from "@patternfly/react-core/dist/esm/components/Form/index.js"; -+import { HelperText, HelperTextItem } from "@patternfly/react-core/dist/esm/components/HelperText"; -+ -+export const FormHelper = ({ helperText, helperTextInvalid, variant, icon, fieldId } : -+ { -+ helperText?: string | null | undefined, -+ helperTextInvalid?: string | null | undefined, -+ variant?: "error" | "default" | "indeterminate" | "warning" | "success", -+ icon?: string, -+ fieldId?: string, -+ } -+) => { -+ const formHelperVariant = variant || (helperTextInvalid ? "error" : "default"); -+ -+ if (!(helperText || helperTextInvalid)) -+ return null; -+ -+ return ( -+ -+ -+ -+ {formHelperVariant === "error" ? helperTextInvalid : helperText} -+ -+ -+ -+ ); -+}; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-inline-notification.tsx b/src/cockpit/389-console/pkg/lib/cockpit-components-inline-notification.tsx -new file mode 100644 -index 000000000..1503f52bd ---- /dev/null -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-inline-notification.tsx -@@ -0,0 +1,83 @@ -+/* -+ * This file is part of Cockpit. -+ * -+ * Copyright (C) 2016 Red Hat, Inc. -+ * -+ * Cockpit is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU Lesser General Public License as published by -+ * the Free Software Foundation; either version 2.1 of the License, or -+ * (at your option) any later version. -+ * -+ * Cockpit is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with Cockpit; If not, see . -+ */ -+import React, { useState } from 'react'; -+import PropTypes from 'prop-types'; -+import cockpit from 'cockpit'; -+ -+import { Alert, AlertActionCloseButton, AlertProps } from "@patternfly/react-core/dist/esm/components/Alert/index.js"; -+import { Button } from "@patternfly/react-core/dist/esm/components/Button/index.js"; -+import './cockpit-components-inline-notification.css'; -+ -+const _ = cockpit.gettext; -+ -+export const InlineNotification = ({ text, detail, type = "danger", onDismiss, isInline = true, isLiveRegion = false }: { -+ text: string; -+ detail?: string; -+ type?: AlertProps["variant"]; -+ onDismiss?: (ev?: Event) => void; -+ isInline?: boolean; -+ isLiveRegion?: boolean; -+}) => { -+ const [isDetail, setIsDetail] = useState(false); -+ -+ const detailButton = (detail && -+ -+ ); -+ -+ return ( -+ {text} {detailButton} } -+ { ...onDismiss && { actionClose: } }> -+ {isDetail && (

{detail}

)} -+
-+ ); -+}; -+ -+InlineNotification.propTypes = { -+ onDismiss: PropTypes.func, -+ isInline: PropTypes.bool, -+ text: PropTypes.string.isRequired, // main information to render -+ detail: PropTypes.string, // optional, more detailed information. If empty, the more/less button is not rendered. -+ type: PropTypes.string, -+ isLiveRegion: PropTypes.bool, -+}; -+ -+export const ModalError = ({ dialogError, dialogErrorDetail, id, isExpandable }: { -+ dialogError: string, -+ dialogErrorDetail?: string, -+ id?: string, -+ isExpandable?: boolean, -+}) => { -+ return ( -+ -+ { typeof dialogErrorDetail === 'string' ?

{dialogErrorDetail}

: dialogErrorDetail } -+
-+ ); -+}; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-install-dialog.jsx b/src/cockpit/389-console/pkg/lib/cockpit-components-install-dialog.jsx -index 0d933ae5f..921247d44 100644 ---- a/src/cockpit/389-console/pkg/lib/cockpit-components-install-dialog.jsx -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-install-dialog.jsx -@@ -14,7 +14,7 @@ - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License -- * along with Cockpit; If not, see . -+ * along with Cockpit; If not, see . - */ - - import cockpit from "cockpit"; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-listing-panel.jsx b/src/cockpit/389-console/pkg/lib/cockpit-components-listing-panel.jsx -index 3f2b784b8..4e0a83688 100644 ---- a/src/cockpit/389-console/pkg/lib/cockpit-components-listing-panel.jsx -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-listing-panel.jsx -@@ -14,7 +14,7 @@ - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License -- * along with Cockpit; If not, see . -+ * along with Cockpit; If not, see . - */ - - import PropTypes from 'prop-types'; -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-listing-panel.scss b/src/cockpit/389-console/pkg/lib/cockpit-components-listing-panel.scss -index bd53cd986..c258ae697 100644 ---- a/src/cockpit/389-console/pkg/lib/cockpit-components-listing-panel.scss -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-listing-panel.scss -@@ -18,8 +18,7 @@ - order: 1; - } - -- // FIXME: https://github.com/patternfly/patternfly-react/pull/9135 -- .pf-c-tab-content { -+ .pf-v5-c-tab-content { - order: 3; - flex-basis: 100%; - } -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-logs-panel.jsx b/src/cockpit/389-console/pkg/lib/cockpit-components-logs-panel.jsx -index c960d6da3..4fe66ba50 100644 ---- a/src/cockpit/389-console/pkg/lib/cockpit-components-logs-panel.jsx -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-logs-panel.jsx -@@ -14,7 +14,7 @@ - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License -- * along with Cockpit; If not, see . -+ * along with Cockpit; If not, see . - */ - - import cockpit from "cockpit"; -@@ -55,7 +55,7 @@ export class JournalOutput { - } - - // only consider enter button for keyboard events -- if (ev.type === 'keypress' && ev.key !== "Enter") -+ if (ev.type === 'KeyDown' && ev.key !== "Enter") - return; - - cockpit.jump("system/logs#/" + cursor + "?parent_options=" + JSON.stringify(this.search_options)); -@@ -78,7 +78,7 @@ export class JournalOutput { -
this.onEvent(ev, entry.__CURSOR, full_content)} -- onKeyPress={ev => this.onEvent(ev, entry.__CURSOR, full_content)}> -+ onKeyDown={ev => this.onEvent(ev, entry.__CURSOR, full_content)}> -
- { warning - ? -diff --git a/src/cockpit/389-console/pkg/lib/cockpit-components-modifications.jsx b/src/cockpit/389-console/pkg/lib/cockpit-components-modifications.jsx -index 3d8983641..4d472fd13 100644 ---- a/src/cockpit/389-console/pkg/lib/cockpit-components-modifications.jsx -+++ b/src/cockpit/389-console/pkg/lib/cockpit-components-modifications.jsx -@@ -14,7 +14,7 @@ - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License -- * along with Cockpit; If not, see . -+ * along with Cockpit; If not, see . - */ - - import PropTypes from 'prop-types'; -@@ -37,80 +37,77 @@ const _ = cockpit.gettext; - * Enables showing shell and ansible script. Shell one is mandatory and ansible one can be omitted. - * - */ --class ModificationsExportDialog extends React.Component { -- constructor(props) { -- super(props); -+export const ModificationsExportDialog = ({ show, onClose, shell, ansible }) => { -+ const [active_tab, setActiveTab] = React.useState("ansible"); -+ const [copied, setCopied] = React.useState(false); -+ const [timeoutId, setTimeoutId] = React.useState(null); - -- this.state = { -- active_tab: "shell", -- copied: false -- }; -- -- this.handleSelect = this.handleSelect.bind(this); -- this.copyToClipboard = this.copyToClipboard.bind(this); -- } -- -- handleSelect(event, active_tab) { -- this.setState({ active_tab }); -- } -+ const handleSelect = (_event, active_tab) => { -+ setCopied(false); -+ setActiveTab(active_tab); -+ if (timeoutId !== null) { -+ clearTimeout(timeoutId); -+ setTimeoutId(null); -+ } -+ }; - -- copyToClipboard() { -+ const copyToClipboard = () => { - try { -- navigator.clipboard.writeText(this.props[this.state.active_tab].trim()) -+ navigator.clipboard.writeText((active_tab === "ansible" ? ansible : shell).trim()) - .then(() => { -- this.setState({ copied: true }); -- setTimeout(() => { -- this.setState({ copied: false }); -- }, 3000); -+ setCopied(true); -+ setTimeoutId(setTimeout(() => { -+ setCopied(false); -+ setTimeoutId(null); -+ }, 3000)); - }) - .catch(e => console.error('Text could not be copied: ', e ? e.toString() : "")); - } catch (error) { - console.error('Text could not be copied: ', error.toString()); - } -- } -+ }; - -- render() { -- const footer = ( -- <> -- -- -- -- ); -- return ( -- -- -- --